Skip to content

Commit

Permalink
[DE-771] Objects for filters in list requests, remove redundant conta…
Browse files Browse the repository at this point in the history
…iner classes (#69)

* Automated commit message

* Fix broken tests

---------

Co-authored-by: maxio-sdk <[email protected]>
Co-authored-by: Alberto Blacutt <[email protected]>
Co-authored-by: alberto-blacutt-maxio <[email protected]>
  • Loading branch information
4 people authored Apr 10, 2024
1 parent b602889 commit 35e2c93
Show file tree
Hide file tree
Showing 213 changed files with 1,691 additions and 3,209 deletions.
76 changes: 38 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ curl -u <api_key>:x -H Accept:application/json -H Content-Type:application/json
Run the following command from your project directory to install the package from npm:

```ts
npm install @maxio-com/advanced-billing-sdk@2.0.0
npm install @maxio-com/advanced-billing-sdk@3.0.0
```

For additional package details, see the [Npm page for the @maxio-com/advanced-billing-sdk@2.0.0 npm](https://www.npmjs.com/package/@maxio-com/advanced-billing-sdk/v/2.0.0).
For additional package details, see the [Npm page for the @maxio-com/advanced-billing-sdk@3.0.0 npm](https://www.npmjs.com/package/@maxio-com/advanced-billing-sdk/v/3.0.0).

## Initialize the API Client

**_Note:_** Documentation for the client can be found [here.](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/client.md)
**_Note:_** Documentation for the client can be found [here.](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/client.md)

The following parameters are configurable for the API Client:

Expand All @@ -49,7 +49,7 @@ The following parameters are configurable for the API Client:
| `timeout` | `number` | Timeout for API calls.<br>*Default*: `30000` |
| `httpClientOptions` | `Partial<HttpClientOptions>` | Stable configurable http client options. |
| `unstableHttpClientOptions` | `any` | Unstable configurable http client options. |
| `basicAuthCredentials` | [`BasicAuthCredentials`](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/$a/https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/basic-authentication.md) | The credential object for basicAuth |
| `basicAuthCredentials` | [`BasicAuthCredentials`](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/$a/https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/basic-authentication.md) | The credential object for basicAuth |

### HttpClientOptions

Expand Down Expand Up @@ -100,44 +100,44 @@ The SDK can be configured to use a different environment for making API calls. A

This API uses the following authentication schemes.

* [`BasicAuth (Basic Authentication)`](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/$a/https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/basic-authentication.md)
* [`BasicAuth (Basic Authentication)`](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/$a/https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/basic-authentication.md)

## List of APIs

* [API Exports](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/api-exports.md)
* [Advance Invoice](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/advance-invoice.md)
* [Billing Portal](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/billing-portal.md)
* [Custom Fields](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/custom-fields.md)
* [Events-Based Billing Segments](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/events-based-billing-segments.md)
* [Payment Profiles](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/payment-profiles.md)
* [Product Families](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/product-families.md)
* [Product Price Points](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/product-price-points.md)
* [Proforma Invoices](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/proforma-invoices.md)
* [Reason Codes](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/reason-codes.md)
* [Referral Codes](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/referral-codes.md)
* [Sales Commissions](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/sales-commissions.md)
* [Subscription Components](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/subscription-components.md)
* [Subscription Groups](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/subscription-groups.md)
* [Subscription Group Invoice Account](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/subscription-group-invoice-account.md)
* [Subscription Group Status](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/subscription-group-status.md)
* [Subscription Invoice Account](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/subscription-invoice-account.md)
* [Subscription Notes](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/subscription-notes.md)
* [Subscription Products](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/subscription-products.md)
* [Subscription Status](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/subscription-status.md)
* [Coupons](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/coupons.md)
* [Components](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/components.md)
* [Customers](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/customers.md)
* [Events](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/events.md)
* [Insights](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/insights.md)
* [Invoices](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/invoices.md)
* [Offers](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/offers.md)
* [Products](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/products.md)
* [Sites](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/sites.md)
* [Subscriptions](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/subscriptions.md)
* [Webhooks](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/controllers/webhooks.md)
* [API Exports](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/api-exports.md)
* [Advance Invoice](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/advance-invoice.md)
* [Billing Portal](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/billing-portal.md)
* [Custom Fields](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/custom-fields.md)
* [Events-Based Billing Segments](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/events-based-billing-segments.md)
* [Payment Profiles](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/payment-profiles.md)
* [Product Families](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/product-families.md)
* [Product Price Points](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/product-price-points.md)
* [Proforma Invoices](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/proforma-invoices.md)
* [Reason Codes](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/reason-codes.md)
* [Referral Codes](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/referral-codes.md)
* [Sales Commissions](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/sales-commissions.md)
* [Subscription Components](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/subscription-components.md)
* [Subscription Groups](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/subscription-groups.md)
* [Subscription Group Invoice Account](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/subscription-group-invoice-account.md)
* [Subscription Group Status](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/subscription-group-status.md)
* [Subscription Invoice Account](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/subscription-invoice-account.md)
* [Subscription Notes](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/subscription-notes.md)
* [Subscription Products](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/subscription-products.md)
* [Subscription Status](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/subscription-status.md)
* [Coupons](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/coupons.md)
* [Components](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/components.md)
* [Customers](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/customers.md)
* [Events](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/events.md)
* [Insights](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/insights.md)
* [Invoices](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/invoices.md)
* [Offers](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/offers.md)
* [Products](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/products.md)
* [Sites](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/sites.md)
* [Subscriptions](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/subscriptions.md)
* [Webhooks](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/controllers/webhooks.md)

## Classes Documentation

* [ApiResponse](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/api-response.md)
* [ApiError](https://www.github.com/maxio-com/ab-typescript-sdk/tree/2.0.0/doc/api-error.md)
* [ApiResponse](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/api-response.md)
* [ApiError](https://www.github.com/maxio-com/ab-typescript-sdk/tree/3.0.0/doc/api-error.md)

12 changes: 0 additions & 12 deletions doc/controllers/advance-invoice.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,6 @@ const body: IssueAdvanceInvoiceRequest = {
};

try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await advanceInvoiceController.issueAdvanceInvoice(
subscriptionId,
body
Expand All @@ -62,8 +60,6 @@ try {
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down Expand Up @@ -106,15 +102,11 @@ async readAdvanceInvoice(
const subscriptionId = 222;

try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await advanceInvoiceController.readAdvanceInvoice(subscriptionId);
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down Expand Up @@ -159,15 +151,11 @@ async voidAdvanceInvoice(
const subscriptionId = 222;

try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await advanceInvoiceController.voidAdvanceInvoice(subscriptionId);
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down
36 changes: 0 additions & 36 deletions doc/controllers/api-exports.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,11 @@ const collect = {
page: 2
}
try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await aPIExportsController.listExportedProformaInvoices(collect);
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down Expand Up @@ -117,15 +113,11 @@ const collect = {
page: 2
}
try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await aPIExportsController.listExportedInvoices(collect);
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down Expand Up @@ -176,15 +168,11 @@ const collect = {
page: 2
}
try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await aPIExportsController.listExportedSubscriptions(collect);
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down Expand Up @@ -224,15 +212,11 @@ async exportProformaInvoices(

```ts
try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await aPIExportsController.exportProformaInvoices();
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down Expand Up @@ -271,15 +255,11 @@ async exportInvoices(

```ts
try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await aPIExportsController.exportInvoices();
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down Expand Up @@ -318,15 +298,11 @@ async exportSubscriptions(

```ts
try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await aPIExportsController.exportSubscriptions();
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down Expand Up @@ -368,15 +344,11 @@ async readProformaInvoicesExport(
const batchId = 'batch_id8';

try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await aPIExportsController.readProformaInvoicesExport(batchId);
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down Expand Up @@ -418,15 +390,11 @@ async readInvoicesExport(
const batchId = 'batch_id8';

try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await aPIExportsController.readInvoicesExport(batchId);
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down Expand Up @@ -468,15 +436,11 @@ async readSubscriptionsExport(
const batchId = 'batch_id8';

try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await aPIExportsController.readSubscriptionsExport(batchId);
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down
16 changes: 0 additions & 16 deletions doc/controllers/billing-portal.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,11 @@ async enableBillingPortalForCustomer(
const customerId = 150;

try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await billingPortalController.enableBillingPortalForCustomer(customerId);
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down Expand Up @@ -118,15 +114,11 @@ async readBillingPortalLink(
const customerId = 150;

try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await billingPortalController.readBillingPortalLink(customerId);
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down Expand Up @@ -194,15 +186,11 @@ async resendBillingPortalInvitation(
const customerId = 150;

try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await billingPortalController.resendBillingPortalInvitation(customerId);
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down Expand Up @@ -262,15 +250,11 @@ async revokeBillingPortalAccess(
const customerId = 150;

try {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { result, ...httpResponse } = await billingPortalController.revokeBillingPortalAccess(customerId);
// Get more response info...
// const { statusCode, headers } = httpResponse;
} catch (error) {
if (error instanceof ApiError) {
// @ts-expect-error: unused variables
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const errors = error.result;
// const { statusCode, headers } = error;
}
Expand Down
Loading

0 comments on commit 35e2c93

Please sign in to comment.