diff --git a/README.md b/README.md index 0def0c3c..ca378b5c 100644 --- a/README.md +++ b/README.md @@ -2,285 +2,11 @@ This library houses the official node library for Recurly's V3 API. -> *Warning*: -> This library does not use the V2 API. Recurly does not provide an official node client for the V2 API. +## Documentation -## Getting Started - -### Documentation - -Docs and example code can be found here: [https://recurly.github.io/recurly-client-node](https://recurly.github.io/recurly-client-node). +Docs, Getting Started, and example code can be found here: [https://recurly.github.io/recurly-client-node](https://recurly.github.io/recurly-client-node). Documentation for the HTTP API and example code can be found [on our Developer Portal](https://developers.recurly.com/api/v2019-10-10/). -### Installing - -This library is published on npm under the name `recurly`. - -We recommend manually inserting the dependency into the `dependencies` section of your `package.json`: - -``` -{ - // ... - "recurly" : "3.0.0-beta.5" - // ... -} -``` - - -Install via the command line: -``` -npm install recurly@3.0.0-beta.5 --save-prod -``` - -### Creating a client - -A client object represents a connection to the Recurly API. The client implements -each `operation` that can be performed in the API as a method. - -To initialize a client, you only need an API key which can be obtained on the [API Credentials Page](https://app.recurly.com/go/integrations/api_keys). - -```js -const recurly = require('recurly') -// You should store your api key somewhere safe -// and not in plain text if possible -const myApiKey = '' -const client = new recurly.Client(myApiKey) -``` - -### Operations - -All operations are `async` and return promises (except the `list*` methods which return `Pager`s). -You can handle the promises directly with `then` and `catch` or use await: - -```js -client.getAccount('code-benjamin') - .then(account => console.log(account.id)) - .catch(err => console.log(err.msg)) -``` - -```js -async function myFunc () { - try { - let account = await client.getAccount('code-benjamin') - } catch (err) { - // handle err from client - } -} -``` - -### Creating Resources - -For creating or updating resources, pass a json object to one of the create* or update* methods. -Keep in mind that the api accepts snake-cased keys but this library expects camel-cased keys. -We do the translation for you so this library can conform to js style standards. - -```js -client.createAccount({ - code: 'new-account-code', - firstName: 'Benjamin', - lastName: 'Du Monde' - }) - .then(account => console.log(account.id)) - .catch(console.log) -``` - -### Pagination - -All `list*` methods on the client return a `Pager`. They -are not `async` because they are lazy and do not make any -network requests until they are iterated over. There are -two methods on `Pager` that return async iterators `each` and `eachPage`: - -* `each` will give you an iterator over each item that matches your query. -* `eachPage` will give you an iterator over each page that is returned. The result is an array of resources. - -```js -async function eachAccount (accounts) { - try { - for await (const acct of accounts.each()) { - console.log(acct.id) - } - } catch (err) { - // err is bubbled up from recurly client - } -} - -async function eachPageOfAccounts (accounts) { - try { - for await (const page of accounts.eachPage()) { - page.forEach(acct => console.log(acct.id)) - } - } catch (err) { - // err is bubbled up from recurly client - } -} - -const accounts = client.listAccounts({ - beginTime: '2018-12-01T00:00:00Z', - sort: 'updated_at' - }) - -eachAccount(accounts) -// or -eachPageOfAccounts(accounts) -``` - -#### Efficiently Fetch the First or Last Resource - -The Pager class implements a `first` method which allows you to fetch just the first or last resource from the server. -On top of being a convenient abstraction, this is implemented efficiently by only asking the server for the 1 item you want. - -```js -const accounts = client.listAccounts({ - beginTime: '2018-12-01T00:00:00Z', - subscriber: true, - order: 'desc' - }) - -const firstAccount = await accounts.first() -``` - -If you want to fetch the last account in this scenario, invert the order from `desc` to `asc` - -```js -const accounts = client.listAccounts({ - beginTime: '2018-12-01T00:00:00Z', - subscriber: true, - order: 'asc' - }) - -const lastAccount = await accounts.first() -``` - -#### Counting Resources - -The Pager class implements a `count` method which allows you to count the resources the pager would return. -It does so by calling the endpoint with `HEAD` and parsing and returning the `Recurly-Total-Records` header. This -method respects any filtering parameters you apply to the pager, but the sorting parameters will have no effect. - -```js -const accounts = client.listAccounts({ - beginTime: '2018-12-01T00:00:00Z', - subscriber: true - }) - -const count = await accounts.count() -// => 573 -``` - -### Error Handling - -This library currently throws 1 primary class of exceptions, recurly.ApiError. -The ApiError comes in a few flavors which help you determine what to do next. To see a full list, view the [api_errors module](lib/recurly/api_errors.js). - -```js -try { - const expiredSub = await client.terminateSubscription(subId, { refund: 'full' }) -} catch (err) { - if (err) { - if (err.getResponse()) { - const requstId = err.getResponse().requestId - console.log("Request Id useful for support: ", requestId) - } - - if (err instanceof recurly.errors.ValidationError) { - // If the request was not valid, you may want to tell your user - // why. You can find the invalid params and reasons in err.params - console.log('Failed validation', err.params) - // } else if (err instanceof recurly.errors.NotFoundError) { - // console.log('Failed validation', err.params) - } else if (err instanceof recurly.ApiError) { - console.log('generic api error', err) - } else { - // If we don't know what to do with the err, we should - // probably re-raise and let our web framework and logger handle it - console.log('Unknown Error: ', err) - } - } -} -``` -### HTTP Metadata - -Sometimes you might want to get some additional information about the underlying HTTP request and response. Instead of -returning this information directly and forcing the programmer to unwrap it, we inject this metadata into the top level -resource that was returned. You can access the response by calling `getResponse()` on any Resource. - -**Warning**: Do not log or render whole requests or responses as they may contain PII or sensitive data. - - -```js -const account = await client.getAccount("code-benjamin") -const response = account.getResponse() -response.rateLimitRemaining // 1985 -response.requestId // "0av50sm5l2n2gkf88ehg" -response.request.path // "/sites/subdomain-mysite/accounts/code-benjamin" -response.request.body // null -``` - -This also works on Empty responses: - -```js -const result = await client.removeLineItem("a959576b2b10b012") -const response = result.getResponse() -``` - -And it can be captured on exceptions through the ApiError object: - -```js -try { - const account = await client.getAccount(account_id) -} catch (err) { - if (err instanceof recurly.errors.NotFoundError) { - // You can also get the Response here - const response = err.getResponse() - } else { - console.log('Unknown Error: ', err) - } -} -``` - -### Webhooks - -Recurly can send webhooks to any publicly accessible server. When an event in Recurly triggers -a webhook (e.g., an account is opened), Recurly will attempt to send this notification to the -endpoint(s) you specify. You can specify up to 10 endpoints through the application. All -notifications will be sent to all configured endpoints for your site. - -See our [product docs](https://docs.recurly.com/docs/webhooks) to learn more about webhooks -and see our [dev docs](https://dev.recurly.com/page/webhooks) to learn about what payloads -are available. - -Although our API is now JSON, our webhook payloads are still formatted as XML for the time being. -This library is not yet responsible for handling webhooks. If you do need webhooks, we recommend using a simple -XML to Plain Object parser such as [xml2js](https://github.com/Leonidas-from-XIV/node-xml2js). - - -```js -const parseString = require('xml2js').parseString - -const xml = ` - - - - 1 - - verena@example.com - Verena - Example - - - -`; - -parseString(xml, function (err, result) { - const code = result.new_account_notification.account[0].account_code[0]; - console.log("New account created with code: ", code); -}) -``` - -You can do this without dependencies, but you'll need to heed warnings about security concerns. -Read more about the security implications of parsing untrusted XML in [this OWASP cheatsheet](https://cheatsheetseries.owasp.org/cheatsheets/XML_Security_Cheat_Sheet.html). - -### Contributing +## Contributing Please see our [Contributing Guide](CONTRIBUTING.md). diff --git a/doc/GETTING_STARTED.md b/doc/GETTING_STARTED.md new file mode 100644 index 00000000..e4641b4c --- /dev/null +++ b/doc/GETTING_STARTED.md @@ -0,0 +1,268 @@ +## Installing + +This library is published on npm under the name `recurly`. + +We recommend manually inserting and scoping the dependency into the `dependencies` section of your `package.json`: + +``` +{ + // ... + "recurly" : "3.0.0-beta.5" + // ... +} +``` + +Or install via the command line: + +``` +npm install recurly@3.0.0-beta.5 --save-prod +``` + +## Creating a client + +A client object represents a connection to the Recurly API. The client implements +each `operation` that can be performed in the API as a method. + +To initialize a client, you only need an API key which can be obtained on the [API Credentials Page](https://app.recurly.com/go/integrations/api_keys). + +```js +const recurly = require('recurly') +// You should store your api key somewhere safe +// and not in plain text if possible +const myApiKey = '' +const client = new recurly.Client(myApiKey) +``` + +## Operations + +All operations are `async` and return promises (except the `list*` methods which return `Pager`s). +You can handle the promises directly with `then` and `catch` or use await: + +```js +client.getAccount('code-benjamin') + .then(account => console.log(account.id)) + .catch(err => console.log(err.msg)) +``` + +```js +async function myFunc () { + try { + let account = await client.getAccount('code-benjamin') + } catch (err) { + // handle err from client + } +} +``` + +## Creating Resources + +For creating or updating resources, pass a json object to one of the create* or update* methods. +Keep in mind that the api accepts snake-cased keys but this library expects camel-cased keys. +We do the translation for you so this library can conform to js style standards. + +```js +client.createAccount({ + code: 'new-account-code', + firstName: 'Benjamin', + lastName: 'Du Monde' + }) + .then(account => console.log(account.id)) + .catch(console.log) +``` + +## Pagination + +All `list*` methods on the client return a `Pager`. They +are not `async` because they are lazy and do not make any +network requests until they are iterated over. There are +two methods on `Pager` that return async iterators `each` and `eachPage`: + +* `each` will give you an iterator over each item that matches your query. +* `eachPage` will give you an iterator over each page that is returned. The result is an array of resources. + +```js +async function eachAccount (accounts) { + try { + for await (const acct of accounts.each()) { + console.log(acct.id) + } + } catch (err) { + // err is bubbled up from recurly client + } +} + +async function eachPageOfAccounts (accounts) { + try { + for await (const page of accounts.eachPage()) { + page.forEach(acct => console.log(acct.id)) + } + } catch (err) { + // err is bubbled up from recurly client + } +} + +const accounts = client.listAccounts({ + beginTime: '2018-12-01T00:00:00Z', + sort: 'updated_at' + }) + +eachAccount(accounts) +// or +eachPageOfAccounts(accounts) +``` + +### Efficiently Fetch the First or Last Resource + +The Pager class implements a `first` method which allows you to fetch just the first or last resource from the server. +On top of being a convenient abstraction, this is implemented efficiently by only asking the server for the 1 item you want. + +```js +const accounts = client.listAccounts({ + beginTime: '2018-12-01T00:00:00Z', + subscriber: true, + order: 'desc' + }) + +const firstAccount = await accounts.first() +``` + +If you want to fetch the last account in this scenario, invert the order from `desc` to `asc` + +```js +const accounts = client.listAccounts({ + beginTime: '2018-12-01T00:00:00Z', + subscriber: true, + order: 'asc' + }) + +const lastAccount = await accounts.first() +``` + +### Counting Resources + +The Pager class implements a `count` method which allows you to count the resources the pager would return. +It does so by calling the endpoint with `HEAD` and parsing and returning the `Recurly-Total-Records` header. This +method respects any filtering parameters you apply to the pager, but the sorting parameters will have no effect. + +```js +const accounts = client.listAccounts({ + beginTime: '2018-12-01T00:00:00Z', + subscriber: true + }) + +const count = await accounts.count() +// => 573 +``` + +## Error Handling + +This library currently throws 1 primary class of exceptions, recurly.ApiError. +The ApiError comes in a few flavors which help you determine what to do next. To see a full list, view the [api_errors module](lib/recurly/api_errors.js). + +```js +try { + const expiredSub = await client.terminateSubscription(subId, { refund: 'full' }) +} catch (err) { + if (err) { + if (err.getResponse()) { + const requstId = err.getResponse().requestId + console.log("Request Id useful for support: ", requestId) + } + + if (err instanceof recurly.errors.ValidationError) { + // If the request was not valid, you may want to tell your user + // why. You can find the invalid params and reasons in err.params + console.log('Failed validation', err.params) + // } else if (err instanceof recurly.errors.NotFoundError) { + // console.log('Failed validation', err.params) + } else if (err instanceof recurly.ApiError) { + console.log('generic api error', err) + } else { + // If we don't know what to do with the err, we should + // probably re-raise and let our web framework and logger handle it + console.log('Unknown Error: ', err) + } + } +} +``` +## HTTP Metadata + +Sometimes you might want to get some additional information about the underlying HTTP request and response. Instead of +returning this information directly and forcing the programmer to unwrap it, we inject this metadata into the top level +resource that was returned. You can access the response by calling `getResponse()` on any Resource. + +**Warning**: Do not log or render whole requests or responses as they may contain PII or sensitive data. + + +```js +const account = await client.getAccount("code-benjamin") +const response = account.getResponse() +response.rateLimitRemaining // 1985 +response.requestId // "0av50sm5l2n2gkf88ehg" +response.request.path // "/sites/subdomain-mysite/accounts/code-benjamin" +response.request.body // null +``` + +This also works on Empty responses: + +```js +const result = await client.removeLineItem("a959576b2b10b012") +const response = result.getResponse() +``` + +And it can be captured on exceptions through the ApiError object: + +```js +try { + const account = await client.getAccount(account_id) +} catch (err) { + if (err instanceof recurly.errors.NotFoundError) { + // You can also get the Response here + const response = err.getResponse() + } else { + console.log('Unknown Error: ', err) + } +} +``` + +## Webhooks + +Recurly can send webhooks to any publicly accessible server. When an event in Recurly triggers +a webhook (e.g., an account is opened), Recurly will attempt to send this notification to the +endpoint(s) you specify. You can specify up to 10 endpoints through the application. All +notifications will be sent to all configured endpoints for your site. + +See our [product docs](https://docs.recurly.com/docs/webhooks) to learn more about webhooks +and see our [dev docs](https://dev.recurly.com/page/webhooks) to learn about what payloads +are available. + +Although our API is now JSON, our webhook payloads are still formatted as XML for the time being. +This library is not yet responsible for handling webhooks. If you do need webhooks, we recommend using a simple +XML to Plain Object parser such as [xml2js](https://github.com/Leonidas-from-XIV/node-xml2js). + + +```js +const parseString = require('xml2js').parseString + +const xml = ` + + + + 1 + + verena@example.com + Verena + Example + + + +`; + +parseString(xml, function (err, result) { + const code = result.new_account_notification.account[0].account_code[0]; + console.log("New account created with code: ", code); +}) +``` + +You can do this without dependencies, but you'll need to heed warnings about security concerns. +Read more about the security implications of parsing untrusted XML in [this OWASP cheatsheet](https://cheatsheetseries.owasp.org/cheatsheets/XML_Security_Cheat_Sheet.html). diff --git a/doc/custom.css b/doc/custom.css new file mode 100644 index 00000000..76162bb0 --- /dev/null +++ b/doc/custom.css @@ -0,0 +1,4 @@ +div.keyline-top-not { + padding-left: 2rem; + padding-right: 2rem; +} diff --git a/docs/assets/scripts.min.js b/docs/assets/scripts.min.js new file mode 100644 index 00000000..d22a9d5a --- /dev/null +++ b/docs/assets/scripts.min.js @@ -0,0 +1,8 @@ +parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",e.sheet.cssRules.length),e.sheet.insertRule(" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }",e.sheet.cssRules.length),e.sheet.insertRule(' @font-face { font-family: "anchorjs-icons"; src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype"); }',e.sheet.cssRules.length)}}(),n=document.querySelectorAll("[id]"),o=[].map.call(n,function(A){return A.id}),a=0;a\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&(" "+A.firstChild.className+" ").indexOf(" anchorjs-link ")>-1,t=A.lastChild&&(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ")>-1;return e||t||!1}}}); +},{}],"S+Fx":[function(require,module,exports) { +var e=require("anchor-js"),t=new e;t.options.placement="left",t.add("h3");var n=document.getElementById("toc").getElementsByTagName("a");document.getElementById("filter-input").addEventListener("keyup",function(e){var t,s,i;if(13===e.keyCode)for(t=0;t | | - // | | | <- this.snapOffset || this.snapOffset -> | | | - // | | | || | | | - // | | | || | | | - // --------------------------------------------------------------------- - // | <- this.start this.size -> | - function drag(e) { - var offset; - - if (!this.dragging) { - return; - } - - // Get the offset of the event from the first side of the - // pair `this.start`. Supports touch events, but not multitouch, so only the first - // finger `touches[0]` is counted. - if ('touches' in e) { - offset = e.touches[0][clientAxis] - this.start; - } else { - offset = e[clientAxis] - this.start; - } - - // If within snapOffset of min or max, set offset to min or max. - // snapOffset buffers a.minSize and b.minSize, so logic is opposite for both. - // Include the appropriate gutter sizes to prevent overflows. - if (offset <= elements[this.a].minSize + snapOffset + this.aGutterSize) { - offset = elements[this.a].minSize + this.aGutterSize; - } else if ( - offset >= - this.size - (elements[this.b].minSize + snapOffset + this.bGutterSize) - ) { - offset = this.size - (elements[this.b].minSize + this.bGutterSize); - } - - // Actually adjust the size. - adjust.call(this, offset); - - // Call the drag callback continously. Don't do anything too intensive - // in this callback. - if (options.onDrag) { - options.onDrag(); - } - } - - // Cache some important sizes when drag starts, so we don't have to do that - // continously: + // { + // a: DOM element, + // b: DOM element, + // aMin: Number, + // bMin: Number, + // dragging: Boolean, + // parent: DOM element, + // direction: 'horizontal' | 'vertical' + // } // - // `size`: The total size of the pair. First + second + first gutter + second gutter. - // `start`: The leading side of the first element. + // The basic sequence: // - // ------------------------------------------------ - // | aGutterSize -> ||| | - // | ||| | - // | ||| | - // | ||| <- bGutterSize | - // ------------------------------------------------ - // | <- start size -> | - function calculateSizes() { - // Figure out the parent size minus padding. - var a = elements[this.a].element; - var b = elements[this.b].element; - - this.size = - a[getBoundingClientRect]()[dimension] + - b[getBoundingClientRect]()[dimension] + - this.aGutterSize + - this.bGutterSize; - this.start = a[getBoundingClientRect]()[position]; - } - - // stopDragging is very similar to startDragging in reverse. - function stopDragging() { - var self = this; - var a = elements[self.a].element; - var b = elements[self.b].element; - - if (self.dragging && options.onDragEnd) { - options.onDragEnd(); - } - - self.dragging = false; - - // Remove the stored event listeners. This is why we store them. - global[removeEventListener]('mouseup', self.stop); - global[removeEventListener]('touchend', self.stop); - global[removeEventListener]('touchcancel', self.stop); - - self.parent[removeEventListener]('mousemove', self.move); - self.parent[removeEventListener]('touchmove', self.move); - - // Delete them once they are removed. I think this makes a difference - // in memory usage with a lot of splits on one page. But I don't know for sure. - delete self.stop; - delete self.move; - - a[removeEventListener]('selectstart', NOOP); - a[removeEventListener]('dragstart', NOOP); - b[removeEventListener]('selectstart', NOOP); - b[removeEventListener]('dragstart', NOOP); - - a.style.userSelect = ''; - a.style.webkitUserSelect = ''; - a.style.MozUserSelect = ''; - a.style.pointerEvents = ''; - - b.style.userSelect = ''; - b.style.webkitUserSelect = ''; - b.style.MozUserSelect = ''; - b.style.pointerEvents = ''; - - self.gutter.style.cursor = ''; - self.parent.style.cursor = ''; - } - - // startDragging calls `calculateSizes` to store the inital size in the pair object. - // It also adds event listeners for mouse/touch events, - // and prevents selection while dragging so avoid the selecting text. - function startDragging(e) { - // Alias frequently used variables to save space. 200 bytes. - var self = this; - var a = elements[self.a].element; - var b = elements[self.b].element; - - // Call the onDragStart callback. - if (!self.dragging && options.onDragStart) { - options.onDragStart(); - } - - // Don't actually drag the element. We emulate that in the drag function. - e.preventDefault(); - - // Set the dragging property of the pair object. - self.dragging = true; - - // Create two event listeners bound to the same pair object and store - // them in the pair object. - self.move = drag.bind(self); - self.stop = stopDragging.bind(self); - - // All the binding. `window` gets the stop events in case we drag out of the elements. - global[addEventListener]('mouseup', self.stop); - global[addEventListener]('touchend', self.stop); - global[addEventListener]('touchcancel', self.stop); - - self.parent[addEventListener]('mousemove', self.move); - self.parent[addEventListener]('touchmove', self.move); - - // Disable selection. Disable! - a[addEventListener]('selectstart', NOOP); - a[addEventListener]('dragstart', NOOP); - b[addEventListener]('selectstart', NOOP); - b[addEventListener]('dragstart', NOOP); - - a.style.userSelect = 'none'; - a.style.webkitUserSelect = 'none'; - a.style.MozUserSelect = 'none'; - a.style.pointerEvents = 'none'; - - b.style.userSelect = 'none'; - b.style.webkitUserSelect = 'none'; - b.style.MozUserSelect = 'none'; - b.style.pointerEvents = 'none'; - - // Set the cursor, both on the gutter and the parent element. - // Doing only a, b and gutter causes flickering. - self.gutter.style.cursor = cursor; - self.parent.style.cursor = cursor; - - // Cache the initial sizes of the pair. - calculateSizes.call(self); - } - - // 5. Create pair and element objects. Each pair has an index reference to - // elements `a` and `b` of the pair (first and second elements). - // Loop through the elements while pairing them off. Every pair gets a - // `pair` object, a gutter, and isFirst/isLast properties. - // - // Basic logic: - // - // - Starting with the second element `i > 0`, create `pair` objects with - // `a = i - 1` and `b = i` - // - Set gutter sizes based on the _pair_ being first/last. The first and last - // pair have gutterSize / 2, since they only have one half gutter, and not two. - // - Create gutter elements and add event listeners. - // - Set the size of the elements, minus the gutter sizes. - // - // ----------------------------------------------------------------------- - // | i=0 | i=1 | i=2 | i=3 | - // | | isFirst | | isLast | - // | pair 0 pair 1 pair 2 | - // | | | | | - // ----------------------------------------------------------------------- - var pairs = []; - elements = ids.map(function(id, i) { - // Create the element object. - var element = { - element: elementOrSelector(id), - size: sizes[i], - minSize: minSizes[i] - }; - - var pair; - - if (i > 0) { - // Create the pair object with it's metadata. - pair = { - a: i - 1, - b: i, - dragging: false, - isFirst: i === 1, - isLast: i === ids.length - 1, - direction: direction, - parent: parent - }; - - // For first and last pairs, first and last gutter width is half. - pair.aGutterSize = gutterSize; - pair.bGutterSize = gutterSize; - - if (pair.isFirst) { - pair.aGutterSize = gutterSize / 2; + // 1. Set defaults to something sane. `options` doesn't have to be passed at all. + // 2. Initialize a bunch of strings based on the direction we're splitting. + // A lot of the behavior in the rest of the library is paramatized down to + // rely on CSS strings and classes. + // 3. Define the dragging helper functions, and a few helpers to go with them. + // 4. Loop through the elements while pairing them off. Every pair gets an + // `pair` object and a gutter. + // 5. Actually size the pair elements, insert gutters and attach event listeners. + var Split = function (idsOption, options) { + if ( options === void 0 ) options = {}; + + var ids = idsOption; + var dimension; + var clientAxis; + var position; + var positionEnd; + var clientSize; + var elements; + + // Allow HTMLCollection to be used as an argument when supported + if (Array.from) { + ids = Array.from(ids); + } + + // All DOM elements in the split should have a common parent. We can grab + // the first elements parent and hope users read the docs because the + // behavior will be whacky otherwise. + var firstElement = elementOrSelector(ids[0]); + var parent = firstElement.parentNode; + var parentStyle = getComputedStyle ? getComputedStyle(parent) : null; + var parentFlexDirection = parentStyle ? parentStyle.flexDirection : null; + + // Set default options.sizes to equal percentages of the parent element. + var sizes = getOption(options, 'sizes') || ids.map(function () { return 100 / ids.length; }); + + // Standardize minSize to an array if it isn't already. This allows minSize + // to be passed as a number. + var minSize = getOption(options, 'minSize', 100); + var minSizes = Array.isArray(minSize) ? minSize : ids.map(function () { return minSize; }); + + // Get other options + var expandToMin = getOption(options, 'expandToMin', false); + var gutterSize = getOption(options, 'gutterSize', 10); + var gutterAlign = getOption(options, 'gutterAlign', 'center'); + var snapOffset = getOption(options, 'snapOffset', 30); + var dragInterval = getOption(options, 'dragInterval', 1); + var direction = getOption(options, 'direction', HORIZONTAL); + var cursor = getOption( + options, + 'cursor', + direction === HORIZONTAL ? 'col-resize' : 'row-resize' + ); + var gutter = getOption(options, 'gutter', defaultGutterFn); + var elementStyle = getOption( + options, + 'elementStyle', + defaultElementStyleFn + ); + var gutterStyle = getOption(options, 'gutterStyle', defaultGutterStyleFn); + + // 2. Initialize a bunch of strings based on the direction we're splitting. + // A lot of the behavior in the rest of the library is paramatized down to + // rely on CSS strings and classes. + if (direction === HORIZONTAL) { + dimension = 'width'; + clientAxis = 'clientX'; + position = 'left'; + positionEnd = 'right'; + clientSize = 'clientWidth'; + } else if (direction === 'vertical') { + dimension = 'height'; + clientAxis = 'clientY'; + position = 'top'; + positionEnd = 'bottom'; + clientSize = 'clientHeight'; + } + + // 3. Define the dragging helper functions, and a few helpers to go with them. + // Each helper is bound to a pair object that contains its metadata. This + // also makes it easy to store references to listeners that that will be + // added and removed. + // + // Even though there are no other functions contained in them, aliasing + // this to self saves 50 bytes or so since it's used so frequently. + // + // The pair object saves metadata like dragging state, position and + // event listener references. + + function setElementSize(el, size, gutSize, i) { + // Split.js allows setting sizes via numbers (ideally), or if you must, + // by string, like '300px'. This is less than ideal, because it breaks + // the fluid layout that `calc(% - px)` provides. You're on your own if you do that, + // make sure you calculate the gutter size by hand. + var style = elementStyle(dimension, size, gutSize, i); + + Object.keys(style).forEach(function (prop) { + // eslint-disable-next-line no-param-reassign + el.style[prop] = style[prop]; + }); + } + + function setGutterSize(gutterElement, gutSize, i) { + var style = gutterStyle(dimension, gutSize, i); + + Object.keys(style).forEach(function (prop) { + // eslint-disable-next-line no-param-reassign + gutterElement.style[prop] = style[prop]; + }); } - if (pair.isLast) { - pair.bGutterSize = gutterSize / 2; + function getSizes() { + return elements.map(function (element) { return element.size; }) } - // if the parent has a reverse flex-direction, switch the pair elements. - if ( - parentFlexDirection === 'row-reverse' || - parentFlexDirection === 'column-reverse' - ) { - var temp = pair.a; - pair.a = pair.b; - pair.b = temp; + // Supports touch events, but not multitouch, so only the first + // finger `touches[0]` is counted. + function getMousePosition(e) { + if ('touches' in e) { return e.touches[0][clientAxis] } + return e[clientAxis] } - } - - // Determine the size of the current element. IE8 is supported by - // staticly assigning sizes without draggable gutters. Assigns a string - // to `size`. - // - // IE9 and above - if (!isIE8) { - // Create gutter elements for each pair. - if (i > 0) { - var gutterElement = gutter(i, direction); - setGutterSize(gutterElement, gutterSize); - - gutterElement[addEventListener]( - 'mousedown', - startDragging.bind(pair) - ); - gutterElement[addEventListener]( - 'touchstart', - startDragging.bind(pair) - ); - - parent.insertBefore(gutterElement, element.element); - - pair.gutter = gutterElement; + + // Actually adjust the size of elements `a` and `b` to `offset` while dragging. + // calc is used to allow calc(percentage + gutterpx) on the whole split instance, + // which allows the viewport to be resized without additional logic. + // Element a's size is the same as offset. b's size is total size - a size. + // Both sizes are calculated from the initial parent percentage, + // then the gutter size is subtracted. + function adjust(offset) { + var a = elements[this.a]; + var b = elements[this.b]; + var percentage = a.size + b.size; + + a.size = (offset / this.size) * percentage; + b.size = percentage - (offset / this.size) * percentage; + + setElementSize(a.element, a.size, this[aGutterSize], a.i); + setElementSize(b.element, b.size, this[bGutterSize], b.i); + } + + // drag, where all the magic happens. The logic is really quite simple: + // + // 1. Ignore if the pair is not dragging. + // 2. Get the offset of the event. + // 3. Snap offset to min if within snappable range (within min + snapOffset). + // 4. Actually adjust each element in the pair to offset. + // + // --------------------------------------------------------------------- + // | | <- a.minSize || b.minSize -> | | + // | | | <- this.snapOffset || this.snapOffset -> | | | + // | | | || | | | + // | | | || | | | + // --------------------------------------------------------------------- + // | <- this.start this.size -> | + function drag(e) { + var offset; + var a = elements[this.a]; + var b = elements[this.b]; + + if (!this.dragging) { return } + + // Get the offset of the event from the first side of the + // pair `this.start`. Then offset by the initial position of the + // mouse compared to the gutter size. + offset = + getMousePosition(e) - + this.start + + (this[aGutterSize] - this.dragOffset); + + if (dragInterval > 1) { + offset = Math.round(offset / dragInterval) * dragInterval; + } + + // If within snapOffset of min or max, set offset to min or max. + // snapOffset buffers a.minSize and b.minSize, so logic is opposite for both. + // Include the appropriate gutter sizes to prevent overflows. + if (offset <= a.minSize + snapOffset + this[aGutterSize]) { + offset = a.minSize + this[aGutterSize]; + } else if ( + offset >= + this.size - (b.minSize + snapOffset + this[bGutterSize]) + ) { + offset = this.size - (b.minSize + this[bGutterSize]); + } + + // Actually adjust the size. + adjust.call(this, offset); + + // Call the drag callback continously. Don't do anything too intensive + // in this callback. + getOption(options, 'onDrag', NOOP)(); + } + + // Cache some important sizes when drag starts, so we don't have to do that + // continously: + // + // `size`: The total size of the pair. First + second + first gutter + second gutter. + // `start`: The leading side of the first element. + // + // ------------------------------------------------ + // | aGutterSize -> ||| | + // | ||| | + // | ||| | + // | ||| <- bGutterSize | + // ------------------------------------------------ + // | <- start size -> | + function calculateSizes() { + // Figure out the parent size minus padding. + var a = elements[this.a].element; + var b = elements[this.b].element; + + var aBounds = a[getBoundingClientRect](); + var bBounds = b[getBoundingClientRect](); + + this.size = + aBounds[dimension] + + bBounds[dimension] + + this[aGutterSize] + + this[bGutterSize]; + this.start = aBounds[position]; + this.end = aBounds[positionEnd]; + } + + function innerSize(element) { + // Return nothing if getComputedStyle is not supported (< IE9) + // Or if parent element has no layout yet + if (!getComputedStyle) { return null } + + var computedStyle = getComputedStyle(element); + + if (!computedStyle) { return null } + + var size = element[clientSize]; + + if (size === 0) { return null } + + if (direction === HORIZONTAL) { + size -= + parseFloat(computedStyle.paddingLeft) + + parseFloat(computedStyle.paddingRight); + } else { + size -= + parseFloat(computedStyle.paddingTop) + + parseFloat(computedStyle.paddingBottom); + } + + return size + } + + // When specifying percentage sizes that are less than the computed + // size of the element minus the gutter, the lesser percentages must be increased + // (and decreased from the other elements) to make space for the pixels + // subtracted by the gutters. + function trimToMin(sizesToTrim) { + // Try to get inner size of parent element. + // If it's no supported, return original sizes. + var parentSize = innerSize(parent); + if (parentSize === null) { + return sizesToTrim + } + + if (minSizes.reduce(function (a, b) { return a + b; }, 0) > parentSize) { + return sizesToTrim + } + + // Keep track of the excess pixels, the amount of pixels over the desired percentage + // Also keep track of the elements with pixels to spare, to decrease after if needed + var excessPixels = 0; + var toSpare = []; + + var pixelSizes = sizesToTrim.map(function (size, i) { + // Convert requested percentages to pixel sizes + var pixelSize = (parentSize * size) / 100; + var elementGutterSize = getGutterSize( + gutterSize, + i === 0, + i === sizesToTrim.length - 1, + gutterAlign + ); + var elementMinSize = minSizes[i] + elementGutterSize; + + // If element is too smal, increase excess pixels by the difference + // and mark that it has no pixels to spare + if (pixelSize < elementMinSize) { + excessPixels += elementMinSize - pixelSize; + toSpare.push(0); + return elementMinSize + } + + // Otherwise, mark the pixels it has to spare and return it's original size + toSpare.push(pixelSize - elementMinSize); + return pixelSize + }); + + // If nothing was adjusted, return the original sizes + if (excessPixels === 0) { + return sizesToTrim + } + + return pixelSizes.map(function (pixelSize, i) { + var newPixelSize = pixelSize; + + // While there's still pixels to take, and there's enough pixels to spare, + // take as many as possible up to the total excess pixels + if (excessPixels > 0 && toSpare[i] - excessPixels > 0) { + var takenPixels = Math.min( + excessPixels, + toSpare[i] - excessPixels + ); + + // Subtract the amount taken for the next iteration + excessPixels -= takenPixels; + newPixelSize = pixelSize - takenPixels; + } + + // Return the pixel size adjusted as a percentage + return (newPixelSize / parentSize) * 100 + }) + } + + // stopDragging is very similar to startDragging in reverse. + function stopDragging() { + var self = this; + var a = elements[self.a].element; + var b = elements[self.b].element; + + if (self.dragging) { + getOption(options, 'onDragEnd', NOOP)(getSizes()); + } + + self.dragging = false; + + // Remove the stored event listeners. This is why we store them. + global[removeEventListener]('mouseup', self.stop); + global[removeEventListener]('touchend', self.stop); + global[removeEventListener]('touchcancel', self.stop); + global[removeEventListener]('mousemove', self.move); + global[removeEventListener]('touchmove', self.move); + + // Clear bound function references + self.stop = null; + self.move = null; + + a[removeEventListener]('selectstart', NOOP); + a[removeEventListener]('dragstart', NOOP); + b[removeEventListener]('selectstart', NOOP); + b[removeEventListener]('dragstart', NOOP); + + a.style.userSelect = ''; + a.style.webkitUserSelect = ''; + a.style.MozUserSelect = ''; + a.style.pointerEvents = ''; + + b.style.userSelect = ''; + b.style.webkitUserSelect = ''; + b.style.MozUserSelect = ''; + b.style.pointerEvents = ''; + + self.gutter.style.cursor = ''; + self.parent.style.cursor = ''; + document.body.style.cursor = ''; } - } - - // Set the element size to our determined size. - // Half-size gutters for first and last elements. - if (i === 0 || i === ids.length - 1) { - setElementSize(element.element, element.size, gutterSize / 2); - } else { - setElementSize(element.element, element.size, gutterSize); - } - - var computedSize = element.element[getBoundingClientRect]()[dimension]; - - if (computedSize < element.minSize) { - element.minSize = computedSize; - } - - // After the first iteration, and we have a pair object, append it to the - // list of pairs. - if (i > 0) { - pairs.push(pair); - } - - return element; - }); - - function setSizes(newSizes) { - newSizes.forEach(function(newSize, i) { - if (i > 0) { - var pair = pairs[i - 1]; - var a = elements[pair.a]; - var b = elements[pair.b]; - - a.size = newSizes[i - 1]; - b.size = newSize; - - setElementSize(a.element, a.size, pair.aGutterSize); - setElementSize(b.element, b.size, pair.bGutterSize); + + // startDragging calls `calculateSizes` to store the inital size in the pair object. + // It also adds event listeners for mouse/touch events, + // and prevents selection while dragging so avoid the selecting text. + function startDragging(e) { + // Right-clicking can't start dragging. + if ('button' in e && e.button !== 0) { + return + } + + // Alias frequently used variables to save space. 200 bytes. + var self = this; + var a = elements[self.a].element; + var b = elements[self.b].element; + + // Call the onDragStart callback. + if (!self.dragging) { + getOption(options, 'onDragStart', NOOP)(getSizes()); + } + + // Don't actually drag the element. We emulate that in the drag function. + e.preventDefault(); + + // Set the dragging property of the pair object. + self.dragging = true; + + // Create two event listeners bound to the same pair object and store + // them in the pair object. + self.move = drag.bind(self); + self.stop = stopDragging.bind(self); + + // All the binding. `window` gets the stop events in case we drag out of the elements. + global[addEventListener]('mouseup', self.stop); + global[addEventListener]('touchend', self.stop); + global[addEventListener]('touchcancel', self.stop); + global[addEventListener]('mousemove', self.move); + global[addEventListener]('touchmove', self.move); + + // Disable selection. Disable! + a[addEventListener]('selectstart', NOOP); + a[addEventListener]('dragstart', NOOP); + b[addEventListener]('selectstart', NOOP); + b[addEventListener]('dragstart', NOOP); + + a.style.userSelect = 'none'; + a.style.webkitUserSelect = 'none'; + a.style.MozUserSelect = 'none'; + a.style.pointerEvents = 'none'; + + b.style.userSelect = 'none'; + b.style.webkitUserSelect = 'none'; + b.style.MozUserSelect = 'none'; + b.style.pointerEvents = 'none'; + + // Set the cursor at multiple levels + self.gutter.style.cursor = cursor; + self.parent.style.cursor = cursor; + document.body.style.cursor = cursor; + + // Cache the initial sizes of the pair. + calculateSizes.call(self); + + // Determine the position of the mouse compared to the gutter + self.dragOffset = getMousePosition(e) - self.end; } - }); - } - - function destroy() { - pairs.forEach(function(pair) { - pair.parent.removeChild(pair.gutter); - elements[pair.a].element.style[dimension] = ''; - elements[pair.b].element.style[dimension] = ''; - }); - } - - if (isIE8) { - return { - setSizes: setSizes, - destroy: destroy - }; - } - - return { - setSizes: setSizes, - getSizes: function getSizes() { - return elements.map(function(element) { - return element.size; + + // adjust sizes to ensure percentage is within min size and gutter. + sizes = trimToMin(sizes); + + // 5. Create pair and element objects. Each pair has an index reference to + // elements `a` and `b` of the pair (first and second elements). + // Loop through the elements while pairing them off. Every pair gets a + // `pair` object and a gutter. + // + // Basic logic: + // + // - Starting with the second element `i > 0`, create `pair` objects with + // `a = i - 1` and `b = i` + // - Set gutter sizes based on the _pair_ being first/last. The first and last + // pair have gutterSize / 2, since they only have one half gutter, and not two. + // - Create gutter elements and add event listeners. + // - Set the size of the elements, minus the gutter sizes. + // + // ----------------------------------------------------------------------- + // | i=0 | i=1 | i=2 | i=3 | + // | | | | | + // | pair 0 pair 1 pair 2 | + // | | | | | + // ----------------------------------------------------------------------- + var pairs = []; + elements = ids.map(function (id, i) { + // Create the element object. + var element = { + element: elementOrSelector(id), + size: sizes[i], + minSize: minSizes[i], + i: i, + }; + + var pair; + + if (i > 0) { + // Create the pair object with its metadata. + pair = { + a: i - 1, + b: i, + dragging: false, + direction: direction, + parent: parent, + }; + + pair[aGutterSize] = getGutterSize( + gutterSize, + i - 1 === 0, + false, + gutterAlign + ); + pair[bGutterSize] = getGutterSize( + gutterSize, + false, + i === ids.length - 1, + gutterAlign + ); + + // if the parent has a reverse flex-direction, switch the pair elements. + if ( + parentFlexDirection === 'row-reverse' || + parentFlexDirection === 'column-reverse' + ) { + var temp = pair.a; + pair.a = pair.b; + pair.b = temp; + } + } + + // Determine the size of the current element. IE8 is supported by + // staticly assigning sizes without draggable gutters. Assigns a string + // to `size`. + // + // IE9 and above + if (!isIE8) { + // Create gutter elements for each pair. + if (i > 0) { + var gutterElement = gutter(i, direction, element.element); + setGutterSize(gutterElement, gutterSize, i); + + // Save bound event listener for removal later + pair[gutterStartDragging] = startDragging.bind(pair); + + // Attach bound event listener + gutterElement[addEventListener]( + 'mousedown', + pair[gutterStartDragging] + ); + gutterElement[addEventListener]( + 'touchstart', + pair[gutterStartDragging] + ); + + parent.insertBefore(gutterElement, element.element); + + pair.gutter = gutterElement; + } + } + + setElementSize( + element.element, + element.size, + getGutterSize( + gutterSize, + i === 0, + i === ids.length - 1, + gutterAlign + ), + i + ); + + // After the first iteration, and we have a pair object, append it to the + // list of pairs. + if (i > 0) { + pairs.push(pair); + } + + return element }); - }, - collapse: function collapse(i) { - if (i === pairs.length) { - var pair = pairs[i - 1]; - calculateSizes.call(pair); + function adjustToMin(element) { + var isLast = element.i === pairs.length; + var pair = isLast ? pairs[element.i - 1] : pairs[element.i]; - if (!isIE8) { - adjust.call(pair, pair.size - pair.bGutterSize); - } - } else { - var pair$1 = pairs[i]; + calculateSizes.call(pair); - calculateSizes.call(pair$1); + var size = isLast + ? pair.size - element.minSize - pair[bGutterSize] + : element.minSize + pair[aGutterSize]; - if (!isIE8) { - adjust.call(pair$1, pair$1.aGutterSize); - } + adjust.call(pair, size); + } + + elements.forEach(function (element) { + var computedSize = element.element[getBoundingClientRect]()[dimension]; + + if (computedSize < element.minSize) { + if (expandToMin) { + adjustToMin(element); + } else { + // eslint-disable-next-line no-param-reassign + element.minSize = computedSize; + } + } + }); + + function setSizes(newSizes) { + var trimmed = trimToMin(newSizes); + trimmed.forEach(function (newSize, i) { + if (i > 0) { + var pair = pairs[i - 1]; + + var a = elements[pair.a]; + var b = elements[pair.b]; + + a.size = trimmed[i - 1]; + b.size = newSize; + + setElementSize(a.element, a.size, pair[aGutterSize], a.i); + setElementSize(b.element, b.size, pair[bGutterSize], b.i); + } + }); + } + + function destroy(preserveStyles, preserveGutter) { + pairs.forEach(function (pair) { + if (preserveGutter !== true) { + pair.parent.removeChild(pair.gutter); + } else { + pair.gutter[removeEventListener]( + 'mousedown', + pair[gutterStartDragging] + ); + pair.gutter[removeEventListener]( + 'touchstart', + pair[gutterStartDragging] + ); + } + + if (preserveStyles !== true) { + var style = elementStyle( + dimension, + pair.a.size, + pair[aGutterSize] + ); + + Object.keys(style).forEach(function (prop) { + elements[pair.a].element.style[prop] = ''; + elements[pair.b].element.style[prop] = ''; + }); + } + }); + } + + if (isIE8) { + return { + setSizes: setSizes, + destroy: destroy, + } + } + + return { + setSizes: setSizes, + getSizes: getSizes, + collapse: function collapse(i) { + adjustToMin(elements[i]); + }, + destroy: destroy, + parent: parent, + pairs: pairs, } - }, - destroy: destroy }; - }; - return Split; -}); + return Split; + +}))); diff --git a/docs/assets/style.css b/docs/assets/style.css index 5265ea1f..54753127 100644 --- a/docs/assets/style.css +++ b/docs/assets/style.css @@ -138,3 +138,15 @@ table { .minishadow { box-shadow: 2px 2px 10px #f3f3f3; } +div.keyline-top-not { + padding-left: 2rem; + padding-right: 2rem; +} +div.keyline-top-not { + padding-left: 2rem; + padding-right: 2rem; +} +div.keyline-top-not { + padding-left: 2rem; + padding-right: 2rem; +} diff --git a/docs/assets/styles.min.css b/docs/assets/styles.min.css new file mode 100644 index 00000000..508a27f2 --- /dev/null +++ b/docs/assets/styles.min.css @@ -0,0 +1,4 @@ +body,button{margin:0}button,input,select,textarea{font-family:inherit;font-size:100%}img{max-width:100%}svg{max-height:100%}fieldset,input,select,textarea{font-size:1rem;margin-top:0;margin-bottom:.5rem}input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{box-sizing:border-box;height:2.25rem;padding:.5rem;vertical-align:middle;-webkit-appearance:none}select{box-sizing:border-box;line-height:1.75;padding:.5rem}select:not([multiple]){height:2.25rem;vertical-align:middle}textarea{box-sizing:border-box;line-height:1.75;padding:.5rem}.fieldset-reset{padding:0;margin-left:0;margin-right:0;border:0}.fieldset-reset legend{padding:0}.button,button{font-size:inherit;font-weight:700;text-decoration:none;cursor:pointer;display:inline-block;box-sizing:border-box;line-height:1.125rem;padding:.4rem .6rem;margin:0;height:auto;border:1px solid transparent;vertical-align:middle;-webkit-appearance:none}::-moz-focus-inner{border:0;padding:0}.button:hover{text-decoration:none}table{border-collapse:separate;border-spacing:0;max-width:100%;width:100%}th{text-align:left;font-weight:700}td,th{padding:.25rem 1rem;line-height:inherit}th{vertical-align:bottom}td{vertical-align:top}body{line-height:1.5;font-size:100%}body,h1,h2,h3,h4,h5,h6{font-family:Helvetica Neue,Helvetica,sans-serif}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.25;margin-top:1em;margin-bottom:.5em}dl,ol,p,ul{font-size:1rem;margin-top:0;margin-bottom:1rem}ol,ul{padding-left:2rem}code,pre,samp{font-family:Consolas,Source Code Pro,monospace;font-size:inherit}pre{margin-top:0;margin-bottom:1rem;overflow-x:scroll;padding:1rem;background-color:rgba(0,0,0,.03125)}blockquote,hr{margin-top:2rem;margin-bottom:2rem}blockquote{margin-left:0;padding-left:1rem;padding-right:1rem}blockquote,blockquote p{font-size:1.25rem;font-style:italic}.h1,h1{font-size:2rem}.h2,h2{font-size:1.5rem}.h3,h3{font-size:1.25rem}.h4,h4{font-size:1rem}.h5,h5{font-size:.875rem}.h6,h6{font-size:.75rem}.list-reset{list-style:none;padding-left:0}.inline{display:inline}.block{display:block}.inline-block{display:inline-block}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-auto{overflow:auto}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}.left{float:left}.right{float:right}.fit{max-width:100%}.half-width{width:50%}.full-width{width:100%}.bold{font-weight:700}.regular{font-weight:400}.italic{font-style:italic}.caps{text-transform:uppercase;letter-spacing:.2em}.left-align{text-align:left}.center{text-align:center}.right-align{text-align:right}.justify{text-align:justify}.nowrap{white-space:nowrap}.m0{margin:0}.mt0{margin-top:0}.mr0{margin-right:0}.mb0{margin-bottom:0}.ml0{margin-left:0}.m1{margin:.5rem}.mt1{margin-top:.5rem}.mr1{margin-right:.5rem}.mb1{margin-bottom:.5rem}.ml1{margin-left:.5rem}.m2{margin:1rem}.mt2{margin-top:1rem}.mr2{margin-right:1rem}.mb2{margin-bottom:1rem}.ml2{margin-left:1rem}.m3{margin:2rem}.mt3{margin-top:2rem}.mr3{margin-right:2rem}.mb3{margin-bottom:2rem}.ml3{margin-left:2rem}.m4{margin:4rem}.mt4{margin-top:4rem}.mr4{margin-right:4rem}.mb4{margin-bottom:4rem}.ml4{margin-left:4rem}.mxn1{margin-left:-.5rem;margin-right:-.5rem}.mxn2{margin-left:-1rem;margin-right:-1rem}.mxn3{margin-left:-2rem;margin-right:-2rem}.mxn4{margin-left:-4rem;margin-right:-4rem}.mx-auto{margin-left:auto;margin-right:auto}.p1{padding:.5rem}.py1{padding-top:.5rem;padding-bottom:.5rem}.px1{padding-left:.5rem;padding-right:.5rem}.p2{padding:1rem}.py2{padding-top:1rem;padding-bottom:1rem}.px2{padding-left:1rem;padding-right:1rem}.p3{padding:2rem}.py3{padding-top:2rem;padding-bottom:2rem}.px3{padding-left:2rem;padding-right:2rem}.p4{padding:4rem}.py4{padding-top:4rem;padding-bottom:4rem}.px4{padding-left:4rem;padding-right:4rem}.lg-show,.md-show,.sm-show{display:none!important}@media (min-width:40em){.sm-show{display:block!important}}@media (min-width:52em){.md-show{display:block!important}}@media (min-width:64em){.lg-show{display:block!important}}@media (min-width:40em){.sm-hide{display:none!important}}@media (min-width:52em){.md-hide{display:none!important}}@media (min-width:64em){.lg-hide{display:none!important}}.display-none{display:none!important}.hide{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.z1{z-index:1}.z2{z-index:2}.z3{z-index:3}.z4{z-index:4}.absolute-center{top:0;right:0;bottom:0;left:0;margin:auto;display:table}.button-small{padding:.25rem .5rem}.button-big{padding:1rem 1.25rem}.button-narrow{padding-left:.5rem;padding-right:.5rem}.container{max-width:64em;margin-left:auto;margin-right:auto}.col{float:left}.col,.col-right{box-sizing:border-box}.col-right{float:right}.col-1{width:8.33333%}.col-2{width:16.66667%}.col-3{width:25%}.col-4{width:33.33333%}.col-5{width:41.66667%}.col-6{width:50%}.col-7{width:58.33333%}.col-8{width:66.66667%}.col-9{width:75%}.col-10{width:83.33333%}.col-11{width:91.66667%}.col-12{width:100%}@media (min-width:40em){.sm-col{float:left;box-sizing:border-box}.sm-col-right{float:right;box-sizing:border-box}.sm-col-1{width:8.33333%}.sm-col-2{width:16.66667%}.sm-col-3{width:25%}.sm-col-4{width:33.33333%}.sm-col-5{width:41.66667%}.sm-col-6{width:50%}.sm-col-7{width:58.33333%}.sm-col-8{width:66.66667%}.sm-col-9{width:75%}.sm-col-10{width:83.33333%}.sm-col-11{width:91.66667%}.sm-col-12{width:100%}}@media (min-width:52em){.md-col{float:left;box-sizing:border-box}.md-col-right{float:right;box-sizing:border-box}.md-col-1{width:8.33333%}.md-col-2{width:16.66667%}.md-col-3{width:25%}.md-col-4{width:33.33333%}.md-col-5{width:41.66667%}.md-col-6{width:50%}.md-col-7{width:58.33333%}.md-col-8{width:66.66667%}.md-col-9{width:75%}.md-col-10{width:83.33333%}.md-col-11{width:91.66667%}.md-col-12{width:100%}}@media (min-width:64em){.lg-col{float:left;box-sizing:border-box}.lg-col-right{float:right;box-sizing:border-box}.lg-col-1{width:8.33333%}.lg-col-2{width:16.66667%}.lg-col-3{width:25%}.lg-col-4{width:33.33333%}.lg-col-5{width:41.66667%}.lg-col-6{width:50%}.lg-col-7{width:58.33333%}.lg-col-8{width:66.66667%}.lg-col-9{width:75%}.lg-col-10{width:83.33333%}.lg-col-11{width:91.66667%}.lg-col-12{width:100%}}.flex{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flex-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.flex-wrap{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.flex-center{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.flex-baseline{-webkit-box-align:baseline;-webkit-align-items:baseline;-ms-flex-align:baseline;align-items:baseline}.flex-stretch{-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.flex-start{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.flex-end{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.flex-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.flex-last{-webkit-box-ordinal-group:1025;-webkit-order:1024;-ms-flex-order:1024;order:1024}.flex-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.flex-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.flex-none{-webkit-box-flex:0;-webkit-flex:none;-ms-flex:none;flex:none}.flex>div{box-sizing:border-box}@media (min-width:40em){.sm-flex{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.sm-flex>div{box-sizing:border-box}}@media (min-width:52em){.md-flex{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.md-flex>div{box-sizing:border-box}}@media (min-width:64em){.lg-flex{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.lg-flex>div{box-sizing:border-box}}body{color:#222;background-color:#fff}a{color:#0074d9;text-decoration:none}a:hover{text-decoration:underline}hr{border:0;border-bottom:1px solid rgba(0,0,0,.125)}.button{color:#fff;background-color:#0074d9;border-radius:3px}.button:hover{box-shadow:inset 0 0 0 20rem rgba(0,0,0,.0625)}.button:focus{outline:none;border-color:rgba(0,0,0,.125);box-shadow:0 0 2px 1px rgba(0,0,0,.25)}.button.is-active,.button:active{box-shadow:inset 0 0 0 20rem rgba(0,0,0,.125),inset 0 3px 4px 0 rgba(0,0,0,.25),0 0 1px rgba(0,0,0,.125)}.button.is-disabled,.button:disabled{opacity:.5}.field-light{background-color:#fff;-webkit-transition:box-shadow .2s ease;transition:box-shadow .2s ease;border:1px solid rgba(0,0,0,.125);border-radius:3px}.field-light:focus{outline:none;border-color:#0074d9;box-shadow:0 0 2px rgba(0,116,217,.5)}.field-light:disabled{color:#aaa}.field-light:disabled,.field-light:read-only:not(select){background-color:rgba(0,0,0,.125)}.field-light:invalid{border-color:#ff4136}.field-light.is-success{border-color:#2ecc40}.field-light.is-warning{border-color:#ffdc00}.field-light.is-error{border-color:#ff4136}.checkbox-light,.radio-light{-webkit-transition:box-shadow .2s ease;transition:box-shadow .2s ease}.radio-light{border-radius:50%}.checkbox-light:focus,.radio-light:focus{outline:none;box-shadow:0 0 2px rgba(0,116,217,.5)}.field-dark{color:#fff;background-color:rgba(0,0,0,.25);border:1px solid rgba(0,0,0,.0625);border-radius:3px}.field-dark::-webkit-input-placeholder{color:hsla(0,0%,100%,.75)}.field-dark::-moz-placeholder{color:hsla(0,0%,100%,.75)}.field-dark:-ms-input-placeholder{color:hsla(0,0%,100%,.75)}.field-dark::placeholder{color:hsla(0,0%,100%,.75)}.field-dark:focus{outline:0;border:1px solid hsla(0,0%,100%,.5)}.field-dark:read-only:not(select){background-color:hsla(0,0%,100%,.25)}.field-dark:invalid{border-color:#ff4136}.field-dark.is-success{border-color:#2ecc40}.field-dark.is-warning{border-color:#ffdc00}.field-dark.is-error{border-color:#ff4136}input[type=range]{vertical-align:middle;background-color:transparent}.range-light{color:inherit;-webkit-appearance:none;padding-top:.5rem;padding-bottom:.5rem}.range-light::-webkit-slider-thumb{-webkit-appearance:none;position:relative;width:.5rem;height:1.25rem;border-radius:3px;background-color:currentcolor;cursor:pointer;margin-top:-.5rem}.range-light::-webkit-slider-thumb:before{content:"";display:block;position:absolute;top:-.5rem;left:-.875rem;width:2.25rem;height:2.25rem;opacity:0}.range-light::-moz-range-thumb{width:.5rem;height:1.25rem;border-radius:3px;border-color:transparent;border-width:0;background-color:currentcolor;cursor:pointer}.range-light::-webkit-slider-runnable-track{height:.25rem;cursor:pointer;border-radius:3px;background-color:rgba(0,0,0,.25)}.range-light::-moz-range-track{height:.25rem;cursor:pointer;border-radius:3px;background-color:rgba(0,0,0,.25)}.range-light:focus{outline:none}.range-light:focus::-webkit-slider-thumb{outline:none;border:0;box-shadow:0 0 1px 2px currentcolor}.range-light:focus::-moz-range-thumb{outline:none;border:0;box-shadow:0 0 1px 2px currentcolor}.progress{display:block;width:100%;height:.5625rem;margin:.5rem 0;background-color:rgba(0,0,0,.125);border:0;border-radius:10000px;overflow:hidden;-webkit-appearance:none;cursor:pointer}.progress::-webkit-progress-bar{-webkit-appearance:none;background-color:rgba(0,0,0,.125)}.progress::-webkit-progress-value{-webkit-appearance:none;background-color:currentColor}.progress::-moz-progress-bar{background-color:currentColor}.table-light td,.table-light th{border-bottom:1px solid rgba(0,0,0,.125)}.table-light tr:last-child td{border-bottom:0}.button-outline{position:relative;z-index:2;color:inherit;background-color:transparent;border-radius:3px;border:1px solid;-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-property:box-shadow,background-color;transition-property:box-shadow,background-color}.button-outline:before{content:"";width:100%;height:100%;display:block;position:absolute;z-index:-1;top:-1px;left:-1px;border:1px solid transparent;background-color:currentcolor;border-radius:3px;-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-property:opacity;transition-property:opacity;opacity:0}.button-outline:hover{box-shadow:none}.button-outline:hover:before{opacity:.125}.button-outline:focus{outline:none;border:1px solid;box-shadow:0 0 3px 1px}.button-outline.is-active,.button-outline:active{box-shadow:inset 0 1px 5px 0,0 0 1px}.button-outline.is-disabled,.button-outline:disabled{opacity:.5}.button-transparent{position:relative;z-index:2;color:inherit;background-color:transparent;border-radius:0;border:1px solid transparent}.button-transparent:before{content:"";width:100%;height:100%;display:block;position:absolute;z-index:-1;top:-1px;left:-1px;border:1px solid transparent;background-color:currentcolor;-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-property:opacity;transition-property:opacity;opacity:0}.button-transparent:hover{box-shadow:none}.button-transparent:hover:before{opacity:.0625;opacity:.09375}.button-transparent:focus{outline:none;border-color:transparent;box-shadow:0 0 3px}.button-transparent.is-active:before,.button-transparent:active:before{opacity:.0625}.button-transparent.is-disabled,.button-transparent:disabled{opacity:.5}.bg-cover{background-size:cover}.bg-contain{background-size:contain}.bg-center{background-position:50%}.bg-top{background-position:top}.bg-right{background-position:100%}.bg-bottom{background-position:bottom}.bg-left{background-position:0}.border{border:1px solid rgba(0,0,0,.125)}.border-top{border-top:1px solid rgba(0,0,0,.125)}.border-right{border-right:1px solid rgba(0,0,0,.125)}.border-bottom{border-bottom:1px solid rgba(0,0,0,.125)}.border-left{border-left:1px solid rgba(0,0,0,.125)}.rounded{border-radius:3px}.circle{border-radius:50%}.rounded-top{border-radius:3px 3px 0 0}.rounded-right{border-radius:0 3px 3px 0}.rounded-bottom{border-radius:0 0 3px 3px}.rounded-left{border-radius:3px 0 0 3px}.not-rounded{border-radius:0}.black,.dark-gray{color:#222}.gray,.mid-gray{color:#aaa}.light-gray,.silver{color:#ddd}.white{color:#fff}.aqua{color:#7fdbff}.blue{color:#0074d9}.navy{color:#001f3f}.teal{color:#39cccc}.green{color:#2ecc40}.olive{color:#3d9970}.lime{color:#01ff70}.yellow{color:#ffdc00}.orange{color:#ff851b}.red{color:#ff4136}.fuchsia{color:#f012be}.purple{color:#b10dc9}.maroon{color:#85144b}.bg-black,.bg-dark-gray{background-color:#222}.bg-gray,.bg-mid-gray{background-color:#aaa}.bg-light-gray,.bg-silver{background-color:#ddd}.bg-white{background-color:#fff}.bg-aqua{background-color:#7fdbff}.bg-blue{background-color:#0074d9}.bg-navy{background-color:#001f3f}.bg-teal{background-color:#39cccc}.bg-green{background-color:#2ecc40}.bg-olive{background-color:#3d9970}.bg-lime{background-color:#01ff70}.bg-yellow{background-color:#ffdc00}.bg-orange{background-color:#ff851b}.bg-red{background-color:#ff4136}.bg-fuchsia{background-color:#f012be}.bg-purple{background-color:#b10dc9}.bg-maroon{background-color:#85144b}.bg-darken-0{background-color:rgba(0,0,0,.03125)}.bg-darken-1{background-color:rgba(0,0,0,.0625)}.bg-darken-2{background-color:rgba(0,0,0,.125)}.bg-darken-3{background-color:rgba(0,0,0,.25)}.bg-darken-4{background-color:rgba(0,0,0,.5)}.border-aqua{border-color:#7fdbff}.border-blue{border-color:#0074d9}.border-navy{border-color:#001f3f}.border-teal{border-color:#39cccc}.border-green{border-color:#2ecc40}.border-olive{border-color:#3d9970}.border-lime{border-color:#01ff70}.border-yellow{border-color:#ffdc00}.border-orange{border-color:#ff851b}.border-red{border-color:#ff4136}.border-fuchsia{border-color:#f012be}.border-purple{border-color:#b10dc9}.border-maroon{border-color:#85144b}.border-black{border-color:#222}.border-gray{border-color:#aaa}.border-silver{border-color:#ddd}.border-white{border-color:#fff}.border-darken-1{border-color:rgba(0,0,0,.0625)}.border-darken-2{border-color:rgba(0,0,0,.125)}.border-darken-3{border-color:rgba(0,0,0,.25)}.border-darken-4{border-color:rgba(0,0,0,.5)}.muted{opacity:.5}.hljs{color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment,.hljs-javadoc{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#1184ce}.hljs-dartdoc,.hljs-hexcolor,.hljs-number,.hljs-phpdoc,.hljs-string,.hljs-tag .hljs-value,.ruby .hljs-constant,.tex .hljs-formula{color:#ed225d}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rules .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}.hljs{display:block;overflow-x:auto;padding:.5em;background:#232323;color:#e6e1dc}.hljs-comment,.hljs-quote{color:#bc9458;font-style:italic}.hljs-keyword,.hljs-selector-tag{color:#c26230}.hljs-number,.hljs-regexp,.hljs-string,.hljs-template-variable,.hljs-variable{color:#a5c261}.hljs-subst{color:#519f50}.hljs-name,.hljs-tag{color:#e8bf6a}.hljs-type{color:#da4939}.hljs-attr,.hljs-built_in,.hljs-builtin-name,.hljs-bullet,.hljs-link,.hljs-symbol{color:#6d9cbe}.hljs-params{color:#d0d0ff}.hljs-attribute{color:#cda869}.hljs-meta{color:#9b859d}.hljs-section,.hljs-title{color:#ffc66d}.hljs-addition{background-color:#144212}.hljs-addition,.hljs-deletion{color:#e6e1dc;display:inline-block;width:100%}.hljs-deletion{background-color:#600}.hljs-selector-class{color:#9b703f}.hljs-selector-id{color:#8b98ab}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}.documentation{font-family:system-ui,-apple-system,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;overflow-x:hidden}.documentation a{color:#298ee6}.documentation a.black{color:#052e52}.container-small{max-width:58rem;margin-left:auto;margin-right:auto}.font-smaller{font-size:80%}.dark a.quiet{color:#fff}.dark a{color:#d2d2d2}.fade{opacity:.5}.button-indent{padding:.25rem 1.5rem;font-size:90%}.section-indent{border-left:2px solid #eee}.force-inline *{display:inline}section:target{background:#fafafa}.documentation-sidebar a:active{background:#298ee6;color:#fff}.documentation h1,.documentation h2,.documentation h3,.documentation h4,.documentation h5,.documentation h6{font-family:inherit;font-weight:700}p{font-family:inherit;line-height:1.7rem;color:#464646}.documentation code,.documentation pre,.documentation samp{font-family:Consolas,Inconsolata,Source Code Pro,monospace}pre{border-radius:3px;word-break:break-word;white-space:pre-wrap;display:block}h4{font-size:.8rem}.quiet{color:#7d7d7d}.small{font-size:.9rem}td{word-break:break-word}th.small{font-size:.8rem}.strong{font-weight:700}li{margin-top:10px}.keyline-all{border:1px solid #7d7d7d}.keyline-light{border:1px solid #e0e0e0}.fill-light{background:#efefef}li>code,p>code,td>code>a{font-weight:700}.documentation pre{padding:1rem;background:#052e52;color:#e6e1dc;font-size:.9rem}.bg-midnight{background:#052e52}.dark-link a,.dark-link code{color:#052e52}table p,table td{font-size:.9rem;line-height:1.3rem}.documentation td,.documentation th,.input{padding:.5rem}.input{font-family:inherit;display:block;width:100%;height:2rem;margin-bottom:1rem;border:1px solid #ccc;font-size:.875rem;border-radius:3px;box-sizing:border-box}div.keyline-top-not { + padding-left: 2rem; + padding-right: 2rem; +} diff --git a/docs/index.html b/docs/index.html index 373d84aa..2fff0b44 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,2052 +1,2266 @@ - - recurly 3.0.0-beta.5 | Documentation - - - - - - + + recurly 3.0.0-beta.5 | Documentation + + + - -
-
-
-

recurly

-
3.0.0-beta.5
- -
- -
- -
-
-
- - -
- -
- -

- -

- - -
- - -

This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - -
- -

- -

- - -
- - -

This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - -
- -

- Client -

- - -
- - - -
new Client(apiKey: string)
- - -

- Extends - - BaseClient - -

- - - - - - - - - - -
Parameters
-
- -
-
- apiKey (string) - The private api key. - -
- -
- -
- - - + +
+
+
+ +
+
+
+ + +
+
+ +

+ Getting Started +

+ + +

Installing

+

This library is published on npm under the name recurly.

+

We recommend manually inserting and scoping the dependency into the dependencies section of your package.json:

+
{
+  // ...
+  "recurly" : "3.0.0-beta.5"
+  // ...
+}
+
+

Or install via the command line:

+
npm install recurly@3.0.0-beta.5 --save-prod
+
+

Creating a client

+

A client object represents a connection to the Recurly API. The client implements +each operation that can be performed in the API as a method.

+

To initialize a client, you only need an API key which can be obtained on the API Credentials Page.

+
const recurly = require('recurly')
+// You should store your api key somewhere safe
+// and not in plain text if possible
+const myApiKey = '<myapikey>'
+const client = new recurly.Client(myApiKey)
+

Operations

+

All operations are async and return promises (except the list* methods which return Pagers). +You can handle the promises directly with then and catch or use await:

+
client.getAccount('code-benjamin')
+  .then(account => console.log(account.id))
+  .catch(err => console.log(err.msg))
+
async function myFunc () {
+  try {
+    let account = await client.getAccount('code-benjamin')
+  } catch (err) {
+    // handle err from client
+  }
+}
+

Creating Resources

+

For creating or updating resources, pass a json object to one of the create or update methods. +Keep in mind that the api accepts snake-cased keys but this library expects camel-cased keys. +We do the translation for you so this library can conform to js style standards.

+
client.createAccount({
+    code: 'new-account-code',
+    firstName: 'Benjamin',
+    lastName: 'Du Monde'
+  })
+  .then(account => console.log(account.id))
+  .catch(console.log)
+

Pagination

+

All list* methods on the client return a Pager. They +are not async because they are lazy and do not make any +network requests until they are iterated over. There are +two methods on Pager that return async iterators each and eachPage:

+
    +
  • each will give you an iterator over each item that matches your query.
  • +
  • eachPage will give you an iterator over each page that is returned. The result is an array of resources.
  • +
+
async function eachAccount (accounts) {
+  try {
+    for await (const acct of accounts.each()) {
+      console.log(acct.id)
+    }
+  } catch (err) {
+    // err is bubbled up from recurly client
+  }
+}
 
-  
+async function eachPageOfAccounts (accounts) {
+  try {
+    for await (const page of accounts.eachPage()) {
+      page.forEach(acct => console.log(acct.id))
+    }
+  } catch (err) {
+    // err is bubbled up from recurly client
+  }
+}
 
-  
+const accounts = client.listAccounts({
+    beginTime: '2018-12-01T00:00:00Z',
+    sort: 'updated_at'
+  })
 
-  
+eachAccount(accounts)
+// or 
+eachPageOfAccounts(accounts)
+

Efficiently Fetch the First or Last Resource

+

The Pager class implements a first method which allows you to fetch just the first or last resource from the server. +On top of being a convenient abstraction, this is implemented efficiently by only asking the server for the 1 item you want.

+
const accounts = client.listAccounts({
+    beginTime: '2018-12-01T00:00:00Z',
+    subscriber: true,
+    order: 'desc'
+  })
 
-  
+const firstAccount = await accounts.first()
+

If you want to fetch the last account in this scenario, invert the order from desc to asc

+
const accounts = client.listAccounts({
+    beginTime: '2018-12-01T00:00:00Z',
+    subscriber: true,
+    order: 'asc'
+  })
 
-  
-    
Instance Members
-
- -
-
-
- - listSites(params) -
-
-
+

Counting Resources

+

The Pager class implements a count method which allows you to count the resources the pager would return. +It does so by calling the endpoint with HEAD and parsing and returning the Recurly-Total-Records header. This +method respects any filtering parameters you apply to the pager, but the sorting parameters will have no effect.

+
const accounts = client.listAccounts({
+    beginTime: '2018-12-01T00:00:00Z',
+    subscriber: true
+  })
 
-  
+const count = await accounts.count()
+// => 573
+

Error Handling

+

This library currently throws 1 primary class of exceptions, recurly.ApiError. +The ApiError comes in a few flavors which help you determine what to do next. To see a full list, view the api_errors module.

+
try {
+  const expiredSub = await client.terminateSubscription(subId, { refund: 'full' })
+} catch (err) {
+  if (err) {
+    if (err.getResponse()) {
+      const requstId = err.getResponse().requestId
+      console.log("Request Id useful for support: ", requestId)
+    }
 
-  

List sites

+ if (err instanceof recurly.errors.ValidationError) { + // If the request was not valid, you may want to tell your user + // why. You can find the invalid params and reasons in err.params + console.log('Failed validation', err.params) + // } else if (err instanceof recurly.errors.NotFoundError) { + // console.log('Failed validation', err.params) + } else if (err instanceof recurly.ApiError) { + console.log('generic api error', err) + } else { + // If we don't know what to do with the err, we should + // probably re-raise and let our web framework and logger handle it + console.log('Unknown Error: ', err) + } + } +}
+

HTTP Metadata

+

Sometimes you might want to get some additional information about the underlying HTTP request and response. Instead of +returning this information directly and forcing the programmer to unwrap it, we inject this metadata into the top level +resource that was returned. You can access the response by calling getResponse() on any Resource.

+

Warning: Do not log or render whole requests or responses as they may contain PII or sensitive data.

+
const account = await client.getAccount("code-benjamin")
+const response = account.getResponse()
+response.rateLimitRemaining // 1985
+response.requestId // "0av50sm5l2n2gkf88ehg"
+response.request.path // "/sites/subdomain-mysite/accounts/code-benjamin"
+response.request.body // null
+

This also works on Empty responses:

+
const result = await client.removeLineItem("a959576b2b10b012")
+const response = result.getResponse()
+

And it can be captured on exceptions through the ApiError object:

+
try {
+  const account = await client.getAccount(account_id)
+} catch (err) {
+  if (err instanceof recurly.errors.NotFoundError) {
+    // You can also get the Response here
+    const response = err.getResponse()
+  } else {
+    console.log('Unknown Error: ', err)
+  }
+}
+

Webhooks

+

Recurly can send webhooks to any publicly accessible server. When an event in Recurly triggers +a webhook (e.g., an account is opened), Recurly will attempt to send this notification to the +endpoint(s) you specify. You can specify up to 10 endpoints through the application. All +notifications will be sent to all configured endpoints for your site.

+

See our product docs to learn more about webhooks +and see our dev docs to learn about what payloads +are available.

+

Although our API is now JSON, our webhook payloads are still formatted as XML for the time being. +This library is not yet responsible for handling webhooks. If you do need webhooks, we recommend using a simple +XML to Plain Object parser such as xml2js.

+
const parseString = require('xml2js').parseString
+
+const xml = `
+    <?xml version="1.0" encoding="UTF-8"?>
+    <new_account_notification>
+      <account>
+        <account_code>1</account_code>
+        <username nil="true"></username>
+        <email>verena@example.com</email>
+        <first_name>Verena</first_name>
+        <last_name>Example</last_name>
+        <company_name nil="true"></company_name>
+      </account>
+    </new_account_notification>
+`;
+
+parseString(xml, function (err, result) {
+  const code = result.new_account_notification.account[0].account_code[0];
+  console.log("New account created with code: ", code);
+})
+

You can do this without dependencies, but you'll need to heed warnings about security concerns. +Read more about the security implications of parsing untrusted XML in this OWASP cheatsheet.

+ + +
+
+ + + +
+ +
+ + + Extends + + BaseClient + + + + +
+ +

+ + + Client + (apiKey) + + +

+ +

The connection to the Recurly API.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
apiKey + string + + The private api key. +
+ + + + + + + + + + + + + +

Instance Members

+
+ +
+ +
+ + +
+ +

+ + + listSites + (params) + + +

+ +

List sites

API docs: https://developers.recurly.com/api/v2019-10-10#operation/list_sites

-
listSites(params: Object): Pager<Site>
- - - - - - - - - - - -
Parameters
-
- -
-
- params (Object - = {}) - The optional url parameters for this request. - -
- - - - - - - - - - - - - - - -
NameDescription
params.ids Array<string> + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + - + - - - + + - + - - - + + - + - - -
parametertypedescription
params + Object + + = {} + The optional url parameters for this request. +
params.ids + Array<string> + Filter results by their IDs. Up to 200 IDs can be passed at once using + Filter results by their IDs. Up to 200 IDs can be passed at once using commas as separators, e.g. ids=h1at4d57xlmy,gyqgg0d3v9n1,jrsm5b4yefg6 . @@ -2059,219 +2273,231 @@

  • Records are returned in an arbitrary order. Since results are all returned at once you can sort the records yourself.
  • -

    params.limit number + +
    params.limit + number + Limit number of records 1-200. -Limit number of records 1-200. +
    params.order string + +
    params.order + string + Sort order. -Sort order. +
    params.sort string + +
    params.sort + string + Sort field. You + Sort field. You really only want to sort by updated_at in ascending order. In descending order updated records will move behind the cursor and could prevent some records from being returned. -
    - - - - - - - + + + +
    + - - -
    Returns
    - Pager<Site>: - A list of sites. + - - - + + +

    Returns

    + Pager<Site> + : + A list of sites. + + + + - + - -
    Example
    - - -
    const sites = client.listSites({ limit: 200 })
    +	
    +	

    Examples

    + + +
    const sites = client.listSites({ limit: 200 })
     
     for await (const site of sites.each()) {
       console.log(site.subdomain)
    -}
    - - +}
    + + - + - + - + - +
    -
    -
    -
    -
    -
    - - getSite(siteId) -
    -
    - -
    - -
    -
    -
    - - listAccounts(params) -
    -
    - -
    - -
    -
    -
    - - createAccount(body) -
    -
    - -
    -
    -
    -
    - - getAccount(accountId) -
    -
    - -
    - -
    -
    -
    - - updateAccount(accountId, body) -
    -
    - -
    - -
    -
    -
    - - deactivateAccount(accountId) -
    -
    - -
    - -
    -
    -
    - - getAccountAcquisition(accountId) -
    -
    - -
    -
    -
    -
    - - updateAccountAcquisition(accountId, body) -
    -
    - -
    - -
    -
    -
    - - removeAccountAcquisition(accountId) -
    -
    - -
    - -
    -
    -
    - - reactivateAccount(accountId) -
    -
    - -
    - -
    -
    -
    - - getAccountBalance(accountId) -
    -
    - -
    -
    -
    -
    - - getBillingInfo(accountId) -
    -
    - -
    - -
    -
    -
    - - updateBillingInfo(accountId, body) -
    -
    - -
    - -
    -
    -
    - - removeBillingInfo(accountId) -
    -
    - -
    - -
    -
    -
    - - listAccountCouponRedemptions(accountId, params) -
    -
    - -
    -
    -
    -
    - - getActiveCouponRedemption(accountId) -
    -
    - -
    - -
    -
    -
    - - createCouponRedemption(accountId, body) -
    -
    - - -
    - -
    -
    - body (CouponRedemptionCreate) - The object representing the JSON request to send to the server. It should conform to the schema of {CouponRedemptionCreate} - -
    - -
    - -
    +
    - +
    + + +
    - - -
    Returns
    - Promise<CouponRedemption>: - Returns the new coupon redemption. +

    + + + removeCouponRedemption + (accountId) + + +

    - - - +

    Delete the active coupon redemption from an account

    +

    API docs: https://developers.recurly.com/api/v2019-10-10#operation/remove_coupon_redemption

    - + + + + + + + + + + + + + + + + + + + + + + + + +
    parametertypedescription
    accountId + string + + Account ID or code (use prefix: +code- +, e.g. +code-bob +). +
    + - + - + + +

    Returns

    + Promise<CouponRedemption> + : + Coupon redemption deleted. + + + + - + - + - -
    + -
    -
    - -
    -
    -
    - - removeCouponRedemption(accountId) -
    -
    - -
    - -
    -
    -
    - - listAccountInvoices(accountId, params) -
    -
    - -
    - -
    -
    -
    - - createInvoice(accountId, body) -
    -
    - -
    -
    -
    -
    - - previewInvoice(accountId, body) -
    -
    - -
    - -
    -
    -
    - - listAccountLineItems(accountId, params) -
    -
    - -
    - -
    -
    -
    - - createLineItem(accountId, body) -
    -
    - -
    - -
    -
    -
    - - listAccountNotes(accountId, params) -
    -
    - -
    - -
    -
    -
    - - getAccountNote(accountId, accountNoteId) -
    -
    - -
    - -
    -
    -
    - - listShippingAddresses(accountId, params) -
    -
    - -
    - -
    -
    -
    - - createShippingAddress(accountId, body) -
    -
    - -
    - -
    -
    -
    - - getShippingAddress(accountId, shippingAddressId) -
    -
    - -
    -
    -
    -
    - - updateShippingAddress(accountId, shippingAddressId, body) -
    -
    - -
    - -
    -
    -
    - - removeShippingAddress(accountId, shippingAddressId) -
    -
    - -
    - -
    -
    -
    - - listAccountSubscriptions(accountId, params) -
    -
    - -
    -
    -
    -
    - - listAccountTransactions(accountId, params) -
    -
    - -
    - -
    -
    -
    - - listChildAccounts(accountId, params) -
    -
    - -
    - -
    -
    -
    - - listAccountAcquisition(params) -
    -
    - -
    - -
    -
    -
    - - listCoupons(params) -
    -
    - -
    - -
    -
    -
    - - createCoupon(body) -
    -
    - -
    - -
    -
    -
    - - getCoupon(couponId) -
    -
    - -
    -
    -
    -
    - - updateCoupon(couponId, body) -
    -
    - - -
    - -
    -
    - body (CouponUpdate) - The object representing the JSON request to send to the server. It should conform to the schema of {CouponUpdate} - -
    - -
    - -
    +
    - +
    + + +
    - - -
    Returns
    - Promise<Coupon>: - The updated coupon. +

    + + + listUniqueCouponCodes + (couponId, params) + + +

    + +

    List unique coupon codes associated with a bulk coupon

    +

    API docs: https://developers.recurly.com/api/v2019-10-10#operation/list_unique_coupon_codes

    - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - -
    -
    -
    - - listUniqueCouponCodes(couponId, params) -
    -
    -
    parametertypedescription
    couponId + string + + Coupon ID or code (use prefix: +code- +, e.g. +code-10off +). +
    params + Object + + = {} + The optional url parameters for this request. +
    params.ids + Array<string> - + Filter results by their IDs. Up to 200 IDs can be passed at once using +commas as separators, e.g. +ids=h1at4d57xlmy,gyqgg0d3v9n1,jrsm5b4yefg6 +. +

    Important notes:

    +
      +
    • The ids parameter cannot be used with any other ordering or filtering +parameters (limit, order, sort, begin_time, end_time, etc)
    • +
    • Invalid or unknown IDs will be ignored, so you should check that the +results correspond to your request.
    • +
    • Records are returned in an arbitrary order. Since results are all +returned at once you can sort the records yourself.
    • +
    +
    - - - - - - - - - - - - - - - - - - - - - + + - + - - - + + - + - - - + + - + - - - + + - + - - - + + - + - - -
    NameDescription
    params.ids Array<string> - Filter results by their IDs. Up to 200 IDs can be passed at once using -commas as separators, e.g. -ids=h1at4d57xlmy,gyqgg0d3v9n1,jrsm5b4yefg6 -. -

    Important notes:

    -
      -
    • The ids parameter cannot be used with any other ordering or filtering -parameters (limit, order, sort, begin_time, end_time, etc)
    • -
    • Invalid or unknown IDs will be ignored, so you should check that the -results correspond to your request.
    • -
    • Records are returned in an arbitrary order. Since results are all -returned at once you can sort the records yourself.
    • -
    -
    params.limit number + +
    params.limit + number + Limit number of records 1-200. -Limit number of records 1-200. +
    params.order string + +
    params.order + string + Sort order. -Sort order. +
    params.sort string + +
    params.sort + string + Sort field. You + Sort field. You really only want to sort by updated_at in ascending order. In descending order updated records will move behind the cursor and could prevent some records from being returned. -
    params.beginTime datetime + +
    params.beginTime + datetime + Filter by begin_time when + Filter by begin_time when sort=created_at or sort=updated_at @@ -7159,15 +7774,18 @@

    Note: this value is an ISO8601 timestamp. A partial timestamp that does not include a time zone will default to UTC. -

    params.endTime datetime + +
    params.endTime + datetime + Filter by end_time when + Filter by end_time when sort=created_at or sort=updated_at @@ -7175,135 +7793,140 @@

    Note: this value is an ISO8601 timestamp. A partial timestamp that does not include a time zone will default to UTC. -

    - -
    - - - - - + + + + + - - -
    Returns
    - Pager<UniqueCouponCode>: - A list of unique coupon codes that were generated + - - - + + +

    Returns

    + Pager<UniqueCouponCode> + : + A list of unique coupon codes that were generated + + + + - + - + - + - + - + - + - - - -
    -
    -
    - - listCreditPayments(params) -
    -
    - -
    - -
    -
    -
    - - getCreditPayment(creditPaymentId) -
    -
    - -
    -
    -
    -
    - - listCustomFieldDefinitions(params) -
    -
    - -
    - -
    -
    -
    - - getCustomFieldDefinition(customFieldDefinitionId) -
    -
    - -
    - -
    -
    -
    - - listInvoices(params) -
    -
    - -
    - -
    -
    -
    - - getInvoice(invoiceId) -
    -
    - -
    - -
    -
    -
    - - putInvoice(invoiceId, body) -
    -
    - -
    - -
    -
    -
    - - collectInvoice(invoiceId) -
    -
    - -
    -
    -
    -
    - - failInvoice(invoiceId) -
    -
    - -
    - -
    -
    -
    - - markInvoiceSuccessful(invoiceId) -
    -
    - -
    - -
    -
    -
    - - reopenInvoice(invoiceId) -
    -
    - -
    - -
    -
    -
    - - voidInvoice(invoiceId) -
    -
    - -
    -
    -
    -
    - - listInvoiceLineItems(invoiceId, params) -
    -
    - -
    -
    -
    -
    - - listInvoiceCouponRedemptions(invoiceId, params) -
    -
    - -
    - -
    -
    -
    - - listRelatedInvoices(invoiceId, params) -
    -
    - -
    - -
    -
    -
    - - refundInvoice(invoiceId, body) -
    -
    - -
    - -
    -
    -
    - - listLineItems(params) -
    -
    - -
    - -
    -
    -
    - - getLineItem(lineItemId) -
    -
    - -
    - -
    -
    -
    - - removeLineItem(lineItemId) -
    -
    - -
    -
    -
    -
    - - listPlans(params) -
    -
    - -
    - -
    -
    -
    - - createPlan(body) -
    -
    - -
    - -
    -
    -
    - - getPlan(planId) -
    -
    - -
    - -
    -
    -
    - - updatePlan(planId, body) -
    -
    - -
    - -
    -
    -
    - - removePlan(planId) -
    -
    - -
    -
    -
    -
    - - listPlanAddOns(planId, params) -
    -
    - -
    - -
    -
    -
    - - createPlanAddOn(planId, body) -
    -
    - -
    - -
    -
    -
    - - getPlanAddOn(planId, addOnId) -
    -
    - -
    -
    -
    -
    - - updatePlanAddOn(planId, addOnId, body) -
    -
    - -
    - -
    -
    -
    - - removePlanAddOn(planId, addOnId) -
    -
    - -
    - -
    -
    -
    - - listAddOns(params) -
    -
    - -
    - -
    -
    -
    - - getAddOn(addOnId) -
    -
    - -
    - -
    -
    -
    - - listShippingMethods(params) -
    -
    - -
    - -
    -
    -
    - - getShippingMethod(id) -
    -
    - -
    -
    -
    -
    - - listSubscriptions(params) -
    -
    - -
    - -
    -
    -
    - - createSubscription(body) -
    -
    - -
    - -
    -
    -
    - - getSubscription(subscriptionId) -
    -
    - -
    - -
    -
    -
    - - modifySubscription(subscriptionId, body) -
    -
    - -
    - -
    -
    -
    - - terminateSubscription(subscriptionId, params) -
    -
    - -
    - -
    -
    -
    - - cancelSubscription(subscriptionId) -
    -
    - -
    -
    -
    -
    - - reactivateSubscription(subscriptionId) -
    -
    - -
    - -
    -
    -
    - - pauseSubscription(subscriptionId, body) -
    -
    - -
    - -
    -
    -
    - - resumeSubscription(subscriptionId) -
    -
    - -
    - -
    -
    -
    - - getSubscriptionChange(subscriptionId) -
    -
    - -
    -
    -
    -
    - - createSubscriptionChange(subscriptionId, body) -
    -
    - -
    - -
    -
    -
    - - removeSubscriptionChange(subscriptionId) -
    -
    - -
    - -
    -
    -
    - - listSubscriptionInvoices(subscriptionId, params) -
    -
    - -
    -
    -
    -
    - - listSubscriptionLineItems(subscriptionId, params) -
    -
    - -
    -
    -
    -
    - - listSubscriptionCouponRedemptions(subscriptionId, params) -
    -
    - -
    - -
    -
    -
    - - listTransactions(params) -
    -
    - -
    - -
    -
    -
    - - getTransaction(transactionId) -
    -
    - -
    -
    -
    -
    - - getUniqueCouponCode(uniqueCouponCodeId) -
    -
    - -
    - -
    -
    -
    - - deactivateUniqueCouponCode(uniqueCouponCodeId) -
    -
    - -
    - -
    -
    -
    - - reactivateUniqueCouponCode(uniqueCouponCodeId) -
    -
    - -
    - -
    -
    -
    - - createPurchase(body) -
    -
    - -
    - -
    -
    -
    - - previewPurchase(body) -
    -
    - -
    - + - + - + - - - -
    + + + +
    + +
    + + +
    + +

    + + + Pager + (client, path, params) + + +

    + +

    The class responsible for pagination.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    parametertypedescription
    client + Client + +
    path + string + +
    params + Object + +
    + + + + + + + + + + + + + +

    Instance Members

    +
    + +
    + +
    + + +
    + +

    + + + eachPage + () + + +

    + +

    Returns an async iterator over each page of results.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    -
    - -

    - Pager -

    - - -
    - +
    -

    The class responsible for pagination.

    +
    + + +
    -
    new Pager(client: Client, path: string, params: Object)
    - - +

    + + + each + () + + +

    - - - - - - +

    Returns an async iterator over each resource in results.

    - -
    Parameters
    -
    - -
    -
    - client (Client) - -
    - -
    - -
    -
    - path (string) - -
    - -
    - -
    -
    - params (Object) - -
    - -
    - -
    - + - + + + + + + - + - + - + - + - -
    Instance Members
    -
    - -
    -
    -
    - - eachPage() -
    -
    - -
    - -
    -
    -
    - - each() -
    -
    - -
    - -
    -
    -
    - - count() -
    -
    - - - - + - + - + +
    - + + + +
    + +
    + + +
    + +

    + + + getCompiledSchema + () + + +

    + +

    Holds a cached copy of the compiled +Schema object for this Resource.

    - + - + + + + + + - -
    + -
    - - -
    -
    -
    - - first() -
    -
    - -
    - - + - + - + - -
    + - - - -
    + +
    - -
    - -

    - getCompiledSchema -

    - - -
    - + + + +
    -

    Holds a cached copy of the compiled -Schema object for this Resource.

    +
    + + + Extends + + Resource + + + + +
    -
    getCompiledSchema()
    - - +

    + + + Empty + () + + +

    - - - - - - +

    A special resource for an empty response

    - + - + + + + + + - + - + - + - + - + - + - -
    + - - - -
    + - -
    - -

    - cast -

    - - -
    - + +
    -

    Can cast a plain js Object to a Resource -of this class type

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    cast(v: Object)
    - - + - - - - - - + + + + + + - -
    Parameters
    -
    - -
    -
    - v (Object) - The plain js Object to cast - -
    - -
    - -
    - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - Empty -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + Account + () + + +

    + +

    Account

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    address + Address + +
    billTo + string + + : An enumerable describing the billing behavior of the account, specifically whether the account is self-paying or will rely on the parent account to pay. +
    billingInfo + BillingInfo + +
    ccEmails + string + + : Additional email address that should receive account correspondence. These should be separated only by commas. These CC emails will receive all emails that the +email + field also receives. +
    code + string + + : The unique identifier of the account. This cannot be changed once the account is created. +
    company + string + +
    createdAt + datetime + + : When the account was created. +
    customFields + Array<CustomField> + +
    deletedAt + datetime + + : If present, when the account was last marked inactive. +
    email + string + + : The email address used for communicating with this customer. The customer will also use this email address to log into your hosted account management pages. This value does not need to be unique. +
    exemptionCertificate + string + + : The tax exemption certificate number for the account. If the merchant has an integration for the Vertex tax provider, this optional value will be sent in any tax calculation requests for the account. +
    firstName + string + +
    hostedLoginToken + string + + : The unique token for automatically logging the account in to the hosted management pages. You may automatically log the user into their hosted management pages by directing the user to: +https://{subdomain}.recurly.com/account/{hosted_login_token} +. +
    id + string + +
    lastName + string + +
    parentAccountId + string + + : The UUID of the parent account associated with this account. +
    preferredLocale + string + + : Used to determine the language and locale of emails sent on behalf of the merchant to the customer. +
    shippingAddresses + Array<ShippingAddress> + + : The shipping addresses on the account. +
    state + string + + : Accounts can be either active or inactive. +
    taxExempt + boolean + + : The tax status of the account. +true + exempts tax on the account, +false + applies tax on the account. +
    updatedAt + datetime + + : When the account was last changed. +
    username + string + + : A secondary value for the account. +
    vatNumber + string + + : The VAT number of the account (to avoid having the VAT applied). This is only used for manually collected invoices. +
    + + + + + + + + + + + + + + + +
    -

    A special resource for an empty response

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    Empty
    - - -

    - Extends - - Resource - -

    - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + AccountAcquisition + () + + +

    + +

    AccountAcquisition

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    account + AccountMini + +
    campaign + string + + : An arbitrary identifier for the marketing campaign that led to the acquisition of this account. +
    channel + string + + : The channel through which the account was acquired. +
    cost + AccountAcquisitionCost + +
    createdAt + datetime + + : When the account acquisition data was created. +
    id + string + +
    subchannel + string + + : An arbitrary subchannel string representing a distinction/subcategory within a broader channel. +
    updatedAt + datetime + + : When the account acquisition data was last changed. +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - Account -

    - - -
    - - -

    Account

    - -
    Account
    - -

    - Type: - Object -

    - - - - - - - - - + + + +
    + +
    + + +
    + +

    + + + AccountAcquisitionCost + () + + +

    + +

    AccountAcquisitionCost

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    amount + number + + : The amount of the corresponding currency used to acquire the account. +
    currency + string + + : 3-letter ISO 4217 currency code. +
    + + + + + + + + + + + + + + + +
    - + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    - -
    Properties
    -
    - -
    - address (Address) - - -
    - -
    - billTo (string) - : An enumerable describing the billing behavior of the account, specifically whether the account is self-paying or will rely on the parent account to pay. - - -
    - -
    - billingInfo (BillingInfo) - - -
    - -
    - ccEmails (string) - : Additional email address that should receive account correspondence. These should be separated only by commas. These CC emails will receive all emails that the -email - field also receives. + - -
    - -
    - code (string) - : The unique identifier of the account. This cannot be changed once the account is created. - - -
    - -
    - company (string) - - -
    - -
    - createdAt (datetime) - : When the account was created. - - -
    - -
    - customFields (Array<CustomField>) - - -
    - -
    - deletedAt (datetime) - : If present, when the account was last marked inactive. - - -
    - -
    - email (string) - : The email address used for communicating with this customer. The customer will also use this email address to log into your hosted account management pages. This value does not need to be unique. - - -
    - -
    - exemptionCertificate (string) - : The tax exemption certificate number for the account. If the merchant has an integration for the Vertex tax provider, this optional value will be sent in any tax calculation requests for the account. - - -
    - -
    - firstName (string) - - -
    - -
    - hostedLoginToken (string) - : The unique token for automatically logging the account in to the hosted management pages. You may automatically log the user into their hosted management pages by directing the user to: -https://{subdomain}.recurly.com/account/{hosted_login_token} -. + + + + + + - -
    - -
    - id (string) - - -
    - -
    - lastName (string) - - -
    - -
    - parentAccountId (string) - : The UUID of the parent account associated with this account. - - -
    - -
    - preferredLocale (string) - : Used to determine the language and locale of emails sent on behalf of the merchant to the customer. - - -
    - -
    - shippingAddresses (Array<ShippingAddress>) - : The shipping addresses on the account. - - -
    - -
    - state (string) - : Accounts can be either active or inactive. - - -
    - -
    - taxExempt (boolean) - : The tax status of the account. -true - exempts tax on the account, -false - applies tax on the account. + - -
    - -
    - updatedAt (datetime) - : When the account was last changed. - - -
    - -
    - username (string) - : A secondary value for the account. - - -
    - -
    - vatNumber (string) - : The VAT number of the account (to avoid having the VAT applied). This is only used for manually collected invoices. - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + AccountBalance + () + + +

    + +

    AccountBalance

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    account + AccountMini + +
    balances + Array<AccountBalanceAmount> + +
    pastDue + boolean + +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - AccountAcquisition -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + AccountBalanceAmount + () + + +

    + +

    AccountBalanceAmount

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    amount + number + + : Total amount the account is past due. +
    currency + string + + : 3-letter ISO 4217 currency code. +
    + + + + + + + + + + + + + + + +
    -

    AccountAcquisition

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    AccountAcquisition
    - -

    - Type: - Object -

    - - + - - - - - - + + + + + + - + - -
    Properties
    -
    - -
    - account (AccountMini) - - -
    - -
    - campaign (string) - : An arbitrary identifier for the marketing campaign that led to the acquisition of this account. - - -
    - -
    - channel (string) - : The channel through which the account was acquired. - - -
    - -
    - cost (AccountAcquisitionCost) - - -
    - -
    - createdAt (datetime) - : When the account acquisition data was created. - - -
    - -
    - id (string) - - -
    - -
    - subchannel (string) - : An arbitrary subchannel string representing a distinction/subcategory within a broader channel. - - -
    - -
    - updatedAt (datetime) - : When the account acquisition data was last changed. - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + AccountMini + () + + +

    + +

    AccountMini

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    billTo + string + +
    code + string + + : The unique identifier of the account. +
    company + string + +
    email + string + + : The email address used for communicating with this customer. +
    firstName + string + +
    id + string + +
    lastName + string + +
    parentAccountId + string + +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - AccountAcquisitionCost -

    - - -
    - - -

    AccountAcquisitionCost

    + + + +
    + +
    + + +
    + +

    + + + AccountNote + () + + +

    + +

    AccountNote

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    accountId + string + +
    createdAt + datetime + +
    id + string + +
    message + string + +
    user + User + +
    + + + + + + + + + + + + + + + +
    -
    AccountAcquisitionCost
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - amount (number) - : The amount of the corresponding currency used to acquire the account. - - -
    - -
    - currency (string) - : 3-letter ISO 4217 currency code. - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - AccountBalance -

    - - -
    - - -

    AccountBalance

    - -
    AccountBalance
    - -

    - Type: - Object -

    - - - - - - - - - + + + +
    + +
    + + +
    + +

    + + + AddOn + () + + +

    + +

    AddOn

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - -
    Properties
    -
    - -
    - account (AccountMini) - - -
    - -
    - balances (Array<AccountBalanceAmount>) - - -
    - -
    - pastDue (boolean) - - -
    - -
    - + + +
    propertytypedescription
    accountingCode + string + + : Accounting code for invoice line items for this add-on. If no value is provided, it defaults to add-on's code. +
    code + string + + : The unique identifier for the add-on within its plan. +
    createdAt + datetime + + : Created at +
    currencies + Array<AddOnPricing> + + : Add-on pricing +
    defaultQuantity + number + + : Default quantity for the hosted pages. +
    deletedAt + datetime + + : Deleted at +
    displayQuantity + boolean + + : Determines if the quantity field is displayed on the hosted pages for the add-on. +
    id + string + + : Add-on ID +
    name + string + + : Describes your add-on and will appear in subscribers' invoices. +
    planId + string + + : Plan ID +
    state + string + + : Add-ons can be either active or inactive. +
    taxCode + string + + : Used by Avalara, Vertex, and Recurly’s EU VAT tax feature. The tax code values are specific to each tax system. If you are using Recurly’s EU VAT feature you can use +unknown +, +physical +, or +digital +. +
    updatedAt + datetime + + : Last updated at +
    + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - AccountBalanceAmount -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + AddOnMini + () + + +

    + +

    AddOnMini

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    accountingCode + string + + : Accounting code for invoice line items for this add-on. If no value is provided, it defaults to add-on's code. +
    code + string + + : The unique identifier for the add-on within its plan. +
    id + string + + : Add-on ID +
    name + string + + : Describes your add-on and will appear in subscribers' invoices. +
    + + + + + + + + + + + + + + + +
    -

    AccountBalanceAmount

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    AccountBalanceAmount
    - -

    - Type: - Object -

    - - + - - - - - - + + + + + + - + - -
    Properties
    -
    - -
    - amount (number) - : Total amount the account is past due. - - -
    - -
    - currency (string) - : 3-letter ISO 4217 currency code. - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + AddOnPricing + () + + +

    + +

    AddOnPricing

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    currency + string + + : 3-letter ISO 4217 currency code. +
    unitAmount + number + + : Unit price +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - AccountMini -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + Address + () + + +

    + +

    Address

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    city + string + + : City +
    country + string + + : Country, 2-letter ISO code. +
    firstName + string + + : First name +
    lastName + string + + : Last name +
    phone + string + + : Phone number +
    postalCode + string + + : Zip or postal code. +
    region + string + + : State or province. +
    street1 + string + + : Street 1 +
    street2 + string + + : Street 2 +
    + + + + + + + + + + + + + + + +
    -

    AccountMini

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    AccountMini
    - -

    - Type: - Object -

    - - + - - - - - - + + + + + + - + - -
    Properties
    -
    - -
    - billTo (string) - - -
    - -
    - code (string) - : The unique identifier of the account. - - -
    - -
    - company (string) - - -
    - -
    - email (string) - : The email address used for communicating with this customer. - - -
    - -
    - firstName (string) - - -
    - -
    - id (string) - - -
    - -
    - lastName (string) - - -
    - -
    - parentAccountId (string) - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + BillingInfo + () + + +

    + +

    BillingInfo

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    accountId + string + +
    address + Address + +
    company + string + +
    createdAt + datetime + + : When the billing information was created. +
    firstName + string + +
    fraud + FraudInfo + + : Most recent fraud result. +
    id + string + +
    lastName + string + +
    paymentMethod + PaymentMethod + +
    updatedAt + datetime + + : When the billing information was last changed. +
    updatedBy + BillingInfoUpdatedBy + +
    valid + boolean + +
    vatNumber + string + + : Customer's VAT number (to avoid having the VAT applied). This is only used for automatically collected invoices. +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - AccountNote -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + BillingInfoUpdatedBy + () + + +

    + +

    BillingInfoUpdatedBy

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    country + string + + : Country of IP address, if known by Recurly. +
    ip + string + + : Customer's IP address when updating their billing information. +
    + + + + + + + + + + + + + + + +
    -

    AccountNote

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    AccountNote
    - -

    - Type: - Object -

    - - + - - - - - - + + + + + + - + - -
    Properties
    -
    - -
    - accountId (string) - - -
    - -
    - createdAt (datetime) - - -
    - -
    - id (string) - - -
    - -
    - message (string) - - -
    - -
    - user (User) - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - AddOn -

    - - -
    - - -

    AddOn

    - -
    AddOn
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - accountingCode (string) - : Accounting code for invoice line items for this add-on. If no value is provided, it defaults to add-on's code. - - -
    - -
    - code (string) - : The unique identifier for the add-on within its plan. - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - currencies (Array<AddOnPricing>) - : Add-on pricing - - -
    - -
    - defaultQuantity (number) - : Default quantity for the hosted pages. - - -
    - -
    - deletedAt (datetime) - : Deleted at - - -
    - -
    - displayQuantity (boolean) - : Determines if the quantity field is displayed on the hosted pages for the add-on. - - -
    - -
    - id (string) - : Add-on ID - - -
    - -
    - name (string) - : Describes your add-on and will appear in subscribers' invoices. - - -
    - -
    - planId (string) - : Plan ID - - -
    - -
    - state (string) - : Add-ons can be either active or inactive. - - -
    - -
    - taxCode (string) - : Used by Avalara, Vertex, and Recurly’s EU VAT tax feature. The tax code values are specific to each tax system. If you are using Recurly’s EU VAT feature you can use -unknown -, -physical -, or -digital -. - - -
    - -
    - updatedAt (datetime) - : Last updated at - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - AddOnMini -

    - - -
    - - -

    AddOnMini

    - -
    AddOnMini
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - accountingCode (string) - : Accounting code for invoice line items for this add-on. If no value is provided, it defaults to add-on's code. - - -
    - -
    - code (string) - : The unique identifier for the add-on within its plan. - - -
    - -
    - id (string) - : Add-on ID - - -
    - -
    - name (string) - : Describes your add-on and will appear in subscribers' invoices. - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - AddOnPricing -

    - - -
    - - -

    AddOnPricing

    - -
    AddOnPricing
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - currency (string) - : 3-letter ISO 4217 currency code. - - -
    - -
    - unitAmount (number) - : Unit price - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - Address -

    - - -
    - - -

    Address

    - -
    Address
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - city (string) - : City - - -
    - -
    - country (string) - : Country, 2-letter ISO code. - - -
    - -
    - firstName (string) - : First name - - -
    - -
    - lastName (string) - : Last name - - -
    - -
    - phone (string) - : Phone number - - -
    - -
    - postalCode (string) - : Zip or postal code. - - -
    - -
    - region (string) - : State or province. - - -
    - -
    - street1 (string) - : Street 1 - - -
    - -
    - street2 (string) - : Street 2 - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - BillingInfo -

    - - -
    - - -

    BillingInfo

    - -
    BillingInfo
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - accountId (string) - - -
    - -
    - address (Address) - - -
    - -
    - company (string) - - -
    - -
    - createdAt (datetime) - : When the billing information was created. - - -
    - -
    - firstName (string) - - -
    - -
    - fraud (FraudInfo) - : Most recent fraud result. - - -
    - -
    - id (string) - - -
    - -
    - lastName (string) - - -
    - -
    - paymentMethod (PaymentMethod) - - -
    - -
    - updatedAt (datetime) - : When the billing information was last changed. - - -
    - -
    - updatedBy (BillingInfoUpdatedBy) - - -
    - -
    - valid (boolean) - - -
    - -
    - vatNumber (string) - : Customer's VAT number (to avoid having the VAT applied). This is only used for automatically collected invoices. - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - BillingInfoUpdatedBy -

    - - -
    - - -

    BillingInfoUpdatedBy

    - -
    BillingInfoUpdatedBy
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - country (string) - : Country of IP address, if known by Recurly. - - -
    - -
    - ip (string) - : Customer's IP address when updating their billing information. - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - Coupon -

    - - -
    - - -

    Coupon

    - -
    Coupon
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - appliesToAllPlans (boolean) - : The coupon is valid for all plans if true. If false then -plans - and -plans_names - will list the applicable plans. - - -
    - -
    - appliesToNonPlanCharges (boolean) - : The coupon is valid for one-time, non-plan charges if true. - - -
    - -
    - code (string) - : The code the customer enters to redeem the coupon. - - -
    - -
    - couponType (string) - : Whether the coupon is "single_code" or "bulk". Bulk coupons will require a -unique_code_template - and will generate unique codes through the -/generate - endpoint. - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - discount (CouponDiscount) - - -
    - -
    - duration (string) - :
      -
    • "single_use" coupons applies to the first invoice only. - "temporal" coupons will apply to invoices for the duration determined by the temporal_unit and temporal_amount attributes.
    • -
    - - -
    - -
    - expiredAt (datetime) - : The date and time the coupon was expired early or reached its -max_redemptions -. - - -
    - -
    - freeTrialAmount (number) - : Sets the duration of time the -free_trial_unit - is for. - - -
    - -
    - freeTrialUnit (string) - : Description of the unit of time the coupon is for. Used with -free_trial_amount - to determine the duration of time the coupon is for. - - -
    - -
    - hostedPageDescription (string) - : This description will show up when a customer redeems a coupon on your Hosted Payment Pages, or if you choose to show the description on your own checkout page. - - -
    - -
    - id (string) - : Coupon ID - - -
    - -
    - invoiceDescription (string) - : Description of the coupon on the invoice. - - -
    - -
    - maxRedemptions (number) - : A maximum number of redemptions for the coupon. The coupon will expire when it hits its maximum redemptions. - - -
    - -
    - maxRedemptionsPerAccount (number) - : Redemptions per account is the number of times a specific account can redeem the coupon. Set redemptions per account to -1 - if you want to keep customers from gaming the system and getting more than one discount from the coupon campaign. - - -
    - -
    - name (string) - : The internal name for the coupon. - - -
    - -
    - plans (Array<PlanMini>) - : A list of plans for which this coupon applies. This will be -null - if -applies_to_all_plans=true -. - - -
    - -
    - plansNames (Array<string>) - : TODO - - -
    - -
    - redeemBy (datetime) - : The date and time the coupon will expire and can no longer be redeemed. Time is always 11:59:59, the end-of-day Pacific time. - - -
    - -
    - redemptionResource (string) - : Whether the discount is for all eligible charges on the account, or only a specific subscription. - - -
    - -
    - state (string) - : Indicates if the coupon is redeemable, and if it is not, why. - - -
    - -
    - temporalAmount (number) - : If -duration - is "temporal" than -temporal_amount - is an integer which is multiplied by -temporal_unit - to define the duration that the coupon will be applied to invoices for. - - -
    - -
    - temporalUnit (string) - : If -duration - is "temporal" than -temporal_unit - is multiplied by -temporal_amount - to define the duration that the coupon will be applied to invoices for. - - -
    - -
    - uniqueCodeTemplate (string) - : On a bulk coupon, the template from which unique coupon codes are generated. - - -
    - -
    - uniqueCouponCodesCount (number) - : When this number reaches -max_redemptions - the coupon will no longer be redeemable. - - -
    - -
    - updatedAt (datetime) - : Last updated at - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - CouponDiscount -

    - - -
    - - -

    CouponDiscount

    - -
    CouponDiscount
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - currencies (Array<CouponDiscountPricing>) - : This is only present when -type=fixed -. - - -
    - -
    - percent (number) - : This is only present when -type=percent -. - - -
    - -
    - trial (CouponDiscountTrial) - : This is only present when -type=free_trial -. - - -
    - -
    - type (string) - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - CouponDiscountPricing -

    - - -
    - - -

    CouponDiscountPricing

    - -
    CouponDiscountPricing
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - amount (number) - : Value of the fixed discount that this coupon applies. - - -
    - -
    - currency (string) - : 3-letter ISO 4217 currency code. - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - CouponDiscountTrial -

    - - -
    - - -

    CouponDiscountTrial

    - -
    CouponDiscountTrial
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - length (number) - : Trial length measured in the units specified by the sibling -unit - property - - -
    - -
    - unit (string) - : Temporal unit of the free trial - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - CouponMini -

    - - -
    - - -

    CouponMini

    - -
    CouponMini
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - code (string) - : The code the customer enters to redeem the coupon. - - -
    - -
    - couponType (string) - : Whether the coupon is "single_code" or "bulk". Bulk coupons will require a -unique_code_template - and will generate unique codes through the -/generate - endpoint. - - -
    - -
    - discount (CouponDiscount) - - -
    - -
    - expiredAt (datetime) - : The date and time the coupon was expired early or reached its -max_redemptions -. - - -
    - -
    - id (string) - : Coupon ID - - -
    - -
    - name (string) - : The internal name for the coupon. - - -
    - -
    - state (string) - : Indicates if the coupon is redeemable, and if it is not, why. - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - CouponRedemption -

    - - -
    - - -

    CouponRedemption

    - -
    CouponRedemption
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - account (AccountMini) - : The Account on which the coupon was applied. - - -
    - -
    - coupon (Coupon) - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - currency (string) - : 3-letter ISO 4217 currency code. - - -
    - -
    - discounted (number) - : The amount that was discounted upon the application of the coupon, formatted with the currency. - - -
    - -
    - id (string) - : Coupon Redemption ID - - -
    - -
    - removedAt (datetime) - : The date and time the redemption was removed from the account (un-redeemed). - - -
    - -
    - state (string) - : Coupon Redemption state - - -
    - -
    - updatedAt (datetime) - : Last updated at - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - CouponRedemptionMini -

    - - -
    - - -

    CouponRedemptionMini

    - -
    CouponRedemptionMini
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - coupon (CouponMini) - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - discounted (number) - : The amount that was discounted upon the application of the coupon, formatted with the currency. - - -
    - -
    - id (string) - : Coupon Redemption ID - - -
    - -
    - state (string) - : Invoice state - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - CreditPayment -

    - - -
    - - -

    CreditPayment

    - -
    CreditPayment
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - account (AccountMini) - - -
    - -
    - action (string) - : The action for which the credit was created. - - -
    - -
    - amount (number) - : Total credit payment amount applied to the charge invoice. - - -
    - -
    - appliedToInvoice (InvoiceMini) - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - currency (string) - : 3-letter ISO 4217 currency code. - - -
    - -
    - id (string) - : Credit Payment ID - - -
    - -
    - originalCreditPaymentId (string) - : For credit payments with action -refund -, this is the credit payment that was refunded. - - -
    - -
    - originalInvoice (InvoiceMini) - - -
    - -
    - refundTransaction (Transaction) - - -
    - -
    - updatedAt (datetime) - : Last updated at - - -
    - -
    - uuid (string) - : The UUID is useful for matching data with the CSV exports and building URLs into Recurly's UI. - - -
    - -
    - voidedAt (datetime) - : Voided at - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - CustomField -

    - - -
    - - -

    CustomField

    - -
    CustomField
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - name (string) - : Fields must be created in the UI before values can be assigned to them. - - -
    - -
    - value (string) - : Any values that resemble a credit card number or security code (CVV/CVC) will be rejected. - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - CustomFieldDefinition -

    - - -
    - - -

    CustomFieldDefinition

    - -
    CustomFieldDefinition
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - deletedAt (datetime) - : Definitions are initially soft deleted, and once all the values are removed from the accouts or subscriptions, will be hard deleted an no longer visible. - - -
    - -
    - displayName (string) - : Used to label the field when viewing and editing the field in Recurly's admin UI. - - -
    - -
    - id (string) - : Custom field definition ID - - -
    - -
    - name (string) - : Used by the API to identify the field or reading and writing. The name can only be used once per Recurly object type. - - -
    - -
    - relatedType (string) - : Related Recurly object type - - -
    - -
    - tooltip (string) - : Displayed as a tooltip when editing the field in the Recurly admin UI. - - -
    - -
    - updatedAt (datetime) - : Last updated at - - -
    - -
    - userAccess (string) - : The access control applied inside Recurly's admin UI: - -api_only - - No one will be able to view or edit this field's data via the admin UI. - -read_only - - Users with the Customers role will be able to view this field's data via the admin UI, but editing will only be available via the API. - -write - - Users with the Customers role will be able to view and edit this field's data via the admin UI. - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - Error -

    - - -
    - - -

    Error

    - -
    Error
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - message (string) - : Message - - -
    - -
    - params (Array<Object>) - : Parameter specific errors - - -
    - -
    - type (string) - : Type - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - ErrorMayHaveTransaction -

    - - -
    - - -

    ErrorMayHaveTransaction

    - -
    ErrorMayHaveTransaction
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - message (string) - : Message - - -
    - -
    - params (Array<Object>) - : Parameter specific errors - - -
    - -
    - transactionError (TransactionError) - : This is only included on errors with -type=transaction -. - - -
    - -
    - type (string) - : Type - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - FraudInfo -

    - - -
    - - -

    FraudInfo

    - -
    FraudInfo
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - decision (string) - : Kount decision - - -
    - -
    - riskRulesTriggered (Object) - : Kount rules - - -
    - -
    - score (number) - : Kount score - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - Invoice -

    - - -
    - - -

    Invoice

    - -
    Invoice
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - account (AccountMini) - - -
    - -
    - address (InvoiceAddress) - - -
    - -
    - balance (number) - : The outstanding balance remaining on this invoice. - - -
    - -
    - closedAt (datetime) - : Date invoice was marked paid or failed. - - -
    - -
    - collectionMethod (string) - : An automatic invoice means a corresponding transaction is run using the account's billing information at the same time the invoice is created. Manual invoices are created without a corresponding transaction. The merchant must enter a manual payment transaction or have the customer pay the invoice with an automatic method, like credit card, PayPal, Amazon, or ACH bank payment. - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - creditPayments (Array<CreditPayment>) - : Credit payments - - -
    - -
    - currency (string) - : 3-letter ISO 4217 currency code. - - -
    - -
    - customerNotes (string) - : This will default to the Customer Notes text specified on the Invoice Settings. Specify custom notes to add or override Customer Notes. - - -
    - -
    - discount (number) - : Total discounts applied to this invoice. - - -
    - -
    - dueAt (datetime) - : Date invoice is due. This is the date the net terms are reached. - - -
    - -
    - id (string) - : Invoice ID - - -
    - -
    - lineItems (LineItemList) - - -
    - -
    - netTerms (number) - : Integer representing the number of days after an invoice's creation that the invoice will become past due. If an invoice's net terms are set to '0', it is due 'On Receipt' and will become past due 24 hours after it’s created. If an invoice is due net 30, it will become past due at 31 days exactly. - - -
    - -
    - number (string) - : If VAT taxation and the Country Invoice Sequencing feature are enabled, invoices will have country-specific invoice numbers for invoices billed to EU countries (ex: FR1001). Non-EU invoices will continue to use the site-level invoice number sequence. - - -
    - -
    - origin (string) - : The event that created the invoice. - - -
    - -
    - paid (number) - : The total amount of successful payments transaction on this invoice. - - -
    - -
    - poNumber (string) - : For manual invoicing, this identifies the PO number associated with the subscription. - - -
    - -
    - previousInvoiceId (string) - : On refund invoices, this value will exist and show the invoice ID of the purchase invoice the refund was created from. - - -
    - -
    - refundableAmount (number) - : The refundable amount on a charge invoice. It will be null for all other invoices. - - -
    - -
    - shippingAddress (ShippingAddress) - - -
    - -
    - state (string) - : Invoice state - - -
    - -
    - subscriptionIds (Array<string>) - : If the invoice is charging or refunding for one or more subscriptions, these are their IDs. - - -
    - -
    - subtotal (number) - : The summation of charges, discounts, and credits, before tax. - - -
    - -
    - tax (number) - : The total tax on this invoice. - - -
    - -
    - taxInfo (TaxInfo) - - -
    - -
    - termsAndConditions (string) - : This will default to the Terms and Conditions text specified on the Invoice Settings page in your Recurly admin. Specify custom notes to add or override Terms and Conditions. - - -
    - -
    - total (number) - : The final total on this invoice. The summation of invoice charges, discounts, credits, and tax. - - -
    - -
    - transactions (Array<Transaction>) - : Transactions - - -
    - -
    - type (string) - : Invoices are either charge, credit, or legacy invoices. - - -
    - -
    - updatedAt (datetime) - : Last updated at - - -
    - -
    - vatNumber (string) - : VAT registration number for the customer on this invoice. This will come from the VAT Number field in the Billing Info or the Account Info depending on your tax settings and the invoice collection method. - - -
    - -
    - vatReverseChargeNotes (string) - : VAT Reverse Charge Notes only appear if you have EU VAT enabled or are using your own Avalara AvaTax account and the customer is in the EU, has a VAT number, and is in a different country than your own. This will default to the VAT Reverse Charge Notes text specified on the Tax Settings page in your Recurly admin, unless custom notes were created with the original subscription. - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - InvoiceAddress -

    - - -
    - - -

    InvoiceAddress

    - -
    InvoiceAddress
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - city (string) - : City - - -
    - -
    - company (string) - : Company - - -
    - -
    - country (string) - : Country, 2-letter ISO code. - - -
    - -
    - firstName (string) - : First name - - -
    - -
    - lastName (string) - : Last name - - -
    - -
    - nameOnAccount (string) - : Name on account - - -
    - -
    - phone (string) - : Phone number - - -
    - -
    - postalCode (string) - : Zip or postal code. - - -
    - -
    - region (string) - : State or province. - - -
    - -
    - street1 (string) - : Street 1 - - -
    - -
    - street2 (string) - : Street 2 - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - InvoiceCollection -

    - - -
    - - -

    InvoiceCollection

    - -
    InvoiceCollection
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - chargeInvoice (Invoice) - - -
    - -
    - creditInvoices (Array<Invoice>) - : Credit invoices - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - InvoiceMini -

    - - -
    - - -

    InvoiceMini

    - -
    InvoiceMini
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - id (string) - : Invoice ID - - -
    - -
    - number (string) - : Invoice number - - -
    - -
    - state (string) - : Invoice state - - -
    - -
    - type (string) - : Invoice type - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - LineItem -

    - - -
    - - -

    LineItem

    - -
    LineItem
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - account (AccountMini) - - -
    - -
    - accountingCode (string) - : Internal accounting code to help you reconcile your revenue to the correct ledger. Line items created as part of a subscription invoice will use the plan or add-on's accounting code, otherwise the value will only be present if you define an accounting code when creating the line item. - - -
    - -
    - addOnCode (string) - : If the line item is a charge or credit for an add-on, this is its code. - - -
    - -
    - addOnId (string) - : If the line item is a charge or credit for an add-on this is its ID. - - -
    - -
    - amount (number) - : (quantity * unit_amount) - (discount + tax) - - -
    - -
    - createdAt (datetime) - : When the line item was created. - - -
    - -
    - creditApplied (number) - : The amount of credit from this line item that was applied to the invoice. - - -
    - -
    - creditReasonCode (string) - : The reason the credit was given when line item is -type=credit -. - - -
    - -
    - currency (string) - : 3-letter ISO 4217 currency code. - - -
    - -
    - description (string) - : Description that appears on the invoice. For subscription related items this will be filled in automatically. - - -
    - -
    - discount (number) - : The discount applied to the line item. - - -
    - -
    - endDate (datetime) - : If this date is provided, it indicates the end of a time range. - - -
    - -
    - id (string) - : Line item ID - - -
    - -
    - invoiceId (string) - : Once the line item has been invoiced this will be the invoice's ID. - - -
    - -
    - invoiceNumber (string) - : Once the line item has been invoiced this will be the invoice's number. If VAT taxation and the Country Invoice Sequencing feature are enabled, invoices will have country-specific invoice numbers for invoices billed to EU countries (ex: FR1001). Non-EU invoices will continue to use the site-level invoice number sequence. - - -
    - -
    - legacyCategory (string) - : Category to describe the role of a line item on a legacy invoice: - "charges" refers to charges being billed for on this invoice. - "credits" refers to refund or proration credits. This portion of the invoice can be considered a credit memo. - "applied_credits" refers to previous credits applied to this invoice. See their original_line_item_id to determine where the credit first originated. - "carryforwards" can be ignored. They exist to consume any remaining credit balance. A new credit with the same amount will be created and placed back on the account. - - -
    - -
    - origin (string) - : A credit created from an original charge will have the value of the charge's origin. - - -
    - -
    - originalLineItemInvoiceId (string) - : The invoice where the credit originated. Will only have a value if the line item is a credit created from a previous credit, or if the credit was created from a charge refund. - - -
    - -
    - planCode (string) - : If the line item is a charge or credit for a plan or add-on, this is the plan's code. - - -
    - -
    - planId (string) - : If the line item is a charge or credit for a plan or add-on, this is the plan's ID. - - -
    - -
    - previousLineItemId (string) - : Will only have a value if the line item is a credit created from a previous credit, or if the credit was created from a charge refund. - - -
    - -
    - productCode (string) - : For plan related line items this will be the plan's code, for add-on related line items it will be the add-on's code. - - -
    - -
    - prorationRate (number) - : When a line item has been prorated, this is the rate of the proration. Proration rates were made available for line items created after March 30, 2017. For line items created prior to that date, the proration rate will be -null -, even if the line item was prorated. - - -
    - -
    - quantity (number) - : This number will be multiplied by the unit amount to compute the subtotal before any discounts or taxes. - - -
    - -
    - refund (boolean) - : Refund? - - -
    - -
    - refundedQuantity (number) - : For refund charges, the quantity being refunded. For non-refund charges, the total quantity refunded (possibly over multiple refunds). - - -
    - -
    - shippingAddress (ShippingAddress) - - -
    - -
    - startDate (datetime) - : If an end date is present, this is value indicates the beginning of a billing time range. If no end date is present it indicates billing for a specific date. - - -
    - -
    - state (string) - : Pending line items are charges or credits on an account that have not been applied to an invoice yet. Invoiced line items will always have an -invoice_id - value. - - -
    - -
    - subscriptionId (string) - : If the line item is a charge or credit for a subscription, this is its ID. - - -
    - -
    - subtotal (number) - : quantity * unit_amount - - -
    - -
    - tax (number) - : The tax amount for the line item. - - -
    - -
    - taxCode (string) - : Used by Avalara, Vertex, and Recurly’s EU VAT tax feature. The tax code values are specific to each tax system. If you are using Recurly’s EU VAT feature you can use -unknown -, -physical -, or -digital -. - - -
    - -
    - taxExempt (boolean) - : true - exempts tax on charges, -false - applies tax on charges. If not defined, then defaults to the Plan and Site settings. This attribute does not work for credits (negative line items). Credits are always applied post-tax. Pre-tax discounts should use the Coupons feature. - - -
    - -
    - taxInfo (TaxInfo) - - -
    - -
    - taxable (boolean) - : true - if the line item is taxable, -false - if it is not. - - -
    - -
    - type (string) - : Charges are positive line items that debit the account. Credits are negative line items that credit the account. - - -
    - -
    - unitAmount (number) - : Positive amount for a charge, negative amount for a credit. - - -
    - -
    - updatedAt (datetime) - : When the line item was last changed. - - -
    - -
    - uuid (string) - : The UUID is useful for matching data with the CSV exports and building URLs into Recurly's UI. - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - LineItemList -

    - - -
    - - -

    LineItemList

    - -
    LineItemList
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - data (Array<LineItem>) - - -
    - -
    - hasMore (boolean) - : Indicates there are more results on subsequent pages. - - -
    - -
    - next (string) - : Path to subsequent page of results. - - -
    - -
    - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process -and thus any edits you make by hand will be lost. If you wish to make a -change to this file, please create a Github issue explaining the changes you -need and we will usher them to the appropriate places.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - PaymentMethod -

    - - -
    - - -

    PaymentMethod

    - -
    PaymentMethod
    - -

    - Type: - Object -

    - - - - - - - - - + + + +
    + +
    + + +
    + +

    + + + Coupon + () + + +

    + +

    Coupon

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - -
    Properties
    -
    - -
    - accountType (string) - : The bank account type. Only present for ACH payment methods. - - -
    - -
    - billingAgreementId (string) - : Billing Agreement identifier. Only present for Amazon or Paypal payment methods. - - -
    - -
    - cardType (string) - : Visa, MasterCard, American Express, Discover, JCB, etc. - - -
    - -
    - expMonth (number) - : Expiration month. - - -
    - -
    - expYear (number) - : Expiration year. - - -
    - -
    - firstSix (string) - : Credit card number's first six digits. - - -
    - -
    - lastFour (string) - : Credit card number's last four digits. Will refer to bank account if payment method is ACH. - - -
    - -
    - routingNumber (string) - : The bank account's routing number. Only present for ACH payment methods. - - -
    - -
    - routingNumberBank (string) - : The bank name of this routing number. - - -
    - -
    - + + +
    propertytypedescription
    appliesToAllPlans + boolean + + : The coupon is valid for all plans if true. If false then +plans + and +plans_names + will list the applicable plans. +
    appliesToNonPlanCharges + boolean + + : The coupon is valid for one-time, non-plan charges if true. +
    code + string + + : The code the customer enters to redeem the coupon. +
    couponType + string + + : Whether the coupon is "single_code" or "bulk". Bulk coupons will require a +unique_code_template + and will generate unique codes through the +/generate + endpoint. +
    createdAt + datetime + + : Created at +
    discount + CouponDiscount + +
    duration + string + + :
      +
    • "single_use" coupons applies to the first invoice only. - "temporal" coupons will apply to invoices for the duration determined by the temporal_unit and temporal_amount attributes.
    • +
    +
    expiredAt + datetime + + : The date and time the coupon was expired early or reached its +max_redemptions +. +
    freeTrialAmount + number + + : Sets the duration of time the +free_trial_unit + is for. +
    freeTrialUnit + string + + : Description of the unit of time the coupon is for. Used with +free_trial_amount + to determine the duration of time the coupon is for. +
    hostedPageDescription + string + + : This description will show up when a customer redeems a coupon on your Hosted Payment Pages, or if you choose to show the description on your own checkout page. +
    id + string + + : Coupon ID +
    invoiceDescription + string + + : Description of the coupon on the invoice. +
    maxRedemptions + number + + : A maximum number of redemptions for the coupon. The coupon will expire when it hits its maximum redemptions. +
    maxRedemptionsPerAccount + number + + : Redemptions per account is the number of times a specific account can redeem the coupon. Set redemptions per account to +1 + if you want to keep customers from gaming the system and getting more than one discount from the coupon campaign. +
    name + string + + : The internal name for the coupon. +
    plans + Array<PlanMini> + + : A list of plans for which this coupon applies. This will be +null + if +applies_to_all_plans=true +. +
    plansNames + Array<string> + + : TODO +
    redeemBy + datetime + + : The date and time the coupon will expire and can no longer be redeemed. Time is always 11:59:59, the end-of-day Pacific time. +
    redemptionResource + string + + : Whether the discount is for all eligible charges on the account, or only a specific subscription. +
    state + string + + : Indicates if the coupon is redeemable, and if it is not, why. +
    temporalAmount + number + + : If +duration + is "temporal" than +temporal_amount + is an integer which is multiplied by +temporal_unit + to define the duration that the coupon will be applied to invoices for. +
    temporalUnit + string + + : If +duration + is "temporal" than +temporal_unit + is multiplied by +temporal_amount + to define the duration that the coupon will be applied to invoices for. +
    uniqueCodeTemplate + string + + : On a bulk coupon, the template from which unique coupon codes are generated. +
    uniqueCouponCodesCount + number + + : When this number reaches +max_redemptions + the coupon will no longer be redeemable. +
    updatedAt + datetime + + : Last updated at +
    + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - Plan -

    - - -
    - - -

    Plan

    - -
    Plan
    - -

    - Type: - Object -

    - - - - - - - - - - - - - -
    Properties
    -
    - -
    - accountingCode (string) - : Accounting code for invoice line items for the plan. If no value is provided, it defaults to plan's code. - - -
    - -
    - autoRenew (boolean) - : Subscriptions will automatically inherit this value once they are active. If -auto_renew - is -true -, then a subscription will automatically renew its term at renewal. If -auto_renew - is -false -, then a subscription will expire at the end of its term. -auto_renew - can be overridden on the subscription record itself. - - -
    - -
    - code (string) - : Unique code to identify the plan. This is used in Hosted Payment Page URLs and in the invoice exports. - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - currencies (Array<PlanPricing>) - : Pricing - - -
    - -
    - deletedAt (datetime) - : Deleted at - - -
    - -
    - description (string) - : Optional description, not displayed. - - -
    - -
    - hostedPages (PlanHostedPages) - : Hosted pages settings - - -
    - -
    - id (string) - : Plan ID - - -
    - -
    - intervalLength (number) - : Length of the plan's billing interval in -interval_unit + + + +
    + +
    + + +
    + +

    + + + CouponDiscount + () + + +

    + +

    CouponDiscount

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - -
    - trialUnit (string) - : Units for the plan's trial period. - - -
    - -
    - updatedAt (datetime) - : Last updated at - - -
    - - - - - + + + + + + + - + + +
    propertytypedescription
    currencies + Array<CouponDiscountPricing> + + : This is only present when +type=fixed . - - - - -
    - intervalUnit (string) - : Unit for the plan's billing interval. - - -
    - -
    - name (string) - : This name describes your plan and will appear on the Hosted Payment Page and the subscriber's invoice. - - -
    - -
    - setupFeeAccountingCode (string) - : Accounting code for invoice line items for the plan's setup fee. If no value is provided, it defaults to plan's accounting code. - - -
    - -
    - state (string) - : The current state of the plan. - - -
    - -
    - taxCode (string) - : Used by Avalara, Vertex, and Recurly’s EU VAT tax feature. The tax code values are specific to each tax system. If you are using Recurly’s EU VAT feature you can use -unknown -, -physical -, or -digital +
    percent + number + + : This is only present when +type=percent . - - - - -
    - taxExempt (boolean) - : true - exempts tax on the plan, -false - applies tax on the plan. - - -
    - -
    - totalBillingCycles (number) - : Automatically terminate subscriptions after a defined number of billing cycles. Number of billing cycles before the plan automatically stops renewing, defaults to -null - for continuous, automatic renewal. - - -
    - -
    - trialLength (number) - : Length of plan's trial period in -trial_units -. -0 - means -no trial +
    trial + CouponDiscountTrial + + : This is only present when +type=free_trial . +
    type + string + +
    + - + - + - + - + - -
    + - - - -
    + - -
    - -

    - -

    - - -
    - + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - PlanHostedPages -

    - - -
    - - -

    PlanHostedPages

    - -
    PlanHostedPages
    - -

    - Type: - Object -

    - - - - - - - - - + - + + + + + + - -
    Properties
    -
    - -
    - bypassConfirmation (boolean) - : If -true -, the customer will be sent directly to your -success_url - after a successful signup, bypassing Recurly's hosted confirmation page. + - -
    - -
    - cancelUrl (string) - : URL to redirect to on canceled signup on the hosted payment pages. - - -
    - -
    - displayQuantity (boolean) - : Determines if the quantity field is displayed on the hosted pages for the plan. - - -
    - -
    - successUrl (string) - : URL to redirect to after signup on the hosted payment pages. - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + CouponDiscountPricing + () + + +

    + +

    CouponDiscountPricing

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    amount + number + + : Value of the fixed discount that this coupon applies. +
    currency + string + + : 3-letter ISO 4217 currency code. +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - PlanMini -

    - - -
    - - -

    PlanMini

    - -
    PlanMini
    - -

    - Type: - Object -

    - - - - - - - - - + + + +
    + +
    + + +
    + +

    + + + CouponDiscountTrial + () + + +

    + +

    CouponDiscountTrial

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - -
    Properties
    -
    - -
    - code (string) - : Unique code to identify the plan. This is used in Hosted Payment Page URLs and in the invoice exports. - - -
    - -
    - id (string) - : Plan ID - - -
    - -
    - name (string) - : This name describes your plan and will appear on the Hosted Payment Page and the subscriber's invoice. - - -
    - -
    - + + +
    propertytypedescription
    length + number + + : Trial length measured in the units specified by the sibling +unit + property +
    unit + string + + : Temporal unit of the free trial +
    + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - - -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - PlanPricing -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + CouponMini + () + + +

    + +

    CouponMini

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    code + string + + : The code the customer enters to redeem the coupon. +
    couponType + string + + : Whether the coupon is "single_code" or "bulk". Bulk coupons will require a +unique_code_template + and will generate unique codes through the +/generate + endpoint. +
    discount + CouponDiscount + +
    expiredAt + datetime + + : The date and time the coupon was expired early or reached its +max_redemptions +. +
    id + string + + : Coupon ID +
    name + string + + : The internal name for the coupon. +
    state + string + + : Indicates if the coupon is redeemable, and if it is not, why. +
    + + + + + + + + + + + + + + + +
    -

    PlanPricing

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    PlanPricing
    - -

    - Type: - Object -

    - - + - - - - - - + + + + + + - + - -
    Properties
    -
    - -
    - currency (string) - : 3-letter ISO 4217 currency code. - - -
    - -
    - setupFee (number) - : Amount of one-time setup fee automatically charged at the beginning of a subscription billing cycle. For subscription plans with a trial, the setup fee will be charged at the time of signup. Setup fees do not increase with the quantity of a subscription plan. - - -
    - -
    - unitAmount (number) - : Unit price - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + CouponRedemption + () + + +

    + +

    CouponRedemption

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    account + AccountMini + + : The Account on which the coupon was applied. +
    coupon + Coupon + +
    createdAt + datetime + + : Created at +
    currency + string + + : 3-letter ISO 4217 currency code. +
    discounted + number + + : The amount that was discounted upon the application of the coupon, formatted with the currency. +
    id + string + + : Coupon Redemption ID +
    removedAt + datetime + + : The date and time the redemption was removed from the account (un-redeemed). +
    state + string + + : Coupon Redemption state +
    updatedAt + datetime + + : Last updated at +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - Settings -

    - - -
    - - -

    Settings

    + + + +
    + +
    + + +
    + +

    + + + CouponRedemptionMini + () + + +

    + +

    CouponRedemptionMini

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    coupon + CouponMini + +
    createdAt + datetime + + : Created at +
    discounted + number + + : The amount that was discounted upon the application of the coupon, formatted with the currency. +
    id + string + + : Coupon Redemption ID +
    state + string + + : Invoice state +
    + + + + + + + + + + + + + + + +
    -
    Settings
    - -

    - Type: - Object -

    - - + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    - - - - - - + - + + + + + + - -
    Properties
    -
    - -
    - acceptedCurrencies (Array<string>) - - -
    - -
    - billingAddressRequirement (string) - :
      -
    • full: Full Address (Street, City, State, Postal Code and Country) - streetzip: Street and Postal Code only - zip: Postal Code only - none: No Address
    • -
    + - -
    - -
    - defaultCurrency (string) - : The default 3-letter ISO 4217 currency code. - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + CreditPayment + () + + +

    + +

    CreditPayment

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    account + AccountMini + +
    action + string + + : The action for which the credit was created. +
    amount + number + + : Total credit payment amount applied to the charge invoice. +
    appliedToInvoice + InvoiceMini + +
    createdAt + datetime + + : Created at +
    currency + string + + : 3-letter ISO 4217 currency code. +
    id + string + + : Credit Payment ID +
    originalCreditPaymentId + string + + : For credit payments with action +refund +, this is the credit payment that was refunded. +
    originalInvoice + InvoiceMini + +
    refundTransaction + Transaction + +
    updatedAt + datetime + + : Last updated at +
    uuid + string + + : The UUID is useful for matching data with the CSV exports and building URLs into Recurly's UI. +
    voidedAt + datetime + + : Voided at +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - ShippingAddress -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + CustomField + () + + +

    + +

    CustomField

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    name + string + + : Fields must be created in the UI before values can be assigned to them. +
    value + string + + : Any values that resemble a credit card number or security code (CVV/CVC) will be rejected. +
    + + + + + + + + + + + + + + + +
    -

    ShippingAddress

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    ShippingAddress
    - -

    - Type: - Object -

    - - + - - - - - - + + + + + + - + - -
    Properties
    -
    - -
    - accountId (string) - : Account ID - - -
    - -
    - city (string) - - -
    - -
    - company (string) - - -
    - -
    - country (string) - : Country, 2-letter ISO code. - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - email (string) - - -
    - -
    - firstName (string) - - -
    - -
    - id (string) - : Shipping Address ID - - -
    - -
    - lastName (string) - - -
    - -
    - nickname (string) - - -
    - -
    - phone (string) - - -
    - -
    - postalCode (string) - : Zip or postal code. - - -
    - -
    - region (string) - : State or province. - - -
    - -
    - street1 (string) - - -
    - -
    - street2 (string) - - -
    - -
    - updatedAt (datetime) - : Updated at - - -
    - -
    - vatNumber (string) - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    + + + +
    + +
    + + +
    + +

    + + + CustomFieldDefinition + () + + +

    + +

    CustomFieldDefinition

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    createdAt + datetime + + : Created at +
    deletedAt + datetime + + : Definitions are initially soft deleted, and once all the values are removed from the accouts or subscriptions, will be hard deleted an no longer visible. +
    displayName + string + + : Used to label the field when viewing and editing the field in Recurly's admin UI. +
    id + string + + : Custom field definition ID +
    name + string + + : Used by the API to identify the field or reading and writing. The name can only be used once per Recurly object type. +
    relatedType + string + + : Related Recurly object type +
    tooltip + string + + : Displayed as a tooltip when editing the field in the Recurly admin UI. +
    updatedAt + datetime + + : Last updated at +
    userAccess + string + + : The access control applied inside Recurly's admin UI: - +api_only + - No one will be able to view or edit this field's data via the admin UI. - +read_only + - Users with the Customers role will be able to view this field's data via the admin UI, but editing will only be available via the API. - +write + - Users with the Customers role will be able to view and edit this field's data via the admin UI. +
    + - -
    - -

    - -

    - - -
    - + -

    This file is automatically created by Recurly's OpenAPI generation process + + + + + + + + + + + +

    + + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + + + - + - + - + - + - + - + - + - + +
    - + + + +
    + +
    + + +
    + +

    + + + Error + () + + +

    + +

    Error

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    message + string + + : Message +
    params + Array<Object> + + : Parameter specific errors +
    type + string + + : Type +
    + + + + + + + + + + + + + + +
    - - - -
    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    - -
    - -

    - ShippingMethod -

    - - -
    - + -

    ShippingMethod

    + + + + + + -
    ShippingMethod
    - -

    - Type: - Object -

    - - + - - - - - - + - + - -
    Properties
    -
    - -
    - code (string) - : The internal name used identify the shipping method. - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - deletedAt (datetime) - : Deleted at - - -
    - -
    - id (string) - : Shipping Method ID - - -
    - -
    - name (string) - : The name of the shipping method displayed to customers. - - -
    - -
    - taxCode (string) - : Used by Avalara, Vertex, and Recurly’s built-in tax feature. The tax code values are specific to each tax system. If you are using Recurly’s built-in taxes the values are: - -FR - – Common Carrier FOB Destination - -FR022000 - – Common Carrier FOB Origin - -FR020400 - – Non Common Carrier FOB Destination - -FR020500 - – Non Common Carrier FOB Origin - -FR010100 - – Delivery by Company Vehicle Before Passage of Title - -FR010200 - – Delivery by Company Vehicle After Passage of Title - -NT - – Non-Taxable + - -
    - -
    - updatedAt (datetime) - : Last updated at - - -
    - -
    - + - + - + - + - + +
    - + + + +
    + +
    + + +
    + +

    + + + ErrorMayHaveTransaction + () + + +

    + +

    ErrorMayHaveTransaction

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - - + + +
    propertytypedescription
    message + string + + : Message +
    params + Array<Object> + + : Parameter specific errors +
    transactionError + TransactionError + + : This is only included on errors with +type=transaction +. +
    type + string + + : Type +
    + - - - -
    + - -
    - -

    - -

    - - -
    - + + + + + + + + + -

    This file is automatically created by Recurly's OpenAPI generation process + +

    + + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - ShippingMethodMini -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + FraudInfo + () + + +

    + +

    FraudInfo

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    decision + string + + : Kount decision +
    riskRulesTriggered + Object + + : Kount rules +
    score + number + + : Kount score +
    + + + + + + + + + + + + + + + +
    -

    ShippingMethodMini

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    ShippingMethodMini
    - -

    - Type: - Object -

    - - + - - - - - - + + + + + + - + - -
    Properties
    -
    - -
    - code (string) - : The internal name used identify the shipping method. - - -
    - -
    - id (string) - : Shipping Method ID - - -
    - -
    - name (string) - : The name of the shipping method displayed to customers. - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + Invoice + () + + +

    + +

    Invoice

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    account + AccountMini + +
    address + InvoiceAddress + +
    balance + number + + : The outstanding balance remaining on this invoice. +
    closedAt + datetime + + : Date invoice was marked paid or failed. +
    collectionMethod + string + + : An automatic invoice means a corresponding transaction is run using the account's billing information at the same time the invoice is created. Manual invoices are created without a corresponding transaction. The merchant must enter a manual payment transaction or have the customer pay the invoice with an automatic method, like credit card, PayPal, Amazon, or ACH bank payment. +
    createdAt + datetime + + : Created at +
    creditPayments + Array<CreditPayment> + + : Credit payments +
    currency + string + + : 3-letter ISO 4217 currency code. +
    customerNotes + string + + : This will default to the Customer Notes text specified on the Invoice Settings. Specify custom notes to add or override Customer Notes. +
    discount + number + + : Total discounts applied to this invoice. +
    dueAt + datetime + + : Date invoice is due. This is the date the net terms are reached. +
    id + string + + : Invoice ID +
    lineItems + LineItemList + +
    netTerms + number + + : Integer representing the number of days after an invoice's creation that the invoice will become past due. If an invoice's net terms are set to '0', it is due 'On Receipt' and will become past due 24 hours after it’s created. If an invoice is due net 30, it will become past due at 31 days exactly. +
    number + string + + : If VAT taxation and the Country Invoice Sequencing feature are enabled, invoices will have country-specific invoice numbers for invoices billed to EU countries (ex: FR1001). Non-EU invoices will continue to use the site-level invoice number sequence. +
    origin + string + + : The event that created the invoice. +
    paid + number + + : The total amount of successful payments transaction on this invoice. +
    poNumber + string + + : For manual invoicing, this identifies the PO number associated with the subscription. +
    previousInvoiceId + string + + : On refund invoices, this value will exist and show the invoice ID of the purchase invoice the refund was created from. +
    refundableAmount + number + + : The refundable amount on a charge invoice. It will be null for all other invoices. +
    shippingAddress + ShippingAddress + +
    state + string + + : Invoice state +
    subscriptionIds + Array<string> + + : If the invoice is charging or refunding for one or more subscriptions, these are their IDs. +
    subtotal + number + + : The summation of charges, discounts, and credits, before tax. +
    tax + number + + : The total tax on this invoice. +
    taxInfo + TaxInfo + +
    termsAndConditions + string + + : This will default to the Terms and Conditions text specified on the Invoice Settings page in your Recurly admin. Specify custom notes to add or override Terms and Conditions. +
    total + number + + : The final total on this invoice. The summation of invoice charges, discounts, credits, and tax. +
    transactions + Array<Transaction> + + : Transactions +
    type + string + + : Invoices are either charge, credit, or legacy invoices. +
    updatedAt + datetime + + : Last updated at +
    vatNumber + string + + : VAT registration number for the customer on this invoice. This will come from the VAT Number field in the Billing Info or the Account Info depending on your tax settings and the invoice collection method. +
    vatReverseChargeNotes + string + + : VAT Reverse Charge Notes only appear if you have EU VAT enabled or are using your own Avalara AvaTax account and the customer is in the EU, has a VAT number, and is in a different country than your own. This will default to the VAT Reverse Charge Notes text specified on the Tax Settings page in your Recurly admin, unless custom notes were created with the original subscription. +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - Site -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + InvoiceAddress + () + + +

    + +

    InvoiceAddress

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    city + string + + : City +
    company + string + + : Company +
    country + string + + : Country, 2-letter ISO code. +
    firstName + string + + : First name +
    lastName + string + + : Last name +
    nameOnAccount + string + + : Name on account +
    phone + string + + : Phone number +
    postalCode + string + + : Zip or postal code. +
    region + string + + : State or province. +
    street1 + string + + : Street 1 +
    street2 + string + + : Street 2 +
    + + + + + + + + + + + + + + + +
    -

    Site

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    Site
    - -

    - Type: - Object -

    - - + - - - - - - + + + + + + - + - -
    Properties
    -
    - -
    - address (Address) - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - deletedAt (datetime) - : Deleted at - - -
    - -
    - features (Array<string>) - : A list of features enabled for the site. - - -
    - -
    - id (string) - : Site ID - - -
    - -
    - mode (string) - : Mode - - -
    - -
    - publicApiKey (string) - : This value is used to configure RecurlyJS to submit tokenized billing information. - - -
    - -
    - settings (Settings) - - -
    - -
    - subdomain (string) - - -
    - -
    - updatedAt (datetime) - : Updated at - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + InvoiceCollection + () + + +

    + +

    InvoiceCollection

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    chargeInvoice + Invoice + +
    creditInvoices + Array<Invoice> + + : Credit invoices +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - Subscription -

    - - -
    - - -

    Subscription

    - -
    Subscription
    - -

    - Type: - Object -

    - - - - - - - - - + + + +
    + +
    + + +
    + +

    + + + InvoiceMini + () + + +

    + +

    InvoiceMini

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    id + string + + : Invoice ID +
    number + string + + : Invoice number +
    state + string + + : Invoice state +
    type + string + + : Invoice type +
    + + + + + + + + + + + + + + + +
    - + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    - -
    Properties
    -
    - -
    - account (AccountMini) - - -
    - -
    - activatedAt (datetime) - : Activated at - - -
    - -
    - addOns (Array<SubscriptionAddOn>) - : Add-ons - - -
    - -
    - addOnsTotal (number) - : Total price of add-ons - - -
    - -
    - autoRenew (boolean) - : Whether the subscription renews at the end of its term. - - -
    - -
    - bankAccountAuthorizedAt (datetime) - : Recurring subscriptions paid with ACH will have this attribute set. This timestamp is used for alerting customers to reauthorize in 3 years in accordance with NACHA rules. If a subscription becomes inactive or the billing info is no longer a bank account, this timestamp is cleared. - - -
    - -
    - canceledAt (datetime) - : Canceled at - - -
    - -
    - collectionMethod (string) - : Collection method - - -
    - -
    - couponRedemptions (Array<CouponRedemptionMini>) - : Coupon redemptions - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - currency (string) - : 3-letter ISO 4217 currency code. - - -
    - -
    - currentPeriodEndsAt (datetime) - : Current billing period ends at - - -
    - -
    - currentPeriodStartedAt (datetime) - : Current billing period started at - - -
    - -
    - currentTermEndsAt (datetime) - : When the term ends. This is calculated by a plan's interval and -total_billing_cycles - in a term. Subscription changes with a -timeframe=renewal - will be applied on this date. + - -
    - -
    - currentTermStartedAt (datetime) - : The start date of the term when the first billing period starts. The subscription term is the length of time that a customer will be committed to a subscription. A term can span multiple billing periods. - - -
    - -
    - customFields (Array<CustomField>) - - -
    - -
    - customerNotes (string) - : Customer notes - - -
    - -
    - expirationReason (string) - : Expiration reason - - -
    - -
    - expiresAt (datetime) - : Expires at - - -
    - -
    - id (string) - : Subscription ID - - -
    - -
    - netTerms (number) - : Integer representing the number of days after an invoice's creation that the invoice will become past due. If an invoice's net terms are set to '0', it is due 'On Receipt' and will become past due 24 hours after it’s created. If an invoice is due net 30, it will become past due at 31 days exactly. - - -
    - -
    - pausedAt (datetime) - : Null unless subscription is paused or will pause at the end of the current billing period. - - -
    - -
    - pendingChange (SubscriptionChange) - - -
    - -
    - plan (PlanMini) - - -
    - -
    - poNumber (string) - : For manual invoicing, this identifies the PO number associated with the subscription. - - -
    - -
    - quantity (number) - : Subscription quantity - - -
    - -
    - remainingBillingCycles (number) - : The remaining billing cycles in the current term. - - -
    - -
    - remainingPauseCycles (number) - : Null unless subscription is paused or will pause at the end of the current billing period. - - -
    - -
    - renewalBillingCycles (number) - : If -auto_renew=true -, when a term completes, -total_billing_cycles - takes this value as the length of subsequent terms. Defaults to the plan's -total_billing_cycles -. + + + + + + - -
    - -
    - shipping (SubscriptionShipping) - - -
    - -
    - state (string) - : State - - -
    - -
    - subtotal (number) - : Estimated total, before tax. - - -
    - -
    - termsAndConditions (string) - : Terms and conditions - - -
    - -
    - totalBillingCycles (number) - : The number of cycles/billing periods in a term. When -remaining_billing_cycles=0 -, if -auto_renew=true - the subscription will renew and a new term will begin, otherwise the subscription will expire. + - -
    - -
    - trialEndsAt (datetime) - : Trial period ends at - - -
    - -
    - trialStartedAt (datetime) - : Trial period started at - - -
    - -
    - unitAmount (number) - : Subscription unit price - - -
    - -
    - updatedAt (datetime) - : Last updated at - - -
    - -
    - uuid (string) - : The UUID is useful for matching data with the CSV exports and building URLs into Recurly's UI. - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + LineItem + () + + +

    + +

    LineItem

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    account + AccountMini + +
    accountingCode + string + + : Internal accounting code to help you reconcile your revenue to the correct ledger. Line items created as part of a subscription invoice will use the plan or add-on's accounting code, otherwise the value will only be present if you define an accounting code when creating the line item. +
    addOnCode + string + + : If the line item is a charge or credit for an add-on, this is its code. +
    addOnId + string + + : If the line item is a charge or credit for an add-on this is its ID. +
    amount + number + + : (quantity * unit_amount) - (discount + tax) +
    createdAt + datetime + + : When the line item was created. +
    creditApplied + number + + : The amount of credit from this line item that was applied to the invoice. +
    creditReasonCode + string + + : The reason the credit was given when line item is +type=credit +. +
    currency + string + + : 3-letter ISO 4217 currency code. +
    description + string + + : Description that appears on the invoice. For subscription related items this will be filled in automatically. +
    discount + number + + : The discount applied to the line item. +
    endDate + datetime + + : If this date is provided, it indicates the end of a time range. +
    id + string + + : Line item ID +
    invoiceId + string + + : Once the line item has been invoiced this will be the invoice's ID. +
    invoiceNumber + string + + : Once the line item has been invoiced this will be the invoice's number. If VAT taxation and the Country Invoice Sequencing feature are enabled, invoices will have country-specific invoice numbers for invoices billed to EU countries (ex: FR1001). Non-EU invoices will continue to use the site-level invoice number sequence. +
    legacyCategory + string + + : Category to describe the role of a line item on a legacy invoice: - "charges" refers to charges being billed for on this invoice. - "credits" refers to refund or proration credits. This portion of the invoice can be considered a credit memo. - "applied_credits" refers to previous credits applied to this invoice. See their original_line_item_id to determine where the credit first originated. - "carryforwards" can be ignored. They exist to consume any remaining credit balance. A new credit with the same amount will be created and placed back on the account. +
    origin + string + + : A credit created from an original charge will have the value of the charge's origin. +
    originalLineItemInvoiceId + string + + : The invoice where the credit originated. Will only have a value if the line item is a credit created from a previous credit, or if the credit was created from a charge refund. +
    planCode + string + + : If the line item is a charge or credit for a plan or add-on, this is the plan's code. +
    planId + string + + : If the line item is a charge or credit for a plan or add-on, this is the plan's ID. +
    previousLineItemId + string + + : Will only have a value if the line item is a credit created from a previous credit, or if the credit was created from a charge refund. +
    productCode + string + + : For plan related line items this will be the plan's code, for add-on related line items it will be the add-on's code. +
    prorationRate + number + + : When a line item has been prorated, this is the rate of the proration. Proration rates were made available for line items created after March 30, 2017. For line items created prior to that date, the proration rate will be +null +, even if the line item was prorated. +
    quantity + number + + : This number will be multiplied by the unit amount to compute the subtotal before any discounts or taxes. +
    refund + boolean + + : Refund? +
    refundedQuantity + number + + : For refund charges, the quantity being refunded. For non-refund charges, the total quantity refunded (possibly over multiple refunds). +
    shippingAddress + ShippingAddress + +
    startDate + datetime + + : If an end date is present, this is value indicates the beginning of a billing time range. If no end date is present it indicates billing for a specific date. +
    state + string + + : Pending line items are charges or credits on an account that have not been applied to an invoice yet. Invoiced line items will always have an +invoice_id + value. +
    subscriptionId + string + + : If the line item is a charge or credit for a subscription, this is its ID. +
    subtotal + number + + : quantity * unit_amount +
    tax + number + + : The tax amount for the line item. +
    taxCode + string + + : Used by Avalara, Vertex, and Recurly’s EU VAT tax feature. The tax code values are specific to each tax system. If you are using Recurly’s EU VAT feature you can use +unknown +, +physical +, or +digital +. +
    taxExempt + boolean + + : true + exempts tax on charges, +false + applies tax on charges. If not defined, then defaults to the Plan and Site settings. This attribute does not work for credits (negative line items). Credits are always applied post-tax. Pre-tax discounts should use the Coupons feature. +
    taxInfo + TaxInfo + +
    taxable + boolean + + : true + if the line item is taxable, +false + if it is not. +
    type + string + + : Charges are positive line items that debit the account. Credits are negative line items that credit the account. +
    unitAmount + number + + : Positive amount for a charge, negative amount for a credit. +
    updatedAt + datetime + + : When the line item was last changed. +
    uuid + string + + : The UUID is useful for matching data with the CSV exports and building URLs into Recurly's UI. +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - SubscriptionAddOn -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + LineItemList + () + + +

    + +

    LineItemList

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    data + Array<LineItem> + +
    hasMore + boolean + + : Indicates there are more results on subsequent pages. +
    next + string + + : Path to subsequent page of results. +
    + + + + + + + + + + + + + + + +
    -

    SubscriptionAddOn

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    SubscriptionAddOn
    - -

    - Type: - Object -

    - - + - - - - - - + + + + + + - + - -
    Properties
    -
    - -
    - addOn (AddOnMini) - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - expiredAt (datetime) - : Expired at - - -
    - -
    - id (string) - : Subscription Add-on ID - - -
    - -
    - quantity (number) - : Add-on quantity - - -
    - -
    - subscriptionId (string) - : Subscription ID - - -
    - -
    - unitAmount (number) - : This is priced in the subscription's currency. - - -
    - -
    - updatedAt (datetime) - : Updated at - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + PaymentMethod + () + + +

    + +

    PaymentMethod

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    accountType + string + + : The bank account type. Only present for ACH payment methods. +
    billingAgreementId + string + + : Billing Agreement identifier. Only present for Amazon or Paypal payment methods. +
    cardType + string + + : Visa, MasterCard, American Express, Discover, JCB, etc. +
    expMonth + number + + : Expiration month. +
    expYear + number + + : Expiration year. +
    firstSix + string + + : Credit card number's first six digits. +
    lastFour + string + + : Credit card number's last four digits. Will refer to bank account if payment method is ACH. +
    routingNumber + string + + : The bank account's routing number. Only present for ACH payment methods. +
    routingNumberBank + string + + : The bank name of this routing number. +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - SubscriptionChange -

    - - -
    - - -

    SubscriptionChange

    + + + +
    + +
    + + +
    + +

    + + + Plan + () + + +

    + +

    Plan

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    accountingCode + string + + : Accounting code for invoice line items for the plan. If no value is provided, it defaults to plan's code. +
    autoRenew + boolean + + : Subscriptions will automatically inherit this value once they are active. If +auto_renew + is +true +, then a subscription will automatically renew its term at renewal. If +auto_renew + is +false +, then a subscription will expire at the end of its term. +auto_renew + can be overridden on the subscription record itself. +
    code + string + + : Unique code to identify the plan. This is used in Hosted Payment Page URLs and in the invoice exports. +
    createdAt + datetime + + : Created at +
    currencies + Array<PlanPricing> + + : Pricing +
    deletedAt + datetime + + : Deleted at +
    description + string + + : Optional description, not displayed. +
    hostedPages + PlanHostedPages + + : Hosted pages settings +
    id + string + + : Plan ID +
    intervalLength + number + + : Length of the plan's billing interval in +interval_unit +. +
    intervalUnit + string + + : Unit for the plan's billing interval. +
    name + string + + : This name describes your plan and will appear on the Hosted Payment Page and the subscriber's invoice. +
    setupFeeAccountingCode + string + + : Accounting code for invoice line items for the plan's setup fee. If no value is provided, it defaults to plan's accounting code. +
    state + string + + : The current state of the plan. +
    taxCode + string + + : Used by Avalara, Vertex, and Recurly’s EU VAT tax feature. The tax code values are specific to each tax system. If you are using Recurly’s EU VAT feature you can use +unknown +, +physical +, or +digital +. +
    taxExempt + boolean + + : true + exempts tax on the plan, +false + applies tax on the plan. +
    totalBillingCycles + number + + : Automatically terminate subscriptions after a defined number of billing cycles. Number of billing cycles before the plan automatically stops renewing, defaults to +null + for continuous, automatic renewal. +
    trialLength + number + + : Length of plan's trial period in +trial_units +. +0 + means +no trial +. +
    trialUnit + string + + : Units for the plan's trial period. +
    updatedAt + datetime + + : Last updated at +
    + + + + + + + + + + + + + + + +
    -
    SubscriptionChange
    - -

    - Type: - Object -

    - - + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    - - - - - - + - + + + + + + - -
    Properties
    -
    - -
    - activateAt (datetime) - : Activated at - - -
    - -
    - activated (boolean) - : Returns -true - if the subscription change is activated. + - -
    - -
    - addOns (Array<SubscriptionAddOn>) - : These add-ons will be used when the subscription renews. - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - deletedAt (datetime) - : Deleted at - - -
    - -
    - id (string) - : The ID of the Subscription Change. - - -
    - -
    - plan (PlanMini) - - -
    - -
    - quantity (number) - : Subscription quantity - - -
    - -
    - shipping (SubscriptionShipping) - - -
    - -
    - subscriptionId (string) - : The ID of the subscription that is going to be changed. - - -
    - -
    - unitAmount (number) - : Unit amount - - -
    - -
    - updatedAt (datetime) - : Updated at - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + PlanHostedPages + () + + +

    + +

    PlanHostedPages

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    bypassConfirmation + boolean + + : If +true +, the customer will be sent directly to your +success_url + after a successful signup, bypassing Recurly's hosted confirmation page. +
    cancelUrl + string + + : URL to redirect to on canceled signup on the hosted payment pages. +
    displayQuantity + boolean + + : Determines if the quantity field is displayed on the hosted pages for the plan. +
    successUrl + string + + : URL to redirect to after signup on the hosted payment pages. +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - SubscriptionShipping -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + PlanMini + () + + +

    + +

    PlanMini

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    code + string + + : Unique code to identify the plan. This is used in Hosted Payment Page URLs and in the invoice exports. +
    id + string + + : Plan ID +
    name + string + + : This name describes your plan and will appear on the Hosted Payment Page and the subscriber's invoice. +
    + + + + + + + + + + + + + + + +
    -

    SubscriptionShipping

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    SubscriptionShipping
    - -

    - Type: - Object -

    - - + - - - - - - + + + + + + - + - -
    Properties
    -
    - -
    - address (ShippingAddress) - - -
    - -
    - amount (number) - : Subscription's shipping cost - - -
    - -
    - method (ShippingMethodMini) - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + PlanPricing + () + + +

    + +

    PlanPricing

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    currency + string + + : 3-letter ISO 4217 currency code. +
    setupFee + number + + : Amount of one-time setup fee automatically charged at the beginning of a subscription billing cycle. For subscription plans with a trial, the setup fee will be charged at the time of signup. Setup fees do not increase with the quantity of a subscription plan. +
    unitAmount + number + + : Unit price +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    + + + +
    + +
    + + +
    + +

    + + + Settings + () + + +

    + +

    Settings

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -
    - -

    - TaxInfo -

    - - -
    - + + + + + + + -

    TaxInfo

    + + +
    propertytypedescription
    acceptedCurrencies + Array<string> + +
    billingAddressRequirement + string + + :
      +
    • full: Full Address (Street, City, State, Postal Code and Country) - streetzip: Street and Postal Code only - zip: Postal Code only - none: No Address
    • +
    +
    defaultCurrency + string + + : The default 3-letter ISO 4217 currency code. +
    + -
    TaxInfo
    - -

    - Type: - Object -

    - - + - - - - - - + - + - -
    Properties
    -
    - -
    - rate (number) - : Rate - - -
    - -
    - region (string) - : Provides the tax region applied on an invoice. For U.S. Sales Tax, this will be the 2 letter state code. For EU VAT this will be the 2 letter country code. For all country level tax types, this will display the regional tax, like VAT, GST, or PST. - - -
    - -
    - type (string) - : Provides the tax type as "vat" for EU VAT, "usst" for U.S. Sales Tax, or the 2 letter country code for country level tax types like Canada, Australia, New Zealand, Israel, and all non-EU European countries. - - -
    - -
    - + - + - + - + +
    - + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    - + - + + + + + + - -
    + - - - -
    + - -
    - -

    - -

    - - -
    - + + + + + + + + + -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + + + + +
    + +
    + + +
    + +

    + + + ShippingAddress + () + + +

    + +

    ShippingAddress

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    accountId + string + + : Account ID +
    city + string + +
    company + string + +
    country + string + + : Country, 2-letter ISO code. +
    createdAt + datetime + + : Created at +
    email + string + +
    firstName + string + +
    id + string + + : Shipping Address ID +
    lastName + string + +
    nickname + string + +
    phone + string + +
    postalCode + string + + : Zip or postal code. +
    region + string + + : State or province. +
    street1 + string + +
    street2 + string + +
    updatedAt + datetime + + : Updated at +
    vatNumber + string + +
    + + + + + + + + + + + + + + + +
    + + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    + + + +
    + +
    + + +
    + +

    + + + ShippingMethod + () + + +

    + +

    ShippingMethod

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -
    - -

    - Transaction -

    - - -
    - + + + + + + + -

    Transaction

    + + +
    propertytypedescription
    code + string + + : The internal name used identify the shipping method. +
    createdAt + datetime + + : Created at +
    deletedAt + datetime + + : Deleted at +
    id + string + + : Shipping Method ID +
    name + string + + : The name of the shipping method displayed to customers. +
    taxCode + string + + : Used by Avalara, Vertex, and Recurly’s built-in tax feature. The tax code values are specific to each tax system. If you are using Recurly’s built-in taxes the values are: - +FR + – Common Carrier FOB Destination - +FR022000 + – Common Carrier FOB Origin - +FR020400 + – Non Common Carrier FOB Destination - +FR020500 + – Non Common Carrier FOB Origin - +FR010100 + – Delivery by Company Vehicle Before Passage of Title - +FR010200 + – Delivery by Company Vehicle After Passage of Title - +NT + – Non-Taxable +
    updatedAt + datetime + + : Last updated at +
    + -
    Transaction
    - -

    - Type: - Object -

    - - + - - - - - - + - + - -
    Properties
    -
    - -
    - account (AccountMini) - - -
    - -
    - amount (number) - : Total transaction amount sent to the payment gateway. - - -
    - -
    - avsCheck (string) - : When processed, result from checking the overall AVS on the transaction. - - -
    - -
    - billingAddress (Address) - - -
    - -
    - collectedAt (datetime) - : Collected at, or if not collected yet, the time the transaction was created. - - -
    - -
    - collectionMethod (string) - : The method by which the payment was collected. - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - currency (string) - : 3-letter ISO 4217 currency code. - - -
    - -
    - customerMessage (string) - : For declined ( -success=false -) transactions, the message displayed to the customer. + - -
    - -
    - customerMessageLocale (string) - : Language code for the message - - -
    - -
    - cvvCheck (string) - : When processed, result from checking the CVV/CVC value on the transaction. - - -
    - -
    - gatewayApprovalCode (string) - : Transaction approval code from the payment gateway. - - -
    - -
    - gatewayMessage (string) - : Transaction message from the payment gateway. - - -
    - -
    - gatewayReference (string) - : Transaction reference number from the payment gateway. - - -
    - -
    - gatewayResponseCode (string) - : For declined transactions ( -success=false -), this field lists the gateway error code. + - -
    - -
    - gatewayResponseTime (number) - : Time, in seconds, for gateway to process the transaction. - - -
    - -
    - gatewayResponseValues (Object) - : The values in this field will vary from gateway to gateway. - - -
    - -
    - id (string) - : Transaction ID - - -
    - -
    - invoice (InvoiceMini) - - -
    - -
    - ipAddressCountry (string) - : IP address's country - - -
    - -
    - ipAddressV4 (string) - : IP address provided when the billing information was collected: - When the customer enters billing information into the Recurly.JS or Hosted Payment Pages, Recurly records the IP address. - When the merchant enters billing information using the API, the merchant may provide an IP address. - When the merchant enters billing information using the UI, no IP address is recorded. - - -
    - -
    - origin (string) - : Describes how the transaction was triggered. - - -
    - -
    - originalTransactionId (string) - : If this transaction is a refund ( -type=refund -), this will be the ID of the original transaction on the invoice being refunded. + - -
    - -
    - paymentGateway (TransactionPaymentGateway) - - -
    - -
    - paymentMethod (PaymentMethod) - - -
    - -
    - refunded (boolean) - : Indicates if part or all of this transaction was refunded. - - -
    - -
    - status (string) - : The current transaction status. Note that the status may change, e.g. a -pending - transaction may become -declined - or -success - may later become -void -. + +
    - -
    - -
    - statusCode (string) - : Status code - - -
    - -
    - statusMessage (string) - : For declined ( -success=false -) transactions, the message displayed to the merchant. + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    - -
    - -
    - subscriptionIds (Array<string>) - : If the transaction is charging or refunding for one or more subscriptions, these are their IDs. - - -
    - -
    - success (boolean) - : Did this transaction complete successfully? - - -
    - -
    - type (string) - :
      -
    • authorization – verifies billing information and places a hold on money in the customer's account. - capture – captures funds held by an authorization and completes a purchase. - purchase – combines the authorization and capture in one transaction. - refund – returns all or a portion of the money collected in a previous transaction to the customer. - verify – a $0 or $1 transaction used to verify billing information which is immediately voided.
    • -
    + - -
    - -
    - uuid (string) - : The UUID is useful for matching data with the CSV exports and building URLs into Recurly's UI. - - -
    - -
    - voidedAt (datetime) - : Voided at - - -
    - -
    - voidedByInvoice (InvoiceMini) - - -
    - -
    - + + + + + + - + - + - + - + - + - + - -
    + - - - -
    + - -
    - -

    - -

    - - -
    - + +
    + + + + +
    + +
    + + +
    + +

    + + + ShippingMethodMini + () + + +

    + +

    ShippingMethodMini

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    code + string + + : The internal name used identify the shipping method. +
    id + string + + : Shipping Method ID +
    name + string + + : The name of the shipping method displayed to customers. +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - TransactionError -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + Site + () + + +

    + +

    Site

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    address + Address + +
    createdAt + datetime + + : Created at +
    deletedAt + datetime + + : Deleted at +
    features + Array<string> + + : A list of features enabled for the site. +
    id + string + + : Site ID +
    mode + string + + : Mode +
    publicApiKey + string + + : This value is used to configure RecurlyJS to submit tokenized billing information. +
    settings + Settings + +
    subdomain + string + +
    updatedAt + datetime + + : Updated at +
    + + + + + + + + + + + + + + + +
    -

    TransactionError

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    TransactionError
    - -

    - Type: - Object -

    - - + - - - - - - + + + + + + - + - -
    Properties
    -
    - -
    - category (string) - : Category - - -
    - -
    - code (string) - : Code - - -
    - -
    - merchantAdvice (string) - : Merchant message - - -
    - -
    - message (string) - : Customer message - - -
    - -
    - transactionId (string) - : Transaction ID - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + Subscription + () + + +

    + +

    Subscription

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    account + AccountMini + +
    activatedAt + datetime + + : Activated at +
    addOns + Array<SubscriptionAddOn> + + : Add-ons +
    addOnsTotal + number + + : Total price of add-ons +
    autoRenew + boolean + + : Whether the subscription renews at the end of its term. +
    bankAccountAuthorizedAt + datetime + + : Recurring subscriptions paid with ACH will have this attribute set. This timestamp is used for alerting customers to reauthorize in 3 years in accordance with NACHA rules. If a subscription becomes inactive or the billing info is no longer a bank account, this timestamp is cleared. +
    canceledAt + datetime + + : Canceled at +
    collectionMethod + string + + : Collection method +
    couponRedemptions + Array<CouponRedemptionMini> + + : Coupon redemptions +
    createdAt + datetime + + : Created at +
    currency + string + + : 3-letter ISO 4217 currency code. +
    currentPeriodEndsAt + datetime + + : Current billing period ends at +
    currentPeriodStartedAt + datetime + + : Current billing period started at +
    currentTermEndsAt + datetime + + : When the term ends. This is calculated by a plan's interval and +total_billing_cycles + in a term. Subscription changes with a +timeframe=renewal + will be applied on this date. +
    currentTermStartedAt + datetime + + : The start date of the term when the first billing period starts. The subscription term is the length of time that a customer will be committed to a subscription. A term can span multiple billing periods. +
    customFields + Array<CustomField> + +
    customerNotes + string + + : Customer notes +
    expirationReason + string + + : Expiration reason +
    expiresAt + datetime + + : Expires at +
    id + string + + : Subscription ID +
    netTerms + number + + : Integer representing the number of days after an invoice's creation that the invoice will become past due. If an invoice's net terms are set to '0', it is due 'On Receipt' and will become past due 24 hours after it’s created. If an invoice is due net 30, it will become past due at 31 days exactly. +
    pausedAt + datetime + + : Null unless subscription is paused or will pause at the end of the current billing period. +
    pendingChange + SubscriptionChange + +
    plan + PlanMini + +
    poNumber + string + + : For manual invoicing, this identifies the PO number associated with the subscription. +
    quantity + number + + : Subscription quantity +
    remainingBillingCycles + number + + : The remaining billing cycles in the current term. +
    remainingPauseCycles + number + + : Null unless subscription is paused or will pause at the end of the current billing period. +
    renewalBillingCycles + number + + : If +auto_renew=true +, when a term completes, +total_billing_cycles + takes this value as the length of subsequent terms. Defaults to the plan's +total_billing_cycles +. +
    shipping + SubscriptionShipping + +
    state + string + + : State +
    subtotal + number + + : Estimated total, before tax. +
    termsAndConditions + string + + : Terms and conditions +
    totalBillingCycles + number + + : The number of cycles/billing periods in a term. When +remaining_billing_cycles=0 +, if +auto_renew=true + the subscription will renew and a new term will begin, otherwise the subscription will expire. +
    trialEndsAt + datetime + + : Trial period ends at +
    trialStartedAt + datetime + + : Trial period started at +
    unitAmount + number + + : Subscription unit price +
    updatedAt + datetime + + : Last updated at +
    uuid + string + + : The UUID is useful for matching data with the CSV exports and building URLs into Recurly's UI. +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - TransactionPaymentGateway -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + SubscriptionAddOn + () + + +

    + +

    SubscriptionAddOn

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    addOn + AddOnMini + +
    createdAt + datetime + + : Created at +
    expiredAt + datetime + + : Expired at +
    id + string + + : Subscription Add-on ID +
    quantity + number + + : Add-on quantity +
    subscriptionId + string + + : Subscription ID +
    unitAmount + number + + : This is priced in the subscription's currency. +
    updatedAt + datetime + + : Updated at +
    + + + + + + + + + + + + + + + +
    -

    TransactionPaymentGateway

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    TransactionPaymentGateway
    - -

    - Type: - Object -

    - - + - - - - - - + + + + + + - + - -
    Properties
    -
    - -
    - id (string) - - -
    - -
    - name (string) - - -
    - -
    - type (string) - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + SubscriptionChange + () + + +

    + +

    SubscriptionChange

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    activateAt + datetime + + : Activated at +
    activated + boolean + + : Returns +true + if the subscription change is activated. +
    addOns + Array<SubscriptionAddOn> + + : These add-ons will be used when the subscription renews. +
    createdAt + datetime + + : Created at +
    deletedAt + datetime + + : Deleted at +
    id + string + + : The ID of the Subscription Change. +
    plan + PlanMini + +
    quantity + number + + : Subscription quantity +
    shipping + SubscriptionShipping + +
    subscriptionId + string + + : The ID of the subscription that is going to be changed. +
    unitAmount + number + + : Unit amount +
    updatedAt + datetime + + : Updated at +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - UniqueCouponCode -

    - - -
    - - -

    UniqueCouponCode

    - -
    UniqueCouponCode
    - -

    - Type: - Object -

    - - - - - - - - - + + + +
    + +
    + + +
    + +

    + + + SubscriptionShipping + () + + +

    + +

    SubscriptionShipping

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    address + ShippingAddress + +
    amount + number + + : Subscription's shipping cost +
    method + ShippingMethodMini + +
    + + + + + + + + + + + + + + + +
    - + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    - -
    Properties
    -
    - -
    - code (string) - : The code the customer enters to redeem the coupon. - - -
    - -
    - createdAt (datetime) - : Created at - - -
    - -
    - expiredAt (datetime) - : The date and time the coupon was expired early or reached its -max_redemptions -. + - -
    - -
    - id (string) - : Unique Coupon Code ID - - -
    - -
    - redeemedAt (datetime) - : The date and time the unique coupon code was redeemed. - - -
    - -
    - state (string) - : Indicates if the unique coupon code is redeemable or why not. - - -
    - -
    - updatedAt (datetime) - : Updated at - - -
    - -
    - + + + + + + - + - + - + - + - + - + - -
    + - - - -
    + - -
    - -

    - -

    - - -
    - + +
    + + + + +
    + +
    + + +
    + +

    + + + TaxInfo + () + + +

    + +

    TaxInfo

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    rate + number + + : Rate +
    region + string + + : Provides the tax region applied on an invoice. For U.S. Sales Tax, this will be the 2 letter state code. For EU VAT this will be the 2 letter country code. For all country level tax types, this will display the regional tax, like VAT, GST, or PST. +
    type + string + + : Provides the tax type as "vat" for EU VAT, "usst" for U.S. Sales Tax, or the 2 letter country code for country level tax types like Canada, Australia, New Zealand, Israel, and all non-EU European countries. +
    + + + + + + + + + + + + + + + +
    -

    This file is automatically created by Recurly's OpenAPI generation process + + + +

    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process and thus any edits you make by hand will be lost. If you wish to make a change to this file, please create a Github issue explaining the changes you need and we will usher them to the appropriate places.

    -
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - User -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + Transaction + () + + +

    + +

    Transaction

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    account + AccountMini + +
    amount + number + + : Total transaction amount sent to the payment gateway. +
    avsCheck + string + + : When processed, result from checking the overall AVS on the transaction. +
    billingAddress + Address + +
    collectedAt + datetime + + : Collected at, or if not collected yet, the time the transaction was created. +
    collectionMethod + string + + : The method by which the payment was collected. +
    createdAt + datetime + + : Created at +
    currency + string + + : 3-letter ISO 4217 currency code. +
    customerMessage + string + + : For declined ( +success=false +) transactions, the message displayed to the customer. +
    customerMessageLocale + string + + : Language code for the message +
    cvvCheck + string + + : When processed, result from checking the CVV/CVC value on the transaction. +
    gatewayApprovalCode + string + + : Transaction approval code from the payment gateway. +
    gatewayMessage + string + + : Transaction message from the payment gateway. +
    gatewayReference + string + + : Transaction reference number from the payment gateway. +
    gatewayResponseCode + string + + : For declined transactions ( +success=false +), this field lists the gateway error code. +
    gatewayResponseTime + number + + : Time, in seconds, for gateway to process the transaction. +
    gatewayResponseValues + Object + + : The values in this field will vary from gateway to gateway. +
    id + string + + : Transaction ID +
    invoice + InvoiceMini + +
    ipAddressCountry + string + + : IP address's country +
    ipAddressV4 + string + + : IP address provided when the billing information was collected: - When the customer enters billing information into the Recurly.JS or Hosted Payment Pages, Recurly records the IP address. - When the merchant enters billing information using the API, the merchant may provide an IP address. - When the merchant enters billing information using the UI, no IP address is recorded. +
    origin + string + + : Describes how the transaction was triggered. +
    originalTransactionId + string + + : If this transaction is a refund ( +type=refund +), this will be the ID of the original transaction on the invoice being refunded. +
    paymentGateway + TransactionPaymentGateway + +
    paymentMethod + PaymentMethod + +
    refunded + boolean + + : Indicates if part or all of this transaction was refunded. +
    status + string + + : The current transaction status. Note that the status may change, e.g. a +pending + transaction may become +declined + or +success + may later become +void +. +
    statusCode + string + + : Status code +
    statusMessage + string + + : For declined ( +success=false +) transactions, the message displayed to the merchant. +
    subscriptionIds + Array<string> + + : If the transaction is charging or refunding for one or more subscriptions, these are their IDs. +
    success + boolean + + : Did this transaction complete successfully? +
    type + string + + :
      +
    • authorization – verifies billing information and places a hold on money in the customer's account. - capture – captures funds held by an authorization and completes a purchase. - purchase – combines the authorization and capture in one transaction. - refund – returns all or a portion of the money collected in a previous transaction to the customer. - verify – a $0 or $1 transaction used to verify billing information which is immediately voided.
    • +
    +
    uuid + string + + : The UUID is useful for matching data with the CSV exports and building URLs into Recurly's UI. +
    voidedAt + datetime + + : Voided at +
    voidedByInvoice + InvoiceMini + +
    + + + + + + + + + + + + + + + +
    -

    User

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    User
    - -

    - Type: - Object -

    - - + - - - - - - + + + + + + - + - -
    Properties
    -
    - -
    - createdAt (datetime) - - -
    - -
    - deletedAt (datetime) - - -
    - -
    - email (string) - - -
    - -
    - firstName (string) - - -
    - -
    - id (string) - - -
    - -
    - lastName (string) - - -
    - -
    - timeZone (string) - - -
    - -
    - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - PrimitiveProperty -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + TransactionError + () + + +

    + +

    TransactionError

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    category + string + + : Category +
    code + string + + : Code +
    merchantAdvice + string + + : Merchant message +
    message + string + + : Customer message +
    transactionId + string + + : Transaction ID +
    + + + + + + + + + + + + + + + +
    -

    Represents a primitive:

    -
      -
    • String
    • -
    • Number
    • -
    • Boolean
    • -
    • Object (plain js object)
    • -
    • Array (of primitives only)
    • -
    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    new PrimitiveProperty()
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    - - -
    - -

    - DateProperty -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + TransactionPaymentGateway + () + + +

    + +

    TransactionPaymentGateway

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    id + string + +
    name + string + +
    type + string + +
    + + + + + + + + + + + + + + + +
    -

    Represents a Date in the schema

    + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -
    new DateProperty()
    - - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - +
    - - - -
    + + + +
    + +
    + + +
    + +

    + + + UniqueCouponCode + () + + +

    + +

    UniqueCouponCode

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    code + string + + : The code the customer enters to redeem the coupon. +
    createdAt + datetime + + : Created at +
    expiredAt + datetime + + : The date and time the coupon was expired early or reached its +max_redemptions +. +
    id + string + + : Unique Coupon Code ID +
    redeemedAt + datetime + + : The date and time the unique coupon code was redeemed. +
    state + string + + : Indicates if the unique coupon code is redeemable or why not. +
    updatedAt + datetime + + : Updated at +
    + + + + + + + + + + + + + + + +
    - -
    - -

    - ResourceProperty -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + + () + + +

    + +

    This file is automatically created by Recurly's OpenAPI generation process +and thus any edits you make by hand will be lost. If you wish to make a +change to this file, please create a Github issue explaining the changes you +need and we will usher them to the appropriate places.

    -

    Represents an embedded Resource in the schema

    + -
    new ResourceProperty(type: any)
    - - + + + + + + - - - - - - + - -
    Parameters
    -
    - -
    -
    - type (any) - -
    - -
    - -
    - + - + - + - + - + - + - + - + +
    - + + + +
    + +
    + + +
    + +

    + + + User + () + + +

    + +

    User

    + + +

    + Type: + Object +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    propertytypedescription
    createdAt + datetime + +
    deletedAt + datetime + +
    email + string + +
    firstName + string + +
    id + string + +
    lastName + string + +
    timeZone + string + +
    + + + + + + + + + + + + + + +
    - - - -
    + + + +
    + +
    + + +
    + +

    + + + PrimitiveProperty + () + + +

    + +

    Represents a primitive:

    +
      +
    • String
    • +
    • Number
    • +
    • Boolean
    • +
    • Object (plain js object)
    • +
    • Array (of primitives only)
    • +
    - -
    - -

    - ArrayProperty -

    - - -
    - + -

    Represents an array of other schema properties.

    + + + + + + -
    new ArrayProperty(type: Property)
    - - + - - - - - - + - -
    Parameters
    -
    - -
    -
    - type (Property) - Should be Property for element type - -
    - -
    - -
    - + - + - + - + - + - + - + +
    - + + + +
    - -
    +
    + + +
    - - - -
    +

    + + + DateProperty + () + + +

    - -
    - -

    - build -

    - - -
    - +

    Represents a Date in the schema

    -

    Factory method to build a Property from a type signature. -You should only create Properties through this method.

    + -
    build(typeSig: any)
    - - + + + + + + - - - - - - + - -
    Parameters
    -
    - -
    -
    - typeSig (any) - -
    - -
    - -
    - + - + - + - + - + - + - + - + +
    - + + + +
    + +
    + + +
    + +

    + + + ResourceProperty + (type) + + +

    + +

    Represents an embedded Resource in the schema

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    parametertypedescription
    type + any + +
    + + + + + + + + + + + + + + + + +
    - - - -
    + + + +
    + +
    + + +
    + +

    + + + ArrayProperty + (type) + + +

    + +

    Represents an array of other schema properties.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    parametertypedescription
    type + Property + + Should be Property for element type +
    + + + + + + + + + + + + + + + + + +
    - -
    - -

    - Schema -

    - - -
    - + + + +
    + +
    + + +
    + +

    + + + build + (typeSig) + + +

    + +

    Factory method to build a Property from a type signature. +You should only create Properties through this method.

    -

    The class responsible a compiled schema.

    + -
    new Schema(resourceType: Resource)
    - - + + + + + + - - - - - - + + + + + + + + + + + + + + + +
    parametertypedescription
    typeSig + any + +
    + - -
    Parameters
    -
    - -
    -
    - resourceType (Resource) - the resource type - -
    - -
    - -
    - + - + - + - + - + - + - + - + +
    - + + + +
    + +
    + + +
    + +

    + + + Schema + (resourceType) + + +

    + +

    The class responsible a compiled schema.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    parametertypedescription
    resourceType + Resource + + the resource type +
    + + + + + + + + + + + + + + + + +
    - - - - - - - + + + + + + + diff --git a/documentation.yml b/documentation.yml new file mode 100644 index 00000000..51d54199 --- /dev/null +++ b/documentation.yml @@ -0,0 +1,4 @@ +toc: + - name: Getting Started + file: doc/GETTING_STARTED.md + - Client diff --git a/lib/recurly/Client.js b/lib/recurly/Client.js index 1dd28a96..803d92fb 100644 --- a/lib/recurly/Client.js +++ b/lib/recurly/Client.js @@ -1,10 +1,4 @@ /* istanbul ignore file */ -/** - * This file is automatically created by Recurly's OpenAPI generation process - * and thus any edits you make by hand will be lost. If you wish to make a - * change to this file, please create a Github issue explaining the changes you - * need and we will usher them to the appropriate places. - */ 'use strict' const BaseClient = require('./BaseClient') @@ -12,6 +6,7 @@ const BaseClient = require('./BaseClient') const Pager = require('./Pager') /** + * The connection to the Recurly API. * * @param {string} apiKey - The private api key. */ diff --git a/lib/recurly/api_errors.js b/lib/recurly/api_errors.js index bc09453a..0630b282 100644 --- a/lib/recurly/api_errors.js +++ b/lib/recurly/api_errors.js @@ -1,10 +1,4 @@ /* istanbul ignore file */ -/** - * This file is automatically created by Recurly's OpenAPI generation process - * and thus any edits you make by hand will be lost. If you wish to make a - * change to this file, please create a Github issue explaining the changes you - * need and we will usher them to the appropriate places. - */ 'use strict' let ApiError = require('./ApiError') diff --git a/package-lock.json b/package-lock.json index b9516229..57d80de3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,33 +14,93 @@ } }, "@babel/core": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz", - "integrity": "sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.4", - "@babel/helpers": "^7.4.4", - "@babel/parser": "^7.4.5", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.5", - "@babel/types": "^7.4.4", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.2.tgz", + "integrity": "sha512-l8zto/fuoZIbncm+01p8zPSDZu/VuuJhAfA7d/AbzM09WR7iVhavvfNDYCNpo1VvLk6E6xgAoP9P+/EMJHuRkQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.6.2", + "@babel/helpers": "^7.6.2", + "@babel/parser": "^7.6.2", + "@babel/template": "^7.6.0", + "@babel/traverse": "^7.6.2", + "@babel/types": "^7.6.0", "convert-source-map": "^1.1.0", "debug": "^4.1.0", "json5": "^2.1.0", - "lodash": "^4.17.11", + "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.2.tgz", + "integrity": "sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==", + "dev": true, + "requires": { + "@babel/types": "^7.6.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, "@babel/parser": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", - "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.2.tgz", + "integrity": "sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==", "dev": true }, + "@babel/template": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", + "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.0" + } + }, + "@babel/traverse": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.2.tgz", + "integrity": "sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.6.2", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.6.2", + "@babel/types": "^7.6.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", + "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -50,6 +110,12 @@ "ms": "^2.1.1" } }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -112,28 +178,47 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz", - "integrity": "sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.6.0.tgz", + "integrity": "sha512-O1QWBko4fzGju6VoVvrZg0RROCVifcLxiApnGP3OWfWzvxRZFCoBD81K5ur5e3bVY2Vf/5rIJm8cqPKn8HUJng==", "dev": true, "requires": { "@babel/helper-function-name": "^7.1.0", - "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-member-expression-to-functions": "^7.5.5", "@babel/helper-optimise-call-expression": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.4.4", + "@babel/helper-replace-supers": "^7.5.5", "@babel/helper-split-export-declaration": "^7.4.4" } }, "@babel/helper-define-map": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz", - "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", + "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", "dev": true, "requires": { "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.4.4", - "lodash": "^4.17.11" + "@babel/types": "^7.5.5", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/types": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", + "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { @@ -176,12 +261,31 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", - "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", + "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.5.5" + }, + "dependencies": { + "@babel/types": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", + "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } } }, "@babel/helper-module-imports": { @@ -194,17 +298,36 @@ } }, "@babel/helper-module-transforms": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz", - "integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", + "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-simple-access": "^7.1.0", "@babel/helper-split-export-declaration": "^7.4.4", "@babel/template": "^7.4.4", - "@babel/types": "^7.4.4", - "lodash": "^4.17.11" + "@babel/types": "^7.5.5", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/types": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", + "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } } }, "@babel/helper-optimise-call-expression": { @@ -223,12 +346,20 @@ "dev": true }, "@babel/helper-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz", - "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", + "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", "dev": true, "requires": { - "lodash": "^4.17.11" + "lodash": "^4.17.13" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } } }, "@babel/helper-remap-async-to-generator": { @@ -245,15 +376,93 @@ } }, "@babel/helper-replace-supers": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz", - "integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz", + "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-member-expression-to-functions": "^7.5.5", "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.2.tgz", + "integrity": "sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==", + "dev": true, + "requires": { + "@babel/types": "^7.6.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/parser": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.2.tgz", + "integrity": "sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==", + "dev": true + }, + "@babel/traverse": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.2.tgz", + "integrity": "sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.6.2", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.6.2", + "@babel/types": "^7.6.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", + "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "@babel/helper-simple-access": { @@ -288,14 +497,105 @@ } }, "@babel/helpers": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", - "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.2.tgz", + "integrity": "sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA==", "dev": true, "requires": { - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/template": "^7.6.0", + "@babel/traverse": "^7.6.2", + "@babel/types": "^7.6.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.2.tgz", + "integrity": "sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==", + "dev": true, + "requires": { + "@babel/types": "^7.6.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/parser": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.2.tgz", + "integrity": "sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==", + "dev": true + }, + "@babel/template": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", + "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.0" + } + }, + "@babel/traverse": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.2.tgz", + "integrity": "sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.6.2", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.6.2", + "@babel/types": "^7.6.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + } + } + }, + "@babel/types": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", + "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "@babel/highlight": { @@ -364,40 +664,50 @@ } }, "@babel/plugin-proposal-class-properties": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz", - "integrity": "sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.5.tgz", + "integrity": "sha512-AF79FsnWFxjlaosgdi421vmYG6/jg79bVD0dpD44QdgobzHKuLZ6S3vl8la9qIeSwGi8i1fS0O1mfuDAAdo1/A==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.4.4", + "@babel/helper-create-class-features-plugin": "^7.5.5", "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-proposal-decorators": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz", - "integrity": "sha512-z7MpQz3XC/iQJWXH9y+MaWcLPNSMY9RQSthrLzak8R8hCj0fuyNk+Dzi9kfNe/JxxlWQ2g7wkABbgWjW36MTcw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.6.0.tgz", + "integrity": "sha512-ZSyYw9trQI50sES6YxREXKu+4b7MAg6Qx2cvyDDYjP2Hpzd3FleOUwC9cqn1+za8d0A2ZU8SHujxFao956efUg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.4.4", + "@babel/helper-create-class-features-plugin": "^7.6.0", "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-decorators": "^7.2.0" } }, "@babel/plugin-proposal-do-expressions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.2.0.tgz", - "integrity": "sha512-2bWN48zQHf/W5T8XvemGQJSi8hzhIo7y4kv/RiA08UcMLQ73lkTknhlaFGf1HjCJzG8FGopgsq6pSe1C+10fPg==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.6.0.tgz", + "integrity": "sha512-qJDaoBDbLySwU1tG0jbAomOwz8W1PEiiiK0iLQAnHLr4PYIMVX4ltDGkj3uAKx4HDs1WJ0tozGW1zAQjuTIiWg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-do-expressions": "^7.2.0" } }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", + "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0" + } + }, "@babel/plugin-proposal-export-default-from": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.2.0.tgz", - "integrity": "sha512-NVfNe7F6nsasG1FnvcFxh2FN0l04ZNe75qTOAVOILWPam0tw9a63RtT/Dab8dPjedZa4fTQaQ83yMMywF9OSug==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.5.2.tgz", + "integrity": "sha512-wr9Itk05L1/wyyZKVEmXWCdcsp/e185WUNl6AfYZeEKYaUPPvHXRDqO5K1VH7/UamYqGJowFRuCv30aDYZawsg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -405,9 +715,9 @@ } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.2.0.tgz", - "integrity": "sha512-DZUxbHYxQ5fUFIkMEnh75ogEdBLPfL+mQUqrO2hNY2LGm+tqFnxE924+mhAcCOh/8za8AaZsWHbq6bBoS3TAzA==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.5.2.tgz", + "integrity": "sha512-TKUdOL07anjZEbR1iSxb5WFh810KyObdd29XLFLGo1IDsSuGrjH3ouWSbAxHNmrVKzr9X71UYl2dQ7oGGcRp0g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -425,9 +735,9 @@ } }, "@babel/plugin-proposal-function-sent": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.2.0.tgz", - "integrity": "sha512-qQBDKRSCu1wGJi3jbngs18vrujVQA4F+OkSuIQYRhE6y19jcPzeEIGOc683mCQXDUR3BQCz8JyCupIwv+IRFmA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.5.0.tgz", + "integrity": "sha512-JXdfiQpKoC6UgQliZkp3NX7K3MVec1o1nfTWiCCIORE5ag/QZXhL0aSD8/Y2K+hIHonSTxuJF9rh9zsB6hBi2A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -476,9 +786,9 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz", - "integrity": "sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", + "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -496,9 +806,9 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.2.0.tgz", - "integrity": "sha512-ea3Q6edZC/55wEBVZAEz42v528VulyO0eir+7uky/sT4XRcdkWJcFi1aPtitTlwUzGnECWJNExWww1SStt+yWw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.6.0.tgz", + "integrity": "sha512-kj4gkZ6qUggkprRq3Uh5KP8XnE1MdIO0J7MhdDX8+rAbB6dJ2UrensGIS+0NPZAaaJ1Vr0PN6oLUgXMU1uMcSg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -506,13 +816,13 @@ } }, "@babel/plugin-proposal-pipeline-operator": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.3.2.tgz", - "integrity": "sha512-wuzx8U/KZLJYoqU6joiaKY0PixHuYZ3Vxys+wPahNAZEEm+EDb1eTc19DuJob3BdxYSD9PWPbwyoRbhkdoYErg==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.5.0.tgz", + "integrity": "sha512-HFYuu/yGnkn69ligXxU0ohOVvQDsMNOUJs/c4PYLUVS6ntCYOyGmRQQaSYJARJ9rvc7/ulZKIzxd4wk91hN63A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-pipeline-operator": "^7.3.0" + "@babel/plugin-syntax-pipeline-operator": "^7.5.0" } }, "@babel/plugin-proposal-throw-expressions": { @@ -526,14 +836,14 @@ } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", - "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz", + "integrity": "sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "regexpu-core": "^4.6.0" } }, "@babel/plugin-syntax-async-generators": { @@ -699,9 +1009,9 @@ } }, "@babel/plugin-syntax-pipeline-operator": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-pipeline-operator/-/plugin-syntax-pipeline-operator-7.3.0.tgz", - "integrity": "sha512-LAa3ZcOAyfPOUDTp0W5EiXGSAFh1vz9sD8yY7sZzWzEkZdIC404pqBP60Yfu9GJDj0ggh+UTQY6EYlIDXVr0/Q==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-pipeline-operator/-/plugin-syntax-pipeline-operator-7.5.0.tgz", + "integrity": "sha512-5FVxPiMTMXWk4R7Kq9pt272nDu8VImJdaIzvXFSTcXFbgKWWaOdbic12TvUvl6cK+AE5EgnhwvxuWik4ZYYdzg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -726,9 +1036,9 @@ } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz", - "integrity": "sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", + "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -746,27 +1056,35 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz", - "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.2.tgz", + "integrity": "sha512-zZT8ivau9LOQQaOGC7bQLQOT4XPkPXgN2ERfUgk1X8ql+mVkLc4E8eKk+FO3o0154kxzqenWCorfmEXpEZcrSQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.11" + "lodash": "^4.17.13" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } } }, "@babel/plugin-transform-classes": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz", - "integrity": "sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", + "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.4.4", + "@babel/helper-define-map": "^7.5.5", "@babel/helper-function-name": "^7.1.0", "@babel/helper-optimise-call-expression": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.4.4", + "@babel/helper-replace-supers": "^7.5.5", "@babel/helper-split-export-declaration": "^7.4.4", "globals": "^11.1.0" } @@ -781,29 +1099,29 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz", - "integrity": "sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", + "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", - "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz", + "integrity": "sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "regexpu-core": "^4.6.0" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", - "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", + "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -867,34 +1185,37 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", - "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz", + "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz", - "integrity": "sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz", + "integrity": "sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.4.4", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0" + "@babel/helper-simple-access": "^7.1.0", + "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz", - "integrity": "sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", + "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-umd": { @@ -908,12 +1229,12 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz", - "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.2.tgz", + "integrity": "sha512-xBdB+XOs+lgbZc2/4F5BVDVcDNS4tcSKQc96KmlqLEAwz6tpYPEvPdmDfvVG0Ssn8lAhronaRs6Z6KSexIpK5g==", "dev": true, "requires": { - "regexp-tree": "^0.1.6" + "regexpu-core": "^4.6.0" } }, "@babel/plugin-transform-new-target": { @@ -926,13 +1247,13 @@ } }, "@babel/plugin-transform-object-super": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", - "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", + "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0" + "@babel/helper-replace-supers": "^7.5.5" } }, "@babel/plugin-transform-parameters": { @@ -986,9 +1307,9 @@ } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz", - "integrity": "sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz", + "integrity": "sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1023,9 +1344,9 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", - "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", + "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -1061,70 +1382,91 @@ } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", - "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz", + "integrity": "sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "regexpu-core": "^4.6.0" } }, "@babel/preset-env": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.5.tgz", - "integrity": "sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.2.tgz", + "integrity": "sha512-Ru7+mfzy9M1/YTEtlDS8CD45jd22ngb9tXnn64DvQK3ooyqSw9K4K9DUWmYknTTVk4TqygL9dqCrZgm1HMea/Q==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-dynamic-import": "^7.5.0", "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.4.4", + "@babel/plugin-proposal-object-rest-spread": "^7.6.2", "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.6.2", "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-syntax-json-strings": "^7.2.0", "@babel/plugin-syntax-object-rest-spread": "^7.2.0", "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.4.4", + "@babel/plugin-transform-async-to-generator": "^7.5.0", "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.4.4", - "@babel/plugin-transform-classes": "^7.4.4", + "@babel/plugin-transform-block-scoping": "^7.6.2", + "@babel/plugin-transform-classes": "^7.5.5", "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.6.0", + "@babel/plugin-transform-dotall-regex": "^7.6.2", + "@babel/plugin-transform-duplicate-keys": "^7.5.0", "@babel/plugin-transform-exponentiation-operator": "^7.2.0", "@babel/plugin-transform-for-of": "^7.4.4", "@babel/plugin-transform-function-name": "^7.4.4", "@babel/plugin-transform-literals": "^7.2.0", "@babel/plugin-transform-member-expression-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.4.4", - "@babel/plugin-transform-modules-systemjs": "^7.4.4", + "@babel/plugin-transform-modules-amd": "^7.5.0", + "@babel/plugin-transform-modules-commonjs": "^7.6.0", + "@babel/plugin-transform-modules-systemjs": "^7.5.0", "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.2", "@babel/plugin-transform-new-target": "^7.4.4", - "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-object-super": "^7.5.5", "@babel/plugin-transform-parameters": "^7.4.4", "@babel/plugin-transform-property-literals": "^7.2.0", "@babel/plugin-transform-regenerator": "^7.4.5", "@babel/plugin-transform-reserved-words": "^7.2.0", "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-spread": "^7.6.2", "@babel/plugin-transform-sticky-regex": "^7.2.0", "@babel/plugin-transform-template-literals": "^7.4.4", "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.4.4", - "@babel/types": "^7.4.4", + "@babel/plugin-transform-unicode-regex": "^7.6.2", + "@babel/types": "^7.6.0", "browserslist": "^4.6.0", "core-js-compat": "^3.1.1", "invariant": "^2.2.2", "js-levenshtein": "^1.1.3", "semver": "^5.5.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", + "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } } }, "@babel/preset-flow": { @@ -1272,6 +1614,12 @@ "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", "dev": true }, + "anchor-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/anchor-js/-/anchor-js-4.2.0.tgz", + "integrity": "sha512-qIh35DLc0YNlRD6k39ULIPNI6iHxFFhtaJr02I7ttsh31bhZjeSa3jjEUx1/sQ4zPOyxrUhuXGuWl981ZLNzBQ==", + "dev": true + }, "ansi-escapes": { "version": "3.1.0", "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", @@ -1413,6 +1761,15 @@ "js-tokens": "^3.0.2" } }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, "babelify": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", @@ -1567,14 +1924,14 @@ "dev": true }, "browserslist": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.1.tgz", - "integrity": "sha512-1MC18ooMPRG2UuVFJTHFIAkk6mpByJfxCrnUyvSlu/hyQSFHMrlhM02SzNuCV+quTP4CKmqtOMAIjrifrpBJXQ==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", + "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000971", - "electron-to-chromium": "^1.3.137", - "node-releases": "^1.1.21" + "caniuse-lite": "^1.0.30000989", + "electron-to-chromium": "^1.3.247", + "node-releases": "^1.1.29" } }, "buffer-equal": { @@ -1664,9 +2021,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30000974", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz", - "integrity": "sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww==", + "version": "1.0.30000997", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000997.tgz", + "integrity": "sha512-BQLFPIdj2ntgBNWp9Q64LGUIEmvhKkzzHhUHR3CD5A9Lb7ZKF20/+sgadhFap69lk5XmK1fTUleDclaRFvgVUA==", "dev": true }, "ccount": { @@ -1719,9 +2076,9 @@ "dev": true }, "chokidar": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", - "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, "requires": { "anymatch": "^2.0.0", @@ -1946,30 +2303,23 @@ "dev": true }, "core-js-compat": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.3.tgz", - "integrity": "sha512-EP018pVhgwsKHz3YoN1hTq49aRe+h017Kjz0NQz3nXV0cCRMvH3fLQl+vEPGr4r4J5sk4sU3tUC7U1aqTCeJeA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz", + "integrity": "sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A==", "dev": true, "requires": { - "browserslist": "^4.6.0", - "core-js-pure": "3.1.3", - "semver": "^6.1.0" + "browserslist": "^4.6.6", + "semver": "^6.3.0" }, "dependencies": { "semver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", - "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, - "core-js-pure": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.3.tgz", - "integrity": "sha512-k3JWTrcQBKqjkjI0bkfXS0lbpWPxYuHWfMMjC1VDmzU4Q58IwSbuXSo99YO/hUHlw/EB4AlfA2PVxOGkrIq6dA==", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -2206,9 +2556,9 @@ } }, "documentation": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/documentation/-/documentation-11.0.0.tgz", - "integrity": "sha512-+lbAn7Eie0ObnQi6Ns0pv57FlriMG0sVg2S684UKUXHgfnfNR4War1w2gZ0i7wKinIDpxC7ivSx5B6X6wN794Q==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/documentation/-/documentation-11.0.1.tgz", + "integrity": "sha512-0rHyynNz2ONLG7Qwkw5zmSAUORfuvY9UuVVF7/miGkaTFeOf9mWgLth6tVItt91NQvVwtsReoJmyyjISL44HOg==", "dev": true, "requires": { "@babel/core": "^7.1.2", @@ -2338,9 +2688,9 @@ } }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -2432,6 +2782,15 @@ } } }, + "documentation-theme-light": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/documentation-theme-light/-/documentation-theme-light-1.1.0.tgz", + "integrity": "sha512-ql9z6fUdm7lvplUPLrenxvrv1wXuhIUbm0710MBzH62heeFchXQ5631zqjKPXosRSKXI+yht9eFXRtZm8QuSaA==", + "dev": true, + "requires": { + "anchor-js": "^4.2.0" + } + }, "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -2454,9 +2813,9 @@ } }, "electron-to-chromium": { - "version": "1.3.150", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.150.tgz", - "integrity": "sha512-5wuYlaXhXbBvavSTij5ZyidICB6sAK/1BwgZZoPCgsniid1oDgzVvDOV/Dw6J25lKV9QZ9ZdQCp8MEfF0/OIKA==", + "version": "1.3.272", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.272.tgz", + "integrity": "sha512-TjsDKYOZGgaD8tUJtRiiBNlIrv2Ol6SxNMy4yeTX0goRmoBhV941m4EN8QjA3vfshs16F5KLDyUv2m7GdTqIgg==", "dev": true }, "emoji-regex": { @@ -2475,13 +2834,12 @@ } }, "error": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", - "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/error/-/error-7.2.0.tgz", + "integrity": "sha512-M6t3j3Vt3uDicrViMP5fLq2AeADNrCVFD8Oj4Qt2MHsX0mPYG7D5XdnEfSdRpaHQzjAJ19wu+I1mw9rQYMTAPg==", "dev": true, "requires": { - "string-template": "~0.2.1", - "xtend": "~4.0.0" + "string-template": "~0.2.1" } }, "error-ex": { @@ -3240,8 +3598,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -3262,14 +3619,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3284,20 +3639,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -3414,8 +3766,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -3427,7 +3778,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3442,7 +3792,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3450,14 +3799,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3476,7 +3823,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -3557,8 +3903,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -3570,7 +3915,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -3656,8 +4000,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -3693,7 +4036,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3713,7 +4055,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3757,14 +4098,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -3907,9 +4246,9 @@ "dev": true }, "globals-docs": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/globals-docs/-/globals-docs-2.4.0.tgz", - "integrity": "sha512-B69mWcqCmT3jNYmSxRxxOXWfzu3Go8NQXPfl2o0qPd1EEFhwW0dFUg9ztTu915zPQzqwIhWAlw6hmfIcCK4kkQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/globals-docs/-/globals-docs-2.4.1.tgz", + "integrity": "sha512-qpPnUKkWnz8NESjrCvnlGklsgiQzlq+rcCxoG5uNQ+dNA7cFMCmn231slLAwS2N/PlkzZ3COL8CcS10jXmLHqg==", "dev": true }, "graceful-fs": { @@ -4069,9 +4408,9 @@ "dev": true }, "highlight.js": { - "version": "9.15.8", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.8.tgz", - "integrity": "sha512-RrapkKQWwE+wKdF73VsOa2RQdIoO3mxwJ4P8mhbI6KYJUraUHRKM5w5zQQKXNk0xNL4UVRdulV9SBJcmzJNzVA==", + "version": "9.15.10", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.10.tgz", + "integrity": "sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw==", "dev": true }, "hosted-git-info": { @@ -4087,9 +4426,9 @@ "dev": true }, "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", "dev": true }, "iconv-lite": { @@ -5054,9 +5393,9 @@ } }, "mime": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz", - "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", "dev": true }, "mimic-fn": { @@ -5081,9 +5420,9 @@ "dev": true }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -5289,9 +5628,9 @@ "dev": true }, "node-releases": { - "version": "1.1.23", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.23.tgz", - "integrity": "sha512-uq1iL79YjfYC0WXoHbC/z28q/9pOl8kSHaXdWmAAc8No+bDwqkZbzIJz55g/MUsPgSGm9LZ7QSUbzTcH5tz47w==", + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.33.tgz", + "integrity": "sha512-I0V30bWQEoHb+10W8oedVoUrdjW5wIkYm0w7vvcrPO95pZY738m1k77GF5sO0vKg5eXYg9oGtrMAETbgZGm11A==", "dev": true, "requires": { "semver": "^5.3.0" @@ -6026,9 +6365,9 @@ "dev": true }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "progress": { @@ -6090,9 +6429,9 @@ } }, "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.0.tgz", + "integrity": "sha512-27RP4UotQORTpmNQDX8BHPukOnBP3p1uUJY5UnDhaJB+rMt9iMsok724XL+UHU23bEFOHRMQ2ZhI99qOWUMGFA==", "dev": true }, "query-string": { @@ -6197,9 +6536,9 @@ } }, "regenerator-transform": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.0.tgz", - "integrity": "sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", + "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", "dev": true, "requires": { "private": "^0.1.6" @@ -6215,12 +6554,6 @@ "safe-regex": "^1.1.0" } }, - "regexp-tree": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.10.tgz", - "integrity": "sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ==", - "dev": true - }, "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", @@ -6228,13 +6561,13 @@ "dev": true }, "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", "dev": true, "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.0.2", + "regenerate-unicode-properties": "^8.1.0", "regjsgen": "^0.5.0", "regjsparser": "^0.6.0", "unicode-match-property-ecmascript": "^1.0.4", @@ -6320,18 +6653,18 @@ } }, "remark-reference-links": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/remark-reference-links/-/remark-reference-links-4.0.3.tgz", - "integrity": "sha512-Q9d7JaK5r0JDBo3TInfrodBuI3xulI8htCr8jlX+0oXosF3GaebJbo5y228VYFoV6xJ+syDukkUGMKNlwSJWjQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/remark-reference-links/-/remark-reference-links-4.0.4.tgz", + "integrity": "sha512-+2X8hwSQqxG4tvjYZNrTcEC+bXp8shQvwRGG6J/rnFTvBoU4G0BBviZoqKGZizLh/DG+0gSYhiDDWCqyxXW1iQ==", "dev": true, "requires": { "unist-util-visit": "^1.0.0" } }, "remark-slug": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/remark-slug/-/remark-slug-5.1.1.tgz", - "integrity": "sha512-r591rdoDPJkSSAVvEaTVUkqbMp7c7AyZfif14V0Dp66GQkOHzaPAS6wyhawSbqpS0ZdTnfJS+TltFoxzi6bdIA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/remark-slug/-/remark-slug-5.1.2.tgz", + "integrity": "sha512-DWX+Kd9iKycqyD+/B+gEFO3jjnt7Yg1O05lygYSNTe5i5PIxxxPjp5qPBDxPIzp5wreF7+1ROCwRgjEcqmzr3A==", "dev": true, "requires": { "github-slugger": "^1.0.0", @@ -6566,9 +6899,9 @@ "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -7522,38 +7855,15 @@ } }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "uniq": { @@ -7673,9 +7983,9 @@ } }, "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, "uri-js": { @@ -7748,9 +8058,9 @@ }, "dependencies": { "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", "dev": true } } @@ -7892,12 +8202,13 @@ } }, "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", "dev": true, "requires": { - "http-parser-js": ">=0.4.0", + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -8050,9 +8361,9 @@ } }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, "requires": { "p-try": "^2.0.0" diff --git a/package.json b/package.json index 20a110f4..72fa8a29 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "dependencies": {}, "devDependencies": { "acorn": "^6.0.0", - "documentation": "^11.0.0", + "documentation": "^11.0.1", + "documentation-theme-light": "^1.1.0", "mocha": "^5.2.0", "nyc": "^14.1.1", "standard": "^12.0.1" diff --git a/scripts/build b/scripts/build index 76345eb7..09cea88c 100755 --- a/scripts/build +++ b/scripts/build @@ -2,4 +2,7 @@ set -e npm install -./node_modules/.bin/documentation build lib/** --format html --output docs +./node_modules/.bin/documentation build lib/** --format html --output docs --theme node_modules/documentation-theme-light --config documentation.yml +# append custom css to doc build's css +cat doc/custom.css >> docs/assets/style.css +cat doc/custom.css >> docs/assets/styles.min.css