From 46d1f51c1e10f6d324145cde60601df1abaf4448 Mon Sep 17 00:00:00 2001 From: lucassus Date: Tue, 9 Jun 2026 19:58:07 +0000 Subject: [PATCH 1/4] Automated commit message --- README.md | 98 ++--- .../controllers/base_controller.py | 2 +- .../controllers/components_controller.py | 6 +- .../controllers/invoices_controller.py | 48 ++- .../payment_profiles_controller.py | 100 +---- .../controllers/sites_controller.py | 16 +- .../subscription_components_controller.py | 62 +-- ...iption_group_invoice_account_controller.py | 20 +- .../subscription_group_status_controller.py | 31 +- .../subscription_groups_controller.py | 22 +- ...subscription_invoice_account_controller.py | 34 +- .../subscription_notes_controller.py | 11 +- .../subscription_products_controller.py | 86 +--- .../subscription_status_controller.py | 58 ++- .../controllers/subscriptions_controller.py | 68 +-- .../controllers/webhooks_controller.py | 13 +- .../models/activate_event_based_component.py | 8 +- .../models/bank_account_payment_profile.py | 60 ++- advancedbilling/models/billing_schedule.py | 28 +- advancedbilling/models/create_allocation.py | 8 +- advancedbilling/models/create_invoice.py | 5 +- .../models/create_payment_profile.py | 8 +- advancedbilling/models/create_usage.py | 8 +- .../models/credit_card_payment_profile.py | 5 +- .../models/credit_note_line_item.py | 29 ++ advancedbilling/models/event_key.py | 5 +- advancedbilling/models/invoice_line_item.py | 29 ++ .../models/payment_profile_attributes.py | 4 +- .../models/webhook_subscription.py | 3 + .../utilities/union_type_lookup.py | 400 +++++++++--------- doc/controllers/advance-invoice.md | 18 + doc/controllers/api-exports.md | 54 +++ doc/controllers/billing-portal.md | 24 ++ doc/controllers/component-price-points.md | 72 ++++ doc/controllers/components.md | 78 +++- doc/controllers/coupons.md | 84 ++++ doc/controllers/custom-fields.md | 54 +++ doc/controllers/customers.md | 42 ++ .../events-based-billing-segments.md | 36 ++ doc/controllers/events.md | 18 + doc/controllers/insights.md | 28 +- doc/controllers/invoices.md | 144 ++++++- doc/controllers/offers.md | 30 ++ doc/controllers/payment-profiles.md | 139 +++--- doc/controllers/product-families.md | 24 ++ doc/controllers/product-price-points.md | 66 +++ doc/controllers/products.md | 36 ++ doc/controllers/proforma-invoices.md | 60 +++ doc/controllers/reason-codes.md | 30 ++ doc/controllers/referral-codes.md | 6 + doc/controllers/sales-commissions.md | 18 + doc/controllers/sites.md | 28 +- doc/controllers/subscription-components.md | 142 ++++++- .../subscription-group-invoice-account.md | 32 +- doc/controllers/subscription-group-status.md | 40 +- doc/controllers/subscription-groups.md | 80 +++- .../subscription-invoice-account.md | 60 ++- doc/controllers/subscription-notes.md | 38 +- doc/controllers/subscription-products.md | 61 +-- doc/controllers/subscription-renewals.md | 66 +++ doc/controllers/subscription-status.md | 94 +++- doc/controllers/subscriptions.md | 120 +++++- doc/controllers/webhooks.md | 56 ++- doc/models/activate-event-based-component.md | 2 +- doc/models/bank-account-payment-profile.md | 7 +- doc/models/bank-account-response.md | 1 - doc/models/billing-schedule.md | 6 +- ...location-preview-item-previous-quantity.md | 20 + .../allocation-preview-item-quantity.md | 20 + .../allocation-previous-quantity.md | 20 + doc/models/containers/allocation-quantity.md | 20 + ...hive-component-price-point-component-id.md | 20 + ...ve-component-price-point-price-point-id.md | 20 + ...hive-product-price-point-price-point-id.md | 20 + .../archive-product-price-point-product-id.md | 20 + .../containers/calendar-billing-snap-day.md | 20 + ...lone-component-price-point-component-id.md | 20 + ...ne-component-price-point-price-point-id.md | 20 + ...nt-allocation-change-allocated-quantity.md | 20 + ...nent-price-point-assignment-price-point.md | 20 + .../containers/coupon-payload-percentage.md | 20 + .../create-allocation-price-point-id.md | 20 + ...mponent-price-point-request-price-point.md | 43 ++ ...onent-price-points-request-price-points.md | 43 ++ .../create-invoice-coupon-amount.md | 20 + .../create-invoice-coupon-percentage.md | 20 + ...create-invoice-coupon-product-family-id.md | 20 + .../create-invoice-item-component-id.md | 20 + .../create-invoice-item-price-point-id.md | 20 + .../create-invoice-item-product-id.md | 20 + ...ate-invoice-item-product-price-point-id.md | 20 + .../create-invoice-item-quantity.md | 20 + .../create-invoice-item-unit-price.md | 20 + .../create-invoice-payment-amount.md | 20 + .../create-metafields-request-metafields.md | 36 ++ .../create-multi-invoice-payment-amount.md | 20 + ...eate-or-update-segment-price-unit-price.md | 20 + ...create-payment-profile-expiration-month.md | 20 + .../create-payment-profile-expiration-year.md | 20 + .../create-product-price-point-product-id.md | 20 + ...create-segment-segment-property-1-value.md | 40 ++ ...create-segment-segment-property-2-value.md | 40 ++ ...create-segment-segment-property-3-value.md | 40 ++ ...create-segment-segment-property-4-value.md | 40 ++ ...bscription-component-allocated-quantity.md | 20 + ...ate-subscription-component-component-id.md | 20 + ...e-subscription-component-price-point-id.md | 20 + .../create-subscription-offer-id.md | 20 + .../containers/create-usage-component-id.md | 20 + ...eate-usage-subscription-id-or-reference.md | 20 + .../customer-error-response-errors.md | 22 + .../deduct-service-credit-amount.md | 20 + .../containers/ebb-component-unit-price.md | 20 + .../containers/event-event-specific-data.md | 315 ++++++++++++++ .../containers/invoice-event-payment.md | 70 +++ doc/models/containers/invoice-event.md | 387 +++++++++++++++++ .../containers/issue-service-credit-amount.md | 20 + ...t-product-price-points-input-product-id.md | 20 + .../list-usages-input-component-id.md | 20 + ...ages-input-subscription-id-or-reference.md | 20 + doc/models/containers/metafield-enum.md | 22 + .../metered-component-unit-price.md | 20 + .../containers/on-off-component-unit-price.md | 20 + ...ent-profile-attributes-expiration-month.md | 20 + ...ment-profile-attributes-expiration-year.md | 20 + doc/models/containers/payment-profile.md | 68 +++ .../prepaid-usage-component-unit-price.md | 20 + .../containers/price-ending-quantity.md | 20 + .../containers/price-starting-quantity.md | 20 + doc/models/containers/price-unit-price.md | 20 + .../quantity-based-component-unit-price.md | 20 + .../reactivate-subscription-request-resume.md | 20 + ...read-component-price-point-component-id.md | 20 + ...ad-component-price-point-price-point-id.md | 20 + ...read-product-price-point-price-point-id.md | 20 + .../read-product-price-point-product-id.md | 20 + ...efund-consolidated-invoice-segment-uids.md | 22 + .../refund-invoice-request-refund.md | 31 ++ .../containers/refund-prepayment-amount.md | 20 + .../renewal-preview-component-component-id.md | 20 + ...enewal-preview-component-price-point-id.md | 20 + ...item-request-renewal-configuration-item.md | 24 ++ ...ed-renewal-product-price-point-interval.md | 20 + ...ewal-product-price-point-price-in-cents.md | 20 + ...date-request-renewal-configuration-item.md | 24 ++ .../segment-segment-property-1-value.md | 40 ++ .../segment-segment-property-2-value.md | 40 ++ .../segment-segment-property-3-value.md | 40 ++ .../segment-segment-property-4-value.md | 40 ++ ...bscription-component-allocated-quantity.md | 20 + ...iption-custom-price-expiration-interval.md | 20 + ...on-custom-price-initial-charge-in-cents.md | 20 + .../subscription-custom-price-interval.md | 20 + ...ubscription-custom-price-price-in-cents.md | 20 + ...ubscription-custom-price-trial-interval.md | 20 + ...ption-custom-price-trial-price-in-cents.md | 20 + ...tion-group-create-error-response-errors.md | 36 ++ ...tion-group-credit-card-expiration-month.md | 20 + ...ption-group-credit-card-expiration-year.md | 20 + ...scription-group-credit-card-full-number.md | 20 + ...oup-signup-component-allocated-quantity.md | 20 + ...ion-group-signup-component-component-id.md | 20 + ...n-group-signup-component-price-point-id.md | 20 + ...ion-group-signup-component-unit-balance.md | 20 + ...date-component-price-point-component-id.md | 20 + ...te-component-price-point-price-point-id.md | 20 + .../update-metafields-request-metafields.md | 22 + .../update-price-ending-quantity.md | 20 + .../update-price-starting-quantity.md | 20 + .../containers/update-price-unit-price.md | 20 + ...date-product-price-point-price-point-id.md | 20 + .../update-product-price-point-product-id.md | 20 + .../update-subscription-net-terms.md | 20 + .../update-subscription-snap-day.md | 20 + doc/models/containers/usage-quantity.md | 20 + doc/models/create-allocation.md | 2 +- doc/models/create-invoice.md | 2 +- doc/models/create-on-off-component.md | 2 +- doc/models/create-or-update-endpoint.md | 2 +- doc/models/create-payment-profile.md | 6 +- doc/models/create-usage.md | 2 +- doc/models/credit-card-payment-profile.md | 2 +- doc/models/credit-note-line-item.md | 1 + doc/models/event-key.md | 1 + doc/models/event-response.md | 2 +- doc/models/event.md | 2 +- doc/models/invoice-line-item.md | 1 + doc/models/payment-profile-attributes.md | 2 +- doc/models/webhook-subscription.md | 1 + pyproject.toml | 2 +- 190 files changed, 5514 insertions(+), 870 deletions(-) diff --git a/README.md b/README.md index 229b4721..145f9618 100644 --- a/README.md +++ b/README.md @@ -30,22 +30,22 @@ The package is compatible with Python versions `3.7+`. Install the package from PyPi using the following pip command: ```bash -pip install maxio-advanced-billing-sdk==9.0.0 +pip install maxio-advanced-billing-sdk==9.1.0 ``` You can also view the package at: -https://pypi.python.org/pypi/maxio-advanced-billing-sdk/9.0.0 +https://pypi.python.org/pypi/maxio-advanced-billing-sdk/9.1.0 ## Initialize the API Client -**_Note:_** Documentation for the client can be found [here.](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/client.md) +**_Note:_** Documentation for the client can be found [here.](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/client.md) The following parameters are configurable for the API Client: | Parameter | Type | Description | | --- | --- | --- | | site | `str` | The subdomain for your Advanced Billing site.
*Default*: `"subdomain"` | -| environment | [`Environment`](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/README.md#environments) | The API environment.
**Default: `Environment.US`** | +| environment | [`Environment`](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/README.md#environments) | The API environment.
**Default: `Environment.US`** | | http_client_instance | `Union[Session, HttpClientProvider]` | The Http Client passed from the sdk user for making requests | | override_http_client_configuration | `bool` | The value which determines to override properties of the passed Http Client from the sdk user | | http_call_back | `HttpCallBack` | The callback value that is invoked before and after an HTTP call is made to an endpoint | @@ -54,8 +54,8 @@ The following parameters are configurable for the API Client: | backoff_factor | `float` | A backoff factor to apply between attempts after the second try.
**Default: 2** | | retry_statuses | `Array of int` | The http statuses on which retry is to be done.
**Default: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524]** | | retry_methods | `Array of string` | The http methods on which retry is to be done.
**Default: ["GET", "PUT"]** | -| proxy_settings | [`ProxySettings`](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/proxy-settings.md) | Optional proxy configuration to route HTTP requests through a proxy server. | -| basic_auth_credentials | [`BasicAuthCredentials`](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/auth/basic-authentication.md) | The credential object for Basic Authentication | +| proxy_settings | [`ProxySettings`](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/proxy-settings.md) | Optional proxy configuration to route HTTP requests through a proxy server. | +| basic_auth_credentials | [`BasicAuthCredentials`](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/auth/basic-authentication.md) | The credential object for Basic Authentication | The API client can be initialized as follows: @@ -85,7 +85,7 @@ from advancedbilling.advanced_billing_client import AdvancedBillingClient client = AdvancedBillingClient.from_environment(dotenv_path='/path/to/.env') ``` -See the [Environment-Based Client Initialization](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/environment-based-client-initialization.md) section for details. +See the [Environment-Based Client Initialization](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/environment-based-client-initialization.md) section for details. ## Environments @@ -102,60 +102,60 @@ 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-python-sdk/tree/9.0.0/doc/auth/basic-authentication.md) +* [`BasicAuth (Basic Authentication)`](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/auth/basic-authentication.md) ## List of APIs -* [API Exports](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/api-exports.md) -* [Advance Invoice](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/advance-invoice.md) -* [Billing Portal](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/billing-portal.md) -* [Component Price Points](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/component-price-points.md) -* [Custom Fields](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/custom-fields.md) -* [Events-Based Billing Segments](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/events-based-billing-segments.md) -* [Payment Profiles](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/payment-profiles.md) -* [Product Families](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/product-families.md) -* [Product Price Points](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/product-price-points.md) -* [Proforma Invoices](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/proforma-invoices.md) -* [Reason Codes](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/reason-codes.md) -* [Referral Codes](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/referral-codes.md) -* [Sales Commissions](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/sales-commissions.md) -* [Subscription Components](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/subscription-components.md) -* [Subscription Groups](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/subscription-groups.md) -* [Subscription Group Invoice Account](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/subscription-group-invoice-account.md) -* [Subscription Group Status](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/subscription-group-status.md) -* [Subscription Invoice Account](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/subscription-invoice-account.md) -* [Subscription Notes](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/subscription-notes.md) -* [Subscription Products](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/subscription-products.md) -* [Subscription Renewals](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/subscription-renewals.md) -* [Subscription Status](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/subscription-status.md) -* [Coupons](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/coupons.md) -* [Components](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/components.md) -* [Customers](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/customers.md) -* [Events](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/events.md) -* [Insights](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/insights.md) -* [Invoices](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/invoices.md) -* [Offers](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/offers.md) -* [Products](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/products.md) -* [Sites](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/sites.md) -* [Subscriptions](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/subscriptions.md) -* [Webhooks](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/controllers/webhooks.md) +* [API Exports](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/api-exports.md) +* [Advance Invoice](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/advance-invoice.md) +* [Billing Portal](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/billing-portal.md) +* [Component Price Points](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/component-price-points.md) +* [Custom Fields](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/custom-fields.md) +* [Events-Based Billing Segments](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/events-based-billing-segments.md) +* [Payment Profiles](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/payment-profiles.md) +* [Product Families](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/product-families.md) +* [Product Price Points](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/product-price-points.md) +* [Proforma Invoices](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/proforma-invoices.md) +* [Reason Codes](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/reason-codes.md) +* [Referral Codes](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/referral-codes.md) +* [Sales Commissions](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/sales-commissions.md) +* [Subscription Components](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/subscription-components.md) +* [Subscription Groups](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/subscription-groups.md) +* [Subscription Group Invoice Account](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/subscription-group-invoice-account.md) +* [Subscription Group Status](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/subscription-group-status.md) +* [Subscription Invoice Account](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/subscription-invoice-account.md) +* [Subscription Notes](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/subscription-notes.md) +* [Subscription Products](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/subscription-products.md) +* [Subscription Renewals](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/subscription-renewals.md) +* [Subscription Status](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/subscription-status.md) +* [Coupons](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/coupons.md) +* [Components](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/components.md) +* [Customers](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/customers.md) +* [Events](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/events.md) +* [Insights](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/insights.md) +* [Invoices](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/invoices.md) +* [Offers](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/offers.md) +* [Products](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/products.md) +* [Sites](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/sites.md) +* [Subscriptions](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/subscriptions.md) +* [Webhooks](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/controllers/webhooks.md) ## SDK Infrastructure ### Configuration -* [ProxySettings](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/proxy-settings.md) -* [Environment-Based Client Initialization](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/environment-based-client-initialization.md) +* [ProxySettings](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/proxy-settings.md) +* [Environment-Based Client Initialization](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/environment-based-client-initialization.md) ### HTTP -* [HttpResponse](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/http-response.md) -* [HttpRequest](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/http-request.md) +* [HttpResponse](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/http-response.md) +* [HttpRequest](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/http-request.md) ### Utilities -* [ApiHelper](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/api-helper.md) -* [HttpDateTime](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/http-date-time.md) -* [RFC3339DateTime](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/rfc3339-date-time.md) -* [UnixDateTime](https://www.github.com/maxio-com/ab-python-sdk/tree/9.0.0/doc/unix-date-time.md) +* [ApiHelper](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/api-helper.md) +* [HttpDateTime](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/http-date-time.md) +* [RFC3339DateTime](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/rfc3339-date-time.md) +* [UnixDateTime](https://www.github.com/maxio-com/ab-python-sdk/tree/9.1.0/doc/unix-date-time.md) diff --git a/advancedbilling/controllers/base_controller.py b/advancedbilling/controllers/base_controller.py index 687ce273..95e5d65e 100644 --- a/advancedbilling/controllers/base_controller.py +++ b/advancedbilling/controllers/base_controller.py @@ -31,7 +31,7 @@ class BaseController(object): @staticmethod def user_agent(): """Return UserAgent value.""" - return "AB SDK Python:9.0.0 on OS {os-info}" + return "AB SDK Python:9.1.0 on OS {os-info}" @staticmethod def user_agent_parameters(): diff --git a/advancedbilling/controllers/components_controller.py b/advancedbilling/controllers/components_controller.py index 6093988f..52b7bb77 100644 --- a/advancedbilling/controllers/components_controller.py +++ b/advancedbilling/controllers/components_controller.py @@ -54,9 +54,9 @@ def create_metered_component(self, under the specified product family. Metered component can then be added and “allocated” for a subscription. Metered components are used to bill for any type of unit that resets to 0 at - the end of the billing period (think daily Google Adwords clicks or monthly - cell phone minutes). This is most commonly associated with usage-based - billing and many other pricing schemes. + the end of the billing period (think daily Google Ads clicks or monthly cell + phone minutes). This is most commonly associated with usage-based billing and + many other pricing schemes. Note that this is different from recurring quantity-based components, which DO NOT reset to zero at the start of every billing period. If you want to bill for a quantity of something that does not change unless you change it, diff --git a/advancedbilling/controllers/invoices_controller.py b/advancedbilling/controllers/invoices_controller.py index 92cad398..0c19f35c 100644 --- a/advancedbilling/controllers/invoices_controller.py +++ b/advancedbilling/controllers/invoices_controller.py @@ -78,9 +78,9 @@ def refund_invoice(self, ## Partial Refund for Consolidated Invoice A refund less than the total of a consolidated invoice will be split across its segments. - A $50.00 refund on a $100.00 consolidated invoice with one $60.00 and one - $40.00 segment, the refunded amount will be applied as 50% of each ($30.00 - and $20.00 respectively). + For a $50.00 refund on a $100.00 consolidated invoice with one $60.00 segment + and one $40.00 segment, the refunded amount will be applied as 50% of each + ($30.00 and $20.00, respectively). Args: uid (str): The unique identifier for the invoice, this does not refer to @@ -519,8 +519,8 @@ def record_payment_for_multiple_invoices(self, This API call should be used when you want to record an external payment against multiple invoices. - In order apply a payment to multiple invoices, at minimum, specify the - `amount` and `applications` (i.e., `invoice_uid` and `amount`) details. + To apply a payment to multiple invoices, at minimum, specify the `amount` + and `applications` (i.e., `invoice_uid` and `amount`) details. ``` { "payment": { @@ -979,10 +979,10 @@ def create_invoice(self, ``` The price for each line item will be calculated as well as a total due amount for the invoice. Multiple line items can be sent. - ### Line items types - When defining line item, You can choose one of 3 types for one line item: + ### Line item types + When defining a line item, You can choose one of 3 types for a line item: #### Custom item - Like in basic behavior example above, You can pass `title` and `unit_price` + As shown in the basic behavior example, You can pass `title` and `unit_price` for custom item. #### Product id Product handle (with handle: prefix) or id from the scope of current @@ -997,7 +997,7 @@ def create_invoice(self, used, following fields cannot be used: `title`, `product_id`. By default `unit_price` is taken from product's default price point, but can be overwritten by passing `unit_price` or `price_point_id`. At this moment price - points are supportted only for quantity based, on/off and metered components. + points are supported only for quantity based, on/off and metered components. For prepaid and event based billing components `unit_price` is required. ### Coupons When creating ad hoc invoice, new discounts can be applied in following way: @@ -1122,9 +1122,11 @@ def create_invoice(self, description for line item. ### Invoice Options #### Issue Date - By default, invoices will be created with a issue date set to today. - `issue_date` parameter can be send to alter that. Only dates in the past can - be send. `issue_date` should be send in `YYYY-MM-DD` format. + By default, invoices will be created with a issue date set to today in your + site's time zone. The `issue_date` parameter can be sent to alter the + default. Only today or dates in the past are accepted. This date is + interpreted and validated in your site's time zone. The format for + `issue_date` is `YYYY-MM-DD`. #### Net Terms By default, invoices will be created with a due date matching the date of invoice creation. If a different due date is desired, the `net_terms` @@ -1138,7 +1140,7 @@ def create_invoice(self, #### Memo and Payment Instructions A custom memo can be sent with the `memo` parameter to override the site's default. Likewise, custom payment instructions can be sent with the - `payment_instrucions` parameter. + `payment_instructions` parameter. #### Status By default, invoices will be created with open status. Possible alternative is `draft`. @@ -1246,9 +1248,9 @@ def preview_customer_information_changes(self, """Perform a POST request to /invoices/{uid}/customer_information/preview.json. - Customer information may change after an invoice is issued which may lead to - a mismatch between customer information that are present on an open invoice - and actual customer information. This endpoint allows to preview these + Customer information may change after an invoice is issued, which may lead to + a mismatch between customer information that is present on an open invoice + and actual customer information. This endpoint allows you to preview these differences, if any. The endpoint doesn't accept a request body. Customer information differences are calculated on the application side. @@ -1298,7 +1300,7 @@ def update_customer_information(self, This endpoint updates customer information on an open invoice and returns the updated invoice. If you would like to preview changes that will be applied, - use the `/invoices/{uid}/customer_information/preview.json` endpoint before. + use the `/invoices/{uid}/customer_information/preview.json` endpoint first. The endpoint doesn't accept a request body. Customer information differences are calculated on the application side. @@ -1353,13 +1355,13 @@ def issue_invoice(self, subscription in a group. For Remittance subscriptions, the invoice will go into "open" status and payment won't be attempted. The value for `on_failed_payment` would be - rejected if sent. Any prepayments or service credits that exist on - subscription will be automatically applied. Additionally, if setting is on, - an email will be sent for issued invoice. + rejected if sent. Any prepayments or service credits that exist on the + subscription will be automatically applied. Additionally, if the setting is + enabled, an email will be sent for the issued invoice. For Automatic subscriptions, prepayments and service credits will apply to - the invoice and before payment is attempted. On successful payment, the - invoice will go into "paid" status and email will be sent to the customer (if - setting applies). When payment fails, the next event depends on the + the invoice before payment is attempted. On successful payment, the invoice + will go into "paid" status and email will be sent to the customer (if setting + applies). When payment fails, the next event depends on the `on_failed_payment` value: - `leave_open_invoice` - prepayments and credits applied to invoice; invoice status set to "open"; email sent to the customer for the issued invoice (if diff --git a/advancedbilling/controllers/payment_profiles_controller.py b/advancedbilling/controllers/payment_profiles_controller.py index 3191afbf..371559e5 100644 --- a/advancedbilling/controllers/payment_profiles_controller.py +++ b/advancedbilling/controllers/payment_profiles_controller.py @@ -65,8 +65,8 @@ def create_payment_profile(self, Note that collecting and sending raw card details in production requires [PCI compliance](https://docs.maxio.com/hc/en-us/articles/24183956938381-PCI-Compli ance#pci-compliance-0-0) on your end. If your business is not PCI compliant, - use - [Chargify.js](https://docs.maxio.com/hc/en-us/articles/38163190843789-Chargify + use [Maxio.js (formerly + Chargify.js)](https://docs.maxio.com/hc/en-us/articles/38163190843789-Chargify -js-Overview#chargify-js-overview-0-0) to collect credit card or bank account information. See the following articles to learn more about subscriptions and payments: @@ -82,25 +82,25 @@ def create_payment_profile(self, + [Taxes](https://developers.chargify.com/docs/developer-docs/d2e9e34db740e-sign ups#taxes) - + - [Chargify.js](https://docs.maxio.com/hc/en-us/articles/38163190843789-Chargify + + [Maxio.js (formerly + Chargify.js)](https://docs.maxio.com/hc/en-us/articles/38163190843789-Chargify -js-Overview) - + [Chargify.js with GoCardless - minimal + + [Maxio.js with GoCardless - minimal example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01 K0PJ15QQZKCER8CFK40MR6XJ) - + [Chargify.js with GoCardless - full + + [Maxio.js with GoCardless - full example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01 K0PJ15QR09JVHWW0MCA7HVJV) - + [Chargify.js with Stripe Direct Debit - minimal + + [Maxio.js with Stripe Direct Debit - minimal example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01 K0PJ15QQFKKN8Z7B7DZ9AJS5) - + [Chargify.js with Stripe Direct Debit - full + + [Maxio.js with Stripe Direct Debit - full example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01 K0PJ15QRECQQ4ECS3ZA55GY7) - + [Chargify.js with Stripe BECS Direct Debit - minimal + + [CMaxio.js with Stripe BECS Direct Debit - minimal example](https://developers.chargify.com/docs/developer-docs/ZG9jOjE0NjAzNDIy- examples#minimal-example-with-sepa-or-becs-direct-debit-stripe-gateway) - + [Chargify.js with Stripe BECS Direct Debit - full + + [Maxio.js with Stripe BECS Direct Debit - full example](https://developers.chargify.com/docs/developer-docs/ZG9jOjE0NjAzNDIy- examples#full-example-with-sepa-direct-debit-stripe-gateway) + [Full documentation on @@ -115,77 +115,15 @@ def create_payment_profile(self, + [Full documentation on Stripe BACS Direct Debit](https://maxio.zendesk.com/hc/en-us/articles/24176170430093-Stripe-SEPA- and-BECS-Direct-Debit) - ## 3D Secure Authentication during payment profile creation. - When a payment requires 3D Secure Authentication to adhear to Strong Customer - Authentication (SCA) during payment profile creation, the request enters a - [post-authentication - flow](https://maxio.zendesk.com/hc/en-us/articles/24176278996493-Testing-Imple - menting-3D-Secure#psd2-flows-pre-authentication-and-post-authentication). In - this case, a 422 Unprocessable Entity status is returned with the following - response: - ```json - { - "jsonapi": { - "version": "1.0" - }, - "errors": [ - { - "title": "This card requires 3DSecure verification.", - "detail": "This card requires 3D secure authentication. Redirect - the customer to the URL from the action_link attribute to authenticate. - Attach callback_url param to this URL if you want to be notified about the - result of 3D Secure authentication. Attach redirect_url param to this URL if - you want to redirect a customer back to your page after 3D Secure - authentication. Example: - https://checkout-test.chargifypay.test/3d-secure/checkout/pay_uerzhsxd5uhkbodx - 5jhvkg6yeu?one_time_token_id=93&callback_url=http://localhost:4000&redirect_ur - l=https://yourpage.com will do a POST request to https://localhost:4000 after - credit card is authenticated and will redirect a customer to - https://yourpage.com after 3DS authentication.", - "links": { - "action_link": - "https://checkout-test.chargifypay.test/3d-secure/checkout/pay_uerzhsxd5uhkbod - x5jhvkg6yeu?one_time_token_id=93" - } - } - ] - } - ``` - To let the customer go through 3D Secure Authentication, they need to be - redirected to the URL specified in `action_link`. - Optionally, you can specify the `callback_url` parameter in the `action_link` - URL to receive notification about the result of 3D Secure Authentication. - The `callback_url` will return the following information: - - whether the authentication was successful (`success`) - - the payment profile ID (`payment_profile_id`) - You can also specify a `redirect_url` parameter in the `action_link` URL to - redirect the customer back to your site. - You cannot use action_link in an iframe inside a custom application. You must - redirect the customer directly to the `action_link` and use the - `redirect_url` or `callback_url` to be notified of the result. - The final URL that you send a customer to complete 3D Secure may resemble the - following, where the first half is the `action_link` and the second half - contains a `redirect_url` and `callback_url`: - `https://checkout-test.chargifypay.test/3d-secure/checkout/pay_uerzhsxd5uhkbo - dx5jhvkg6yeu?one_time_token_id=93&callback_url=http://localhost:4000&redirect_ - url=https://yourpage.com` - ### Example Redirect Flow - Here's an example flow to redirect customers to different pages depending on - whether SCA was performed successfully: - 1. Create a payment profile via the API; it requires 3DS. - 2. You receive an `action_link` in the response. - 3. Use this `action_link` to, for example, connect with your internal - resources or generate a `session_id`. - 4. Include one of those attributes inside the `callback_url` and - `redirect_url` to be aware which “session” this applies to. - 5. Redirect the customer to the `action_link` with `callback_url` and - `redirect_url` applied - 6. After the customer completes 3DS authentication, we notify you of the - result via the applied `callback_url`. - 7. After that, we redirect the customer to the `redirect_url`; at this point - the result of authentication is known. - 8. Optionally, you can use the applied "msg" param in the `redirect_url` to - determine if the redirect was successful. + ## 3D Secure (3DS) Authentication post-authentication flow + When a payment requires 3DS Authentication to adhere to Strong Customer + Authentication (SCA), the request enters a post-authentication flow where a + 422 Unprocessable Entity status is returned with an action_link that will + direct the customer through 3DS Authentication. + See the [3D Secure Post-Authentication + Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Post-A + uthentication-Flow) article in the product documentation to learn how to + manage the redirect flow. Args: body (CreatePaymentProfileRequest, optional): When following the IBAN or diff --git a/advancedbilling/controllers/sites_controller.py b/advancedbilling/controllers/sites_controller.py index 09e1340a..6992c429 100644 --- a/advancedbilling/controllers/sites_controller.py +++ b/advancedbilling/controllers/sites_controller.py @@ -38,14 +38,14 @@ def __init__(self, config): def read_site(self): """Perform a GET request to /site.json. - This endpoint allows you to fetch some site data. + Retrieves site data. Full documentation on Sites in the Advanced Billing UI can be located [here](https://maxio.zendesk.com/hc/en-us/sections/24250550707085-Sites). Specifically, the [Clearing Site Data](https://maxio.zendesk.com/hc/en-us/articles/24250617028365-Clearing-Site - -Data) section is extremely relevant to this endpoint documentation. + -Data) section is relevant to this endpoint documentation. #### Relationship invoicing enabled - If site has RI enabled then you will see more settings like: + If the site has RI enabled then you will see more settings like: "customer_hierarchy_enabled": true, "whopays_enabled": true, "whopays_default_payer": "self" @@ -81,10 +81,10 @@ def clear_site(self, cleanup_scope="all"): """Perform a POST request to /sites/clear_data.json. - This call is asynchronous and there may be a delay before the site data is - fully deleted. If you are clearing site data for an automated test, you will - need to build in a delay and/or check that there are no products, etc., in - the site before proceeding. + Clears all data from a test site asynchronously. This call is asynchronous + and there may be a delay before the site data is fully deleted. If you are + clearing site data for an automated test, you will need to build in a delay + and/or check that there are no products, etc., in the site before proceeding. **This functionality will only work on sites in TEST mode. Attempts to perform this on sites in “live” mode will result in a response of 403 FORBIDDEN.** @@ -119,7 +119,7 @@ def list_chargify_js_public_keys(self, options=dict()): """Perform a GET request to /chargify_js_keys.json. - This endpoint returns public keys used for Chargify.js. + Returns public keys used for Maxio.js (formerly Chargify.js). Args: options (dict, optional): Key-value pairs for any of the parameters to diff --git a/advancedbilling/controllers/subscription_components_controller.py b/advancedbilling/controllers/subscription_components_controller.py index 4f2e6e5c..5eff1456 100644 --- a/advancedbilling/controllers/subscription_components_controller.py +++ b/advancedbilling/controllers/subscription_components_controller.py @@ -74,8 +74,7 @@ def read_subscription_component(self, """Perform a GET request to /subscriptions/{subscription_id}/components/{component_id}.json. - This request will list information regarding a specific component owned by a - subscription. + Returns information for a specific component on a subscription. Args: subscription_id (int): The Chargify id of the subscription. @@ -121,7 +120,7 @@ def list_subscription_components(self, """Perform a GET request to /subscriptions/{subscription_id}/components.json. - This request will list a subscription's applied components. + Lists a subscription's applied components. ## Archived Components When requesting to list components for a given subscription, if the subscription contains **archived** components they will be listed in the @@ -350,8 +349,8 @@ def allocate_component(self, Prepaid Components. When creating an allocation via the API, you can pass the `upgrade_charge`, `downgrade_credit`, and `accrue_charge` to be applied. - > **Note:** These proration and accural fields are ignored for Prepaid - Components since this component type always generate charges immediately + > **Note:** These proration and accrual fields are ignored for Prepaid + Components since this component type always generates charges immediately without proration. For information on prorated components and upgrade/downgrade schemes, see [Setting Component @@ -375,7 +374,7 @@ def allocate_component(self, > **Note:** Proration uses the current price of the component as well as the current tax rates. Changes to either may cause the prorated charge/credit to be wrong. - For more informaiton see the [Component + For more information, see the [Component Allocations](https://maxio.zendesk.com/hc/en-us/articles/24251883961485-Compon ent-Allocations-Overview) product Documentation. @@ -434,8 +433,7 @@ def list_allocations(self, """Perform a GET request to /subscriptions/{subscription_id}/components/{component_id}/allocations.json. - This endpoint returns the 50 most recent Allocations, ordered by most recent - first. + Returns the 50 most recent Allocations, ordered by most recent first. ## On/Off Components When a subscription's on/off component has been toggled to on (`1`) or off (`0`), usage will be logged in this response. @@ -499,7 +497,7 @@ def allocate_components(self, /subscriptions/{subscription_id}/allocations.json. Creates multiple allocations, sets the current allocated quantity for each of - the components, and recording a memo. A `component_id` is required for each + the components, and records a memo. A `component_id` is required for each allocation. The charges and/or credits that are created will be rolled up into a single total which is used to determine whether this is an upgrade or a downgrade. @@ -521,9 +519,9 @@ def allocate_components(self, > **Note:** Proration uses the current price of the component as well as the current tax rates. Changes to either may cause the prorated charge/credit to be wrong. - For more informaiton see the [Component + For more information, see the [Component Allocations](https://maxio.zendesk.com/hc/en-us/articles/24251883961485-Compon - ent-Allocations-Overview) product Documentation. + ent-Allocations-Overview) product documentation. Args: subscription_id (int): The Chargify id of the subscription. @@ -574,10 +572,10 @@ def preview_allocations(self, """Perform a POST request to /subscriptions/{subscription_id}/allocations/preview.json. - Advanced Billing offers the ability to preview a potential subscription's - **quantity-based** or **on/off** component allocation in the middle of the - current billing period. This is useful if you want users to be able to see - the effect of a component operation before actually doing it. + Previews a potential subscription's **quantity-based** or **on/off** + component allocation in the middle of the current billing period. This is + useful if you want users to be able to see the effect of a component + operation before actually doing it. ## Fine-grained Component Control: Use with multiple `upgrade_charge`s or `downgrade_credits` When the allocation uses multiple different types of `upgrade_charge`s or @@ -638,10 +636,9 @@ def update_prepaid_usage_allocation_expiration_date(self, /subscriptions/{subscription_id}/components/{component_id}/allocations/{allocat ion_id}.json. - When the expiration interval options are selected on a prepaid usage - component price point, all allocations will be created with an expiration - date. This expiration date can be changed after the fact to allow for - extending or shortening the allocation's active window. + Updates the expiration date for a prepaid usage allocation. This expiration + date can be changed after the fact to allow for extending or shortening the + allocation's active window. In order to change a prepaid usage allocation's expiration date, a PUT call must be made to the allocation's endpoint with a new expiration date. ## Limitations @@ -705,9 +702,10 @@ def delete_prepaid_usage_allocation(self, /subscriptions/{subscription_id}/components/{component_id}/allocations/{allocat ion_id}.json. + Deletes a prepaid usage allocation. Prepaid Usage components are unique in that their allocations are always additive. In order to reduce a subscription's allocated quantity for a - prepaid usage component each allocation must be destroyed individually via + prepaid usage component, each allocation must be destroyed individually via this endpoint. ## Credit Scheme By default, destroying an allocation will generate a service credit on the @@ -782,13 +780,13 @@ def create_usage(self, and-Archive-Components). Additionally, for information on how to record component usage against a subscription, see the following resources: It is not possible to record metered usage for more than one component at a - time Usage should be reported as one API call per component on a single + time. Usage should be reported as one API call per component on a single subscription. For example, to record that a subscriber has sent both an SMS Message and an Email, send an API call for each. - See the following product documention articles for more information: + See the following product documentation articles for more information: - [Create and Manage Components](https://maxio.zendesk.com/hc/en-us/articles/24261149711501-Create- - Edit-and-Archive-Components). A + Edit-and-Archive-Components) - [Recording Metered Component Usage](https://maxio.zendesk.com/hc/en-us/articles/24251890500109-Reporting-Co mponent-Allocations#reporting-metered-component-usage) @@ -897,9 +895,9 @@ def list_usages(self, /subscriptions/{subscription_id_or_reference}/components/{component_id}/usages. json. - This request will return a list of the usages associated with a subscription - for a particular metered component. This will display the previously recorded - components for a subscription. + Returns a list of usages associated with a subscription for a particular + metered component. This will display the previously recorded components for a + subscription. This endpoint is not compatible with quantity-based components. ## Since Date and Until Date Usage Note: The `since_date` and `until_date` attributes each default to midnight @@ -1015,6 +1013,7 @@ def activate_event_based_component(self, /event_based_billing/subscriptions/{subscription_id}/components/{component_id}/ activate.json. + Activates an event-based component for a single subscription. In order to bill your subscribers on your Events data under the Events-Based Billing feature, the components must be activated for the subscriber. Learn more about the role of activation in the [Events-Based Billing @@ -1072,9 +1071,9 @@ def deactivate_event_based_component(self, /event_based_billing/subscriptions/{subscription_id}/components/{component_id}/ deactivate.json. - Use this endpoint to deactivate an event-based component for a single - subscription. Deactivating the event-based component causes Advanced Billing - to ignore related events at subscription renewal. + Deactivates an event-based component for a single subscription. Deactivating + the event-based component causes Advanced Billing to ignore related events at + subscription renewal. Args: subscription_id (int): The Advanced Billing id of the subscription @@ -1112,6 +1111,7 @@ def record_event(self, body=None): """Perform a POST request to /events/{api_handle}.json. + Records a single event for Events-Based Billing. ## Documentation Events-Based Billing is an evolved form of metered billing that is based on data-rich events streamed in real-time from your system to Advanced Billing. @@ -1175,7 +1175,7 @@ def bulk_record_events(self, body=None): """Perform a POST request to /events/{api_handle}/bulk.json. - Use this endpoint to record a collection of events. + Records a collection of events. *Note: this endpoint differs from the standard Chargify API endpoints in that the subdomain will be `events` and your site subdomain will be included in the URL path.* @@ -1224,7 +1224,7 @@ def list_subscription_components_for_site(self, options=dict()): """Perform a GET request to /subscriptions_components.json. - This request will list components applied to each subscription. + Lists components applied to each subscription. Args: options (dict, optional): Key-value pairs for any of the parameters to diff --git a/advancedbilling/controllers/subscription_group_invoice_account_controller.py b/advancedbilling/controllers/subscription_group_invoice_account_controller.py index 1dc0ac0d..9c4a04cb 100644 --- a/advancedbilling/controllers/subscription_group_invoice_account_controller.py +++ b/advancedbilling/controllers/subscription_group_invoice_account_controller.py @@ -56,9 +56,9 @@ def create_subscription_group_prepayment(self, """Perform a POST request to /subscription_groups/{uid}/prepayments.json. - A prepayment can be added for a subscription group identified by the group's - `uid`. This endpoint requires a `amount`, `details`, `method`, and `memo`. On - success, the prepayment will be added to the group's prepayment balance. + Adds a prepayment for a subscription group. This endpoint requires an + `amount`, `details`, `method`, and `memo`. On success, the prepayment will be + added to the group's prepayment balance. Args: uid (str): The uid of the subscription group @@ -108,7 +108,7 @@ def list_prepayments_for_subscription_group(self, """Perform a GET request to /subscription_groups/{uid}/prepayments.json. - This request will list a subscription group's prepayments. + Lists a subscription group's prepayments. Args: options (dict, optional): Key-value pairs for any of the parameters to @@ -177,10 +177,9 @@ def issue_subscription_group_service_credit(self, """Perform a POST request to /subscription_groups/{uid}/service_credits.json. - Credit can be issued for a subscription group identified by the group's - `uid`. Credit will be added to the group in the amount specified in the - request body. The credit will be applied to group member invoices as they are - generated. + Issues service credit for a subscription group. Credit will be added to the + group in the amount specified in the request body. The credit will be applied + to group member invoices as they are generated. Args: uid (str): The uid of the subscription group @@ -230,9 +229,8 @@ def deduct_subscription_group_service_credit(self, """Perform a POST request to /subscription_groups/{uid}/service_credit_deductions.json. - Credit can be deducted for a subscription group identified by the group's - `uid`. Credit will be deducted from the group in the amount specified in the - request body. + Deducts service credit for a subscription group. Credit will be deducted from + the group in the amount specified in the request body. Args: uid (str): The uid of the subscription group diff --git a/advancedbilling/controllers/subscription_group_status_controller.py b/advancedbilling/controllers/subscription_group_status_controller.py index 33571dbc..2250deea 100644 --- a/advancedbilling/controllers/subscription_group_status_controller.py +++ b/advancedbilling/controllers/subscription_group_status_controller.py @@ -85,9 +85,9 @@ def initiate_delayed_cancellation_for_group(self, """Perform a POST request to /subscription_groups/{uid}/delayed_cancel.json. - This endpoint will schedule all subscriptions within the specified group to - be canceled at the end of their billing period. The group is identified by - its uid passed in the URL. + Schedules all subscriptions within the specified group to be canceled at the + end of their billing period. The group is identified by its uid passed in the + URL. All subscriptions in the group must be on automatic billing in order to successfully cancel them, and the group must not be in a "past_due" state. @@ -120,6 +120,7 @@ def cancel_delayed_cancellation_for_group(self, """Perform a DELETE request to /subscription_groups/{uid}/delayed_cancel.json. + Removes the delayed cancellation on a subscription group. Removing the delayed cancellation on a subscription group will ensure that the subscriptions do not get canceled at the end of the period. The request will reset the `cancel_at_end_of_period` flag to false on each member in the @@ -155,12 +156,11 @@ def reactivate_subscription_group(self, """Perform a POST request to /subscription_groups/{uid}/reactivate.json. - This endpoint will attempt to reactivate or resume a cancelled subscription - group. Upon reactivation, any canceled invoices created after the beginning - of the primary subscription's billing period will be reopened and payment - will be attempted on them. If the subscription group is being reactivated (as - opposed to resumed), new charges will also be assessed for the new billing - period. + Reactivates or resumes a cancelled subscription group. Upon reactivation, any + canceled invoices created after the beginning of the primary subscription's + billing period will be reopened and payment will be attempted on them. If the + subscription group is being reactivated (as opposed to resumed), new charges + will also be assessed for the new billing period. Whether a subscription group is reactivated (a new billing period is created) or resumed (the current billing period is respected) will depend on the parameters that are sent with the request as well as the date of the request @@ -169,10 +169,10 @@ def reactivate_subscription_group(self, If a subscription group is cancelled and reactivated within the primary subscription's current period, we can choose to either start a new billing period or maintain the existing one. If we want to maintain the existing - billing period the `resume=true` option must be passed in request parameters. + billing period, the `resume=true` option must be passed in request parameters. An exception to the above are subscriptions that are on calendar billing. These subscriptions cannot be reactivated within the current period. If the - `resume=true` option is not passed the request will return an error. + `resume=true` option is not passed, the request will return an error. The `resume_members` option is ignored in this case. All eligible group members will be automatically resumed. ## Reactivating beyond the current period @@ -187,6 +187,15 @@ def reactivate_subscription_group(self, For calendar billing subscriptions, the new billing period created will be a partial one, spanning from the date of reactivation to the next corresponding calendar renewal date. + ## 3D Secure (3DS) Authentication post-authentication flow + When a payment requires 3DS Authentication to adhere to Strong Customer + Authentication (SCA), the request enters a post-authentication flow where a + 422 Unprocessable Entity status is returned with an action_link that will + direct the customer through 3DS Authentication. + See the [3D Secure Post-Authentication + Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Post-A + uthentication-Flow) article in the product documentation to learn how to + manage the redirect flow. Args: uid (str): The uid of the subscription group diff --git a/advancedbilling/controllers/subscription_groups_controller.py b/advancedbilling/controllers/subscription_groups_controller.py index e5339eb0..8aa2b91a 100644 --- a/advancedbilling/controllers/subscription_groups_controller.py +++ b/advancedbilling/controllers/subscription_groups_controller.py @@ -63,8 +63,8 @@ def signup_with_subscription_group(self, body=None): """Perform a POST request to /subscription_groups/signup.json. - Create multiple subscriptions at once under the same customer and consolidate - them into a subscription group. + Creates multiple subscriptions at once under the same customer and + consolidates them into a subscription group. You must provide one and only one of the `payer_id`/`payer_reference`/`payer_attributes` for the customer attached to the group. @@ -72,13 +72,13 @@ def signup_with_subscription_group(self, `payment_profile_id`/`credit_card_attributes`/`bank_account_attributes` for the payment profile attached to the group. Only one of the `subscriptions` can have `"primary": true` attribute set. - When passing product to a subscription you can use either `product_id` or + When passing a product to a subscription you can use either `product_id` or `product_handle` or `offer_id`. You can also use `custom_price` instead. The subscription request examples below will be split into two sections. The first section, "Subscription Customization", will focus on passing different information with a subscription, such as components, calendar billing, and custom fields. These examples will presume you are using a - secure chargify_token generated by Chargify.js. + secure chargify_token generated by Maxio.js (formerly Chargify.js). Args: body (SubscriptionGroupSignupRequest, optional): The request body @@ -233,7 +233,7 @@ def read_subscription_group(self, include=None): """Perform a GET request to /subscription_groups/{uid}.json. - Use this endpoint to find subscription group details. + Returns subscription group details. #### Current Billing Amount in Cents Current billing amount for the subscription group is not returned by default. If this information is desired, the @@ -283,11 +283,11 @@ def update_subscription_group_members(self, body=None): """Perform a PUT request to /subscription_groups/{uid}.json. - Use this endpoint to update subscription group members. + Updates subscription group members. `"member_ids"` should contain an array of both subscription IDs to set as group members and subscription IDs already present in the groups. Not - including them will result in removing them from subscription group. To clean - up members, just leave the array empty. + including them will result in removing them from the subscription group. To + clean up members, just leave the array empty. Args: uid (str): The uid of the subscription group @@ -375,8 +375,8 @@ def find_subscription_group(self, subscription_id): """Perform a GET request to /subscription_groups/lookup.json. - Use this endpoint to find subscription group associated with subscription. - If the subscription is not in a group endpoint will return 404 code. + Finds the subscription group associated with a subscription. + If the subscription is not in a group, the endpoint will return a 404 code. Args: subscription_id (str): The Advanced Billing id of the subscription @@ -495,7 +495,7 @@ def remove_subscription_from_group(self, illing-Invoices-Overview) and [Customer Hierarchy](https://maxio.zendesk.com/hc/en-us/articles/24252185211533-Customer -Hierarchies-WhoPays#customer-hierarchies) features, it is possible to remove - existing subscription from subscription group. + an existing subscription from a subscription group. Args: subscription_id (int): The Chargify id of the subscription. diff --git a/advancedbilling/controllers/subscription_invoice_account_controller.py b/advancedbilling/controllers/subscription_invoice_account_controller.py index dfd92c8a..b95d5d76 100644 --- a/advancedbilling/controllers/subscription_invoice_account_controller.py +++ b/advancedbilling/controllers/subscription_invoice_account_controller.py @@ -105,7 +105,7 @@ def create_prepayment(self, """Perform a POST request to /subscriptions/{subscription_id}/prepayments.json. - ## Create Prepayment + Creates a prepayment for a subscription. In order to specify a prepayment made against a subscription, specify the `amount, memo, details, method`. When the `method` specified is `"credit_card_on_file"`, the prepayment amount @@ -113,6 +113,15 @@ def create_prepayment(self, to the prepayment account balance. This is especially useful for manual replenishment of prepaid subscriptions. Note that passing `amount_in_cents` is now allowed. + ## 3D Secure (3DS) Authentication post-authentication flow + When a payment requires 3DS Authentication to adhere to Strong Customer + Authentication (SCA), the request enters a post-authentication flow where a + 422 Unprocessable Entity status is returned with an action_link that will + direct the customer through 3DS Authentication. + See the [3D Secure Post-Authentication + Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Post-A + uthentication-Flow) article in the product documentation to learn how to + manage the redirect flow. Args: subscription_id (int): The Chargify id of the subscription. @@ -161,7 +170,7 @@ def list_prepayments(self, """Perform a GET request to /subscriptions/{subscription_id}/prepayments.json. - This request will list a subscription's prepayments. + Lists a subscription's prepayments. Args: options (dict, optional): Key-value pairs for any of the parameters to @@ -230,9 +239,8 @@ def issue_service_credit(self, """Perform a POST request to /subscriptions/{subscription_id}/service_credits.json. - Credit will be added to the subscription in the amount specified in the - request body. The credit is subsequently applied to the next generated - invoice. + Adds a service credit to the subscription in the specified amount. The credit + is subsequently applied to the next generated invoice. Args: subscription_id (int): The Chargify id of the subscription. @@ -282,9 +290,9 @@ def deduct_service_credit(self, """Perform a POST request to /subscriptions/{subscription_id}/service_credit_deductions.json. - Credit will be removed from the subscription in the amount specified in the - request body. The credit amount being deducted must be equal to or less than - the current credit balance. + Deducts a service credit from the subscription in the specified amount. The + credit amount being deducted must be equal to or less than the current credit + balance. Args: subscription_id (int): The Chargify id of the subscription. @@ -325,7 +333,7 @@ def list_service_credits(self, """Perform a GET request to /subscriptions/{subscription_id}/service_credits/list.json. - This request will list a subscription's service credits. + Lists a subscription's service credits. Args: subscription_id (int): The Chargify id of the subscription. @@ -392,10 +400,10 @@ def refund_prepayment(self, """Perform a POST request to /subscriptions/{subscription_id}/prepayments/{prepayment_id}/refunds.json. - This endpoint will refund, completely or partially, a particular prepayment - applied to a subscription. The `prepayment_id` will be the account - transaction ID of the original payment. The prepayment must have some amount - remaining in order to be refunded. + Refunds a prepayment applied to a subscription, either fully or partially. + The `prepayment_id` will be the account transaction ID of the original + payment. The prepayment must have some amount remaining in order to be + refunded. The amount may be passed either as a decimal, with `amount`, or an integer in cents, with `amount_in_cents`. diff --git a/advancedbilling/controllers/subscription_notes_controller.py b/advancedbilling/controllers/subscription_notes_controller.py index 56d2095b..5108d88c 100644 --- a/advancedbilling/controllers/subscription_notes_controller.py +++ b/advancedbilling/controllers/subscription_notes_controller.py @@ -41,7 +41,7 @@ def create_subscription_note(self, """Perform a POST request to /subscriptions/{subscription_id}/notes.json. - Use the following method to create a note for a subscription. + Creates a note for a subscription. ## How to Use Subscription Notes Notes allow you to record information about a particular Subscription in a free text format. @@ -100,8 +100,8 @@ def list_subscription_notes(self, """Perform a GET request to /subscriptions/{subscription_id}/notes.json. - Use this method to retrieve a list of Notes associated with a Subscription. - The response will be an array of Notes. + Retrieves a list of notes associated with a subscription. The response will + be an array of Notes. Args: options (dict, optional): Key-value pairs for any of the parameters to @@ -167,8 +167,7 @@ def read_subscription_note(self, """Perform a GET request to /subscriptions/{subscription_id}/notes/{note_id}.json. - Once you have obtained the ID of the note you wish to read, use this method - to show a particular note attached to a subscription. + Retrieves a specific note attached to a subscription. Args: subscription_id (int): The Chargify id of the subscription. @@ -214,7 +213,7 @@ def update_subscription_note(self, """Perform a PUT request to /subscriptions/{subscription_id}/notes/{note_id}.json. - Use the following method to update a note for a Subscription. + Updates a note for a subscription. Args: subscription_id (int): The Chargify id of the subscription. diff --git a/advancedbilling/controllers/subscription_products_controller.py b/advancedbilling/controllers/subscription_products_controller.py index 7ed82084..78e286a4 100644 --- a/advancedbilling/controllers/subscription_products_controller.py +++ b/advancedbilling/controllers/subscription_products_controller.py @@ -44,6 +44,7 @@ def migrate_subscription_product(self, """Perform a POST request to /subscriptions/{subscription_id}/migrations.json. + Migrates a subscription to a different product. In order to create a migration, you must pass the `product_id` or `product_handle` in the object when you send a POST request. You may also pass either a `product_price_point_id` or `product_price_point_handle` to @@ -64,76 +65,17 @@ def migrate_subscription_product(self, [here](https://maxio.zendesk.com/hc/en-us/articles/24181589372429-Data-Migrati on-to-Advanced-Billing). ## Failed Migrations - Importaint note: One of the most common ways that a migration can fail is - when the attempt is made to migrate a subscription to its current product. - ## Migration 3D Secure - Stripe - When a payment requires 3D Secure Authentication to adhear to Strong Customer - Authentication (SCA) when the subscription is migrated to a new product, the - request enters a [post-authentication - flow](https://maxio.zendesk.com/hc/en-us/articles/24176278996493-Testing-Imple - menting-3D-Secure#psd2-flows-pre-authentication-and-post-authentication). The - server returns `422 Unprocessable Entity` in this case with the following - response: - ```json - { - "errors": [ - "Your card was declined. This transaction requires 3D secure - authentication." - ], - "gateway_payment_id": "pi_1F0aGoJ2UDb3Q4av7zU3sHPh", - "description": "This card requires 3D secure authentication. Redirect the - customer to the URL from the action_link attribute to authenticate. Attach - callback_url param to this URL if you want to be notified about the result of - 3D Secure authentication. Attach redirect_url param to this URL if you want - to redirect a customer back to your page after 3D Secure authentication. - Example: - https://mysite.chargify.com/3d-secure/pi_1FCm4RKDeye4C0XfbqquXRYm?one_time_tok - en_id=128&callback_url=https://localhost:4000&redirect_url=https://yourpage.co - m will do a POST request to https://localhost:4000 after payment is - authenticated and will redirect a customer to https://yourpage.com after 3DS - authentication.", - "action_link": - "http://acme.chargify.com/3d-secure/pi_1F0aGoJ2UDb3Q4av7zU3sHPh?one_time_token - _id=242" - } - ``` - To let the customer go through 3D Secure Authentication, they need to be - redirected to the URL specified in `action_link`. - Optionally, you can specify `callback_url` parameter in the `action_link` URL - if you’d like to be notified about the result of 3D Secure Authentication. - The `callback_url` will return the following information: - - whether the authentication was successful (`success`) - - the gateway ID for the payment (`gateway_payment_id`) - - the subscription ID (`subscription_id`) - Lastly, you can also specify a `redirect_url` within the `action_link` URL if - you’d like to redirect a customer back to your site. - It is not possible to use `action_link` in an iframe inside a custom - application. You have to redirect the customer directly to the `action_link`, - then, to be notified about the result, use `redirect_url` or `callback_url`. - The final URL that you send a customer to to complete 3D Secure may resemble - the following, where the first half is the `action_link` and the second half - contains a `redirect_url` and `callback_url`: - `https://mysite.chargify.com/3d-secure/pi_1FCm4RKDeye4C0XfbqquXRYm?one_time_to - ken_id=128&callback_url=https://localhost:4000&redirect_url=https://yourpage.c - om` - ### Example Redirect Flow - You may wish to redirect customers to different pages depending on whether - SCA was performed successfully. Here's an example flow to use as a reference: - 1. Create a migration via API; it requires 3DS - 2. You receive a `gateway_payment_id` in the `action_link` along other params - in the response. - 3. Use this `gateway_payment_id` to, for example, connect with your internal - resources or generate a session_id - 4. Include 1 of those attributes inside the `callback_url` and `redirect_url` - to be aware which “session” this applies to - 5. Redirect the customer to the `action_link` with `callback_url` and - `redirect_url` applied - 6. After the customer finishes 3DS authentication, we let you know the result - by making a request to applied `callback_url`. - 7. After that, we redirect the customer to the `redirect_url`; at this point - the result of authentication is known - 8. Optionally, you can use the applied "msg" param in the `redirect_url` to - determine whether it was successful or not. + Important note: One of the most common ways that a migration can fail is when + the attempt is made to migrate a subscription to its current product. + ## 3D Secure (3DS) Authentication post-authentication flow + When a payment requires 3DS Authentication to adhere to Strong Customer + Authentication (SCA), the request enters a post-authentication flow where a + 422 Unprocessable Entity status is returned with an action_link that will + direct the customer through 3DS Authentication. + See the [3D Secure Post-Authentication + Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Post-A + uthentication-Flow) article in the product documentation to learn how to + manage the redirect flow. Args: subscription_id (int): The Chargify id of the subscription. @@ -184,10 +126,12 @@ def preview_subscription_product_migration(self, """Perform a POST request to /subscriptions/{subscription_id}/migrations/preview.json. + Previews the charges resulting from migrating a subscription to a different + product. ## Previewing a future date It is also possible to preview the migration for a date in the future, as long as it's still within the subscription's current billing period, by - passing a `proration_date` along with the request (eg: `"proration_date": + passing a `proration_date` along with the request (e.g., `"proration_date": "2020-12-18T18:25:43.511Z"`). This will calculate the prorated adjustment, charge, payment and credit applied values assuming the migration is done at that date in the future as diff --git a/advancedbilling/controllers/subscription_status_controller.py b/advancedbilling/controllers/subscription_status_controller.py index 70f98eb2..5fc0e3df 100644 --- a/advancedbilling/controllers/subscription_status_controller.py +++ b/advancedbilling/controllers/subscription_status_controller.py @@ -49,12 +49,17 @@ def retry_subscription(self, """Perform a PUT request to /subscriptions/{subscription_id}/retry.json. - Advanced Billing offers the ability to retry collecting the balance due on a - past due Subscription without waiting for the next scheduled attempt. - ## Successful Reactivation - The response will be `200 OK` with the updated Subscription. - ## Failed Reactivation - The response will be `422 "Unprocessable Entity`. + Retries collecting the balance due on a past-due subscription without waiting + for the next scheduled attempt. + ## 3D Secure (3DS) Authentication post-authentication flow + When a payment requires 3DS Authentication to adhere to Strong Customer + Authentication (SCA), the request enters a post-authentication flow where a + 422 Unprocessable Entity status is returned with an action_link that will + direct the customer through 3DS Authentication. + See the [3D Secure Post-Authentication + Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Post-A + uthentication-Flow) article in the product documentation to learn how to + manage the redirect flow. Args: subscription_id (int): The Chargify id of the subscription. @@ -151,7 +156,7 @@ def resume_subscription(self, """Perform a POST request to /subscriptions/{subscription_id}/resume.json. - Resume a paused (on-hold) subscription. If the normal next renewal date has + Resumes a paused (on-hold) subscription. If the normal next renewal date has not passed, the subscription will return to active and will renew on that date. Otherwise, it will behave like a reactivation, setting the billing date to 'now' and charging the subscriber. @@ -203,7 +208,7 @@ def pause_subscription(self, """Perform a POST request to /subscriptions/{subscription_id}/hold.json. - This will place the subscription in the on_hold state and it will not renew. + Places the subscription on hold, preventing it from renewing. ## Limitations You may not place a subscription on hold if the `next_billing_at` date is within 24 hours. @@ -255,12 +260,11 @@ def update_automatic_subscription_resumption(self, body=None): """Perform a PUT request to /subscriptions/{subscription_id}/hold.json. - Once a subscription has been paused / put on hold, you can update the date - which was specified to automatically resume the subscription. + Updates the date on which a paused subscription will automatically resume. To update a subscription's resume date, use this method to change or update the `automatically_resume_at` date. ### Remove the resume date - Alternately, you can change the `automatically_resume_at` to `null` if you + Alternatively, you can change the `automatically_resume_at` to `null` if you would like the subscription to not have a resume date. Args: @@ -311,7 +315,7 @@ def reactivate_subscription(self, """Perform a PUT request to /subscriptions/{subscription_id}/reactivate.json. - Reactivate a previously canceled subscription. For details on how the + Reactivates a previously canceled subscription. For details on how the reactivation works, and how to reactivate subscriptions through the application, see [reactivation](https://maxio.zendesk.com/hc/en-us/articles/24252109503629-Reac @@ -342,10 +346,10 @@ def reactivate_subscription(self, been the next billing date of July 1st, then Advanced Billing would not resume the subscription, and instead it would be reactivated with a new billing period. - If a reactivation with `resume: false`, or where 'resume" is omited were + If a reactivation with `resume: false`, or where 'resume' is omitted were attempted, then Advanced Billing would reactivate the subscription with a new billing period regardless of whether or not resuming the previous billing - period were possible. + period was possible. | Canceled | Reactivation | Resumable? | |---|---|---| | Jun 15 | June 28 | Yes | @@ -449,6 +453,15 @@ def reactivate_subscription(self, + The subscription will transition to active + The next billing date should not have changed + Any product-related charges should have been collected + ## 3D Secure (3DS) Authentication post-authentication flow + When a payment requires 3DS Authentication to adhere to Strong Customer + Authentication (SCA), the request enters a post-authentication flow where a + 422 Unprocessable Entity status is returned with an action_link that will + direct the customer through 3DS Authentication. + See the [3D Secure Post-Authentication + Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Post-A + uthentication-Flow) article in the product documentation to learn how to + manage the redirect flow. Args: subscription_id (int): The Chargify id of the subscription. @@ -551,9 +564,9 @@ def cancel_delayed_cancellation(self, """Perform a DELETE request to /subscriptions/{subscription_id}/delayed_cancel.json. - Removing the delayed cancellation on a subscription will ensure that it - doesn't get canceled at the end of the period that it is in. The request will - reset the `cancel_at_end_of_period` flag to `false`. + Removes the delayed cancellation from a subscription, ensuring it is not + canceled at the end of the current period. The request will reset the + `cancel_at_end_of_period` flag to `false`. This endpoint is idempotent. If the subscription was not set to cancel in the future, removing the delayed cancellation has no effect and the call will be successful. @@ -595,8 +608,7 @@ def cancel_dunning(self, """Perform a POST request to /subscriptions/{subscription_id}/cancel_dunning.json. - If a subscription is currently in dunning, the subscription will be set to - active and the active Dunner will be resolved. + Cancels the active dunning process for a subscription and sets it to active. Args: subscription_id (int): The Chargify id of the subscription. @@ -639,10 +651,10 @@ def preview_renewal(self, """Perform a POST request to /subscriptions/{subscription_id}/renewals/preview.json. - The Chargify API allows you to preview a renewal by posting to the renewals - endpoint. Renewal Preview is an object representing a subscription’s next - assessment. You can retrieve it to see a snapshot of how much your customer - will be charged on their next renewal. + Previews a subscription’s next renewal assessment. Renewal Preview is an + object representing a subscription’s next assessment. You can retrieve it to + see a snapshot of how much your customer will be charged on their next + renewal. The "Next Billing" amount and "Next Billing" date are already represented in the UI on each Subscriber's Summary. For more information, see our documentation diff --git a/advancedbilling/controllers/subscriptions_controller.py b/advancedbilling/controllers/subscriptions_controller.py index 96542c5e..7f73e291 100644 --- a/advancedbilling/controllers/subscriptions_controller.py +++ b/advancedbilling/controllers/subscriptions_controller.py @@ -63,15 +63,19 @@ def create_subscription(self, body=None): """Perform a POST request to /subscriptions.json. - Creates a Subscription for a customer and product + Creates a Subscription for a customer and product. Specify the product with `product_id` or `product_handle`. To set a specific - product pricepPoint, use `product_price_point_handle` or + product price point, use `product_price_point_handle` or `product_price_point_id`. Identify an existing customer with `customer_id` or `customer_reference`. Optionally, include an existing payment profile using `payment_profile_id`. To create a new customer, pass customer_attributes. Select an option from the **Request Examples** drop-down on the right side of the portal to see examples of common scenarios for creating subscriptions. + See the [Subscription + Signups](page:introduction/basic-concepts/subscription-signup) article for + more information on working with subscriptions in Advanced Billing. + ## Payment information Payment information may be required to create a subscription, depending on the options for the Product being subscribed. See [product options](https://docs.maxio.com/hc/en-us/articles/24261076617869-Edit-Products @@ -85,13 +89,19 @@ def create_subscription(self, Note that collecting and sending raw card details in production requires [PCI compliance](https://docs.maxio.com/hc/en-us/articles/24183956938381-PCI-Compli ance#pci-compliance-0-0) on your end. If your business is not PCI compliant, - use - [Chargify.js](https://docs.maxio.com/hc/en-us/articles/38163190843789-Chargify + use [Maxio.js (formerly + Chargify.js)](https://docs.maxio.com/hc/en-us/articles/38163190843789-Chargify -js-Overview#chargify-js-overview-0-0) to collect credit card or bank account information. - See the [Subscription - Signups](page:introduction/basic-concepts/subscription-signup) article for - more information on working with subscriptions in Advanced Billing. + ## 3D Secure (3DS) Authentication post-authentication flow + When a payment requires 3DS Authentication to adhere to Strong Customer + Authentication (SCA), the request enters a post-authentication flow where a + 422 Unprocessable Entity status is returned with an action_link that will + direct the customer through 3DS Authentication. + See the [3D Secure Post-Authentication + Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Post-A + uthentication-Flow) article in the product documentation to learn how to + manage the redirect flow. Args: body (CreateSubscriptionRequest, optional): The request body parameter. @@ -133,7 +143,7 @@ def list_subscriptions(self, options=dict()): """Perform a GET request to /subscriptions.json. - returns an array of subscriptions from a Site. Pay close attention to query + Returns an array of subscriptions from a Site. Pay close attention to query string filters and pagination in order to control responses from the server. ## Search for a subscription Use the query strings below to search for a subscription using the criteria @@ -338,26 +348,26 @@ def update_subscription(self, > **Note:** To cancel a delayed product change, set `next_product_id` to an empty string. ## Billing Date Changes - You can update dates for a subscrption. + You can update dates for a subscription. ### Regular Billing Date Changes Send the `next_billing_at` to set the next billing date for the subscription. After that date passes and the subscription is processed, the following billing date will be set according to the subscription's product period. > Note: If you pass an invalid date, the correct date is automatically set to - he correct date. For example, if February 30 is passed, the next billing + the correct date. For example, if February 30 is passed, the next billing would be set to March 2nd in a non-leap year. The server response will not return data under the key/value pair of `next_billing_at`. View the key/value pair of `current_period_ends_at` to verify that the `next_billing_at` date has been changed successfully. - ### Calendar Billing and Snap Day Changes + ### Calendar Billing and Snap Day Changes For a subscription using Calendar Billing, setting the next billing date is a bit different. Send the `snap_day` attribute to change the calendar billing date for **a subscription using a product eligible for calendar billing**. > Note: If you change the product associated with a subscription that contains a `snap_day` and immediately `READ/GET` the subscription data, it - will still contain original `snap_day`. The `snap_day`will will reset to - 'null on the next billing cycle. This is because a product change is - instantanous and only affects the product associated with a subscription. + will still contain original `snap_day`. The `snap_day` will reset to null on + the next billing cycle. This is because a product change is instantaneous and + only affects the product associated with a subscription. Args: subscription_id (int): The Chargify id of the subscription. @@ -456,10 +466,9 @@ def override_subscription(self, """Perform a PUT request to /subscriptions/{subscription_id}/override.json. - This API endpoint allows you to set certain subscription fields that are - usually managed for you automatically. Some of the fields can be set via the - normal Subscriptions Update API, but others can only be set using this - endpoint. + Sets certain subscription fields that are usually managed automatically. Some + of the fields can be set via the normal Subscriptions Update API, but others + can only be set using this endpoint. This endpoint is provided for cases where you need to “align” Advanced Billing data with data that happened in your system, perhaps before you started using Advanced Billing. For example, you may choose to import your @@ -525,7 +534,7 @@ def find_subscription(self, reference=None): """Perform a GET request to /subscriptions/lookup.json. - Use this endpoint to find a subscription by its reference. + Finds a subscription by its reference. Args: reference (str, optional): Subscription reference @@ -564,7 +573,7 @@ def purge_subscription(self, """Perform a POST request to /subscriptions/{subscription_id}/purge.json. - For sites in test mode, you may purge individual subscriptions. + Purges an individual subscription for sites in test mode. Provide the subscription ID in the url. To confirm, supply the customer ID in the query string `ack` parameter. You may also delete the customer record and/or payment profiles by passing `cascade` parameters. For example, to @@ -629,7 +638,7 @@ def update_prepaid_subscription_configuration(self, """Perform a POST request to /subscriptions/{subscription_id}/prepaid_configurations.json. - Use this endpoint to update a subscription's prepaid configuration. + Updates a subscription's prepaid configuration. Args: subscription_id (int): The Chargify id of the subscription. @@ -678,8 +687,8 @@ def preview_subscription(self, body=None): """Perform a POST request to /subscriptions/preview.json. - The Chargify API allows you to preview a subscription by POSTing the same - JSON or XML as for a subscription creation. + Previews a subscription by POSTing the same JSON or XML as for a subscription + creation. The "Next Billing" amount and "Next Billing" date are represented in each Subscriber's Summary. A subscription will not be created by utilizing this endpoint; it is meant to @@ -751,6 +760,7 @@ def apply_coupons_to_subscription(self, """Perform a POST request to /subscriptions/{subscription_id}/add_coupon.json. + Applies one or more coupon codes to an existing subscription. An existing subscription can accommodate multiple discounts/coupon codes. This is only applicable if each coupon is stackable. For more information on stackable coupons, we recommend reviewing our [coupon @@ -818,9 +828,9 @@ def remove_coupon_from_subscription(self, """Perform a DELETE request to /subscriptions/{subscription_id}/remove_coupon.json. - Use this endpoint to remove a coupon from an existing subscription. - For more information on the expected behaviour of removing a coupon from a - subscription, See our documentation + Removes a coupon from an existing subscription. + For more information on the expected behavior of removing a coupon from a + subscription, see our documentation [here.](https://maxio.zendesk.com/hc/en-us/articles/24261259337101-Coupons-and -Subscriptions#removing-a-coupon) @@ -865,9 +875,9 @@ def activate_subscription(self, """Perform a PUT request to /subscriptions/{subscription_id}/activate.json. - Advanced Billing offers the ability to activate awaiting signup and trialing - subscriptions. This feature is only available on the Relationship Invoicing - architecture. Subscriptions in a group may not be activated immediately. + Activates awaiting signup and trialing subscriptions. This feature is only + available on the Relationship Invoicing architecture. Subscriptions in a + group may not be activated immediately. For details on how the activation works, and how to activate subscriptions through the application, see [activation](#). The `revert_on_failure` parameter controls the behavior upon activation diff --git a/advancedbilling/controllers/webhooks_controller.py b/advancedbilling/controllers/webhooks_controller.py index 1b1a0c5b..66855162 100644 --- a/advancedbilling/controllers/webhooks_controller.py +++ b/advancedbilling/controllers/webhooks_controller.py @@ -54,10 +54,9 @@ def list_webhooks(self, options=dict()): """Perform a GET request to /webhooks.json. - Allows you to view a list of webhooks. You can pass query parameters if you - want to filter webhooks. See the - [Webhooks](page:introduction/webhooks/webhooks) documentation for more - information. + Retrieves a list of webhooks. You can pass query parameters if you want to + filter webhooks. See the [Webhooks](page:introduction/webhooks/webhooks) + documentation for more information. Args: options (dict, optional): Key-value pairs for any of the parameters to @@ -136,7 +135,7 @@ def enable_webhooks(self, body=None): """Perform a PUT request to /webhooks/settings.json. - Allows you to enable webhooks for your site + Enables webhooks for your site. Args: body (EnableWebhooksRequest, optional): The request body parameter. @@ -215,7 +214,7 @@ def create_endpoint(self, body=None): """Perform a POST request to /endpoints.json. - Creates an endpoint and assigns a list of webhooks subscriptions (events) to + Creates an endpoint and assigns a list of webhook subscriptions (events) to it. See the [Webhooks Reference](page:introduction/webhooks/webhooks-reference#events) page for @@ -298,7 +297,7 @@ def update_endpoint(self, Always send a complete list of events to which you want to subscribe. Sending a PUT request for an existing endpoint with an empty list of `webhook_subscriptions` will unsubscribe all events. - If you want unsubscribe from a specific event, send a list of + If you want to unsubscribe from a specific event, send a list of `webhook_subscriptions` without the specific event key. Args: diff --git a/advancedbilling/models/activate_event_based_component.py b/advancedbilling/models/activate_event_based_component.py index f2c6e6bc..d2653607 100644 --- a/advancedbilling/models/activate_event_based_component.py +++ b/advancedbilling/models/activate_event_based_component.py @@ -19,10 +19,10 @@ class ActivateEventBasedComponent(object): Attributes: price_point_id (int): The Chargify id of the price point - billing_schedule (BillingSchedule): This attribute is particularly useful - when you need to align billing events for different components on - distinct schedules within a subscription. This only works for site with - Multifrequency enabled. + billing_schedule (BillingSchedule): Billing schedule settings for component + allocations or usages on multi-frequency subscriptions. Use this to start + a component's billing period on a custom date instead of aligning with + the product charge schedule. custom_price (ComponentCustomPrice): Create or update custom pricing unique to the subscription. Used in place of `price_point_id`. additional_properties (Dict[str, object]): The additional properties for the diff --git a/advancedbilling/models/bank_account_payment_profile.py b/advancedbilling/models/bank_account_payment_profile.py index 24f975dd..6f2fc29d 100644 --- a/advancedbilling/models/bank_account_payment_profile.py +++ b/advancedbilling/models/bank_account_payment_profile.py @@ -24,7 +24,7 @@ class BankAccountPaymentProfile(object): the bank account belongs current_vault (BankAccountVault): The vault that stores the payment profile with the provided vault_token. Use `bogus` for testing. - vault_token (str): The “token” provided by your vault storage for an already + vault_token (str): The "token" provided by your vault storage for an already stored payment profile billing_address (str): The current billing street address for the bank account billing_city (str): The current billing address city for the bank account @@ -39,11 +39,11 @@ class BankAccountPaymentProfile(object): the bank account bank_name (str): The bank where the account resides masked_bank_routing_number (str): A string representation of the stored bank - routing number with all but the last 4 digits marked with X’s (i.e. - ‘XXXXXXX1111’). payment_type will be bank_account + routing number with all but the last 4 digits marked with X's (i.e. + 'XXXXXXX1111'). payment_type will be bank_account masked_bank_account_number (str): A string representation of the stored bank - account number with all but the last 4 digits marked with X’s (i.e. - ‘XXXXXXX1111’) + account number with all but the last 4 digits marked with X's (i.e. + 'XXXXXXX1111') bank_account_type (BankAccountType): Defaults to checking bank_account_holder_type (BankAccountHolderType): Defaults to personal payment_type (PaymentType): The model property of type PaymentType. @@ -62,7 +62,6 @@ class BankAccountPaymentProfile(object): # Create a mapping from Model property names to API property names _names = { - "masked_bank_account_number": "masked_bank_account_number", "payment_type": "payment_type", "id": "id", "first_name": "first_name", @@ -79,6 +78,7 @@ class BankAccountPaymentProfile(object): "billing_address_2": "billing_address_2", "bank_name": "bank_name", "masked_bank_routing_number": "masked_bank_routing_number", + "masked_bank_account_number": "masked_bank_account_number", "bank_account_type": "bank_account_type", "bank_account_holder_type": "bank_account_holder_type", "verified": "verified", @@ -104,6 +104,7 @@ class BankAccountPaymentProfile(object): "billing_address_2", "bank_name", "masked_bank_routing_number", + "masked_bank_account_number", "bank_account_type", "bank_account_holder_type", "verified", @@ -121,13 +122,14 @@ class BankAccountPaymentProfile(object): "billing_country", "customer_vault_token", "billing_address_2", + "masked_bank_routing_number", + "masked_bank_account_number", "site_gateway_setting_id", "gateway_handle", ] def __init__( self, - masked_bank_account_number=None, payment_type="bank_account", id=APIHelper.SKIP, first_name=APIHelper.SKIP, @@ -144,6 +146,7 @@ def __init__( billing_address_2=APIHelper.SKIP, bank_name=APIHelper.SKIP, masked_bank_routing_number=APIHelper.SKIP, + masked_bank_account_number=APIHelper.SKIP, bank_account_type=APIHelper.SKIP, bank_account_holder_type=APIHelper.SKIP, verified=False, @@ -184,7 +187,8 @@ def __init__( self.bank_name = bank_name if masked_bank_routing_number is not APIHelper.SKIP: self.masked_bank_routing_number = masked_bank_routing_number - self.masked_bank_account_number = masked_bank_account_number + if masked_bank_account_number is not APIHelper.SKIP: + self.masked_bank_account_number = masked_bank_account_number if bank_account_type is not APIHelper.SKIP: self.bank_account_type = bank_account_type if bank_account_holder_type is not APIHelper.SKIP: @@ -229,10 +233,6 @@ def from_dictionary(cls, return None # Extract variables from the dictionary - masked_bank_account_number =\ - dictionary.get("masked_bank_account_number")\ - if dictionary.get("masked_bank_account_number")\ - else None payment_type =\ dictionary.get("payment_type")\ if dictionary.get("payment_type")\ @@ -295,7 +295,11 @@ def from_dictionary(cls, else APIHelper.SKIP masked_bank_routing_number =\ dictionary.get("masked_bank_routing_number")\ - if dictionary.get("masked_bank_routing_number")\ + if "masked_bank_routing_number" in dictionary.keys()\ + else APIHelper.SKIP + masked_bank_account_number =\ + dictionary.get("masked_bank_account_number")\ + if "masked_bank_account_number" in dictionary.keys()\ else APIHelper.SKIP bank_account_type =\ dictionary.get("bank_account_type")\ @@ -329,8 +333,7 @@ def from_dictionary(cls, {k: v for k, v in dictionary.items() if k not in cls._names.values()} # Return an object of this model - return cls(masked_bank_account_number, - payment_type, + return cls(payment_type, id, first_name, last_name, @@ -346,6 +349,7 @@ def from_dictionary(cls, billing_address_2, bank_name, masked_bank_routing_number, + masked_bank_account_number, bank_account_type, bank_account_holder_type, verified, @@ -370,13 +374,6 @@ def validate(cls, dictionary): """ if isinstance(dictionary, cls): return APIHelper.is_valid_type( - value=dictionary.masked_bank_account_number, - type_callable=lambda value: - isinstance( - value, - str, - )) \ - and APIHelper.is_valid_type( value=dictionary.payment_type, type_callable=lambda value: PaymentType.validate(value)) @@ -385,13 +382,6 @@ def validate(cls, dictionary): return False return APIHelper.is_valid_type( - value=dictionary.get("masked_bank_account_number"), - type_callable=lambda value: - isinstance( - value, - str, - )) \ - and APIHelper.is_valid_type( value=dictionary.get("payment_type"), type_callable=lambda value: PaymentType.validate(value)) @@ -473,7 +463,11 @@ def __repr__(self): if hasattr(self, "masked_bank_routing_number") else None ) - _masked_bank_account_number=self.masked_bank_account_number + _masked_bank_account_number=( + self.masked_bank_account_number + if hasattr(self, "masked_bank_account_number") + else None + ) _bank_account_type=( self.bank_account_type if hasattr(self, "bank_account_type") @@ -618,7 +612,11 @@ def __str__(self): if hasattr(self, "masked_bank_routing_number") else None ) - _masked_bank_account_number=self.masked_bank_account_number + _masked_bank_account_number=( + self.masked_bank_account_number + if hasattr(self, "masked_bank_account_number") + else None + ) _bank_account_type=( self.bank_account_type if hasattr(self, "bank_account_type") diff --git a/advancedbilling/models/billing_schedule.py b/advancedbilling/models/billing_schedule.py index 6b59e2ad..2f7b5818 100644 --- a/advancedbilling/models/billing_schedule.py +++ b/advancedbilling/models/billing_schedule.py @@ -13,15 +13,15 @@ class BillingSchedule(object): """Implementation of the 'Billing Schedule' model. - This attribute is particularly useful when you need to align billing events for - different components on distinct schedules within a subscription. This only works - for site with Multifrequency enabled. + Billing schedule settings for component allocations or usages on multi-frequency + subscriptions. Use this to start a component's billing period on a custom date + instead of aligning with the product charge schedule. Attributes: - initial_billing_at (date): The initial_billing_at attribute in Maxio allows - you to specify a custom starting date for billing cycles associated with - components that have their own billing frequency set. Only ISO8601 format - is supported. + initial_billing_at (date): Custom start date (ISO 8601 date, YYYY-MM-DD) for + the component's first billing period. If omitted or null, billing aligns + with the product schedule. If provided, date must be on or after the + minimum allowed date for the subscription or component. additional_properties (Dict[str, object]): The additional properties for the model. @@ -36,6 +36,10 @@ class BillingSchedule(object): "initial_billing_at", ] + _nullables = [ + "initial_billing_at", + ] + def __init__( self, initial_billing_at=APIHelper.SKIP, @@ -68,9 +72,13 @@ def from_dictionary(cls, return None # Extract variables from the dictionary - initial_billing_at = dateutil.parser.parse( - dictionary.get("initial_billing_at")).date()\ - if dictionary.get("initial_billing_at") else APIHelper.SKIP + if "initial_billing_at" in dictionary.keys(): + initial_billing_at = dateutil.parser.parse( + dictionary.get("initial_billing_at")).date()\ + if dictionary.get("initial_billing_at") else None + + else: + initial_billing_at = APIHelper.SKIP # Clean out expected properties from dictionary additional_properties =\ diff --git a/advancedbilling/models/create_allocation.py b/advancedbilling/models/create_allocation.py index 5ba8420b..935cc60b 100644 --- a/advancedbilling/models/create_allocation.py +++ b/advancedbilling/models/create_allocation.py @@ -59,10 +59,10 @@ class CreateAllocation(object): price_point_id (str | int | None): Price point that the allocation should be charged at. Accepts either the price point's id (integer) or handle (string). When not specified, the default price point will be used. - billing_schedule (BillingSchedule): This attribute is particularly useful - when you need to align billing events for different components on - distinct schedules within a subscription. This only works for site with - Multifrequency enabled. + billing_schedule (BillingSchedule): Billing schedule settings for component + allocations or usages on multi-frequency subscriptions. Use this to start + a component's billing period on a custom date instead of aligning with + the product charge schedule. custom_price (ComponentCustomPrice): Create or update custom pricing unique to the subscription. Used in place of `price_point_id`. additional_properties (Dict[str, object]): The additional properties for the diff --git a/advancedbilling/models/create_invoice.py b/advancedbilling/models/create_invoice.py index 22c98585..f6c62083 100644 --- a/advancedbilling/models/create_invoice.py +++ b/advancedbilling/models/create_invoice.py @@ -25,7 +25,10 @@ class CreateInvoice(object): Attributes: line_items (List[CreateInvoiceItem]): The model property of type List[CreateInvoiceItem]. - issue_date (date): The model property of type date. + issue_date (date): Date on which the invoice will be issued (format + YYYY-MM-DD). This date is interpreted and validated in your site's time + zone. It must be today or a date in the past — future dates are not + accepted. If omitted, defaults to today in your site's time zone. net_terms (int): By default, invoices will be created with a due date matching the date of invoice creation. If a different due date is desired, the net_terms parameter can be sent indicating the number of diff --git a/advancedbilling/models/create_payment_profile.py b/advancedbilling/models/create_payment_profile.py index 12f70132..368a7066 100644 --- a/advancedbilling/models/create_payment_profile.py +++ b/advancedbilling/models/create_payment_profile.py @@ -13,7 +13,7 @@ class CreatePaymentProfile(object): Attributes: chargify_token (str): Token received after sending billing information using - chargify.js. + Maxio.js (formerly Chargify.js). id (int): The model property of type int. payment_type (PaymentType): The model property of type PaymentType. first_name (str): First name on card or bank account. If omitted, the @@ -61,9 +61,11 @@ class CreatePaymentProfile(object): customer_id (int): (Required when creating a new payment profile) The Chargify customer id. paypal_email (str): used by merchants that implemented BraintreeBlue - javaScript libraries on their own. We recommend using Chargify.js instead. + javaScript libraries on their own. We recommend using Maxio.js (formerly + Chargify.js) instead. payment_method_nonce (str): used by merchants that implemented BraintreeBlue - javaScript libraries on their own. We recommend using Chargify.js instead. + javaScript libraries on their own. We recommend using Maxio.js (formerly + Chargify.js) instead. gateway_handle (str): This attribute is only available if MultiGateway feature is enabled for your Site. This feature is in the Private Beta currently. gateway_handle is used to directly select a gateway where a diff --git a/advancedbilling/models/create_usage.py b/advancedbilling/models/create_usage.py index 30e82587..6f362355 100644 --- a/advancedbilling/models/create_usage.py +++ b/advancedbilling/models/create_usage.py @@ -22,10 +22,10 @@ class CreateUsage(object): quantities are enabled for the component price_point_id (str): The model property of type str. memo (str): The model property of type str. - billing_schedule (BillingSchedule): This attribute is particularly useful - when you need to align billing events for different components on - distinct schedules within a subscription. This only works for site with - Multifrequency enabled. + billing_schedule (BillingSchedule): Billing schedule settings for component + allocations or usages on multi-frequency subscriptions. Use this to start + a component's billing period on a custom date instead of aligning with + the product charge schedule. custom_price (ComponentCustomPrice): Create or update custom pricing unique to the subscription. Used in place of `price_point_id`. additional_properties (Dict[str, object]): The additional properties for the diff --git a/advancedbilling/models/credit_card_payment_profile.py b/advancedbilling/models/credit_card_payment_profile.py index aeaa0717..96d03dcc 100644 --- a/advancedbilling/models/credit_card_payment_profile.py +++ b/advancedbilling/models/credit_card_payment_profile.py @@ -47,8 +47,9 @@ class CreditCardPaymentProfile(object): payment_type (PaymentType): The model property of type PaymentType. disabled (bool): The model property of type bool. chargify_token (str): Token received after sending billing information using - chargify.js. This token will only be received if passed as a sole - attribute of credit_card_attributes (i.e. tok_9g6hw85pnpt6knmskpwp4ttt) + Maxio.js (formerly Chargify.js). This token will only be received if + passed as a sole attribute of credit_card_attributes (i.e. + tok_9g6hw85pnpt6knmskpwp4ttt) site_gateway_setting_id (int): The model property of type int. gateway_handle (str): An identifier of connected gateway. created_at (datetime): A timestamp indicating when this payment profile was diff --git a/advancedbilling/models/credit_note_line_item.py b/advancedbilling/models/credit_note_line_item.py index 77cf400d..1295ccdf 100644 --- a/advancedbilling/models/credit_note_line_item.py +++ b/advancedbilling/models/credit_note_line_item.py @@ -46,6 +46,13 @@ class CreditNoteLineItem(object): been summed prior to applying the tax rate to arrive at `tax_amount` for the invoice - backing that out to the tax on a single line may introduce rounding or precision errors. + tax_included (bool): Whether the unit price for this line item is + tax-inclusive. When `true`, `unit_price` already includes tax and + `tax_amount` represents the portion of the price attributable to tax. + When `false`, any applicable tax is added on top of the price. The value + is inherited from the source price point's `tax_included` setting. Custom + or ad-hoc line items (which have no associated price point) always return + `false`. total_amount (str): The non-canonical total amount for the line. `subtotal_amount` is the canonical amount for a line. The invoice `total_amount` is derived from the sum of the line `subtotal_amount`s and @@ -84,6 +91,7 @@ class CreditNoteLineItem(object): "subtotal_amount": "subtotal_amount", "discount_amount": "discount_amount", "tax_amount": "tax_amount", + "tax_included": "tax_included", "total_amount": "total_amount", "tiered_unit_price": "tiered_unit_price", "period_range_start": "period_range_start", @@ -105,6 +113,7 @@ class CreditNoteLineItem(object): "subtotal_amount", "discount_amount", "tax_amount", + "tax_included", "total_amount", "tiered_unit_price", "period_range_start", @@ -133,6 +142,7 @@ def __init__( subtotal_amount=APIHelper.SKIP, discount_amount=APIHelper.SKIP, tax_amount=APIHelper.SKIP, + tax_included=APIHelper.SKIP, total_amount=APIHelper.SKIP, tiered_unit_price=APIHelper.SKIP, period_range_start=APIHelper.SKIP, @@ -162,6 +172,8 @@ def __init__( self.discount_amount = discount_amount if tax_amount is not APIHelper.SKIP: self.tax_amount = tax_amount + if tax_included is not APIHelper.SKIP: + self.tax_included = tax_included if total_amount is not APIHelper.SKIP: self.total_amount = total_amount if tiered_unit_price is not APIHelper.SKIP: @@ -238,6 +250,10 @@ def from_dictionary(cls, dictionary.get("tax_amount")\ if dictionary.get("tax_amount")\ else APIHelper.SKIP + tax_included =\ + dictionary.get("tax_included")\ + if "tax_included" in dictionary.keys()\ + else APIHelper.SKIP total_amount =\ dictionary.get("total_amount")\ if dictionary.get("total_amount")\ @@ -290,6 +306,7 @@ def from_dictionary(cls, subtotal_amount, discount_amount, tax_amount, + tax_included, total_amount, tiered_unit_price, period_range_start, @@ -365,6 +382,11 @@ def __repr__(self): if hasattr(self, "tax_amount") else None ) + _tax_included=( + self.tax_included + if hasattr(self, "tax_included") + else None + ) _total_amount=( self.total_amount if hasattr(self, "total_amount") @@ -426,6 +448,7 @@ def __repr__(self): f"subtotal_amount={_subtotal_amount!r}, " f"discount_amount={_discount_amount!r}, " f"tax_amount={_tax_amount!r}, " + f"tax_included={_tax_included!r}, " f"total_amount={_total_amount!r}, " f"tiered_unit_price={_tiered_unit_price!r}, " f"period_range_start={_period_range_start!r}, " @@ -482,6 +505,11 @@ def __str__(self): if hasattr(self, "tax_amount") else None ) + _tax_included=( + self.tax_included + if hasattr(self, "tax_included") + else None + ) _total_amount=( self.total_amount if hasattr(self, "total_amount") @@ -543,6 +571,7 @@ def __str__(self): f"subtotal_amount={_subtotal_amount!s}, " f"discount_amount={_discount_amount!s}, " f"tax_amount={_tax_amount!s}, " + f"tax_included={_tax_included!s}, " f"total_amount={_total_amount!s}, " f"tiered_unit_price={_tiered_unit_price!s}, " f"period_range_start={_period_range_start!s}, " diff --git a/advancedbilling/models/event_key.py b/advancedbilling/models/event_key.py index b1e60653..4166c959 100644 --- a/advancedbilling/models/event_key.py +++ b/advancedbilling/models/event_key.py @@ -43,6 +43,7 @@ class EventKey(object): TRIAL_END_NOTICE: The enum member of type str. DUNNING_STEP_REACHED: The enum member of type str. INVOICE_ISSUED: The enum member of type str. + INVOICE_PENDING: The enum member of type str. PREPAID_SUBSCRIPTION_BALANCE_CHANGED: The enum member of type str. SUBSCRIPTION_GROUP_SIGNUP_SUCCESS: The enum member of type str. SUBSCRIPTION_GROUP_SIGNUP_FAILURE: The enum member of type str. @@ -108,7 +109,7 @@ class EventKey(object): "subscription_card_update", "subscription_group_card_update", "subscription_bank_account_update", "refund_success", "refund_failure", "upcoming_renewal_notice", "trial_end_notice", "dunning_step_reached", - "invoice_issued", "prepaid_subscription_balance_changed", + "invoice_issued", "invoice_pending", "prepaid_subscription_balance_changed", "subscription_group_signup_success", "subscription_group_signup_failure", "direct_debit_payment_paid_out", "direct_debit_payment_rejected", "direct_debit_payment_pending", "pending_payment_created", @@ -200,6 +201,8 @@ class EventKey(object): INVOICE_ISSUED = "invoice_issued" + INVOICE_PENDING = "invoice_pending" + PREPAID_SUBSCRIPTION_BALANCE_CHANGED = "prepaid_subscription_balance_changed" SUBSCRIPTION_GROUP_SIGNUP_SUCCESS = "subscription_group_signup_success" diff --git a/advancedbilling/models/invoice_line_item.py b/advancedbilling/models/invoice_line_item.py index 1aec4104..53c83be0 100644 --- a/advancedbilling/models/invoice_line_item.py +++ b/advancedbilling/models/invoice_line_item.py @@ -50,6 +50,13 @@ class InvoiceLineItem(object): been summed prior to applying the tax rate to arrive at `tax_amount` for the invoice - backing that out to the tax on a single line may introduce rounding or precision errors. + tax_included (bool): Whether the unit price for this line item is + tax-inclusive. When `true`, `unit_price` already includes tax and + `tax_amount` represents the portion of the price attributable to tax. + When `false`, any applicable tax is added on top of the price. The value + is inherited from the source price point's `tax_included` setting. Custom + or ad-hoc line items (which have no associated price point) always return + `false`. total_amount (str): The non-canonical total amount for the line. `subtotal_amount` is the canonical amount for a line. The invoice `total_amount` is derived from the sum of the line `subtotal_amount`s and @@ -104,6 +111,7 @@ class InvoiceLineItem(object): "subtotal_amount": "subtotal_amount", "discount_amount": "discount_amount", "tax_amount": "tax_amount", + "tax_included": "tax_included", "total_amount": "total_amount", "tiered_unit_price": "tiered_unit_price", "period_range_start": "period_range_start", @@ -130,6 +138,7 @@ class InvoiceLineItem(object): "subtotal_amount", "discount_amount", "tax_amount", + "tax_included", "total_amount", "tiered_unit_price", "period_range_start", @@ -167,6 +176,7 @@ def __init__( subtotal_amount=APIHelper.SKIP, discount_amount=APIHelper.SKIP, tax_amount=APIHelper.SKIP, + tax_included=APIHelper.SKIP, total_amount=APIHelper.SKIP, tiered_unit_price=APIHelper.SKIP, period_range_start=APIHelper.SKIP, @@ -201,6 +211,8 @@ def __init__( self.discount_amount = discount_amount if tax_amount is not APIHelper.SKIP: self.tax_amount = tax_amount + if tax_included is not APIHelper.SKIP: + self.tax_included = tax_included if total_amount is not APIHelper.SKIP: self.total_amount = total_amount if tiered_unit_price is not APIHelper.SKIP: @@ -287,6 +299,10 @@ def from_dictionary(cls, dictionary.get("tax_amount")\ if dictionary.get("tax_amount")\ else APIHelper.SKIP + tax_included =\ + dictionary.get("tax_included")\ + if "tax_included" in dictionary.keys()\ + else APIHelper.SKIP total_amount =\ dictionary.get("total_amount")\ if dictionary.get("total_amount")\ @@ -362,6 +378,7 @@ def from_dictionary(cls, subtotal_amount, discount_amount, tax_amount, + tax_included, total_amount, tiered_unit_price, period_range_start, @@ -442,6 +459,11 @@ def __repr__(self): if hasattr(self, "tax_amount") else None ) + _tax_included=( + self.tax_included + if hasattr(self, "tax_included") + else None + ) _total_amount=( self.total_amount if hasattr(self, "total_amount") @@ -528,6 +550,7 @@ def __repr__(self): f"subtotal_amount={_subtotal_amount!r}, " f"discount_amount={_discount_amount!r}, " f"tax_amount={_tax_amount!r}, " + f"tax_included={_tax_included!r}, " f"total_amount={_total_amount!r}, " f"tiered_unit_price={_tiered_unit_price!r}, " f"period_range_start={_period_range_start!r}, " @@ -589,6 +612,11 @@ def __str__(self): if hasattr(self, "tax_amount") else None ) + _tax_included=( + self.tax_included + if hasattr(self, "tax_included") + else None + ) _total_amount=( self.total_amount if hasattr(self, "total_amount") @@ -675,6 +703,7 @@ def __str__(self): f"subtotal_amount={_subtotal_amount!s}, " f"discount_amount={_discount_amount!s}, " f"tax_amount={_tax_amount!s}, " + f"tax_included={_tax_included!s}, " f"total_amount={_total_amount!s}, " f"tiered_unit_price={_tiered_unit_price!s}, " f"period_range_start={_period_range_start!s}, " diff --git a/advancedbilling/models/payment_profile_attributes.py b/advancedbilling/models/payment_profile_attributes.py index 5d13c055..e649487b 100644 --- a/advancedbilling/models/payment_profile_attributes.py +++ b/advancedbilling/models/payment_profile_attributes.py @@ -15,8 +15,8 @@ class PaymentProfileAttributes(object): Attributes: chargify_token (str): (Optional) Token received after sending billing - information using chargify.js. This token must be passed as a sole - attribute of `payment_profile_attributes` (i.e. + information using Maxio.js (formerly Chargify.js). This token must be + passed as a sole attribute of `payment_profile_attributes` (i.e. tok_9g6hw85pnpt6knmskpwp4ttt) id (int): The model property of type int. payment_type (PaymentType): The model property of type PaymentType. diff --git a/advancedbilling/models/webhook_subscription.py b/advancedbilling/models/webhook_subscription.py index 28549335..173a3151 100644 --- a/advancedbilling/models/webhook_subscription.py +++ b/advancedbilling/models/webhook_subscription.py @@ -18,6 +18,7 @@ class WebhookSubscription(object): EXPIRING_CARD: The enum member of type str. EXPIRATION_DATE_CHANGE: The enum member of type str. INVOICE_ISSUED: The enum member of type str. + INVOICE_PENDING: The enum member of type str. METERED_USAGE: The enum member of type str. PAYMENT_FAILURE: The enum member of type str. PAYMENT_SUCCESS: The enum member of type str. @@ -67,6 +68,8 @@ class WebhookSubscription(object): INVOICE_ISSUED = "invoice_issued" + INVOICE_PENDING = "invoice_pending" + METERED_USAGE = "metered_usage" PAYMENT_FAILURE = "payment_failure" diff --git a/advancedbilling/utilities/union_type_lookup.py b/advancedbilling/utilities/union_type_lookup.py index d2d96cc0..b7ffb704 100644 --- a/advancedbilling/utilities/union_type_lookup.py +++ b/advancedbilling/utilities/union_type_lookup.py @@ -409,16 +409,7 @@ class UnionTypeLookUp: is_optional=True, ), ), - "AllocationPreviewItemQuantity": lambda: OneOf( - [ - LeafType(int), - LeafType(str), - ], - Context.create( - is_optional=True, - ), - ), - "AllocationPreviewItemPreviousQuantity": lambda: OneOf( + "AllocationQuantity": lambda: OneOf( [ LeafType(int), LeafType(str), @@ -427,7 +418,7 @@ class UnionTypeLookUp: is_optional=True, ), ), - "AllocationQuantity": lambda: OneOf( + "AllocationPreviousQuantity": lambda: OneOf( [ LeafType(int), LeafType(str), @@ -436,7 +427,7 @@ class UnionTypeLookUp: is_optional=True, ), ), - "AllocationPreviousQuantity": lambda: OneOf( + "AllocationPreviewItemQuantity": lambda: OneOf( [ LeafType(int), LeafType(str), @@ -445,7 +436,7 @@ class UnionTypeLookUp: is_optional=True, ), ), - "ComponentAllocationChangeAllocatedQuantity": lambda: OneOf( + "AllocationPreviewItemPreviousQuantity": lambda: OneOf( [ LeafType(int), LeafType(str), @@ -492,35 +483,25 @@ class UnionTypeLookUp: is_optional=True, ), ), - "CreateAllocationPricePointId": lambda: OneOf( + "ComponentAllocationChangeAllocatedQuantity": lambda: OneOf( [ - LeafType(str), LeafType(int), + LeafType(str), ], Context.create( is_optional=True, - is_nullable=True, ), ), - "CreateMultiInvoicePaymentAmount": lambda: OneOf( + "ComponentPricePointAssignmentPricePoint": lambda: OneOf( [ LeafType(str), - LeafType(float), - ], - ), - "CustomerErrorResponseErrors": lambda: OneOf( - [ - LeafType(CustomerError), - LeafType(str, - Context.create( - is_array=True, - )), + LeafType(int), ], Context.create( is_optional=True, ), ), - "EBBComponentUnitPrice": lambda: OneOf( + "CouponPayloadPercentage": lambda: OneOf( [ LeafType(str), LeafType(float), @@ -529,13 +510,14 @@ class UnionTypeLookUp: is_optional=True, ), ), - "CouponPayloadPercentage": lambda: OneOf( + "CreateAllocationPricePointId": lambda: OneOf( [ LeafType(str), - LeafType(float), + LeafType(int), ], Context.create( is_optional=True, + is_nullable=True, ), ), "CreateComponentPricePointRequestPricePoint": lambda: AnyOf( @@ -544,6 +526,15 @@ class UnionTypeLookUp: LeafType(CreatePrepaidUsageComponentPricePoint), ], ), + "CreateComponentPricePointsRequestPricePoints": lambda: AnyOf( + [ + LeafType(CreateComponentPricePoint), + LeafType(CreatePrepaidUsageComponentPricePoint), + ], + Context.create( + is_array=True, + ), + ), "CreateInvoiceCouponPercentage": lambda: OneOf( [ LeafType(str), @@ -571,159 +562,147 @@ class UnionTypeLookUp: is_optional=True, ), ), - "CreateInvoicePaymentAmount": lambda: OneOf( + "CreateInvoiceItemQuantity": lambda: OneOf( [ - LeafType(str), LeafType(float), + LeafType(str), ], Context.create( is_optional=True, ), ), - "CreateMetafieldsRequestMetafields": lambda: OneOf( - [ - LeafType(CreateMetafield), - LeafType(CreateMetafield, - Context.create( - is_array=True, - )), - ], - ), - "CreateOrUpdateSegmentPriceUnitPrice": lambda: OneOf( + "CreateInvoiceItemUnitPrice": lambda: OneOf( [ - LeafType(str), LeafType(float), + LeafType(str), ], + Context.create( + is_optional=True, + ), ), - "CreateSegmentSegmentProperty1Value": lambda: OneOf( + "CreateInvoiceItemProductId": lambda: OneOf( [ LeafType(str), - LeafType(float), LeafType(int), - LeafType(bool), ], Context.create( is_optional=True, ), ), - "CreateSegmentSegmentProperty2Value": lambda: OneOf( + "CreateInvoiceItemComponentId": lambda: OneOf( [ LeafType(str), - LeafType(float), LeafType(int), - LeafType(bool), ], Context.create( is_optional=True, ), ), - "CreateSegmentSegmentProperty3Value": lambda: OneOf( + "CreateInvoiceItemPricePointId": lambda: OneOf( [ LeafType(str), - LeafType(float), LeafType(int), - LeafType(bool), ], Context.create( is_optional=True, ), ), - "CreateSegmentSegmentProperty4Value": lambda: OneOf( + "CreateInvoiceItemProductPricePointId": lambda: OneOf( [ LeafType(str), - LeafType(float), LeafType(int), - LeafType(bool), ], Context.create( is_optional=True, ), ), - "ComponentPricePointAssignmentPricePoint": lambda: OneOf( + "CreateInvoicePaymentAmount": lambda: OneOf( [ LeafType(str), - LeafType(int), + LeafType(float), ], Context.create( is_optional=True, ), ), - "CreateComponentPricePointsRequestPricePoints": lambda: AnyOf( + "CreateMetafieldsRequestMetafields": lambda: OneOf( [ - LeafType(CreateComponentPricePoint), - LeafType(CreatePrepaidUsageComponentPricePoint), + LeafType(CreateMetafield), + LeafType(CreateMetafield, + Context.create( + is_array=True, + )), ], - Context.create( - is_array=True, - ), ), - "CreateInvoiceItemQuantity": lambda: OneOf( + "CreateMultiInvoicePaymentAmount": lambda: OneOf( [ - LeafType(float), LeafType(str), + LeafType(float), ], - Context.create( - is_optional=True, - ), ), - "CreateInvoiceItemUnitPrice": lambda: OneOf( + "CreateOrUpdateSegmentPriceUnitPrice": lambda: OneOf( [ - LeafType(float), LeafType(str), + LeafType(float), ], - Context.create( - is_optional=True, - ), ), - "CreateInvoiceItemProductId": lambda: OneOf( + "CreatePaymentProfileExpirationMonth": lambda: OneOf( [ - LeafType(str), LeafType(int), + LeafType(str), ], Context.create( is_optional=True, ), ), - "CreateInvoiceItemComponentId": lambda: OneOf( + "CreatePaymentProfileExpirationYear": lambda: OneOf( [ - LeafType(str), LeafType(int), + LeafType(str), ], Context.create( is_optional=True, ), ), - "CreateInvoiceItemPricePointId": lambda: OneOf( + "CreateSegmentSegmentProperty1Value": lambda: OneOf( [ LeafType(str), + LeafType(float), LeafType(int), + LeafType(bool), ], Context.create( is_optional=True, ), ), - "CreateInvoiceItemProductPricePointId": lambda: OneOf( + "CreateSegmentSegmentProperty2Value": lambda: OneOf( [ LeafType(str), + LeafType(float), LeafType(int), + LeafType(bool), ], Context.create( is_optional=True, ), ), - "CreatePaymentProfileExpirationMonth": lambda: OneOf( + "CreateSegmentSegmentProperty3Value": lambda: OneOf( [ - LeafType(int), LeafType(str), + LeafType(float), + LeafType(int), + LeafType(bool), ], Context.create( is_optional=True, ), ), - "CreatePaymentProfileExpirationYear": lambda: OneOf( + "CreateSegmentSegmentProperty4Value": lambda: OneOf( [ - LeafType(int), LeafType(str), + LeafType(float), + LeafType(int), + LeafType(bool), ], Context.create( is_optional=True, @@ -765,12 +744,33 @@ class UnionTypeLookUp: is_optional=True, ), ), + "CustomerErrorResponseErrors": lambda: OneOf( + [ + LeafType(CustomerError), + LeafType(str, + Context.create( + is_array=True, + )), + ], + Context.create( + is_optional=True, + ), + ), "DeductServiceCreditAmount": lambda: OneOf( [ LeafType(str), LeafType(float), ], ), + "EBBComponentUnitPrice": lambda: OneOf( + [ + LeafType(str), + LeafType(float), + ], + Context.create( + is_optional=True, + ), + ), "EventEventSpecificData": lambda: OneOf( [ LeafType(SubscriptionProductChange), @@ -824,6 +824,12 @@ class UnionTypeLookUp: is_optional=True, ), ), + "OnOffComponentUnitPrice": lambda: OneOf( + [ + LeafType(str), + LeafType(float), + ], + ), "PaymentProfileAttributesExpirationMonth": lambda: OneOf( [ LeafType(int), @@ -842,64 +848,101 @@ class UnionTypeLookUp: is_optional=True, ), ), - "ReactivateSubscriptionRequestResume": lambda: OneOf( + "Payment-Profile": lambda: AnyOf( [ - LeafType(bool), - LeafType(ResumeOptions), + LeafType(ApplePayPaymentProfile, + Context.create( + discriminator_value="apple_pay", + discriminator="payment_type", + )), + LeafType(BankAccountPaymentProfile, + Context.create( + discriminator_value="bank_account", + discriminator="payment_type", + )), + LeafType(CreditCardPaymentProfile, + Context.create( + discriminator_value="credit_card", + discriminator="payment_type", + )), + LeafType(PaypalPaymentProfile, + Context.create( + discriminator_value="paypal_account", + discriminator="payment_type", + )), + ], + ), + "PrepaidUsageComponentUnitPrice": lambda: OneOf( + [ + LeafType(str), + LeafType(float), ], Context.create( is_optional=True, ), ), - "SubscriptionCustomPricePriceInCents": lambda: OneOf( + "PriceStartingQuantity": lambda: OneOf( [ + LeafType(int), LeafType(str), + ], + ), + "PriceEndingQuantity": lambda: OneOf( + [ LeafType(int), + LeafType(str), ], + Context.create( + is_optional=True, + is_nullable=True, + ), ), - "SubscriptionCustomPriceInterval": lambda: OneOf( + "PriceUnitPrice": lambda: OneOf( [ + LeafType(float), LeafType(str), - LeafType(int), ], ), - "SubscriptionCustomPriceTrialPriceInCents": lambda: OneOf( + "QuantityBasedComponentUnitPrice": lambda: OneOf( [ LeafType(str), - LeafType(int), + LeafType(float), ], Context.create( is_optional=True, ), ), - "SubscriptionCustomPriceTrialInterval": lambda: OneOf( + "ReactivateSubscriptionRequestResume": lambda: OneOf( [ - LeafType(str), - LeafType(int), + LeafType(bool), + LeafType(ResumeOptions), ], Context.create( is_optional=True, ), ), - "SubscriptionCustomPriceInitialChargeInCents": lambda: OneOf( + "RefundConsolidatedInvoiceSegmentUids": lambda: OneOf( [ + LeafType(str, + Context.create( + is_array=True, + )), LeafType(str), - LeafType(int), ], - Context.create( - is_optional=True, - ), ), - "SubscriptionCustomPriceExpirationInterval": lambda: OneOf( + "RefundInvoiceRequestRefund": lambda: AnyOf( + [ + LeafType(RefundInvoice), + LeafType(RefundConsolidatedInvoice), + ], + ), + "RefundPrepaymentAmount": lambda: OneOf( [ LeafType(str), - LeafType(int), + LeafType(float), ], - Context.create( - is_optional=True, - ), ), - "SubscriptionGroupCreditCardFullNumber": lambda: OneOf( + "RenewalPreviewComponentComponentId": lambda: OneOf( [ LeafType(str), LeafType(int), @@ -908,7 +951,7 @@ class UnionTypeLookUp: is_optional=True, ), ), - "SubscriptionGroupCreditCardExpirationMonth": lambda: OneOf( + "RenewalPreviewComponentPricePointId": lambda: OneOf( [ LeafType(str), LeafType(int), @@ -917,22 +960,28 @@ class UnionTypeLookUp: is_optional=True, ), ), - "SubscriptionGroupCreditCardExpirationYear": lambda: OneOf( + "ScheduledRenewalConfigurationItemRequestRenewalConfigurationItem": lambda: OneOf( + [ + LeafType(ScheduledRenewalItemRequestBodyComponent), + LeafType(ScheduledRenewalItemRequestBodyProduct), + ], + ), + "ScheduledRenewalProductPricePointPriceInCents": lambda: OneOf( [ LeafType(str), LeafType(int), ], - Context.create( - is_optional=True, - ), ), - "RefundConsolidatedInvoiceSegmentUids": lambda: OneOf( + "ScheduledRenewalProductPricePointInterval": lambda: OneOf( [ - LeafType(str, - Context.create( - is_array=True, - )), LeafType(str), + LeafType(int), + ], + ), + "ScheduledRenewalUpdateRequestRenewalConfigurationItem": lambda: OneOf( + [ + LeafType(ScheduledRenewalItemRequestBodyComponent), + LeafType(ScheduledRenewalItemRequestBodyProduct), ], ), "SegmentSegmentProperty1Value": lambda: OneOf( @@ -979,123 +1028,80 @@ class UnionTypeLookUp: is_optional=True, ), ), - "Payment-Profile": lambda: AnyOf( - [ - LeafType(ApplePayPaymentProfile, - Context.create( - discriminator_value="apple_pay", - discriminator="payment_type", - )), - LeafType(BankAccountPaymentProfile, - Context.create( - discriminator_value="bank_account", - discriminator="payment_type", - )), - LeafType(CreditCardPaymentProfile, - Context.create( - discriminator_value="credit_card", - discriminator="payment_type", - )), - LeafType(PaypalPaymentProfile, - Context.create( - discriminator_value="paypal_account", - discriminator="payment_type", - )), - ], - ), - "RefundPrepaymentAmount": lambda: OneOf( + "SubscriptionComponentAllocatedQuantity": lambda: OneOf( [ + LeafType(int), LeafType(str), - LeafType(float), - ], - ), - "ScheduledRenewalConfigurationItemRequestRenewalConfigurationItem": lambda: OneOf( - [ - LeafType(ScheduledRenewalItemRequestBodyComponent), - LeafType(ScheduledRenewalItemRequestBodyProduct), ], + Context.create( + is_optional=True, + ), ), - "ScheduledRenewalProductPricePointPriceInCents": lambda: OneOf( + "SubscriptionCustomPricePriceInCents": lambda: OneOf( [ LeafType(str), LeafType(int), ], ), - "ScheduledRenewalProductPricePointInterval": lambda: OneOf( + "SubscriptionCustomPriceInterval": lambda: OneOf( [ LeafType(str), LeafType(int), ], ), - "SubscriptionComponentAllocatedQuantity": lambda: OneOf( + "SubscriptionCustomPriceTrialPriceInCents": lambda: OneOf( [ - LeafType(int), LeafType(str), + LeafType(int), ], Context.create( is_optional=True, ), ), - "SubscriptionGroupCreateErrorResponseErrors": lambda: OneOf( - [ - LeafType(SubscriptionGroupMembersArrayError), - LeafType(SubscriptionGroupSingleError), - LeafType(str), - ], - ), - "OnOffComponentUnitPrice": lambda: OneOf( + "SubscriptionCustomPriceTrialInterval": lambda: OneOf( [ LeafType(str), - LeafType(float), + LeafType(int), ], + Context.create( + is_optional=True, + ), ), - "PrepaidUsageComponentUnitPrice": lambda: OneOf( + "SubscriptionCustomPriceInitialChargeInCents": lambda: OneOf( [ LeafType(str), - LeafType(float), + LeafType(int), ], Context.create( is_optional=True, ), ), - "PriceStartingQuantity": lambda: OneOf( + "SubscriptionCustomPriceExpirationInterval": lambda: OneOf( [ - LeafType(int), LeafType(str), - ], - ), - "PriceEndingQuantity": lambda: OneOf( - [ LeafType(int), - LeafType(str), ], Context.create( is_optional=True, - is_nullable=True, ), ), - "PriceUnitPrice": lambda: OneOf( + "SubscriptionGroupCreateErrorResponseErrors": lambda: OneOf( [ - LeafType(float), + LeafType(SubscriptionGroupMembersArrayError), + LeafType(SubscriptionGroupSingleError), LeafType(str), ], ), - "QuantityBasedComponentUnitPrice": lambda: OneOf( + "SubscriptionGroupCreditCardFullNumber": lambda: OneOf( [ LeafType(str), - LeafType(float), + LeafType(int), ], Context.create( is_optional=True, ), ), - "RefundInvoiceRequestRefund": lambda: AnyOf( - [ - LeafType(RefundInvoice), - LeafType(RefundConsolidatedInvoice), - ], - ), - "RenewalPreviewComponentComponentId": lambda: OneOf( + "SubscriptionGroupCreditCardExpirationMonth": lambda: OneOf( [ LeafType(str), LeafType(int), @@ -1104,7 +1110,7 @@ class UnionTypeLookUp: is_optional=True, ), ), - "RenewalPreviewComponentPricePointId": lambda: OneOf( + "SubscriptionGroupCreditCardExpirationYear": lambda: OneOf( [ LeafType(str), LeafType(int), @@ -1113,12 +1119,6 @@ class UnionTypeLookUp: is_optional=True, ), ), - "ScheduledRenewalUpdateRequestRenewalConfigurationItem": lambda: OneOf( - [ - LeafType(ScheduledRenewalItemRequestBodyComponent), - LeafType(ScheduledRenewalItemRequestBodyProduct), - ], - ), "SubscriptionGroupSignupComponentComponentId": lambda: OneOf( [ LeafType(str), @@ -1155,6 +1155,18 @@ class UnionTypeLookUp: is_optional=True, ), ), + "UpdateMetafieldsRequestMetafields": lambda: OneOf( + [ + LeafType(UpdateMetafield), + LeafType(UpdateMetafield, + Context.create( + is_array=True, + )), + ], + Context.create( + is_optional=True, + ), + ), "UpdatePriceEndingQuantity": lambda: OneOf( [ LeafType(int), @@ -1182,18 +1194,6 @@ class UnionTypeLookUp: is_optional=True, ), ), - "UpdateMetafieldsRequestMetafields": lambda: OneOf( - [ - LeafType(UpdateMetafield), - LeafType(UpdateMetafield, - Context.create( - is_array=True, - )), - ], - Context.create( - is_optional=True, - ), - ), "UpdateSubscriptionSnapDay": lambda: OneOf( [ LeafType(str), diff --git a/doc/controllers/advance-invoice.md b/doc/controllers/advance-invoice.md index 24efc08c..af5d16a3 100644 --- a/doc/controllers/advance-invoice.md +++ b/doc/controllers/advance-invoice.md @@ -28,6 +28,10 @@ def issue_advance_invoice(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -37,6 +41,8 @@ def issue_advance_invoice(self, ## Response Type +**201**: Created + [`Invoice`](../../doc/models/invoice.md) ## Example Usage @@ -72,6 +78,10 @@ def read_advance_invoice(self, subscription_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -80,6 +90,8 @@ def read_advance_invoice(self, ## Response Type +**200**: OK + [`Invoice`](../../doc/models/invoice.md) ## Example Usage @@ -109,6 +121,10 @@ def void_advance_invoice(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -118,6 +134,8 @@ def void_advance_invoice(self, ## Response Type +**201**: Created + [`Invoice`](../../doc/models/invoice.md) ## Example Usage diff --git a/doc/controllers/api-exports.md b/doc/controllers/api-exports.md index 5251b006..2850665e 100644 --- a/doc/controllers/api-exports.md +++ b/doc/controllers/api-exports.md @@ -32,6 +32,10 @@ def list_exported_proforma_invoices(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -42,6 +46,8 @@ def list_exported_proforma_invoices(self, ## Response Type +**200**: OK + [`List[ProformaInvoice]`](../../doc/models/proforma-invoice.md) ## Example Usage @@ -74,6 +80,10 @@ def list_exported_invoices(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -84,6 +94,8 @@ def list_exported_invoices(self, ## Response Type +**200**: OK + [`List[Invoice]`](../../doc/models/invoice.md) ## Example Usage @@ -116,6 +128,10 @@ def list_exported_subscriptions(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -126,6 +142,8 @@ def list_exported_subscriptions(self, ## Response Type +**200**: OK + [`List[Subscription]`](../../doc/models/subscription.md) ## Example Usage @@ -157,8 +175,14 @@ It is only available for Relationship Invoicing architecture. def export_proforma_invoices(self) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Response Type +**201**: Created + [`BatchJobResponse`](../../doc/models/batch-job-response.md) ## Example Usage @@ -184,8 +208,14 @@ This API creates an invoices export and returns a batchjob object. def export_invoices(self) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Response Type +**201**: Created + [`BatchJobResponse`](../../doc/models/batch-job-response.md) ## Example Usage @@ -211,8 +241,14 @@ This API creates a subscriptions export and returns a batchjob object. def export_subscriptions(self) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Response Type +**201**: Created + [`BatchJobResponse`](../../doc/models/batch-job-response.md) ## Example Usage @@ -238,6 +274,10 @@ def read_proforma_invoices_export(self, batch_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -246,6 +286,8 @@ def read_proforma_invoices_export(self, ## Response Type +**200**: OK + [`BatchJobResponse`](../../doc/models/batch-job-response.md) ## Example Usage @@ -273,6 +315,10 @@ def read_invoices_export(self, batch_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -281,6 +327,8 @@ def read_invoices_export(self, ## Response Type +**200**: OK + [`BatchJobResponse`](../../doc/models/batch-job-response.md) ## Example Usage @@ -308,6 +356,10 @@ def read_subscriptions_export(self, batch_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -316,6 +368,8 @@ def read_subscriptions_export(self, ## Response Type +**200**: OK + [`BatchJobResponse`](../../doc/models/batch-job-response.md) ## Example Usage diff --git a/doc/controllers/billing-portal.md b/doc/controllers/billing-portal.md index 7029fa9b..960cc00f 100644 --- a/doc/controllers/billing-portal.md +++ b/doc/controllers/billing-portal.md @@ -40,6 +40,10 @@ def enable_billing_portal_for_customer(self, auto_invite=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -49,6 +53,8 @@ def enable_billing_portal_for_customer(self, ## Response Type +**200**: OK + [`CustomerResponse`](../../doc/models/customer-response.md) ## Example Usage @@ -84,6 +90,10 @@ def read_billing_portal_link(self, customer_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -92,6 +102,8 @@ def read_billing_portal_link(self, ## Response Type +**200**: OK + [`PortalManagementLink`](../../doc/models/portal-management-link.md) ## Example Usage @@ -145,6 +157,10 @@ def resend_billing_portal_invitation(self, customer_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -153,6 +169,8 @@ def resend_billing_portal_invitation(self, ## Response Type +**200**: OK + [`ResentInvitation`](../../doc/models/resent-invitation.md) ## Example Usage @@ -198,6 +216,10 @@ def revoke_billing_portal_access(self, customer_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -206,6 +228,8 @@ def revoke_billing_portal_access(self, ## Response Type +**200**: OK + [`RevokedInvitation`](../../doc/models/revoked-invitation.md) ## Example Usage diff --git a/doc/controllers/component-price-points.md b/doc/controllers/component-price-points.md index fb91baaa..7ca1f952 100644 --- a/doc/controllers/component-price-points.md +++ b/doc/controllers/component-price-points.md @@ -38,6 +38,10 @@ def promote_component_price_point_to_default(self, price_point_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -47,6 +51,8 @@ def promote_component_price_point_to_default(self, ## Response Type +**200**: OK + [`ComponentResponse`](../../doc/models/component-response.md) ## Example Usage @@ -107,6 +113,10 @@ def create_component_price_point(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -116,6 +126,8 @@ def create_component_price_point(self, ## Response Type +**200**: OK + [`ComponentPricePointResponse`](../../doc/models/component-price-point-response.md) ## Example Usage @@ -173,6 +185,10 @@ def list_component_price_points(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -185,6 +201,8 @@ def list_component_price_points(self, ## Response Type +**201**: Created + [`ComponentPricePointsResponse`](../../doc/models/component-price-points-response.md) ## Example Usage @@ -260,6 +278,10 @@ def bulk_create_component_price_points(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -269,6 +291,8 @@ def bulk_create_component_price_points(self, ## Response Type +**200**: OK + [`ComponentPricePointsResponse`](../../doc/models/component-price-points-response.md) ## Example Usage @@ -396,6 +420,10 @@ def clone_component_price_point(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -406,6 +434,8 @@ def clone_component_price_point(self, ## Response Type +**201**: Created + [`ComponentPricePointCurrencyOverageResponse`](../../doc/models/component-price-point-currency-overage-response.md) ## Example Usage @@ -526,6 +556,10 @@ def update_component_price_point(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -536,6 +570,8 @@ def update_component_price_point(self, ## Response Type +**200**: OK + [`ComponentPricePointResponse`](../../doc/models/component-price-point-response.md) ## Example Usage @@ -592,6 +628,10 @@ def read_component_price_point(self, currency_prices=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -602,6 +642,8 @@ def read_component_price_point(self, ## Response Type +**200**: OK + [`ComponentPricePointCurrencyOverageResponse`](../../doc/models/component-price-point-currency-overage-response.md) ## Example Usage @@ -629,6 +671,10 @@ def archive_component_price_point(self, price_point_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -638,6 +684,8 @@ def archive_component_price_point(self, ## Response Type +**200**: OK + [`ComponentPricePointResponse`](../../doc/models/component-price-point-response.md) ## Example Usage @@ -705,6 +753,10 @@ def unarchive_component_price_point(self, price_point_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -714,6 +766,8 @@ def unarchive_component_price_point(self, ## Response Type +**200**: OK + [`ComponentPricePointResponse`](../../doc/models/component-price-point-response.md) ## Example Usage @@ -779,6 +833,10 @@ def create_currency_prices(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -788,6 +846,8 @@ def create_currency_prices(self, ## Response Type +**200**: OK + [`ComponentCurrencyPricesResponse`](../../doc/models/component-currency-prices-response.md) ## Example Usage @@ -853,6 +913,10 @@ def update_currency_prices(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -862,6 +926,8 @@ def update_currency_prices(self, ## Response Type +**200**: OK + [`ComponentCurrencyPricesResponse`](../../doc/models/component-currency-prices-response.md) ## Example Usage @@ -922,6 +988,10 @@ def list_all_component_price_points(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -934,6 +1004,8 @@ def list_all_component_price_points(self, ## Response Type +**200**: OK + [`ListComponentsPricePointsResponse`](../../doc/models/list-components-price-points-response.md) ## Example Usage diff --git a/doc/controllers/components.md b/doc/controllers/components.md index 22defde8..834c7668 100644 --- a/doc/controllers/components.md +++ b/doc/controllers/components.md @@ -12,7 +12,7 @@ components_controller = client.components * [Create Metered Component](../../doc/controllers/components.md#create-metered-component) * [Create Quantity Based Component](../../doc/controllers/components.md#create-quantity-based-component) -* [Create on Off Component](../../doc/controllers/components.md#create-on-off-component) +* [Create On Off Component](../../doc/controllers/components.md#create-on-off-component) * [Create Prepaid Usage Component](../../doc/controllers/components.md#create-prepaid-usage-component) * [Create Event Based Component](../../doc/controllers/components.md#create-event-based-component) * [Find Component](../../doc/controllers/components.md#find-component) @@ -28,7 +28,7 @@ components_controller = client.components This request will create a component definition of kind **metered_component** under the specified product family. Metered component can then be added and “allocated” for a subscription. -Metered components are used to bill for any type of unit that resets to 0 at the end of the billing period (think daily Google Adwords clicks or monthly cell phone minutes). This is most commonly associated with usage-based billing and many other pricing schemes. +Metered components are used to bill for any type of unit that resets to 0 at the end of the billing period (think daily Google Ads clicks or monthly cell phone minutes). This is most commonly associated with usage-based billing and many other pricing schemes. Note that this is different from recurring quantity-based components, which DO NOT reset to zero at the start of every billing period. If you want to bill for a quantity of something that does not change unless you change it, then you want quantity components, instead. @@ -40,6 +40,10 @@ def create_metered_component(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -49,6 +53,8 @@ def create_metered_component(self, ## Response Type +**201**: Created + [`ComponentResponse`](../../doc/models/component-response.md) ## Example Usage @@ -160,6 +166,10 @@ def create_quantity_based_component(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -169,6 +179,8 @@ def create_quantity_based_component(self, ## Response Type +**201**: Created + [`ComponentResponse`](../../doc/models/component-response.md) ## Example Usage @@ -257,7 +269,7 @@ print(result) | 422 | Unprocessable Entity (WebDAV) | [`ErrorListResponseException`](../../doc/models/error-list-response-exception.md) | -# Create on Off Component +# Create On Off Component This request will create a component definition of kind **on_off_component** under the specified product family. On/Off component can then be added and “allocated” for a subscription. @@ -271,6 +283,10 @@ def create_on_off_component(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -280,6 +296,8 @@ def create_on_off_component(self, ## Response Type +**201**: Created + [`ComponentResponse`](../../doc/models/component-response.md) ## Example Usage @@ -367,6 +385,10 @@ def create_prepaid_usage_component(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -376,6 +398,8 @@ def create_prepaid_usage_component(self, ## Response Type +**201**: Created + [`ComponentResponse`](../../doc/models/component-response.md) ## Example Usage @@ -503,6 +527,10 @@ def create_event_based_component(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -512,6 +540,8 @@ def create_event_based_component(self, ## Response Type +**201**: Created + [`ComponentResponse`](../../doc/models/component-response.md) ## Example Usage @@ -600,6 +630,10 @@ def find_component(self, handle) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -608,6 +642,8 @@ def find_component(self, ## Response Type +**200**: OK + [`ComponentResponse`](../../doc/models/component-response.md) ## Example Usage @@ -662,6 +698,10 @@ def read_component(self, component_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -671,6 +711,8 @@ def read_component(self, ## Response Type +**200**: OK + [`ComponentResponse`](../../doc/models/component-response.md) ## Example Usage @@ -732,6 +774,10 @@ def update_product_family_component(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -742,6 +788,8 @@ def update_product_family_component(self, ## Response Type +**200**: OK + [`ComponentResponse`](../../doc/models/component-response.md) ## Example Usage @@ -812,6 +860,10 @@ def archive_component(self, component_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -821,6 +873,8 @@ def archive_component(self, ## Response Type +**200**: OK + [`Component`](../../doc/models/component.md) ## Example Usage @@ -879,6 +933,10 @@ def list_components(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -895,6 +953,8 @@ def list_components(self, ## Response Type +**200**: OK + [`List[ComponentResponse]`](../../doc/models/component-response.md) ## Example Usage @@ -1028,6 +1088,10 @@ def update_component(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1037,6 +1101,8 @@ def update_component(self, ## Response Type +**200**: OK + [`ComponentResponse`](../../doc/models/component-response.md) ## Example Usage @@ -1103,6 +1169,10 @@ def list_components_for_product_family(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1120,6 +1190,8 @@ def list_components_for_product_family(self, ## Response Type +**200**: OK + [`List[ComponentResponse]`](../../doc/models/component-response.md) ## Example Usage diff --git a/doc/controllers/coupons.md b/doc/controllers/coupons.md index 08bc1d80..434d4fb9 100644 --- a/doc/controllers/coupons.md +++ b/doc/controllers/coupons.md @@ -49,6 +49,10 @@ def create_coupon(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -58,6 +62,8 @@ def create_coupon(self, ## Response Type +**201**: Created + [`CouponResponse`](../../doc/models/coupon-response.md) ## Example Usage @@ -112,6 +118,10 @@ def list_coupons_for_product_family(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -124,6 +134,8 @@ def list_coupons_for_product_family(self, ## Response Type +**200**: OK + [`List[CouponResponse]`](../../doc/models/coupon-response.md) ## Example Usage @@ -259,6 +271,10 @@ def find_coupon(self, currency_prices=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -269,6 +285,8 @@ def find_coupon(self, ## Response Type +**200**: OK + [`CouponResponse`](../../doc/models/coupon-response.md) ## Example Usage @@ -299,6 +317,10 @@ def read_coupon(self, currency_prices=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -309,6 +331,8 @@ def read_coupon(self, ## Response Type +**200**: OK + [`CouponResponse`](../../doc/models/coupon-response.md) ## Example Usage @@ -374,6 +398,10 @@ def update_coupon(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -384,6 +412,8 @@ def update_coupon(self, ## Response Type +**200**: OK + [`CouponResponse`](../../doc/models/coupon-response.md) ## Example Usage @@ -471,6 +501,10 @@ def archive_coupon(self, coupon_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -480,6 +514,8 @@ def archive_coupon(self, ## Response Type +**200**: OK + [`CouponResponse`](../../doc/models/coupon-response.md) ## Example Usage @@ -535,6 +571,10 @@ def list_coupons(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -546,6 +586,8 @@ def list_coupons(self, ## Response Type +**200**: OK + [`List[CouponResponse]`](../../doc/models/coupon-response.md) ## Example Usage @@ -634,6 +676,10 @@ def read_coupon_usage(self, coupon_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -643,6 +689,8 @@ def read_coupon_usage(self, ## Response Type +**200**: OK + [`List[CouponUsage]`](../../doc/models/coupon-usage.md) ## Example Usage @@ -724,6 +772,10 @@ def validate_coupon(self, product_family_id=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -733,6 +785,8 @@ def validate_coupon(self, ## Response Type +**200**: OK + [`CouponResponse`](../../doc/models/coupon-response.md) ## Example Usage @@ -792,6 +846,10 @@ def create_or_update_coupon_currency_prices(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -801,6 +859,8 @@ def create_or_update_coupon_currency_prices(self, ## Response Type +**200**: OK + [`CouponCurrencyResponse`](../../doc/models/coupon-currency-response.md) ## Example Usage @@ -884,6 +944,10 @@ def create_coupon_subcodes(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -893,6 +957,8 @@ def create_coupon_subcodes(self, ## Response Type +**200**: OK + [`CouponSubcodesResponse`](../../doc/models/coupon-subcodes-response.md) ## Example Usage @@ -937,6 +1003,10 @@ def list_coupon_subcodes(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -947,6 +1017,8 @@ def list_coupon_subcodes(self, ## Response Type +**200**: OK + [`CouponSubcodes`](../../doc/models/coupon-subcodes.md) ## Example Usage @@ -1011,6 +1083,10 @@ def update_coupon_subcodes(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1020,6 +1096,8 @@ def update_coupon_subcodes(self, ## Response Type +**200**: OK + [`CouponSubcodesResponse`](../../doc/models/coupon-subcodes-response.md) ## Example Usage @@ -1074,6 +1152,10 @@ def delete_coupon_subcode(self, subcode) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1083,6 +1165,8 @@ def delete_coupon_subcode(self, ## Response Type +**200**: OK + `void` ## Example Usage diff --git a/doc/controllers/custom-fields.md b/doc/controllers/custom-fields.md index 21c068cb..e587dc8f 100644 --- a/doc/controllers/custom-fields.md +++ b/doc/controllers/custom-fields.md @@ -44,6 +44,10 @@ def create_metafields(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -53,6 +57,8 @@ def create_metafields(self, ## Response Type +**200**: OK + [`List[Metafield]`](../../doc/models/metafield.md) ## Example Usage @@ -131,6 +137,10 @@ def list_metafields(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -143,6 +153,8 @@ def list_metafields(self, ## Response Type +**200**: OK + [`ListMetafieldsResponse`](../../doc/models/list-metafields-response.md) ## Example Usage @@ -222,6 +234,10 @@ def update_metafield(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -231,6 +247,8 @@ def update_metafield(self, ## Response Type +**200**: OK + [`List[Metafield]`](../../doc/models/metafield.md) ## Example Usage @@ -259,6 +277,10 @@ def delete_metafield(self, name=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -268,6 +290,8 @@ def delete_metafield(self, ## Response Type +**200**: OK + `void` ## Example Usage @@ -300,6 +324,10 @@ def create_metadata(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -310,6 +338,8 @@ def create_metadata(self, ## Response Type +**200**: OK + [`List[Metadata]`](../../doc/models/metadata.md) ## Example Usage @@ -356,6 +386,10 @@ def list_metadata(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -367,6 +401,8 @@ def list_metadata(self, ## Response Type +**200**: OK + [`PaginatedMetadata`](../../doc/models/paginated-metadata.md) ## Example Usage @@ -419,6 +455,10 @@ def update_metadata(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -429,6 +469,8 @@ def update_metadata(self, ## Response Type +**200**: OK + [`List[Metadata]`](../../doc/models/metadata.md) ## Example Usage @@ -464,6 +506,10 @@ def delete_metadata(self, names=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -475,6 +521,8 @@ def delete_metadata(self, ## Response Type +**200**: OK + `void` ## Example Usage @@ -506,6 +554,10 @@ def list_metadata_for_resource_type(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -524,6 +576,8 @@ def list_metadata_for_resource_type(self, ## Response Type +**200**: OK + [`PaginatedMetadata`](../../doc/models/paginated-metadata.md) ## Example Usage diff --git a/doc/controllers/customers.md b/doc/controllers/customers.md index 4de05f3f..80d86b25 100644 --- a/doc/controllers/customers.md +++ b/doc/controllers/customers.md @@ -51,6 +51,10 @@ def create_customer(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -59,6 +63,8 @@ def create_customer(self, ## Response Type +**200**: OK + [`CustomerResponse`](../../doc/models/customer-response.md) ## Example Usage @@ -154,6 +160,10 @@ def list_customers(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -170,6 +180,8 @@ def list_customers(self, ## Response Type +**200**: OK + [`List[CustomerResponse]`](../../doc/models/customer-response.md) ## Example Usage @@ -278,6 +290,10 @@ def read_customer(self, id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -286,6 +302,8 @@ def read_customer(self, ## Response Type +**200**: OK + [`CustomerResponse`](../../doc/models/customer-response.md) ## Example Usage @@ -345,6 +363,10 @@ def update_customer(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -354,6 +376,8 @@ def update_customer(self, ## Response Type +**200**: OK + [`CustomerResponse`](../../doc/models/customer-response.md) ## Example Usage @@ -424,6 +448,10 @@ def delete_customer(self, id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -432,6 +460,8 @@ def delete_customer(self, ## Response Type +**204**: No Content + `void` ## Example Usage @@ -452,6 +482,10 @@ def read_customer_by_reference(self, reference) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -460,6 +494,8 @@ def read_customer_by_reference(self, ## Response Type +**200**: OK + [`CustomerResponse`](../../doc/models/customer-response.md) ## Example Usage @@ -481,6 +517,10 @@ def list_customer_subscriptions(self, customer_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -489,6 +529,8 @@ def list_customer_subscriptions(self, ## Response Type +**200**: OK + [`List[SubscriptionResponse]`](../../doc/models/subscription-response.md) ## Example Usage diff --git a/doc/controllers/events-based-billing-segments.md b/doc/controllers/events-based-billing-segments.md index 64132114..0e687fa9 100644 --- a/doc/controllers/events-based-billing-segments.md +++ b/doc/controllers/events-based-billing-segments.md @@ -31,6 +31,10 @@ def create_segment(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -41,6 +45,8 @@ def create_segment(self, ## Response Type +**201**: Created + [`SegmentResponse`](../../doc/models/segment-response.md) ## Example Usage @@ -98,6 +104,10 @@ def list_segments_for_price_point(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -110,6 +120,8 @@ def list_segments_for_price_point(self, ## Response Type +**200**: OK + [`ListSegmentsResponse`](../../doc/models/list-segments-response.md) ## Example Usage @@ -150,6 +162,10 @@ def update_segment(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -161,6 +177,8 @@ def update_segment(self, ## Response Type +**200**: OK + [`SegmentResponse`](../../doc/models/segment-response.md) ## Example Usage @@ -201,6 +219,10 @@ def delete_segment(self, id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -211,6 +233,8 @@ def delete_segment(self, ## Response Type +**204**: No Content + `void` ## Example Usage @@ -252,6 +276,10 @@ def bulk_create_segments(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -262,6 +290,8 @@ def bulk_create_segments(self, ## Response Type +**201**: Created + [`ListSegmentsResponse`](../../doc/models/list-segments-response.md) ## Example Usage @@ -301,6 +331,10 @@ def bulk_update_segments(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -311,6 +345,8 @@ def bulk_update_segments(self, ## Response Type +**200**: OK + [`ListSegmentsResponse`](../../doc/models/list-segments-response.md) ## Example Usage diff --git a/doc/controllers/events.md b/doc/controllers/events.md index 8d7b10c1..51d214e3 100644 --- a/doc/controllers/events.md +++ b/doc/controllers/events.md @@ -91,6 +91,10 @@ def list_events(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -109,6 +113,8 @@ def list_events(self, ## Response Type +**200**: OK + [`List[EventResponse]`](../../doc/models/event-response.md) ## Example Usage @@ -210,6 +216,10 @@ def list_subscription_events(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -224,6 +234,8 @@ def list_subscription_events(self, ## Response Type +**200**: OK + [`List[EventResponse]`](../../doc/models/event-response.md) ## Example Usage @@ -296,6 +308,10 @@ def read_events_count(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -309,6 +325,8 @@ def read_events_count(self, ## Response Type +**200**: OK + [`CountResponse`](../../doc/models/count-response.md) ## Example Usage diff --git a/doc/controllers/insights.md b/doc/controllers/insights.md index b271dbfb..4f448000 100644 --- a/doc/controllers/insights.md +++ b/doc/controllers/insights.md @@ -13,7 +13,7 @@ insights_controller = client.insights * [Read Site Stats](../../doc/controllers/insights.md#read-site-stats) * [Read Mrr](../../doc/controllers/insights.md#read-mrr) * [List Mrr Movements](../../doc/controllers/insights.md#list-mrr-movements) -* [List Mrr Per Subscription](../../doc/controllers/insights.md#list-mrr-per-subscription) +* [List Mrr per Subscription](../../doc/controllers/insights.md#list-mrr-per-subscription) # Read Site Stats @@ -32,8 +32,14 @@ https://subdomain.chargify.com/dashboard def read_site_stats(self) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Response Type +**200**: OK + [`SiteSummary`](../../doc/models/site-summary.md) ## Example Usage @@ -75,6 +81,10 @@ def read_mrr(self, subscription_id=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -84,6 +94,8 @@ def read_mrr(self, ## Response Type +**200**: OK + [`MRRResponse`](../../doc/models/mrr-response.md) ## Example Usage @@ -148,6 +160,10 @@ def list_mrr_movements(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -159,6 +175,8 @@ def list_mrr_movements(self, ## Response Type +**200**: OK + [`ListMRRResponse`](../../doc/models/list-mrr-response.md) ## Example Usage @@ -225,7 +243,7 @@ print(result) ``` -# List Mrr Per Subscription +# List Mrr per Subscription **This endpoint is deprecated.** @@ -236,6 +254,10 @@ def list_mrr_per_subscription(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -248,6 +270,8 @@ def list_mrr_per_subscription(self, ## Response Type +**200**: OK + [`SubscriptionMRRResponse`](../../doc/models/subscription-mrr-response.md) ## Example Usage diff --git a/doc/controllers/invoices.md b/doc/controllers/invoices.md index 222e4b4c..fbd4eba1 100644 --- a/doc/controllers/invoices.md +++ b/doc/controllers/invoices.md @@ -37,7 +37,7 @@ Refund an invoice, segment, or consolidated invoice. A refund less than the total of a consolidated invoice will be split across its segments. -A $50.00 refund on a $100.00 consolidated invoice with one $60.00 and one $40.00 segment, the refunded amount will be applied as 50% of each ($30.00 and $20.00 respectively). +For a $50.00 refund on a $100.00 consolidated invoice with one $60.00 segment and one $40.00 segment, the refunded amount will be applied as 50% of each ($30.00 and $20.00, respectively). ```python def refund_invoice(self, @@ -45,6 +45,10 @@ def refund_invoice(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -54,6 +58,8 @@ def refund_invoice(self, ## Response Type +**200**: OK + [`Invoice`](../../doc/models/invoice.md) ## Example Usage @@ -95,6 +101,10 @@ def list_invoices(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -125,6 +135,8 @@ def list_invoices(self, ## Response Type +**200**: OK + [`ListInvoicesResponse`](../../doc/models/list-invoices-response.md) ## Example Usage @@ -457,6 +469,10 @@ def read_invoice(self, uid) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -465,6 +481,8 @@ def read_invoice(self, ## Response Type +**200**: OK + [`Invoice`](../../doc/models/invoice.md) ## Example Usage @@ -553,6 +571,7 @@ print(result) "subtotal_amount": "100.0", "discount_amount": "0.0", "tax_amount": "0.0", + "tax_included": false, "total_amount": "100.0", "tiered_unit_price": false, "period_range_start": "2018-07-26", @@ -618,6 +637,10 @@ def list_invoice_events(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -632,6 +655,8 @@ def list_invoice_events(self, ## Response Type +**200**: OK + [`ListInvoiceEventsResponse`](../../doc/models/list-invoice-events-response.md) ## Example Usage @@ -748,6 +773,7 @@ print(result) "subtotal_amount": "99.0", "discount_amount": "9.9", "tax_amount": "6.01425", + "tax_included": false, "total_amount": "95.11425", "tiered_unit_price": false, "period_range_start": "2018-08-01", @@ -768,6 +794,7 @@ print(result) "subtotal_amount": "15.5", "discount_amount": "1.55", "tax_amount": "0.941625", + "tax_included": false, "total_amount": "14.891625", "tiered_unit_price": true, "period_range_start": "2018-07-22", @@ -816,6 +843,7 @@ print(result) "subtotal_amount": "47.0", "discount_amount": "4.7", "tax_amount": "2.85525", + "tax_included": false, "total_amount": "45.15525", "tiered_unit_price": true, "period_range_start": "2018-07-22", @@ -864,6 +892,7 @@ print(result) "subtotal_amount": "14.0", "discount_amount": "1.4", "tax_amount": "0.8505", + "tax_included": false, "total_amount": "13.4505", "tiered_unit_price": false, "period_range_start": "2018-08-01", @@ -1039,6 +1068,10 @@ def record_payment_for_invoice(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1048,6 +1081,8 @@ def record_payment_for_invoice(self, ## Response Type +**200**: OK + [`Invoice`](../../doc/models/invoice.md) ## Example Usage @@ -1082,7 +1117,7 @@ print(result) This API call should be used when you want to record an external payment against multiple invoices. -In order apply a payment to multiple invoices, at minimum, specify the `amount` and `applications` (i.e., `invoice_uid` and `amount`) details. +To apply a payment to multiple invoices, at minimum, specify the `amount` and `applications` (i.e., `invoice_uid` and `amount`) details. ``` { @@ -1112,6 +1147,10 @@ def record_payment_for_multiple_invoices(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1120,6 +1159,8 @@ def record_payment_for_multiple_invoices(self, ## Response Type +**200**: OK + [`MultiInvoicePaymentResponse`](../../doc/models/multi-invoice-payment-response.md) ## Example Usage @@ -1192,6 +1233,10 @@ def list_credit_notes(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1207,6 +1252,8 @@ def list_credit_notes(self, ## Response Type +**200**: OK + [`ListCreditNotesResponse`](../../doc/models/list-credit-notes-response.md) ## Example Usage @@ -1294,6 +1341,7 @@ print(result) "subtotal_amount": "1.971004", "discount_amount": "0.19862831", "tax_amount": "0.11963536", + "tax_included": false, "total_amount": "1.89201105", "tiered_unit_price": false, "period_range_start": "2018-11-30", @@ -1312,6 +1360,7 @@ print(result) "subtotal_amount": "114.21127834", "discount_amount": "11.42112783", "tax_amount": "6.93833516", + "tax_included": false, "total_amount": "109.72848567", "tiered_unit_price": false, "period_range_start": "2018-12-30", @@ -1330,6 +1379,7 @@ print(result) "subtotal_amount": "9.16746047", "discount_amount": "0.91674605", "tax_amount": "0.55692322", + "tax_included": false, "total_amount": "8.80763764", "tiered_unit_price": true, "period_range_start": "2018-11-30", @@ -1348,6 +1398,7 @@ print(result) "subtotal_amount": "72.57572871", "discount_amount": "7.25757287", "tax_amount": "4.40897552", + "tax_included": false, "total_amount": "69.72713136", "tiered_unit_price": true, "period_range_start": "2018-11-30", @@ -1366,6 +1417,7 @@ print(result) "subtotal_amount": "3.12839588", "discount_amount": "0.31322157", "tax_amount": "0.19002427", + "tax_included": false, "total_amount": "3.00519858", "tiered_unit_price": true, "period_range_start": "2018-11-30", @@ -1384,6 +1436,7 @@ print(result) "subtotal_amount": "7.63955039", "discount_amount": "0.76395504", "tax_amount": "0.46410269", + "tax_included": false, "total_amount": "7.33969804", "tiered_unit_price": false, "period_range_start": "2018-12-30", @@ -1536,6 +1589,10 @@ def read_credit_note(self, uid) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1544,6 +1601,8 @@ def read_credit_note(self, ## Response Type +**200**: OK + [`CreditNote`](../../doc/models/credit-note.md) ## Example Usage @@ -1622,6 +1681,7 @@ print(result) "subtotal_amount": "1.971004", "discount_amount": "0.19862831", "tax_amount": "0.11963536", + "tax_included": false, "total_amount": "1.89201105", "tiered_unit_price": false, "period_range_start": "2018-11-30", @@ -1642,6 +1702,7 @@ print(result) "subtotal_amount": "114.21127834", "discount_amount": "11.42112783", "tax_amount": "6.93833516", + "tax_included": false, "total_amount": "109.72848567", "tiered_unit_price": false, "period_range_start": "2018-12-30", @@ -1662,6 +1723,7 @@ print(result) "subtotal_amount": "9.16746047", "discount_amount": "0.91674605", "tax_amount": "0.55692322", + "tax_included": false, "total_amount": "8.80763764", "tiered_unit_price": true, "period_range_start": "2018-11-30", @@ -1682,6 +1744,7 @@ print(result) "subtotal_amount": "72.57572871", "discount_amount": "7.25757287", "tax_amount": "4.40897552", + "tax_included": false, "total_amount": "69.72713136", "tiered_unit_price": true, "period_range_start": "2018-11-30", @@ -1702,6 +1765,7 @@ print(result) "subtotal_amount": "3.12839588", "discount_amount": "0.31322157", "tax_amount": "0.19002427", + "tax_included": false, "total_amount": "3.00519858", "tiered_unit_price": true, "period_range_start": "2018-11-30", @@ -1722,6 +1786,7 @@ print(result) "subtotal_amount": "7.63955039", "discount_amount": "0.76395504", "tax_amount": "0.46410269", + "tax_included": false, "total_amount": "7.33969804", "tiered_unit_price": false, "period_range_start": "2018-12-30", @@ -1881,6 +1946,10 @@ def record_payment_for_subscription(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1890,6 +1959,8 @@ def record_payment_for_subscription(self, ## Response Type +**201**: OK + [`RecordPaymentResponse`](../../doc/models/record-payment-response.md) ## Example Usage @@ -1962,6 +2033,10 @@ def reopen_invoice(self, uid) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1970,6 +2045,8 @@ def reopen_invoice(self, ## Response Type +**200**: OK + [`Invoice`](../../doc/models/invoice.md) ## Example Usage @@ -1999,6 +2076,10 @@ def void_invoice(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -2008,6 +2089,8 @@ def void_invoice(self, ## Response Type +**200**: OK + [`Invoice`](../../doc/models/invoice.md) ## Example Usage @@ -2045,6 +2128,10 @@ def list_consolidated_invoice_segments(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -2056,6 +2143,8 @@ def list_consolidated_invoice_segments(self, ## Response Type +**200**: OK + [`ConsolidatedInvoice`](../../doc/models/consolidated-invoice.md) ## Example Usage @@ -2386,13 +2475,13 @@ Instead of creating custom products like in above example, You can pass existing The price for each line item will be calculated as well as a total due amount for the invoice. Multiple line items can be sent. -### Line items types +### Line item types -When defining line item, You can choose one of 3 types for one line item: +When defining a line item, You can choose one of 3 types for a line item: #### Custom item -Like in basic behavior example above, You can pass `title` and `unit_price` for custom item. +As shown in the basic behavior example, You can pass `title` and `unit_price` for custom item. #### Product id @@ -2400,7 +2489,7 @@ Product handle (with handle: prefix) or id from the scope of current subscriptio #### Component id -Component handle (with handle: prefix) or id from the scope of current subscription's site can be provided with `component_id`. If `component_id` is used, following fields cannot be used: `title`, `product_id`. By default `unit_price` is taken from product's default price point, but can be overwritten by passing `unit_price` or `price_point_id`. At this moment price points are supportted only for quantity based, on/off and metered components. For prepaid and event based billing components `unit_price` is required. +Component handle (with handle: prefix) or id from the scope of current subscription's site can be provided with `component_id`. If `component_id` is used, following fields cannot be used: `title`, `product_id`. By default `unit_price` is taken from product's default price point, but can be overwritten by passing `unit_price` or `price_point_id`. At this moment price points are supported only for quantity based, on/off and metered components. For prepaid and event based billing components `unit_price` is required. ### Coupons @@ -2537,7 +2626,7 @@ Optional `description` parameter, it will overwrite default generated descriptio #### Issue Date -By default, invoices will be created with a issue date set to today. `issue_date` parameter can be send to alter that. Only dates in the past can be send. `issue_date` should be send in `YYYY-MM-DD` format. +By default, invoices will be created with a issue date set to today in your site's time zone. The `issue_date` parameter can be sent to alter the default. Only today or dates in the past are accepted. This date is interpreted and validated in your site's time zone. The format for `issue_date` is `YYYY-MM-DD`. #### Net Terms @@ -2549,7 +2638,7 @@ The seller, shipping and billing addresses can be sent to override the site's de #### Memo and Payment Instructions -A custom memo can be sent with the `memo` parameter to override the site's default. Likewise, custom payment instructions can be sent with the `payment_instrucions` parameter. +A custom memo can be sent with the `memo` parameter to override the site's default. Likewise, custom payment instructions can be sent with the `payment_instructions` parameter. #### Status @@ -2561,6 +2650,10 @@ def create_invoice(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -2570,6 +2663,8 @@ def create_invoice(self, ## Response Type +**200**: OK + [`InvoiceResponse`](../../doc/models/invoice-response.md) ## Example Usage @@ -2677,6 +2772,7 @@ print(result) "subtotal_amount": "1800.0", "discount_amount": "0.0", "tax_amount": "0.0", + "tax_included": false, "total_amount": "1800.0", "tiered_unit_price": false, "period_range_start": "2020-12-02", @@ -2716,6 +2812,10 @@ def send_invoice(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -2725,6 +2825,8 @@ def send_invoice(self, ## Response Type +**204**: No Content + `void` ## Example Usage @@ -2759,7 +2861,7 @@ invoices_controller.send_invoice( # Preview Customer Information Changes -Customer information may change after an invoice is issued which may lead to a mismatch between customer information that are present on an open invoice and actual customer information. This endpoint allows to preview these differences, if any. +Customer information may change after an invoice is issued, which may lead to a mismatch between customer information that is present on an open invoice and actual customer information. This endpoint allows you to preview these differences, if any. The endpoint doesn't accept a request body. Customer information differences are calculated on the application side. @@ -2768,6 +2870,10 @@ def preview_customer_information_changes(self, uid) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -2776,6 +2882,8 @@ def preview_customer_information_changes(self, ## Response Type +**200**: OK + [`CustomerChangesPreviewResponse`](../../doc/models/customer-changes-preview-response.md) ## Example Usage @@ -2850,7 +2958,7 @@ print(result) # Update Customer Information -This endpoint updates customer information on an open invoice and returns the updated invoice. If you would like to preview changes that will be applied, use the `/invoices/{uid}/customer_information/preview.json` endpoint before. +This endpoint updates customer information on an open invoice and returns the updated invoice. If you would like to preview changes that will be applied, use the `/invoices/{uid}/customer_information/preview.json` endpoint first. The endpoint doesn't accept a request body. Customer information differences are calculated on the application side. @@ -2859,6 +2967,10 @@ def update_customer_information(self, uid) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -2867,6 +2979,8 @@ def update_customer_information(self, ## Response Type +**200**: OK + [`Invoice`](../../doc/models/invoice.md) ## Example Usage @@ -3080,9 +3194,9 @@ This endpoint allows you to issue an invoice that is in "pending" or "draft" sta You cannot issue a pending child invoice that was created for a member subscription in a group. -For Remittance subscriptions, the invoice will go into "open" status and payment won't be attempted. The value for `on_failed_payment` would be rejected if sent. Any prepayments or service credits that exist on subscription will be automatically applied. Additionally, if setting is on, an email will be sent for issued invoice. +For Remittance subscriptions, the invoice will go into "open" status and payment won't be attempted. The value for `on_failed_payment` would be rejected if sent. Any prepayments or service credits that exist on the subscription will be automatically applied. Additionally, if the setting is enabled, an email will be sent for the issued invoice. -For Automatic subscriptions, prepayments and service credits will apply to the invoice and before payment is attempted. On successful payment, the invoice will go into "paid" status and email will be sent to the customer (if setting applies). When payment fails, the next event depends on the `on_failed_payment` value: +For Automatic subscriptions, prepayments and service credits will apply to the invoice before payment is attempted. On successful payment, the invoice will go into "paid" status and email will be sent to the customer (if setting applies). When payment fails, the next event depends on the `on_failed_payment` value: - `leave_open_invoice` - prepayments and credits applied to invoice; invoice status set to "open"; email sent to the customer for the issued invoice (if setting applies); payment failure recorded in the invoice history. This is the default option. - `rollback_to_pending` - prepayments and credits not applied; invoice remains in "pending" status; no email sent to the customer; payment failure recorded in the invoice history. @@ -3094,6 +3208,10 @@ def issue_invoice(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -3103,6 +3221,8 @@ def issue_invoice(self, ## Response Type +**200**: OK + [`Invoice`](../../doc/models/invoice.md) ## Example Usage diff --git a/doc/controllers/offers.md b/doc/controllers/offers.md index b4f9ce69..18ca065b 100644 --- a/doc/controllers/offers.md +++ b/doc/controllers/offers.md @@ -38,6 +38,10 @@ def create_offer(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -46,6 +50,8 @@ def create_offer(self, ## Response Type +**201**: Created + [`OfferResponse`](../../doc/models/offer-response.md) ## Example Usage @@ -134,6 +140,10 @@ def list_offers(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -144,6 +154,8 @@ def list_offers(self, ## Response Type +**200**: OK + [`ListOffersResponse`](../../doc/models/list-offers-response.md) ## Example Usage @@ -229,6 +241,10 @@ def read_offer(self, offer_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -237,6 +253,8 @@ def read_offer(self, ## Response Type +**200**: OK + [`OfferResponse`](../../doc/models/offer-response.md) ## Example Usage @@ -258,6 +276,10 @@ def archive_offer(self, offer_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -266,6 +288,8 @@ def archive_offer(self, ## Response Type +**200**: OK + `void` ## Example Usage @@ -286,6 +310,10 @@ def unarchive_offer(self, offer_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -294,6 +322,8 @@ def unarchive_offer(self, ## Response Type +**200**: OK + `void` ## Example Usage diff --git a/doc/controllers/payment-profiles.md b/doc/controllers/payment-profiles.md index a150e29f..02c13228 100644 --- a/doc/controllers/payment-profiles.md +++ b/doc/controllers/payment-profiles.md @@ -34,7 +34,7 @@ Select an option from the **Request Examples** drop-down on the right side of th Do not use real card information for testing. See the Sites articles that cover [testing your site setup](https://docs.maxio.com/hc/en-us/articles/24250712113165-Testing-Overview#testing-overview-0-0) for more details on testing in your sandbox. -Note that collecting and sending raw card details in production requires [PCI compliance](https://docs.maxio.com/hc/en-us/articles/24183956938381-PCI-Compliance#pci-compliance-0-0) on your end. If your business is not PCI compliant, use [Chargify.js](https://docs.maxio.com/hc/en-us/articles/38163190843789-Chargify-js-Overview#chargify-js-overview-0-0) to collect credit card or bank account information. +Note that collecting and sending raw card details in production requires [PCI compliance](https://docs.maxio.com/hc/en-us/articles/24183956938381-PCI-Compliance#pci-compliance-0-0) on your end. If your business is not PCI compliant, use [Maxio.js (formerly Chargify.js)](https://docs.maxio.com/hc/en-us/articles/38163190843789-Chargify-js-Overview#chargify-js-overview-0-0) to collect credit card or bank account information. See the following articles to learn more about subscriptions and payments: @@ -42,74 +42,33 @@ See the following articles to learn more about subscriptions and payments: + [Self Service Pages](https://maxio.zendesk.com/hc/en-us/articles/24261425318541-Self-Service-Pages) (Allows credit card updates by Subscriber) + [Public Signup Pages payment settings](https://maxio.zendesk.com/hc/en-us/articles/24261368332557-Individual-Page-Settings) + [Taxes](https://developers.chargify.com/docs/developer-docs/d2e9e34db740e-signups#taxes) -+ [Chargify.js](https://docs.maxio.com/hc/en-us/articles/38163190843789-Chargify-js-Overview) - + [Chargify.js with GoCardless - minimal example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01K0PJ15QQZKCER8CFK40MR6XJ) - + [Chargify.js with GoCardless - full example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01K0PJ15QR09JVHWW0MCA7HVJV) - + [Chargify.js with Stripe Direct Debit - minimal example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01K0PJ15QQFKKN8Z7B7DZ9AJS5) - + [Chargify.js with Stripe Direct Debit - full example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01K0PJ15QRECQQ4ECS3ZA55GY7) - + [Chargify.js with Stripe BECS Direct Debit - minimal example](https://developers.chargify.com/docs/developer-docs/ZG9jOjE0NjAzNDIy-examples#minimal-example-with-sepa-or-becs-direct-debit-stripe-gateway) - + [Chargify.js with Stripe BECS Direct Debit - full example](https://developers.chargify.com/docs/developer-docs/ZG9jOjE0NjAzNDIy-examples#full-example-with-sepa-direct-debit-stripe-gateway) ++ [Maxio.js (formerly Chargify.js)](https://docs.maxio.com/hc/en-us/articles/38163190843789-Chargify-js-Overview) + + [Maxio.js with GoCardless - minimal example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01K0PJ15QQZKCER8CFK40MR6XJ) + + [Maxio.js with GoCardless - full example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01K0PJ15QR09JVHWW0MCA7HVJV) + + [Maxio.js with Stripe Direct Debit - minimal example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01K0PJ15QQFKKN8Z7B7DZ9AJS5) + + [Maxio.js with Stripe Direct Debit - full example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01K0PJ15QRECQQ4ECS3ZA55GY7) + + [CMaxio.js with Stripe BECS Direct Debit - minimal example](https://developers.chargify.com/docs/developer-docs/ZG9jOjE0NjAzNDIy-examples#minimal-example-with-sepa-or-becs-direct-debit-stripe-gateway) + + [Maxio.js with Stripe BECS Direct Debit - full example](https://developers.chargify.com/docs/developer-docs/ZG9jOjE0NjAzNDIy-examples#full-example-with-sepa-direct-debit-stripe-gateway) + [Full documentation on GoCardless](https://maxio.zendesk.com/hc/en-us/articles/24176159136909-GoCardless) + [Full documentation on Stripe SEPA Direct Debit](https://maxio.zendesk.com/hc/en-us/articles/24176170430093-Stripe-SEPA-and-BECS-Direct-Debit) + [Full documentation on Stripe BECS Direct Debit](https://maxio.zendesk.com/hc/en-us/articles/24176170430093-Stripe-SEPA-and-BECS-Direct-Debit) + [Full documentation on Stripe BACS Direct Debit](https://maxio.zendesk.com/hc/en-us/articles/24176170430093-Stripe-SEPA-and-BECS-Direct-Debit) -## 3D Secure Authentication during payment profile creation. +## 3D Secure (3DS) Authentication post-authentication flow -When a payment requires 3D Secure Authentication to adhear to Strong Customer Authentication (SCA) during payment profile creation, the request enters a [post-authentication flow](https://maxio.zendesk.com/hc/en-us/articles/24176278996493-Testing-Implementing-3D-Secure#psd2-flows-pre-authentication-and-post-authentication). In this case, a 422 Unprocessable Entity status is returned with the following response: +When a payment requires 3DS Authentication to adhere to Strong Customer Authentication (SCA), the request enters a post-authentication flow where a 422 Unprocessable Entity status is returned with an action_link that will direct the customer through 3DS Authentication. -```json -{ - "jsonapi": { - "version": "1.0" - }, - "errors": [ - { - "title": "This card requires 3DSecure verification.", - "detail": "This card requires 3D secure authentication. Redirect the customer to the URL from the action_link attribute to authenticate. Attach callback_url param to this URL if you want to be notified about the result of 3D Secure authentication. Attach redirect_url param to this URL if you want to redirect a customer back to your page after 3D Secure authentication. Example: https://checkout-test.chargifypay.test/3d-secure/checkout/pay_uerzhsxd5uhkbodx5jhvkg6yeu?one_time_token_id=93&callback_url=http://localhost:4000&redirect_url=https://yourpage.com will do a POST request to https://localhost:4000 after credit card is authenticated and will redirect a customer to https://yourpage.com after 3DS authentication.", - "links": { - "action_link": "https://checkout-test.chargifypay.test/3d-secure/checkout/pay_uerzhsxd5uhkbodx5jhvkg6yeu?one_time_token_id=93" - } - } - ] -} -``` - -To let the customer go through 3D Secure Authentication, they need to be redirected to the URL specified in `action_link`. - -Optionally, you can specify the `callback_url` parameter in the `action_link` URL to receive notification about the result of 3D Secure Authentication. - -The `callback_url` will return the following information: - -- whether the authentication was successful (`success`) -- the payment profile ID (`payment_profile_id`) - -You can also specify a `redirect_url` parameter in the `action_link` URL to redirect the customer back to your site. - -You cannot use action_link in an iframe inside a custom application. You must redirect the customer directly to the `action_link` and use the `redirect_url` or `callback_url` to be notified of the result. - -The final URL that you send a customer to complete 3D Secure may resemble the following, where the first half is the `action_link` and the second half contains a `redirect_url` and `callback_url`: - -`https://checkout-test.chargifypay.test/3d-secure/checkout/pay_uerzhsxd5uhkbodx5jhvkg6yeu?one_time_token_id=93&callback_url=http://localhost:4000&redirect_url=https://yourpage.com` - -### Example Redirect Flow - -Here's an example flow to redirect customers to different pages depending on whether SCA was performed successfully: - -1. Create a payment profile via the API; it requires 3DS. -2. You receive an `action_link` in the response. -3. Use this `action_link` to, for example, connect with your internal resources or generate a `session_id`. -4. Include one of those attributes inside the `callback_url` and `redirect_url` to be aware which “session” this applies to. -5. Redirect the customer to the `action_link` with `callback_url` and `redirect_url` applied -6. After the customer completes 3DS authentication, we notify you of the result via the applied `callback_url`. -7. After that, we redirect the customer to the `redirect_url`; at this point the result of authentication is known. -8. Optionally, you can use the applied "msg" param in the `redirect_url` to determine if the redirect was successful. +See the [3D Secure Post-Authentication Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Post-Authentication-Flow) article in the product documentation to learn how to manage the redirect flow. ```python def create_payment_profile(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -118,6 +77,8 @@ def create_payment_profile(self, ## Response Type +**200**: OK + [`PaymentProfileResponse`](../../doc/models/payment-profile-response.md) ## Example Usage @@ -182,6 +143,10 @@ def list_payment_profiles(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -192,6 +157,8 @@ def list_payment_profiles(self, ## Response Type +**200**: OK + [`List[PaymentProfileResponse]`](../../doc/models/payment-profile-response.md) ## Example Usage @@ -314,6 +281,10 @@ def read_payment_profile(self, payment_profile_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -322,6 +293,8 @@ def read_payment_profile(self, ## Response Type +**200**: OK + [`PaymentProfileResponse`](../../doc/models/payment-profile-response.md) ## Example Usage @@ -414,6 +387,10 @@ def update_payment_profile(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -423,6 +400,8 @@ def update_payment_profile(self, ## Response Type +**200**: OK + [`PaymentProfileResponse`](../../doc/models/payment-profile-response.md) ## Example Usage @@ -488,6 +467,10 @@ def delete_unused_payment_profile(self, payment_profile_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -496,6 +479,8 @@ def delete_unused_payment_profile(self, ## Response Type +**204**: No Content + `void` ## Example Usage @@ -528,6 +513,10 @@ def delete_subscriptions_payment_profile(self, payment_profile_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -537,6 +526,8 @@ def delete_subscriptions_payment_profile(self, ## Response Type +**204**: No Content + `void` ## Example Usage @@ -563,6 +554,10 @@ def verify_bank_account(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -572,6 +567,8 @@ def verify_bank_account(self, ## Response Type +**200**: OK + [`BankAccountResponse`](../../doc/models/bank-account-response.md) ## Example Usage @@ -641,6 +638,10 @@ def delete_subscription_group_payment_profile(self, payment_profile_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -650,6 +651,8 @@ def delete_subscription_group_payment_profile(self, ## Response Type +**204**: No Content + `void` ## Example Usage @@ -678,6 +681,10 @@ def change_subscription_default_payment_profile(self, payment_profile_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -687,6 +694,8 @@ def change_subscription_default_payment_profile(self, ## Response Type +**201**: Created + [`PaymentProfileResponse`](../../doc/models/payment-profile-response.md) ## Example Usage @@ -754,6 +763,10 @@ def change_subscription_group_default_payment_profile(self, payment_profile_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -763,6 +776,8 @@ def change_subscription_group_default_payment_profile(self, ## Response Type +**201**: Created + [`PaymentProfileResponse`](../../doc/models/payment-profile-response.md) ## Example Usage @@ -828,6 +843,10 @@ def read_one_time_token(self, chargify_token) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -836,6 +855,8 @@ def read_one_time_token(self, ## Response Type +**200**: OK + [`GetOneTimeTokenRequest`](../../doc/models/get-one-time-token-request.md) ## Example Usage @@ -869,6 +890,10 @@ def send_request_update_payment_email(self, subscription_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -877,6 +902,8 @@ def send_request_update_payment_email(self, ## Response Type +**201**: Created + `void` ## Example Usage diff --git a/doc/controllers/product-families.md b/doc/controllers/product-families.md index 76327965..2c50eada 100644 --- a/doc/controllers/product-families.md +++ b/doc/controllers/product-families.md @@ -25,6 +25,10 @@ def list_products_for_product_family(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -43,6 +47,8 @@ def list_products_for_product_family(self, ## Response Type +**200**: OK + [`List[ProductResponse]`](../../doc/models/product-response.md) ## Example Usage @@ -183,6 +189,10 @@ def create_product_family(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -191,6 +201,8 @@ def create_product_family(self, ## Response Type +**201**: Created + [`ProductFamilyResponse`](../../doc/models/product-family-response.md) ## Example Usage @@ -239,6 +251,10 @@ def list_product_families(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -251,6 +267,8 @@ def list_product_families(self, ## Response Type +**200**: OK + [`List[ProductFamilyResponse]`](../../doc/models/product-family-response.md) ## Example Usage @@ -306,6 +324,10 @@ def read_product_family(self, id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -314,6 +336,8 @@ def read_product_family(self, ## Response Type +**200**: OK + [`ProductFamilyResponse`](../../doc/models/product-family-response.md) ## Example Usage diff --git a/doc/controllers/product-price-points.md b/doc/controllers/product-price-points.md index df836eb8..fe7e548c 100644 --- a/doc/controllers/product-price-points.md +++ b/doc/controllers/product-price-points.md @@ -33,6 +33,10 @@ def create_product_price_point(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -42,6 +46,8 @@ def create_product_price_point(self, ## Response Type +**201**: Created + [`ProductPricePointResponse`](../../doc/models/product-price-point-response.md) ## Example Usage @@ -117,6 +123,10 @@ def list_product_price_points(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -130,6 +140,8 @@ def list_product_price_points(self, ## Response Type +**200**: OK + [`ListProductPricePointsResponse`](../../doc/models/list-product-price-points-response.md) ## Example Usage @@ -188,6 +200,10 @@ def update_product_price_point(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -198,6 +214,8 @@ def update_product_price_point(self, ## Response Type +**200**: OK + [`ProductPricePointResponse`](../../doc/models/product-price-point-response.md) ## Example Usage @@ -261,6 +279,10 @@ def read_product_price_point(self, currency_prices=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -271,6 +293,8 @@ def read_product_price_point(self, ## Response Type +**200**: OK + [`ProductPricePointResponse`](../../doc/models/product-price-point-response.md) ## Example Usage @@ -325,6 +349,10 @@ def archive_product_price_point(self, price_point_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -334,6 +362,8 @@ def archive_product_price_point(self, ## Response Type +**200**: OK + [`ProductPricePointResponse`](../../doc/models/product-price-point-response.md) ## Example Usage @@ -394,6 +424,10 @@ def unarchive_product_price_point(self, price_point_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -403,6 +437,8 @@ def unarchive_product_price_point(self, ## Response Type +**200**: OK + [`ProductPricePointResponse`](../../doc/models/product-price-point-response.md) ## Example Usage @@ -459,6 +495,10 @@ def promote_product_price_point_to_default(self, price_point_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -468,6 +508,8 @@ def promote_product_price_point_to_default(self, ## Response Type +**200**: OK + [`ProductResponse`](../../doc/models/product-response.md) ## Example Usage @@ -548,6 +590,10 @@ def bulk_create_product_price_points(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -557,6 +603,8 @@ def bulk_create_product_price_points(self, ## Response Type +**201**: Created + [`BulkCreateProductPricePointsResponse`](../../doc/models/bulk-create-product-price-points-response.md) ## Example Usage @@ -656,6 +704,10 @@ def create_product_currency_prices(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -665,6 +717,8 @@ def create_product_currency_prices(self, ## Response Type +**200**: OK + [`CurrencyPricesResponse`](../../doc/models/currency-prices-response.md) ## Example Usage @@ -737,6 +791,10 @@ def update_product_currency_prices(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -746,6 +804,8 @@ def update_product_currency_prices(self, ## Response Type +**200**: OK + [`CurrencyPricesResponse`](../../doc/models/currency-prices-response.md) ## Example Usage @@ -806,6 +866,10 @@ def list_all_product_price_points(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -818,6 +882,8 @@ def list_all_product_price_points(self, ## Response Type +**200**: OK + [`ListProductPricePointsResponse`](../../doc/models/list-product-price-points-response.md) ## Example Usage diff --git a/doc/controllers/products.md b/doc/controllers/products.md index 4bad7301..510e31f9 100644 --- a/doc/controllers/products.md +++ b/doc/controllers/products.md @@ -33,6 +33,10 @@ def create_product(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -42,6 +46,8 @@ def create_product(self, ## Response Type +**201**: Created + [`ProductResponse`](../../doc/models/product-response.md) ## Example Usage @@ -136,6 +142,10 @@ def read_product(self, product_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -144,6 +154,8 @@ def read_product(self, ## Response Type +**200**: OK + [`ProductResponse`](../../doc/models/product-response.md) ## Example Usage @@ -217,6 +229,10 @@ def update_product(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -226,6 +242,8 @@ def update_product(self, ## Response Type +**200**: OK + [`ProductResponse`](../../doc/models/product-response.md) ## Example Usage @@ -303,6 +321,10 @@ def archive_product(self, product_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -311,6 +333,8 @@ def archive_product(self, ## Response Type +**200**: OK + [`ProductResponse`](../../doc/models/product-response.md) ## Example Usage @@ -381,6 +405,10 @@ def read_product_by_handle(self, api_handle) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -389,6 +417,8 @@ def read_product_by_handle(self, ## Response Type +**200**: OK + [`ProductResponse`](../../doc/models/product-response.md) ## Example Usage @@ -478,6 +508,10 @@ def list_products(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -495,6 +529,8 @@ def list_products(self, ## Response Type +**200**: OK + [`List[ProductResponse]`](../../doc/models/product-response.md) ## Example Usage diff --git a/doc/controllers/proforma-invoices.md b/doc/controllers/proforma-invoices.md index 5f578690..4100ede2 100644 --- a/doc/controllers/proforma-invoices.md +++ b/doc/controllers/proforma-invoices.md @@ -37,6 +37,10 @@ def create_consolidated_proforma_invoice(self, uid) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -45,6 +49,8 @@ def create_consolidated_proforma_invoice(self, ## Response Type +**201**: Created + `void` ## Example Usage @@ -73,6 +79,10 @@ def list_subscription_group_proforma_invoices(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -87,6 +97,8 @@ def list_subscription_group_proforma_invoices(self, ## Response Type +**200**: OK + [`ListProformaInvoicesResponse`](../../doc/models/list-proforma-invoices-response.md) ## Example Usage @@ -125,6 +137,10 @@ def read_proforma_invoice(self, proforma_invoice_uid) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -133,6 +149,8 @@ def read_proforma_invoice(self, ## Response Type +**200**: OK + [`ProformaInvoice`](../../doc/models/proforma-invoice.md) ## Example Usage @@ -166,6 +184,10 @@ def create_proforma_invoice(self, subscription_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -174,6 +196,8 @@ def create_proforma_invoice(self, ## Response Type +**200**: OK + [`ProformaInvoice`](../../doc/models/proforma-invoice.md) ## Example Usage @@ -201,6 +225,10 @@ def list_proforma_invoices(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -221,6 +249,8 @@ def list_proforma_invoices(self, ## Response Type +**200**: OK + [`ListProformaInvoicesResponse`](../../doc/models/list-proforma-invoices-response.md) ## Example Usage @@ -258,6 +288,10 @@ def deliver_proforma_invoice(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -267,6 +301,8 @@ def deliver_proforma_invoice(self, ## Response Type +**201**: Created + [`ProformaInvoice`](../../doc/models/proforma-invoice.md) ## Example Usage @@ -319,6 +355,10 @@ def void_proforma_invoice(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -328,6 +368,8 @@ def void_proforma_invoice(self, ## Response Type +**200**: OK + [`ProformaInvoice`](../../doc/models/proforma-invoice.md) ## Example Usage @@ -362,6 +404,10 @@ def preview_proforma_invoice(self, subscription_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -370,6 +416,8 @@ def preview_proforma_invoice(self, ## Response Type +**200**: OK + [`ProformaInvoice`](../../doc/models/proforma-invoice.md) ## Example Usage @@ -404,6 +452,10 @@ def create_signup_proforma_invoice(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -412,6 +464,8 @@ def create_signup_proforma_invoice(self, ## Response Type +**201**: Created + [`ProformaInvoice`](../../doc/models/proforma-invoice.md) ## Example Usage @@ -458,6 +512,10 @@ def preview_signup_proforma_invoice(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -467,6 +525,8 @@ def preview_signup_proforma_invoice(self, ## Response Type +**201**: Created + [`SignupProformaPreviewResponse`](../../doc/models/signup-proforma-preview-response.md) ## Example Usage diff --git a/doc/controllers/reason-codes.md b/doc/controllers/reason-codes.md index 2e2b9828..cfa1e839 100644 --- a/doc/controllers/reason-codes.md +++ b/doc/controllers/reason-codes.md @@ -40,6 +40,10 @@ def create_reason_code(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -48,6 +52,8 @@ def create_reason_code(self, ## Response Type +**200**: OK + [`ReasonCodeResponse`](../../doc/models/reason-code-response.md) ## Example Usage @@ -83,6 +89,10 @@ def list_reason_codes(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -92,6 +102,8 @@ def list_reason_codes(self, ## Response Type +**200**: OK + [`List[ReasonCodeResponse]`](../../doc/models/reason-code-response.md) ## Example Usage @@ -161,6 +173,10 @@ def read_reason_code(self, reason_code_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -169,6 +185,8 @@ def read_reason_code(self, ## Response Type +**200**: OK + [`ReasonCodeResponse`](../../doc/models/reason-code-response.md) ## Example Usage @@ -197,6 +215,10 @@ def update_reason_code(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -206,6 +228,8 @@ def update_reason_code(self, ## Response Type +**200**: OK + [`ReasonCodeResponse`](../../doc/models/reason-code-response.md) ## Example Usage @@ -234,6 +258,10 @@ def delete_reason_code(self, reason_code_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -242,6 +270,8 @@ def delete_reason_code(self, ## Response Type +**200**: OK + [`OkResponse`](../../doc/models/ok-response.md) ## Example Usage diff --git a/doc/controllers/referral-codes.md b/doc/controllers/referral-codes.md index e6b84222..568de82c 100644 --- a/doc/controllers/referral-codes.md +++ b/doc/controllers/referral-codes.md @@ -26,6 +26,10 @@ def validate_referral_code(self, code) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -34,6 +38,8 @@ def validate_referral_code(self, ## Response Type +**200**: OK + [`ReferralValidationResponse`](../../doc/models/referral-validation-response.md) ## Example Usage diff --git a/doc/controllers/sales-commissions.md b/doc/controllers/sales-commissions.md index 97befef1..e41e8737 100644 --- a/doc/controllers/sales-commissions.md +++ b/doc/controllers/sales-commissions.md @@ -32,6 +32,10 @@ def list_sales_commission_settings(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -44,6 +48,8 @@ def list_sales_commission_settings(self, ## Response Type +**200**: OK + [`List[SaleRepSettings]`](../../doc/models/sale-rep-settings.md) ## Example Usage @@ -111,6 +117,10 @@ def list_sales_reps(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -123,6 +133,8 @@ def list_sales_reps(self, ## Response Type +**200**: OK + [`List[ListSaleRepItem]`](../../doc/models/list-sale-rep-item.md) ## Example Usage @@ -244,6 +256,10 @@ def read_sales_rep(self, per_page=100) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -257,6 +273,8 @@ def read_sales_rep(self, ## Response Type +**200**: OK + [`SaleRep`](../../doc/models/sale-rep.md) ## Example Usage diff --git a/doc/controllers/sites.md b/doc/controllers/sites.md index f4baeec0..68b22eaf 100644 --- a/doc/controllers/sites.md +++ b/doc/controllers/sites.md @@ -17,15 +17,15 @@ sites_controller = client.sites # Read Site -This endpoint allows you to fetch some site data. +Retrieves site data. Full documentation on Sites in the Advanced Billing UI can be located [here](https://maxio.zendesk.com/hc/en-us/sections/24250550707085-Sites). -Specifically, the [Clearing Site Data](https://maxio.zendesk.com/hc/en-us/articles/24250617028365-Clearing-Site-Data) section is extremely relevant to this endpoint documentation. +Specifically, the [Clearing Site Data](https://maxio.zendesk.com/hc/en-us/articles/24250617028365-Clearing-Site-Data) section is relevant to this endpoint documentation. #### Relationship invoicing enabled -If site has RI enabled then you will see more settings like: +If the site has RI enabled then you will see more settings like: "customer_hierarchy_enabled": true, "whopays_enabled": true, @@ -38,8 +38,14 @@ You can read more about these settings here: def read_site(self) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Response Type +**200**: OK + [`SiteResponse`](../../doc/models/site-response.md) ## Example Usage @@ -103,7 +109,7 @@ print(result) # Clear Site -This call is asynchronous and there may be a delay before the site data is fully deleted. If you are clearing site data for an automated test, you will need to build in a delay and/or check that there are no products, etc., in the site before proceeding. +Clears all data from a test site asynchronously. This call is asynchronous and there may be a delay before the site data is fully deleted. If you are clearing site data for an automated test, you will need to build in a delay and/or check that there are no products, etc., in the site before proceeding. **This functionality will only work on sites in TEST mode. Attempts to perform this on sites in “live” mode will result in a response of 403 FORBIDDEN.** @@ -112,6 +118,10 @@ def clear_site(self, cleanup_scope="all") ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -120,6 +130,8 @@ def clear_site(self, ## Response Type +**200**: OK + `void` ## Example Usage @@ -135,13 +147,17 @@ sites_controller.clear_site( # List Chargify Js Public Keys -This endpoint returns public keys used for Chargify.js. +Returns public keys used for Maxio.js (formerly Chargify.js). ```python def list_chargify_js_public_keys(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -151,6 +167,8 @@ def list_chargify_js_public_keys(self, ## Response Type +**200**: OK + [`ListPublicKeysResponse`](../../doc/models/list-public-keys-response.md) ## Example Usage diff --git a/doc/controllers/subscription-components.md b/doc/controllers/subscription-components.md index ecbb8f4f..dd81b43c 100644 --- a/doc/controllers/subscription-components.md +++ b/doc/controllers/subscription-components.md @@ -31,7 +31,7 @@ subscription_components_controller = client.subscription_components # Read Subscription Component -This request will list information regarding a specific component owned by a subscription. +Returns information for a specific component on a subscription. ```python def read_subscription_component(self, @@ -39,6 +39,10 @@ def read_subscription_component(self, component_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -48,6 +52,8 @@ def read_subscription_component(self, ## Response Type +**200**: OK + [`SubscriptionComponentResponse`](../../doc/models/subscription-component-response.md) ## Example Usage @@ -92,7 +98,7 @@ print(result) # List Subscription Components -This request will list a subscription's applied components. +Lists a subscription's applied components. ## Archived Components @@ -103,6 +109,10 @@ def list_subscription_components(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -123,6 +133,8 @@ def list_subscription_components(self, ## Response Type +**200**: OK + [`List[SubscriptionComponentResponse]`](../../doc/models/subscription-component-response.md) ## Example Usage @@ -200,6 +212,10 @@ def bulk_update_subscription_components_price_points(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -209,6 +225,8 @@ def bulk_update_subscription_components_price_points(self, ## Response Type +**200**: OK + [`BulkComponentsPricePointAssignment`](../../doc/models/bulk-components-price-point-assignment.md) ## Example Usage @@ -275,6 +293,10 @@ def bulk_reset_subscription_components_price_points(self, subscription_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -283,6 +305,8 @@ def bulk_reset_subscription_components_price_points(self, ## Response Type +**201**: Created + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -401,7 +425,7 @@ Creates an allocation, sets the current allocated quantity for the component, an When creating an allocation via the API, you can pass the `upgrade_charge`, `downgrade_credit`, and `accrue_charge` to be applied. -> **Note:** These proration and accural fields are ignored for Prepaid Components since this component type always generate charges immediately without proration. +> **Note:** These proration and accrual fields are ignored for Prepaid Components since this component type always generates charges immediately without proration. For information on prorated components and upgrade/downgrade schemes, see [Setting Component Allocations.](https://maxio.zendesk.com/hc/en-us/articles/24251906165133-Component-Allocations-Proration) @@ -419,7 +443,7 @@ For information on prorated components and upgrade/downgrade schemes, see [Setti > **Note:** Proration uses the current price of the component as well as the current tax rates. Changes to either may cause the prorated charge/credit to be wrong. -For more informaiton see the [Component Allocations](https://maxio.zendesk.com/hc/en-us/articles/24251883961485-Component-Allocations-Overview) product Documentation. +For more information, see the [Component Allocations](https://maxio.zendesk.com/hc/en-us/articles/24251883961485-Component-Allocations-Overview) product Documentation. ```python def allocate_component(self, @@ -428,6 +452,10 @@ def allocate_component(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -438,6 +466,8 @@ def allocate_component(self, ## Response Type +**200**: OK + [`AllocationResponse`](../../doc/models/allocation-response.md) ## Example Usage @@ -535,7 +565,7 @@ print(result) # List Allocations -This endpoint returns the 50 most recent Allocations, ordered by most recent first. +Returns the 50 most recent Allocations, ordered by most recent first. ## On/Off Components @@ -548,6 +578,10 @@ def list_allocations(self, page=1) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -558,6 +592,8 @@ def list_allocations(self, ## Response Type +**200**: OK + [`List[AllocationResponse]`](../../doc/models/allocation-response.md) ## Example Usage @@ -632,7 +668,7 @@ print(result) # Allocate Components -Creates multiple allocations, sets the current allocated quantity for each of the components, and recording a memo. A `component_id` is required for each allocation. +Creates multiple allocations, sets the current allocated quantity for each of the components, and records a memo. A `component_id` is required for each allocation. The charges and/or credits that are created will be rolled up into a single total which is used to determine whether this is an upgrade or a downgrade. @@ -650,7 +686,7 @@ The charges and/or credits that are created will be rolled up into a single tota > **Note:** Proration uses the current price of the component as well as the current tax rates. Changes to either may cause the prorated charge/credit to be wrong. -For more informaiton see the [Component Allocations](https://maxio.zendesk.com/hc/en-us/articles/24251883961485-Component-Allocations-Overview) product Documentation. +For more information, see the [Component Allocations](https://maxio.zendesk.com/hc/en-us/articles/24251883961485-Component-Allocations-Overview) product documentation. ```python def allocate_components(self, @@ -658,6 +694,10 @@ def allocate_components(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -667,6 +707,8 @@ def allocate_components(self, ## Response Type +**200**: OK + [`List[AllocationResponse]`](../../doc/models/allocation-response.md) ## Example Usage @@ -751,7 +793,7 @@ print(result) # Preview Allocations -Advanced Billing offers the ability to preview a potential subscription's **quantity-based** or **on/off** component allocation in the middle of the current billing period. This is useful if you want users to be able to see the effect of a component operation before actually doing it. +Previews a potential subscription's **quantity-based** or **on/off** component allocation in the middle of the current billing period. This is useful if you want users to be able to see the effect of a component operation before actually doing it. ## Fine-grained Component Control: Use with multiple `upgrade_charge`s or `downgrade_credits` @@ -765,6 +807,10 @@ def preview_allocations(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -774,6 +820,8 @@ def preview_allocations(self, ## Response Type +**200**: OK + [`AllocationPreviewResponse`](../../doc/models/allocation-preview-response.md) ## Example Usage @@ -914,7 +962,7 @@ print(result) # Update Prepaid Usage Allocation Expiration Date -When the expiration interval options are selected on a prepaid usage component price point, all allocations will be created with an expiration date. This expiration date can be changed after the fact to allow for extending or shortening the allocation's active window. +Updates the expiration date for a prepaid usage allocation. This expiration date can be changed after the fact to allow for extending or shortening the allocation's active window. In order to change a prepaid usage allocation's expiration date, a PUT call must be made to the allocation's endpoint with a new expiration date. @@ -934,6 +982,10 @@ def update_prepaid_usage_allocation_expiration_date(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -945,6 +997,8 @@ def update_prepaid_usage_allocation_expiration_date(self, ## Response Type +**204**: OK + `void` ## Example Usage @@ -980,7 +1034,9 @@ subscription_components_controller.update_prepaid_usage_allocation_expiration_da # Delete Prepaid Usage Allocation -Prepaid Usage components are unique in that their allocations are always additive. In order to reduce a subscription's allocated quantity for a prepaid usage component each allocation must be destroyed individually via this endpoint. +Deletes a prepaid usage allocation. + +Prepaid Usage components are unique in that their allocations are always additive. In order to reduce a subscription's allocated quantity for a prepaid usage component, each allocation must be destroyed individually via this endpoint. ## Credit Scheme @@ -998,6 +1054,10 @@ def delete_prepaid_usage_allocation(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1009,6 +1069,8 @@ def delete_prepaid_usage_allocation(self, ## Response Type +**200**: OK + `void` ## Example Usage @@ -1048,11 +1110,11 @@ You can report metered or prepaid usage to Advanced Billing as often as you wish Full documentation on how to create Components in the Advanced Billing UI can be located [here](https://maxio.zendesk.com/hc/en-us/articles/24261149711501-Create-Edit-and-Archive-Components). Additionally, for information on how to record component usage against a subscription, see the following resources: -It is not possible to record metered usage for more than one component at a time Usage should be reported as one API call per component on a single subscription. For example, to record that a subscriber has sent both an SMS Message and an Email, send an API call for each. +It is not possible to record metered usage for more than one component at a time. Usage should be reported as one API call per component on a single subscription. For example, to record that a subscriber has sent both an SMS Message and an Email, send an API call for each. -See the following product documention articles for more information: +See the following product documentation articles for more information: -- [Create and Manage Components](https://maxio.zendesk.com/hc/en-us/articles/24261149711501-Create-Edit-and-Archive-Components). A +- [Create and Manage Components](https://maxio.zendesk.com/hc/en-us/articles/24261149711501-Create-Edit-and-Archive-Components) - [Recording Metered Component Usage](https://maxio.zendesk.com/hc/en-us/articles/24251890500109-Reporting-Component-Allocations#reporting-metered-component-usage) - [Reporting Prepaid Component Status](https://maxio.zendesk.com/hc/en-us/articles/24251890500109-Reporting-Component-Allocations#reporting-prepaid-component-status) @@ -1101,6 +1163,10 @@ def create_usage(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1111,6 +1177,8 @@ def create_usage(self, ## Response Type +**200**: OK + [`UsageResponse`](../../doc/models/usage-response.md) ## Example Usage @@ -1162,7 +1230,7 @@ print(result) # List Usages -This request will return a list of the usages associated with a subscription for a particular metered component. This will display the previously recorded components for a subscription. +Returns a list of usages associated with a subscription for a particular metered component. This will display the previously recorded components for a subscription. This endpoint is not compatible with quantity-based components. @@ -1183,6 +1251,10 @@ def list_usages(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1198,6 +1270,8 @@ def list_usages(self, ## Response Type +**200**: OK + [`List[UsageResponse]`](../../doc/models/usage-response.md) ## Example Usage @@ -1247,6 +1321,8 @@ print(result) # Activate Event Based Component +Activates an event-based component for a single subscription. + In order to bill your subscribers on your Events data under the Events-Based Billing feature, the components must be activated for the subscriber. Learn more about the role of activation in the [Events-Based Billing docs](https://maxio.zendesk.com/hc/en-us/articles/24260323329805-Events-Based-Billing-Overview). @@ -1262,6 +1338,10 @@ def activate_event_based_component(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1272,6 +1352,8 @@ def activate_event_based_component(self, ## Response Type +**200**: OK + `void` ## Example Usage @@ -1311,7 +1393,7 @@ subscription_components_controller.activate_event_based_component( # Deactivate Event Based Component -Use this endpoint to deactivate an event-based component for a single subscription. Deactivating the event-based component causes Advanced Billing to ignore related events at subscription renewal. +Deactivates an event-based component for a single subscription. Deactivating the event-based component causes Advanced Billing to ignore related events at subscription renewal. ```python def deactivate_event_based_component(self, @@ -1319,6 +1401,10 @@ def deactivate_event_based_component(self, component_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1328,6 +1414,8 @@ def deactivate_event_based_component(self, ## Response Type +**200**: OK + `void` ## Example Usage @@ -1346,6 +1434,8 @@ subscription_components_controller.deactivate_event_based_component( # Record Event +Records a single event for Events-Based Billing. + ## Documentation Events-Based Billing is an evolved form of metered billing that is based on data-rich events streamed in real-time from your system to Advanced Billing. @@ -1373,6 +1463,10 @@ def record_event(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1383,6 +1477,8 @@ def record_event(self, ## Response Type +**201**: Created + `void` ## Example Usage @@ -1406,7 +1502,7 @@ subscription_components_controller.record_event( # Bulk Record Events -Use this endpoint to record a collection of events. +Records a collection of events. *Note: this endpoint differs from the standard Chargify API endpoints in that the subdomain will be `events` and your site subdomain will be included in the URL path.* @@ -1419,6 +1515,10 @@ def bulk_record_events(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1429,6 +1529,8 @@ def bulk_record_events(self, ## Response Type +**201**: Created + `void` ## Example Usage @@ -1454,13 +1556,17 @@ subscription_components_controller.bulk_record_events( # List Subscription Components for Site -This request will list components applied to each subscription. +Lists components applied to each subscription. ```python def list_subscription_components_for_site(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1482,6 +1588,8 @@ def list_subscription_components_for_site(self, ## Response Type +**200**: OK + [`ListSubscriptionComponentsResponse`](../../doc/models/list-subscription-components-response.md) ## Example Usage diff --git a/doc/controllers/subscription-group-invoice-account.md b/doc/controllers/subscription-group-invoice-account.md index bc428adc..20fc67b6 100644 --- a/doc/controllers/subscription-group-invoice-account.md +++ b/doc/controllers/subscription-group-invoice-account.md @@ -18,7 +18,7 @@ subscription_group_invoice_account_controller = client.subscription_group_invoic # Create Subscription Group Prepayment -A prepayment can be added for a subscription group identified by the group's `uid`. This endpoint requires a `amount`, `details`, `method`, and `memo`. On success, the prepayment will be added to the group's prepayment balance. +Adds a prepayment for a subscription group. This endpoint requires an `amount`, `details`, `method`, and `memo`. On success, the prepayment will be added to the group's prepayment balance. ```python def create_subscription_group_prepayment(self, @@ -26,6 +26,10 @@ def create_subscription_group_prepayment(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -35,6 +39,8 @@ def create_subscription_group_prepayment(self, ## Response Type +**200**: OK + [`SubscriptionGroupPrepaymentResponse`](../../doc/models/subscription-group-prepayment-response.md) ## Example Usage @@ -67,13 +73,17 @@ print(result) # List Prepayments for Subscription Group -This request will list a subscription group's prepayments. +Lists a subscription group's prepayments. ```python def list_prepayments_for_subscription_group(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -85,6 +95,8 @@ def list_prepayments_for_subscription_group(self, ## Response Type +**200**: OK + [`ListSubscriptionGroupPrepaymentResponse`](../../doc/models/list-subscription-group-prepayment-response.md) ## Example Usage @@ -135,7 +147,7 @@ print(result) # Issue Subscription Group Service Credit -Credit can be issued for a subscription group identified by the group's `uid`. Credit will be added to the group in the amount specified in the request body. The credit will be applied to group member invoices as they are generated. +Issues service credit for a subscription group. Credit will be added to the group in the amount specified in the request body. The credit will be applied to group member invoices as they are generated. ```python def issue_subscription_group_service_credit(self, @@ -143,6 +155,10 @@ def issue_subscription_group_service_credit(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -152,6 +168,8 @@ def issue_subscription_group_service_credit(self, ## Response Type +**200**: OK + [`ServiceCreditResponse`](../../doc/models/service-credit-response.md) ## Example Usage @@ -196,7 +214,7 @@ print(result) # Deduct Subscription Group Service Credit -Credit can be deducted for a subscription group identified by the group's `uid`. Credit will be deducted from the group in the amount specified in the request body. +Deducts service credit for a subscription group. Credit will be deducted from the group in the amount specified in the request body. ```python def deduct_subscription_group_service_credit(self, @@ -204,6 +222,10 @@ def deduct_subscription_group_service_credit(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -213,6 +235,8 @@ def deduct_subscription_group_service_credit(self, ## Response Type +**201**: Created + [`ServiceCredit`](../../doc/models/service-credit.md) ## Example Usage diff --git a/doc/controllers/subscription-group-status.md b/doc/controllers/subscription-group-status.md index a8287072..b57793e6 100644 --- a/doc/controllers/subscription-group-status.md +++ b/doc/controllers/subscription-group-status.md @@ -28,6 +28,10 @@ def cancel_subscriptions_in_group(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -37,6 +41,8 @@ def cancel_subscriptions_in_group(self, ## Response Type +**200**: OK + `void` ## Example Usage @@ -63,7 +69,7 @@ subscription_group_status_controller.cancel_subscriptions_in_group( # Initiate Delayed Cancellation for Group -This endpoint will schedule all subscriptions within the specified group to be canceled at the end of their billing period. The group is identified by its uid passed in the URL. +Schedules all subscriptions within the specified group to be canceled at the end of their billing period. The group is identified by its uid passed in the URL. All subscriptions in the group must be on automatic billing in order to successfully cancel them, and the group must not be in a "past_due" state. @@ -72,6 +78,10 @@ def initiate_delayed_cancellation_for_group(self, uid) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -80,6 +90,8 @@ def initiate_delayed_cancellation_for_group(self, ## Response Type +**200**: OK + `void` ## Example Usage @@ -99,6 +111,8 @@ subscription_group_status_controller.initiate_delayed_cancellation_for_group(uid # Cancel Delayed Cancellation for Group +Removes the delayed cancellation on a subscription group. + Removing the delayed cancellation on a subscription group will ensure that the subscriptions do not get canceled at the end of the period. The request will reset the `cancel_at_end_of_period` flag to false on each member in the group. ```python @@ -106,6 +120,10 @@ def cancel_delayed_cancellation_for_group(self, uid) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -114,6 +132,8 @@ def cancel_delayed_cancellation_for_group(self, ## Response Type +**200**: OK + `void` ## Example Usage @@ -133,15 +153,15 @@ subscription_group_status_controller.cancel_delayed_cancellation_for_group(uid) # Reactivate Subscription Group -This endpoint will attempt to reactivate or resume a cancelled subscription group. Upon reactivation, any canceled invoices created after the beginning of the primary subscription's billing period will be reopened and payment will be attempted on them. If the subscription group is being reactivated (as opposed to resumed), new charges will also be assessed for the new billing period. +Reactivates or resumes a cancelled subscription group. Upon reactivation, any canceled invoices created after the beginning of the primary subscription's billing period will be reopened and payment will be attempted on them. If the subscription group is being reactivated (as opposed to resumed), new charges will also be assessed for the new billing period. Whether a subscription group is reactivated (a new billing period is created) or resumed (the current billing period is respected) will depend on the parameters that are sent with the request as well as the date of the request relative to the primary subscription's period. ## Reactivating within the current period -If a subscription group is cancelled and reactivated within the primary subscription's current period, we can choose to either start a new billing period or maintain the existing one. If we want to maintain the existing billing period the `resume=true` option must be passed in request parameters. +If a subscription group is cancelled and reactivated within the primary subscription's current period, we can choose to either start a new billing period or maintain the existing one. If we want to maintain the existing billing period, the `resume=true` option must be passed in request parameters. -An exception to the above are subscriptions that are on calendar billing. These subscriptions cannot be reactivated within the current period. If the `resume=true` option is not passed the request will return an error. +An exception to the above are subscriptions that are on calendar billing. These subscriptions cannot be reactivated within the current period. If the `resume=true` option is not passed, the request will return an error. The `resume_members` option is ignored in this case. All eligible group members will be automatically resumed. @@ -153,12 +173,22 @@ Member subscriptions can have billing periods that are longer than the primary ( For calendar billing subscriptions, the new billing period created will be a partial one, spanning from the date of reactivation to the next corresponding calendar renewal date. +## 3D Secure (3DS) Authentication post-authentication flow + +When a payment requires 3DS Authentication to adhere to Strong Customer Authentication (SCA), the request enters a post-authentication flow where a 422 Unprocessable Entity status is returned with an action_link that will direct the customer through 3DS Authentication. + +See the [3D Secure Post-Authentication Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Post-Authentication-Flow) article in the product documentation to learn how to manage the redirect flow. + ```python def reactivate_subscription_group(self, uid, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -168,6 +198,8 @@ def reactivate_subscription_group(self, ## Response Type +**200**: OK + [`ReactivateSubscriptionGroupResponse`](../../doc/models/reactivate-subscription-group-response.md) ## Example Usage diff --git a/doc/controllers/subscription-groups.md b/doc/controllers/subscription-groups.md index 712905a1..e787e77c 100644 --- a/doc/controllers/subscription-groups.md +++ b/doc/controllers/subscription-groups.md @@ -10,7 +10,7 @@ subscription_groups_controller = client.subscription_groups ## Methods -* [Signup With Subscription Group](../../doc/controllers/subscription-groups.md#signup-with-subscription-group) +* [Signup with Subscription Group](../../doc/controllers/subscription-groups.md#signup-with-subscription-group) * [Create Subscription Group](../../doc/controllers/subscription-groups.md#create-subscription-group) * [List Subscription Groups](../../doc/controllers/subscription-groups.md#list-subscription-groups) * [Read Subscription Group](../../doc/controllers/subscription-groups.md#read-subscription-group) @@ -18,12 +18,12 @@ subscription_groups_controller = client.subscription_groups * [Delete Subscription Group](../../doc/controllers/subscription-groups.md#delete-subscription-group) * [Find Subscription Group](../../doc/controllers/subscription-groups.md#find-subscription-group) * [Add Subscription to Group](../../doc/controllers/subscription-groups.md#add-subscription-to-group) -* [Remove Subscription From Group](../../doc/controllers/subscription-groups.md#remove-subscription-from-group) +* [Remove Subscription from Group](../../doc/controllers/subscription-groups.md#remove-subscription-from-group) -# Signup With Subscription Group +# Signup with Subscription Group -Create multiple subscriptions at once under the same customer and consolidate them into a subscription group. +Creates multiple subscriptions at once under the same customer and consolidates them into a subscription group. You must provide one and only one of the `payer_id`/`payer_reference`/`payer_attributes` for the customer attached to the group. @@ -31,15 +31,19 @@ You must provide one and only one of the `payment_profile_id`/`credit_card_attri Only one of the `subscriptions` can have `"primary": true` attribute set. -When passing product to a subscription you can use either `product_id` or `product_handle` or `offer_id`. You can also use `custom_price` instead. +When passing a product to a subscription you can use either `product_id` or `product_handle` or `offer_id`. You can also use `custom_price` instead. The subscription request examples below will be split into two sections. -The first section, "Subscription Customization", will focus on passing different information with a subscription, such as components, calendar billing, and custom fields. These examples will presume you are using a secure chargify_token generated by Chargify.js. +The first section, "Subscription Customization", will focus on passing different information with a subscription, such as components, calendar billing, and custom fields. These examples will presume you are using a secure chargify_token generated by Maxio.js (formerly Chargify.js). ```python def signup_with_subscription_group(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -48,6 +52,8 @@ def signup_with_subscription_group(self, ## Response Type +**201**: Created + [`SubscriptionGroupSignupResponse`](../../doc/models/subscription-group-signup-response.md) ## Example Usage @@ -94,6 +100,10 @@ def create_subscription_group(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -102,6 +112,8 @@ def create_subscription_group(self, ## Response Type +**200**: OK + [`SubscriptionGroupResponse`](../../doc/models/subscription-group-response.md) ## Example Usage @@ -167,6 +179,10 @@ def list_subscription_groups(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -177,6 +193,8 @@ def list_subscription_groups(self, ## Response Type +**200**: OK + [`ListSubscriptionGroupsResponse`](../../doc/models/list-subscription-groups-response.md) ## Example Usage @@ -234,7 +252,7 @@ print(result) # Read Subscription Group -Use this endpoint to find subscription group details. +Returns subscription group details. #### Current Billing Amount in Cents @@ -246,6 +264,10 @@ def read_subscription_group(self, include=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -255,6 +277,8 @@ def read_subscription_group(self, ## Response Type +**200**: OK + [`FullSubscriptionGroupResponse`](../../doc/models/full-subscription-group-response.md) ## Example Usage @@ -318,8 +342,8 @@ print(result) # Update Subscription Group Members -Use this endpoint to update subscription group members. -`"member_ids"` should contain an array of both subscription IDs to set as group members and subscription IDs already present in the groups. Not including them will result in removing them from subscription group. To clean up members, just leave the array empty. +Updates subscription group members. +`"member_ids"` should contain an array of both subscription IDs to set as group members and subscription IDs already present in the groups. Not including them will result in removing them from the subscription group. To clean up members, just leave the array empty. ```python def update_subscription_group_members(self, @@ -327,6 +351,10 @@ def update_subscription_group_members(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -336,6 +364,8 @@ def update_subscription_group_members(self, ## Response Type +**200**: OK + [`SubscriptionGroupResponse`](../../doc/models/subscription-group-response.md) ## Example Usage @@ -398,6 +428,10 @@ def delete_subscription_group(self, uid) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -406,6 +440,8 @@ def delete_subscription_group(self, ## Response Type +**200**: OK + [`DeleteSubscriptionGroupResponse`](../../doc/models/delete-subscription-group-response.md) ## Example Usage @@ -435,15 +471,19 @@ print(result) # Find Subscription Group -Use this endpoint to find subscription group associated with subscription. +Finds the subscription group associated with a subscription. -If the subscription is not in a group endpoint will return 404 code. +If the subscription is not in a group, the endpoint will return a 404 code. ```python def find_subscription_group(self, subscription_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -452,6 +492,8 @@ def find_subscription_group(self, ## Response Type +**200**: OK + [`FullSubscriptionGroupResponse`](../../doc/models/full-subscription-group-response.md) ## Example Usage @@ -534,6 +576,10 @@ def add_subscription_to_group(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -543,6 +589,8 @@ def add_subscription_to_group(self, ## Response Type +**200**: OK + [`SubscriptionGroupResponse`](../../doc/models/subscription-group-response.md) ## Example Usage @@ -594,15 +642,19 @@ print(result) ``` -# Remove Subscription From Group +# Remove Subscription from Group -For sites making use of the [Relationship Billing](https://maxio.zendesk.com/hc/en-us/articles/24252287829645-Advanced-Billing-Invoices-Overview) and [Customer Hierarchy](https://maxio.zendesk.com/hc/en-us/articles/24252185211533-Customer-Hierarchies-WhoPays#customer-hierarchies) features, it is possible to remove existing subscription from subscription group. +For sites making use of the [Relationship Billing](https://maxio.zendesk.com/hc/en-us/articles/24252287829645-Advanced-Billing-Invoices-Overview) and [Customer Hierarchy](https://maxio.zendesk.com/hc/en-us/articles/24252185211533-Customer-Hierarchies-WhoPays#customer-hierarchies) features, it is possible to remove an existing subscription from a subscription group. ```python def remove_subscription_from_group(self, subscription_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -611,6 +663,8 @@ def remove_subscription_from_group(self, ## Response Type +**204**: No Content + `void` ## Example Usage diff --git a/doc/controllers/subscription-invoice-account.md b/doc/controllers/subscription-invoice-account.md index d6893b6b..a0876e2c 100644 --- a/doc/controllers/subscription-invoice-account.md +++ b/doc/controllers/subscription-invoice-account.md @@ -28,6 +28,10 @@ def read_account_balances(self, subscription_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -36,6 +40,8 @@ def read_account_balances(self, ## Response Type +**200**: OK + [`AccountBalances`](../../doc/models/account-balances.md) ## Example Usage @@ -50,7 +56,7 @@ print(result) # Create Prepayment -## Create Prepayment +Creates a prepayment for a subscription. In order to specify a prepayment made against a subscription, specify the `amount, memo, details, method`. @@ -58,12 +64,22 @@ When the `method` specified is `"credit_card_on_file"`, the prepayment amount wi Note that passing `amount_in_cents` is now allowed. +## 3D Secure (3DS) Authentication post-authentication flow + +When a payment requires 3DS Authentication to adhere to Strong Customer Authentication (SCA), the request enters a post-authentication flow where a 422 Unprocessable Entity status is returned with an action_link that will direct the customer through 3DS Authentication. + +See the [3D Secure Post-Authentication Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Post-Authentication-Flow) article in the product documentation to learn how to manage the redirect flow. + ```python def create_prepayment(self, subscription_id, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -73,6 +89,8 @@ def create_prepayment(self, ## Response Type +**201**: Created + [`CreatePrepaymentResponse`](../../doc/models/create-prepayment-response.md) ## Example Usage @@ -121,13 +139,17 @@ print(result) # List Prepayments -This request will list a subscription's prepayments. +Lists a subscription's prepayments. ```python def list_prepayments(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -139,6 +161,8 @@ def list_prepayments(self, ## Response Type +**200**: OK + [`PrepaymentsResponse`](../../doc/models/prepayments-response.md) ## Example Usage @@ -188,7 +212,7 @@ print(result) # Issue Service Credit -Credit will be added to the subscription in the amount specified in the request body. The credit is subsequently applied to the next generated invoice. +Adds a service credit to the subscription in the specified amount. The credit is subsequently applied to the next generated invoice. ```python def issue_service_credit(self, @@ -196,6 +220,10 @@ def issue_service_credit(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -205,6 +233,8 @@ def issue_service_credit(self, ## Response Type +**201**: Created + [`ServiceCredit`](../../doc/models/service-credit.md) ## Example Usage @@ -246,7 +276,7 @@ print(result) # Deduct Service Credit -Credit will be removed from the subscription in the amount specified in the request body. The credit amount being deducted must be equal to or less than the current credit balance. +Deducts a service credit from the subscription in the specified amount. The credit amount being deducted must be equal to or less than the current credit balance. ```python def deduct_service_credit(self, @@ -254,6 +284,10 @@ def deduct_service_credit(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -263,6 +297,8 @@ def deduct_service_credit(self, ## Response Type +**201**: OK + `void` ## Example Usage @@ -292,7 +328,7 @@ subscription_invoice_account_controller.deduct_service_credit( # List Service Credits -This request will list a subscription's service credits. +Lists a subscription's service credits. ```python def list_service_credits(self, @@ -302,6 +338,10 @@ def list_service_credits(self, direction=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -313,6 +353,8 @@ def list_service_credits(self, ## Response Type +**200**: OK + [`ListServiceCreditsResponse`](../../doc/models/list-service-credits-response.md) ## Example Usage @@ -371,7 +413,7 @@ print(result) # Refund Prepayment -This endpoint will refund, completely or partially, a particular prepayment applied to a subscription. The `prepayment_id` will be the account transaction ID of the original payment. The prepayment must have some amount remaining in order to be refunded. +Refunds a prepayment applied to a subscription, either fully or partially. The `prepayment_id` will be the account transaction ID of the original payment. The prepayment must have some amount remaining in order to be refunded. The amount may be passed either as a decimal, with `amount`, or an integer in cents, with `amount_in_cents`. @@ -382,6 +424,10 @@ def refund_prepayment(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -392,6 +438,8 @@ def refund_prepayment(self, ## Response Type +**201**: Created + [`PrepaymentResponse`](../../doc/models/prepayment-response.md) ## Example Usage diff --git a/doc/controllers/subscription-notes.md b/doc/controllers/subscription-notes.md index c8a1279a..afc3d8ca 100644 --- a/doc/controllers/subscription-notes.md +++ b/doc/controllers/subscription-notes.md @@ -19,7 +19,7 @@ subscription_notes_controller = client.subscription_notes # Create Subscription Note -Use the following method to create a note for a subscription. +Creates a note for a subscription. ## How to Use Subscription Notes @@ -35,6 +35,10 @@ def create_subscription_note(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -44,6 +48,8 @@ def create_subscription_note(self, ## Response Type +**200**: OK + [`SubscriptionNoteResponse`](../../doc/models/subscription-note-response.md) ## Example Usage @@ -74,13 +80,17 @@ print(result) # List Subscription Notes -Use this method to retrieve a list of Notes associated with a Subscription. The response will be an array of Notes. +Retrieves a list of notes associated with a subscription. The response will be an array of Notes. ```python def list_subscription_notes(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -91,6 +101,8 @@ def list_subscription_notes(self, ## Response Type +**200**: OK + [`List[SubscriptionNoteResponse]`](../../doc/models/subscription-note-response.md) ## Example Usage @@ -141,7 +153,7 @@ print(result) # Read Subscription Note -Once you have obtained the ID of the note you wish to read, use this method to show a particular note attached to a subscription. +Retrieves a specific note attached to a subscription. ```python def read_subscription_note(self, @@ -149,6 +161,10 @@ def read_subscription_note(self, note_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -158,6 +174,8 @@ def read_subscription_note(self, ## Response Type +**200**: OK + [`SubscriptionNoteResponse`](../../doc/models/subscription-note-response.md) ## Example Usage @@ -192,7 +210,7 @@ print(result) # Update Subscription Note -Use the following method to update a note for a Subscription. +Updates a note for a subscription. ```python def update_subscription_note(self, @@ -201,6 +219,10 @@ def update_subscription_note(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -211,6 +233,8 @@ def update_subscription_note(self, ## Response Type +**200**: OK + [`SubscriptionNoteResponse`](../../doc/models/subscription-note-response.md) ## Example Usage @@ -252,6 +276,10 @@ def delete_subscription_note(self, note_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -261,6 +289,8 @@ def delete_subscription_note(self, ## Response Type +**200**: OK + `void` ## Example Usage diff --git a/doc/controllers/subscription-products.md b/doc/controllers/subscription-products.md index bf98aeba..626ab985 100644 --- a/doc/controllers/subscription-products.md +++ b/doc/controllers/subscription-products.md @@ -16,6 +16,8 @@ subscription_products_controller = client.subscription_products # Migrate Subscription Product +Migrates a subscription to a different product. + In order to create a migration, you must pass the `product_id` or `product_handle` in the object when you send a POST request. You may also pass either a `product_price_point_id` or `product_price_point_handle` to choose which price point the subscription is moved to. If no price point identifier is passed the subscription will be moved to the products default price point. The response will be the updated subscription. ## Valid Subscriptions @@ -30,48 +32,13 @@ Full documentation on how to record Migrations in the Advanced Billing UI can be ## Failed Migrations -Importaint note: One of the most common ways that a migration can fail is when the attempt is made to migrate a subscription to its current product. - -## Migration 3D Secure - Stripe - -When a payment requires 3D Secure Authentication to adhear to Strong Customer Authentication (SCA) when the subscription is migrated to a new product, the request enters a [post-authentication flow](https://maxio.zendesk.com/hc/en-us/articles/24176278996493-Testing-Implementing-3D-Secure#psd2-flows-pre-authentication-and-post-authentication). The server returns `422 Unprocessable Entity` in this case with the following response: - -```json -{ - "errors": [ - "Your card was declined. This transaction requires 3D secure authentication." - ], - "gateway_payment_id": "pi_1F0aGoJ2UDb3Q4av7zU3sHPh", - "description": "This card requires 3D secure authentication. Redirect the customer to the URL from the action_link attribute to authenticate. Attach callback_url param to this URL if you want to be notified about the result of 3D Secure authentication. Attach redirect_url param to this URL if you want to redirect a customer back to your page after 3D Secure authentication. Example: https://mysite.chargify.com/3d-secure/pi_1FCm4RKDeye4C0XfbqquXRYm?one_time_token_id=128&callback_url=https://localhost:4000&redirect_url=https://yourpage.com will do a POST request to https://localhost:4000 after payment is authenticated and will redirect a customer to https://yourpage.com after 3DS authentication.", - "action_link": "http://acme.chargify.com/3d-secure/pi_1F0aGoJ2UDb3Q4av7zU3sHPh?one_time_token_id=242" -} -``` - -To let the customer go through 3D Secure Authentication, they need to be redirected to the URL specified in `action_link`. -Optionally, you can specify `callback_url` parameter in the `action_link` URL if you’d like to be notified about the result of 3D Secure Authentication. The `callback_url` will return the following information: - -- whether the authentication was successful (`success`) -- the gateway ID for the payment (`gateway_payment_id`) -- the subscription ID (`subscription_id`) +Important note: One of the most common ways that a migration can fail is when the attempt is made to migrate a subscription to its current product. -Lastly, you can also specify a `redirect_url` within the `action_link` URL if you’d like to redirect a customer back to your site. +## 3D Secure (3DS) Authentication post-authentication flow -It is not possible to use `action_link` in an iframe inside a custom application. You have to redirect the customer directly to the `action_link`, then, to be notified about the result, use `redirect_url` or `callback_url`. +When a payment requires 3DS Authentication to adhere to Strong Customer Authentication (SCA), the request enters a post-authentication flow where a 422 Unprocessable Entity status is returned with an action_link that will direct the customer through 3DS Authentication. -The final URL that you send a customer to to complete 3D Secure may resemble the following, where the first half is the `action_link` and the second half contains a `redirect_url` and `callback_url`: `https://mysite.chargify.com/3d-secure/pi_1FCm4RKDeye4C0XfbqquXRYm?one_time_token_id=128&callback_url=https://localhost:4000&redirect_url=https://yourpage.com` - -### Example Redirect Flow - -You may wish to redirect customers to different pages depending on whether SCA was performed successfully. Here's an example flow to use as a reference: - -1. Create a migration via API; it requires 3DS -2. You receive a `gateway_payment_id` in the `action_link` along other params in the response. -3. Use this `gateway_payment_id` to, for example, connect with your internal resources or generate a session_id -4. Include 1 of those attributes inside the `callback_url` and `redirect_url` to be aware which “session” this applies to -5. Redirect the customer to the `action_link` with `callback_url` and `redirect_url` applied -6. After the customer finishes 3DS authentication, we let you know the result by making a request to applied `callback_url`. -7. After that, we redirect the customer to the `redirect_url`; at this point the result of authentication is known -8. Optionally, you can use the applied "msg" param in the `redirect_url` to determine whether it was successful or not. +See the [3D Secure Post-Authentication Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Post-Authentication-Flow) article in the product documentation to learn how to manage the redirect flow. ```python def migrate_subscription_product(self, @@ -79,6 +46,10 @@ def migrate_subscription_product(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -88,6 +59,8 @@ def migrate_subscription_product(self, ## Response Type +**200**: OK + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -245,9 +218,11 @@ print(result) # Preview Subscription Product Migration +Previews the charges resulting from migrating a subscription to a different product. + ## Previewing a future date -It is also possible to preview the migration for a date in the future, as long as it's still within the subscription's current billing period, by passing a `proration_date` along with the request (eg: `"proration_date": "2020-12-18T18:25:43.511Z"`). +It is also possible to preview the migration for a date in the future, as long as it's still within the subscription's current billing period, by passing a `proration_date` along with the request (e.g., `"proration_date": "2020-12-18T18:25:43.511Z"`). This will calculate the prorated adjustment, charge, payment and credit applied values assuming the migration is done at that date in the future as opposed to right now. @@ -257,6 +232,10 @@ def preview_subscription_product_migration(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -266,6 +245,8 @@ def preview_subscription_product_migration(self, ## Response Type +**200**: OK + [`SubscriptionMigrationPreviewResponse`](../../doc/models/subscription-migration-preview-response.md) ## Example Usage diff --git a/doc/controllers/subscription-renewals.md b/doc/controllers/subscription-renewals.md index 73239529..53a2d5e7 100644 --- a/doc/controllers/subscription-renewals.md +++ b/doc/controllers/subscription-renewals.md @@ -33,6 +33,10 @@ def create_scheduled_renewal_configuration(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -42,6 +46,8 @@ def create_scheduled_renewal_configuration(self, ## Response Type +**201**: Created + [`ScheduledRenewalConfigurationResponse`](../../doc/models/scheduled-renewal-configuration-response.md) ## Example Usage @@ -125,6 +131,10 @@ def list_scheduled_renewal_configurations(self, status=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -134,6 +144,8 @@ def list_scheduled_renewal_configurations(self, ## Response Type +**200**: OK + [`ScheduledRenewalConfigurationsResponse`](../../doc/models/scheduled-renewal-configurations-response.md) ## Example Usage @@ -201,6 +213,10 @@ def read_scheduled_renewal_configuration(self, id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -210,6 +226,8 @@ def read_scheduled_renewal_configuration(self, ## Response Type +**200**: OK + [`ScheduledRenewalConfigurationResponse`](../../doc/models/scheduled-renewal-configuration-response.md) ## Example Usage @@ -281,6 +299,10 @@ def update_scheduled_renewal_configuration(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -291,6 +313,8 @@ def update_scheduled_renewal_configuration(self, ## Response Type +**200**: OK + [`ScheduledRenewalConfigurationResponse`](../../doc/models/scheduled-renewal-configuration-response.md) ## Example Usage @@ -377,6 +401,10 @@ def schedule_scheduled_renewal_lock_in(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -387,6 +415,8 @@ def schedule_scheduled_renewal_lock_in(self, ## Response Type +**200**: OK + [`ScheduledRenewalConfigurationResponse`](../../doc/models/scheduled-renewal-configuration-response.md) ## Example Usage @@ -468,6 +498,10 @@ def lock_in_scheduled_renewal_immediately(self, id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -477,6 +511,8 @@ def lock_in_scheduled_renewal_immediately(self, ## Response Type +**200**: OK + [`ScheduledRenewalConfigurationResponse`](../../doc/models/scheduled-renewal-configuration-response.md) ## Example Usage @@ -552,6 +588,10 @@ def unpublish_scheduled_renewal_configuration(self, id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -561,6 +601,8 @@ def unpublish_scheduled_renewal_configuration(self, ## Response Type +**200**: OK + [`ScheduledRenewalConfigurationResponse`](../../doc/models/scheduled-renewal-configuration-response.md) ## Example Usage @@ -628,6 +670,10 @@ def cancel_scheduled_renewal_configuration(self, id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -637,6 +683,8 @@ def cancel_scheduled_renewal_configuration(self, ## Response Type +**200**: OK + [`ScheduledRenewalConfigurationResponse`](../../doc/models/scheduled-renewal-configuration-response.md) ## Example Usage @@ -705,6 +753,10 @@ def create_scheduled_renewal_configuration_item(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -715,6 +767,8 @@ def create_scheduled_renewal_configuration_item(self, ## Response Type +**201**: Created + [`ScheduledRenewalConfigurationItemResponse`](../../doc/models/scheduled-renewal-configuration-item-response.md) ## Example Usage @@ -788,6 +842,10 @@ def update_scheduled_renewal_configuration_item(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -799,6 +857,8 @@ def update_scheduled_renewal_configuration_item(self, ## Response Type +**200**: OK + [`ScheduledRenewalConfigurationItemResponse`](../../doc/models/scheduled-renewal-configuration-item-response.md) ## Example Usage @@ -874,6 +934,10 @@ def delete_scheduled_renewal_configuration_item(self, id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -884,6 +948,8 @@ def delete_scheduled_renewal_configuration_item(self, ## Response Type +**204**: No Content + `void` ## Example Usage diff --git a/doc/controllers/subscription-status.md b/doc/controllers/subscription-status.md index 1140e220..186894be 100644 --- a/doc/controllers/subscription-status.md +++ b/doc/controllers/subscription-status.md @@ -24,21 +24,23 @@ subscription_status_controller = client.subscription_status # Retry Subscription -Advanced Billing offers the ability to retry collecting the balance due on a past due Subscription without waiting for the next scheduled attempt. +Retries collecting the balance due on a past-due subscription without waiting for the next scheduled attempt. -## Successful Reactivation +## 3D Secure (3DS) Authentication post-authentication flow -The response will be `200 OK` with the updated Subscription. +When a payment requires 3DS Authentication to adhere to Strong Customer Authentication (SCA), the request enters a post-authentication flow where a 422 Unprocessable Entity status is returned with an action_link that will direct the customer through 3DS Authentication. -## Failed Reactivation - -The response will be `422 "Unprocessable Entity`. +See the [3D Secure Post-Authentication Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Post-Authentication-Flow) article in the product documentation to learn how to manage the redirect flow. ```python def retry_subscription(self, subscription_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -47,6 +49,8 @@ def retry_subscription(self, ## Response Type +**200**: OK + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -212,6 +216,10 @@ def cancel_subscription(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -221,6 +229,8 @@ def cancel_subscription(self, ## Response Type +**200**: OK + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -378,7 +388,7 @@ print(result) # Resume Subscription -Resume a paused (on-hold) subscription. If the normal next renewal date has not passed, the subscription will return to active and will renew on that date. Otherwise, it will behave like a reactivation, setting the billing date to 'now' and charging the subscriber. +Resumes a paused (on-hold) subscription. If the normal next renewal date has not passed, the subscription will return to active and will renew on that date. Otherwise, it will behave like a reactivation, setting the billing date to 'now' and charging the subscriber. ```python def resume_subscription(self, @@ -386,6 +396,10 @@ def resume_subscription(self, calendar_billing_resumption_charge="prorated") ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -395,6 +409,8 @@ def resume_subscription(self, ## Response Type +**200**: OK + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -524,7 +540,7 @@ print(result) # Pause Subscription -This will place the subscription in the on_hold state and it will not renew. +Places the subscription on hold, preventing it from renewing. ## Limitations @@ -536,6 +552,10 @@ def pause_subscription(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -545,6 +565,8 @@ def pause_subscription(self, ## Response Type +**200**: OK + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -683,13 +705,13 @@ print(result) # Update Automatic Subscription Resumption -Once a subscription has been paused / put on hold, you can update the date which was specified to automatically resume the subscription. +Updates the date on which a paused subscription will automatically resume. To update a subscription's resume date, use this method to change or update the `automatically_resume_at` date. ### Remove the resume date -Alternately, you can change the `automatically_resume_at` to `null` if you would like the subscription to not have a resume date. +Alternatively, you can change the `automatically_resume_at` to `null` if you would like the subscription to not have a resume date. ```python def update_automatic_subscription_resumption(self, @@ -697,6 +719,10 @@ def update_automatic_subscription_resumption(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -706,6 +732,8 @@ def update_automatic_subscription_resumption(self, ## Response Type +**200**: OK + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -855,7 +883,7 @@ print(result) # Reactivate Subscription -Reactivate a previously canceled subscription. For details on how the reactivation works, and how to reactivate subscriptions through the application, see [reactivation](https://maxio.zendesk.com/hc/en-us/articles/24252109503629-Reactivating-and-Resuming). +Reactivates a previously canceled subscription. For details on how the reactivation works, and how to reactivate subscriptions through the application, see [reactivation](https://maxio.zendesk.com/hc/en-us/articles/24252109503629-Reactivating-and-Resuming). **Note: The term "resume" is used also during another process in Advanced Billing. This occurs when an on-hold subscription is "resumed". This returns the subscription to an active state.** @@ -876,7 +904,7 @@ If a reactivation with `resume: true` were attempted _before_ what would have be If a reactivation with `resume: true` were attempted _after_ what would have been the next billing date of July 1st, then Advanced Billing would not resume the subscription, and instead it would be reactivated with a new billing period. -If a reactivation with `resume: false`, or where 'resume" is omited were attempted, then Advanced Billing would reactivate the subscription with a new billing period regardless of whether or not resuming the previous billing period were possible. +If a reactivation with `resume: false`, or where 'resume' is omitted were attempted, then Advanced Billing would reactivate the subscription with a new billing period regardless of whether or not resuming the previous billing period was possible. | Canceled | Reactivation | Resumable? | |---|---|---| @@ -1016,12 +1044,22 @@ PUT request sent to: + The next billing date should not have changed + Any product-related charges should have been collected +## 3D Secure (3DS) Authentication post-authentication flow + +When a payment requires 3DS Authentication to adhere to Strong Customer Authentication (SCA), the request enters a post-authentication flow where a 422 Unprocessable Entity status is returned with an action_link that will direct the customer through 3DS Authentication. + +See the [3D Secure Post-Authentication Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Post-Authentication-Flow) article in the product documentation to learn how to manage the redirect flow. + ```python def reactivate_subscription(self, subscription_id, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1031,6 +1069,8 @@ def reactivate_subscription(self, ## Response Type +**200**: OK + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -1183,6 +1223,10 @@ def initiate_delayed_cancellation(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1192,6 +1236,8 @@ def initiate_delayed_cancellation(self, ## Response Type +**200**: OK + [`DelayedCancellationResponse`](../../doc/models/delayed-cancellation-response.md) ## Example Usage @@ -1213,7 +1259,7 @@ print(result) # Cancel Delayed Cancellation -Removing the delayed cancellation on a subscription will ensure that it doesn't get canceled at the end of the period that it is in. The request will reset the `cancel_at_end_of_period` flag to `false`. +Removes the delayed cancellation from a subscription, ensuring it is not canceled at the end of the current period. The request will reset the `cancel_at_end_of_period` flag to `false`. This endpoint is idempotent. If the subscription was not set to cancel in the future, removing the delayed cancellation has no effect and the call will be successful. @@ -1222,6 +1268,10 @@ def cancel_delayed_cancellation(self, subscription_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1230,6 +1280,8 @@ def cancel_delayed_cancellation(self, ## Response Type +**200**: OK + [`DelayedCancellationResponse`](../../doc/models/delayed-cancellation-response.md) ## Example Usage @@ -1258,13 +1310,17 @@ print(result) # Cancel Dunning -If a subscription is currently in dunning, the subscription will be set to active and the active Dunner will be resolved. +Cancels the active dunning process for a subscription and sets it to active. ```python def cancel_dunning(self, subscription_id) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1273,6 +1329,8 @@ def cancel_dunning(self, ## Response Type +**200**: OK + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -1293,7 +1351,7 @@ print(result) # Preview Renewal -The Chargify API allows you to preview a renewal by posting to the renewals endpoint. Renewal Preview is an object representing a subscription’s next assessment. You can retrieve it to see a snapshot of how much your customer will be charged on their next renewal. +Previews a subscription’s next renewal assessment. Renewal Preview is an object representing a subscription’s next assessment. You can retrieve it to see a snapshot of how much your customer will be charged on their next renewal. The "Next Billing" amount and "Next Billing" date are already represented in the UI on each Subscriber's Summary. For more information, see our documentation [here](https://maxio.zendesk.com/hc/en-us/articles/24252493695757-Subscriber-Interface-Overview). @@ -1322,6 +1380,10 @@ def preview_renewal(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1331,6 +1393,8 @@ def preview_renewal(self, ## Response Type +**200**: OK + [`RenewalPreviewResponse`](../../doc/models/renewal-preview-response.md) ## Example Usage diff --git a/doc/controllers/subscriptions.md b/doc/controllers/subscriptions.md index e4c470ae..fce8608b 100644 --- a/doc/controllers/subscriptions.md +++ b/doc/controllers/subscriptions.md @@ -20,33 +20,45 @@ subscriptions_controller = client.subscriptions * [Update Prepaid Subscription Configuration](../../doc/controllers/subscriptions.md#update-prepaid-subscription-configuration) * [Preview Subscription](../../doc/controllers/subscriptions.md#preview-subscription) * [Apply Coupons to Subscription](../../doc/controllers/subscriptions.md#apply-coupons-to-subscription) -* [Remove Coupon From Subscription](../../doc/controllers/subscriptions.md#remove-coupon-from-subscription) +* [Remove Coupon from Subscription](../../doc/controllers/subscriptions.md#remove-coupon-from-subscription) * [Activate Subscription](../../doc/controllers/subscriptions.md#activate-subscription) # Create Subscription -Creates a Subscription for a customer and product +Creates a Subscription for a customer and product. -Specify the product with `product_id` or `product_handle`. To set a specific product pricepPoint, use `product_price_point_handle` or `product_price_point_id`. +Specify the product with `product_id` or `product_handle`. To set a specific product price point, use `product_price_point_handle` or `product_price_point_id`. Identify an existing customer with `customer_id` or `customer_reference`. Optionally, include an existing payment profile using `payment_profile_id`. To create a new customer, pass customer_attributes. Select an option from the **Request Examples** drop-down on the right side of the portal to see examples of common scenarios for creating subscriptions. +See the [Subscription Signups](page:introduction/basic-concepts/subscription-signup) article for more information on working with subscriptions in Advanced Billing. + +## Payment information + Payment information may be required to create a subscription, depending on the options for the Product being subscribed. See [product options](https://docs.maxio.com/hc/en-us/articles/24261076617869-Edit-Products) for more information. See the [Payments Profile](../../doc/controllers/payment-profiles.md#create-payment-profile) endpoint for details on payment parameters. Do not use real card information for testing. See the Sites articles that cover [testing your site setup](https://docs.maxio.com/hc/en-us/articles/24250712113165-Testing-Overview#testing-overview-0-0) for more details on testing in your sandbox. -Note that collecting and sending raw card details in production requires [PCI compliance](https://docs.maxio.com/hc/en-us/articles/24183956938381-PCI-Compliance#pci-compliance-0-0) on your end. If your business is not PCI compliant, use [Chargify.js](https://docs.maxio.com/hc/en-us/articles/38163190843789-Chargify-js-Overview#chargify-js-overview-0-0) to collect credit card or bank account information. +Note that collecting and sending raw card details in production requires [PCI compliance](https://docs.maxio.com/hc/en-us/articles/24183956938381-PCI-Compliance#pci-compliance-0-0) on your end. If your business is not PCI compliant, use [Maxio.js (formerly Chargify.js)](https://docs.maxio.com/hc/en-us/articles/38163190843789-Chargify-js-Overview#chargify-js-overview-0-0) to collect credit card or bank account information. -See the [Subscription Signups](page:introduction/basic-concepts/subscription-signup) article for more information on working with subscriptions in Advanced Billing. +## 3D Secure (3DS) Authentication post-authentication flow + +When a payment requires 3DS Authentication to adhere to Strong Customer Authentication (SCA), the request enters a post-authentication flow where a 422 Unprocessable Entity status is returned with an action_link that will direct the customer through 3DS Authentication. + +See the [3D Secure Post-Authentication Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Post-Authentication-Flow) article in the product documentation to learn how to manage the redirect flow. ```python def create_subscription(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -55,6 +67,8 @@ def create_subscription(self, ## Response Type +**201**: Created + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -235,7 +249,7 @@ print(result) # List Subscriptions -returns an array of subscriptions from a Site. Pay close attention to query string filters and pagination in order to control responses from the server. +Returns an array of subscriptions from a Site. Pay close attention to query string filters and pagination in order to control responses from the server. ## Search for a subscription @@ -250,6 +264,10 @@ def list_subscriptions(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -273,6 +291,8 @@ def list_subscriptions(self, ## Response Type +**200**: OK + [`List[SubscriptionResponse]`](../../doc/models/subscription-response.md) ## Example Usage @@ -331,21 +351,21 @@ You can also perform a delayed change to the price point by passing in either `p ## Billing Date Changes -You can update dates for a subscrption. +You can update dates for a subscription. ### Regular Billing Date Changes Send the `next_billing_at` to set the next billing date for the subscription. After that date passes and the subscription is processed, the following billing date will be set according to the subscription's product period. -> Note: If you pass an invalid date, the correct date is automatically set to he correct date. For example, if February 30 is passed, the next billing would be set to March 2nd in a non-leap year. +> Note: If you pass an invalid date, the correct date is automatically set to the correct date. For example, if February 30 is passed, the next billing would be set to March 2nd in a non-leap year. The server response will not return data under the key/value pair of `next_billing_at`. View the key/value pair of `current_period_ends_at` to verify that the `next_billing_at` date has been changed successfully. -### Calendar Billing and Snap Day Changes +### Calendar Billing and Snap Day Changes For a subscription using Calendar Billing, setting the next billing date is a bit different. Send the `snap_day` attribute to change the calendar billing date for **a subscription using a product eligible for calendar billing**. -> Note: If you change the product associated with a subscription that contains a `snap_day` and immediately `READ/GET` the subscription data, it will still contain original `snap_day`. The `snap_day`will will reset to 'null on the next billing cycle. This is because a product change is instantanous and only affects the product associated with a subscription. +> Note: If you change the product associated with a subscription that contains a `snap_day` and immediately `READ/GET` the subscription data, it will still contain original `snap_day`. The `snap_day` will reset to null on the next billing cycle. This is because a product change is instantaneous and only affects the product associated with a subscription. ```python def update_subscription(self, @@ -353,6 +373,10 @@ def update_subscription(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -362,6 +386,8 @@ def update_subscription(self, ## Response Type +**200**: OK + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -514,6 +540,10 @@ def read_subscription(self, include=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -523,6 +553,8 @@ def read_subscription(self, ## Response Type +**200**: OK + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -684,7 +716,7 @@ print(result) # Override Subscription -This API endpoint allows you to set certain subscription fields that are usually managed for you automatically. Some of the fields can be set via the normal Subscriptions Update API, but others can only be set using this endpoint. +Sets certain subscription fields that are usually managed automatically. Some of the fields can be set via the normal Subscriptions Update API, but others can only be set using this endpoint. This endpoint is provided for cases where you need to “align” Advanced Billing data with data that happened in your system, perhaps before you started using Advanced Billing. For example, you may choose to import your historical subscription data, and would like the activation and cancellation dates in Advanced Billing to match your existing historical dates. Advanced Billing does not backfill historical events (i.e. from the Events API), but some static data can be changed via this API. @@ -710,6 +742,10 @@ def override_subscription(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -719,6 +755,8 @@ def override_subscription(self, ## Response Type +**204**: No Content + `void` ## Example Usage @@ -750,13 +788,17 @@ subscriptions_controller.override_subscription( # Find Subscription -Use this endpoint to find a subscription by its reference. +Finds a subscription by its reference. ```python def find_subscription(self, reference=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -765,6 +807,8 @@ def find_subscription(self, ## Response Type +**200**: OK + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -783,7 +827,7 @@ print(result) # Purge Subscription -For sites in test mode, you may purge individual subscriptions. +Purges an individual subscription for sites in test mode. Provide the subscription ID in the url. To confirm, supply the customer ID in the query string `ack` parameter. You may also delete the customer record and/or payment profiles by passing `cascade` parameters. For example, to delete just the customer record, the query params would be: `?ack={customer_id}&cascade[]=customer` @@ -800,6 +844,10 @@ def purge_subscription(self, cascade=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -810,6 +858,8 @@ def purge_subscription(self, ## Response Type +**200**: OK + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -841,7 +891,7 @@ print(result) # Update Prepaid Subscription Configuration -Use this endpoint to update a subscription's prepaid configuration. +Updates a subscription's prepaid configuration. ```python def update_prepaid_subscription_configuration(self, @@ -849,6 +899,10 @@ def update_prepaid_subscription_configuration(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -858,6 +912,8 @@ def update_prepaid_subscription_configuration(self, ## Response Type +**200**: OK + [`PrepaidConfigurationResponse`](../../doc/models/prepaid-configuration-response.md) ## Example Usage @@ -904,7 +960,7 @@ print(result) # Preview Subscription -The Chargify API allows you to preview a subscription by POSTing the same JSON or XML as for a subscription creation. +Previews a subscription by POSTing the same JSON or XML as for a subscription creation. The "Next Billing" amount and "Next Billing" date are represented in each Subscriber's Summary. @@ -935,6 +991,10 @@ def preview_subscription(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -943,6 +1003,8 @@ def preview_subscription(self, ## Response Type +**200**: OK + [`SubscriptionPreviewResponse`](../../doc/models/subscription-preview-response.md) ## Example Usage @@ -1083,6 +1145,8 @@ print(result) # Apply Coupons to Subscription +Applies one or more coupon codes to an existing subscription. + An existing subscription can accommodate multiple discounts/coupon codes. This is only applicable if each coupon is stackable. For more information on stackable coupons, we recommend reviewing our [coupon documentation.](https://maxio.zendesk.com/hc/en-us/articles/24261259337101-Coupons-and-Subscriptions#stackability-rules) ## Query Parameters vs Request Body Parameters @@ -1098,6 +1162,10 @@ def apply_coupons_to_subscription(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1108,6 +1176,8 @@ def apply_coupons_to_subscription(self, ## Response Type +**200**: OK + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage @@ -1286,11 +1356,11 @@ print(result) | 422 | Unprocessable Entity (WebDAV) | [`SubscriptionAddCouponErrorException`](../../doc/models/subscription-add-coupon-error-exception.md) | -# Remove Coupon From Subscription +# Remove Coupon from Subscription -Use this endpoint to remove a coupon from an existing subscription. +Removes a coupon from an existing subscription. -For more information on the expected behaviour of removing a coupon from a subscription, See our documentation [here.](https://maxio.zendesk.com/hc/en-us/articles/24261259337101-Coupons-and-Subscriptions#removing-a-coupon) +For more information on the expected behavior of removing a coupon from a subscription, see our documentation [here.](https://maxio.zendesk.com/hc/en-us/articles/24261259337101-Coupons-and-Subscriptions#removing-a-coupon) ```python def remove_coupon_from_subscription(self, @@ -1298,6 +1368,10 @@ def remove_coupon_from_subscription(self, coupon_code=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1307,6 +1381,8 @@ def remove_coupon_from_subscription(self, ## Response Type +**200**: OK + `str` ## Example Usage @@ -1333,7 +1409,7 @@ print(result) # Activate Subscription -Advanced Billing offers the ability to activate awaiting signup and trialing subscriptions. This feature is only available on the Relationship Invoicing architecture. Subscriptions in a group may not be activated immediately. +Activates awaiting signup and trialing subscriptions. This feature is only available on the Relationship Invoicing architecture. Subscriptions in a group may not be activated immediately. For details on how the activation works, and how to activate subscriptions through the application, see [activation](#). @@ -1383,6 +1459,10 @@ def activate_subscription(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -1392,6 +1472,8 @@ def activate_subscription(self, ## Response Type +**200**: OK + [`SubscriptionResponse`](../../doc/models/subscription-response.md) ## Example Usage diff --git a/doc/controllers/webhooks.md b/doc/controllers/webhooks.md index 80d5527f..d8e3fdc5 100644 --- a/doc/controllers/webhooks.md +++ b/doc/controllers/webhooks.md @@ -20,13 +20,17 @@ webhooks_controller = client.webhooks # List Webhooks -Allows you to view a list of webhooks. You can pass query parameters if you want to filter webhooks. See the [Webhooks](page:introduction/webhooks/webhooks) documentation for more information. +Retrieves a list of webhooks. You can pass query parameters if you want to filter webhooks. See the [Webhooks](page:introduction/webhooks/webhooks) documentation for more information. ```python def list_webhooks(self, options=dict()) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -41,6 +45,8 @@ def list_webhooks(self, ## Response Type +**201**: OK + [`List[WebhookResponse]`](../../doc/models/webhook-response.md) ## Example Usage @@ -96,13 +102,17 @@ print(result) # Enable Webhooks -Allows you to enable webhooks for your site +Enables webhooks for your site. ```python def enable_webhooks(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -111,6 +121,8 @@ def enable_webhooks(self, ## Response Type +**200**: OK + [`EnableWebhooksResponse`](../../doc/models/enable-webhooks-response.md) ## Example Usage @@ -144,6 +156,10 @@ def replay_webhooks(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -152,6 +168,8 @@ def replay_webhooks(self, ## Response Type +**200**: OK + [`ReplayWebhooksResponse`](../../doc/models/replay-webhooks-response.md) ## Example Usage @@ -181,7 +199,7 @@ print(result) # Create Endpoint -Creates an endpoint and assigns a list of webhooks subscriptions (events) to it. +Creates an endpoint and assigns a list of webhook subscriptions (events) to it. See the [Webhooks Reference](page:introduction/webhooks/webhooks-reference#events) page for available events. ```python @@ -189,6 +207,10 @@ def create_endpoint(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -197,6 +219,8 @@ def create_endpoint(self, ## Response Type +**200**: OK + [`EndpointResponse`](../../doc/models/endpoint-response.md) ## Example Usage @@ -207,7 +231,8 @@ body = CreateOrUpdateEndpointRequest( url='https://your.site/webhooks', webhook_subscriptions=[ WebhookSubscription.PAYMENT_SUCCESS, - WebhookSubscription.PAYMENT_FAILURE + WebhookSubscription.PAYMENT_FAILURE, + WebhookSubscription.INVOICE_PENDING ] ) ) @@ -229,7 +254,8 @@ print(result) "status": "enabled", "webhook_subscriptions": [ "payment_success", - "payment_failure" + "payment_failure", + "invoice_pending" ] } } @@ -250,8 +276,14 @@ Returns created endpoints for a site. def list_endpoints(self) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Response Type +**200**: OK + [`List[Endpoint]`](../../doc/models/endpoint.md) ## Example Usage @@ -272,7 +304,8 @@ print(result) "status": "enabled", "webhook_subscriptions": [ "payment_success", - "payment_failure" + "payment_failure", + "invoice_pending" ] }, { @@ -296,7 +329,7 @@ Updates an Endpoint. You can change the `url` of your endpoint or the list of `w Always send a complete list of events to which you want to subscribe. Sending a PUT request for an existing endpoint with an empty list of `webhook_subscriptions` will unsubscribe all events. -If you want unsubscribe from a specific event, send a list of `webhook_subscriptions` without the specific event key. +If you want to unsubscribe from a specific event, send a list of `webhook_subscriptions` without the specific event key. ```python def update_endpoint(self, @@ -304,6 +337,10 @@ def update_endpoint(self, body=None) ``` +## Authentication + +This endpoint requires [BasicAuth](../../doc/auth/basic-authentication.md) + ## Parameters | Parameter | Type | Tags | Description | @@ -313,6 +350,8 @@ def update_endpoint(self, ## Response Type +**200**: OK + [`EndpointResponse`](../../doc/models/endpoint-response.md) ## Example Usage @@ -326,7 +365,8 @@ body = CreateOrUpdateEndpointRequest( webhook_subscriptions=[ WebhookSubscription.PAYMENT_FAILURE, WebhookSubscription.PAYMENT_SUCCESS, - WebhookSubscription.REFUND_FAILURE + WebhookSubscription.REFUND_FAILURE, + WebhookSubscription.INVOICE_PENDING ] ) ) diff --git a/doc/models/activate-event-based-component.md b/doc/models/activate-event-based-component.md index 5938f472..c20e32ee 100644 --- a/doc/models/activate-event-based-component.md +++ b/doc/models/activate-event-based-component.md @@ -10,7 +10,7 @@ | Name | Type | Tags | Description | | --- | --- | --- | --- | | `price_point_id` | `int` | Optional | The Chargify id of the price point | -| `billing_schedule` | [`BillingSchedule`](../../doc/models/billing-schedule.md) | Optional | This attribute is particularly useful when you need to align billing events for different components on distinct schedules within a subscription. This only works for site with Multifrequency enabled. | +| `billing_schedule` | [`BillingSchedule`](../../doc/models/billing-schedule.md) | Optional | Billing schedule settings for component allocations or usages on multi-frequency subscriptions. Use this to start a component's billing period on a custom date instead of aligning with the product charge schedule. | | `custom_price` | [`ComponentCustomPrice`](../../doc/models/component-custom-price.md) | Optional | Create or update custom pricing unique to the subscription. Used in place of `price_point_id`. | ## Example (as JSON) diff --git a/doc/models/bank-account-payment-profile.md b/doc/models/bank-account-payment-profile.md index aa1e9be4..cd17fe6a 100644 --- a/doc/models/bank-account-payment-profile.md +++ b/doc/models/bank-account-payment-profile.md @@ -14,7 +14,7 @@ | `last_name` | `str` | Optional | The last name of the bank account holder | | `customer_id` | `int` | Optional | The Chargify-assigned id for the customer record to which the bank account belongs | | `current_vault` | [`BankAccountVault`](../../doc/models/bank-account-vault.md) | Optional | The vault that stores the payment profile with the provided vault_token. Use `bogus` for testing. | -| `vault_token` | `str` | Optional | The “token” provided by your vault storage for an already stored payment profile | +| `vault_token` | `str` | Optional | The "token" provided by your vault storage for an already stored payment profile | | `billing_address` | `str` | Optional | The current billing street address for the bank account | | `billing_city` | `str` | Optional | The current billing address city for the bank account | | `billing_state` | `str` | Optional | The current billing address state for the bank account | @@ -23,8 +23,8 @@ | `customer_vault_token` | `str` | Optional | (only for Authorize.Net CIM storage): the customerProfileId for the owner of the customerPaymentProfileId provided as the vault_token. | | `billing_address_2` | `str` | Optional | The current billing street address, second line, for the bank account | | `bank_name` | `str` | Optional | The bank where the account resides | -| `masked_bank_routing_number` | `str` | Optional | A string representation of the stored bank routing number with all but the last 4 digits marked with X’s (i.e. ‘XXXXXXX1111’). payment_type will be bank_account | -| `masked_bank_account_number` | `str` | Required | A string representation of the stored bank account number with all but the last 4 digits marked with X’s (i.e. ‘XXXXXXX1111’) | +| `masked_bank_routing_number` | `str` | Optional | A string representation of the stored bank routing number with all but the last 4 digits marked with X's (i.e. 'XXXXXXX1111'). payment_type will be bank_account | +| `masked_bank_account_number` | `str` | Optional | A string representation of the stored bank account number with all but the last 4 digits marked with X's (i.e. 'XXXXXXX1111') | | `bank_account_type` | [`BankAccountType`](../../doc/models/bank-account-type.md) | Optional | Defaults to checking | | `bank_account_holder_type` | [`BankAccountHolderType`](../../doc/models/bank-account-holder-type.md) | Optional | Defaults to personal | | `payment_type` | [`PaymentType`](../../doc/models/payment-type.md) | Required | **Default**: `"bank_account"` | @@ -38,7 +38,6 @@ ```json { - "masked_bank_account_number": "masked_bank_account_number8", "payment_type": "bank_account", "verified": false, "id": 188, diff --git a/doc/models/bank-account-response.md b/doc/models/bank-account-response.md index 6c1a92a0..6b72b302 100644 --- a/doc/models/bank-account-response.md +++ b/doc/models/bank-account-response.md @@ -16,7 +16,6 @@ ```json { "payment_profile": { - "masked_bank_account_number": "masked_bank_account_number6", "payment_type": "bank_account", "verified": false, "id": 44, diff --git a/doc/models/billing-schedule.md b/doc/models/billing-schedule.md index 2af9d195..9c0a428d 100644 --- a/doc/models/billing-schedule.md +++ b/doc/models/billing-schedule.md @@ -1,7 +1,7 @@ # Billing Schedule -This attribute is particularly useful when you need to align billing events for different components on distinct schedules within a subscription. This only works for site with Multifrequency enabled. +Billing schedule settings for component allocations or usages on multi-frequency subscriptions. Use this to start a component's billing period on a custom date instead of aligning with the product charge schedule. ## Structure @@ -11,13 +11,13 @@ This attribute is particularly useful when you need to align billing events for | Name | Type | Tags | Description | | --- | --- | --- | --- | -| `initial_billing_at` | `date` | Optional | The initial_billing_at attribute in Maxio allows you to specify a custom starting date for billing cycles associated with components that have their own billing frequency set. Only ISO8601 format is supported. | +| `initial_billing_at` | `date` | Optional | Custom start date (ISO 8601 date, YYYY-MM-DD) for the component's first billing period. If omitted or null, billing aligns with the product schedule. If provided, date must be on or after the minimum allowed date for the subscription or component. | ## Example (as JSON) ```json { - "initial_billing_at": "2024-01-01" + "initial_billing_at": "2026-01-01" } ``` diff --git a/doc/models/containers/allocation-preview-item-previous-quantity.md b/doc/models/containers/allocation-preview-item-previous-quantity.md index 671cbe11..f8d06f77 100644 --- a/doc/models/containers/allocation-preview-item-previous-quantity.md +++ b/doc/models/containers/allocation-preview-item-previous-quantity.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/allocation-preview-item-quantity.md b/doc/models/containers/allocation-preview-item-quantity.md index a6952a4d..a4f462d9 100644 --- a/doc/models/containers/allocation-preview-item-quantity.md +++ b/doc/models/containers/allocation-preview-item-quantity.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/allocation-previous-quantity.md b/doc/models/containers/allocation-previous-quantity.md index ff82f8d8..ab9808a4 100644 --- a/doc/models/containers/allocation-previous-quantity.md +++ b/doc/models/containers/allocation-previous-quantity.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/allocation-quantity.md b/doc/models/containers/allocation-quantity.md index 918a8a9d..0514f763 100644 --- a/doc/models/containers/allocation-quantity.md +++ b/doc/models/containers/allocation-quantity.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/archive-component-price-point-component-id.md b/doc/models/containers/archive-component-price-point-component-id.md index 8fe9bdef..b840b48e 100644 --- a/doc/models/containers/archive-component-price-point-component-id.md +++ b/doc/models/containers/archive-component-price-point-component-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/archive-component-price-point-price-point-id.md b/doc/models/containers/archive-component-price-point-price-point-id.md index 59419dba..a1e18542 100644 --- a/doc/models/containers/archive-component-price-point-price-point-id.md +++ b/doc/models/containers/archive-component-price-point-price-point-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/archive-product-price-point-price-point-id.md b/doc/models/containers/archive-product-price-point-price-point-id.md index 06241c13..f1a8aaa1 100644 --- a/doc/models/containers/archive-product-price-point-price-point-id.md +++ b/doc/models/containers/archive-product-price-point-price-point-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/archive-product-price-point-product-id.md b/doc/models/containers/archive-product-price-point-product-id.md index 9a345db6..6bdc1806 100644 --- a/doc/models/containers/archive-product-price-point-product-id.md +++ b/doc/models/containers/archive-product-price-point-product-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/calendar-billing-snap-day.md b/doc/models/containers/calendar-billing-snap-day.md index c07e74cf..6f0a8ad4 100644 --- a/doc/models/containers/calendar-billing-snap-day.md +++ b/doc/models/containers/calendar-billing-snap-day.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/clone-component-price-point-component-id.md b/doc/models/containers/clone-component-price-point-component-id.md index 33f25a9e..35823f97 100644 --- a/doc/models/containers/clone-component-price-point-component-id.md +++ b/doc/models/containers/clone-component-price-point-component-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/clone-component-price-point-price-point-id.md b/doc/models/containers/clone-component-price-point-price-point-id.md index 510a343a..0f06dd45 100644 --- a/doc/models/containers/clone-component-price-point-price-point-id.md +++ b/doc/models/containers/clone-component-price-point-price-point-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/component-allocation-change-allocated-quantity.md b/doc/models/containers/component-allocation-change-allocated-quantity.md index d8423464..c9145bdc 100644 --- a/doc/models/containers/component-allocation-change-allocated-quantity.md +++ b/doc/models/containers/component-allocation-change-allocated-quantity.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/component-price-point-assignment-price-point.md b/doc/models/containers/component-price-point-assignment-price-point.md index 0a4d0fab..effd9c5e 100644 --- a/doc/models/containers/component-price-point-assignment-price-point.md +++ b/doc/models/containers/component-price-point-assignment-price-point.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/coupon-payload-percentage.md b/doc/models/containers/coupon-payload-percentage.md index af7c8923..652831f0 100644 --- a/doc/models/containers/coupon-payload-percentage.md +++ b/doc/models/containers/coupon-payload-percentage.md @@ -12,3 +12,23 @@ | `str` | | `float` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/create-allocation-price-point-id.md b/doc/models/containers/create-allocation-price-point-id.md index 0405532e..fc01c448 100644 --- a/doc/models/containers/create-allocation-price-point-id.md +++ b/doc/models/containers/create-allocation-price-point-id.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/create-component-price-point-request-price-point.md b/doc/models/containers/create-component-price-point-request-price-point.md index 1832c26a..e600b1ad 100644 --- a/doc/models/containers/create-component-price-point-request-price-point.md +++ b/doc/models/containers/create-component-price-point-request-price-point.md @@ -12,3 +12,46 @@ | [`CreateComponentPricePoint`](../../../doc/models/create-component-price-point.md) | | [`CreatePrepaidUsageComponentPricePoint`](../../../doc/models/create-prepaid-usage-component-price-point.md) | +## CreateComponentPricePoint + +### Initialization Code + +#### Example + +```python +value = CreateComponentPricePoint( + name='name0', + pricing_scheme=PricingScheme.PER_UNIT, + prices=[ + Price( + starting_quantity=242, + unit_price=23.26 + ) + ], + use_site_exchange_rate=True +) +``` + +## CreatePrepaidUsageComponentPricePoint + +### Initialization Code + +#### Example + +```python +value = CreatePrepaidUsageComponentPricePoint( + name='name0', + pricing_scheme=PricingScheme.PER_UNIT, + prices=[ + Price( + starting_quantity=242, + unit_price=23.26 + ) + ], + overage_pricing=OveragePricing( + pricing_scheme=PricingScheme.STAIRSTEP + ), + use_site_exchange_rate=True +) +``` + diff --git a/doc/models/containers/create-component-price-points-request-price-points.md b/doc/models/containers/create-component-price-points-request-price-points.md index 6c4e227c..9e858d45 100644 --- a/doc/models/containers/create-component-price-points-request-price-points.md +++ b/doc/models/containers/create-component-price-points-request-price-points.md @@ -12,3 +12,46 @@ | [`CreateComponentPricePoint`](../../../doc/models/create-component-price-point.md) | | [`CreatePrepaidUsageComponentPricePoint`](../../../doc/models/create-prepaid-usage-component-price-point.md) | +## CreateComponentPricePoint + +### Initialization Code + +#### Example + +```python +value = CreateComponentPricePoint( + name='name0', + pricing_scheme=PricingScheme.PER_UNIT, + prices=[ + Price( + starting_quantity=242, + unit_price=23.26 + ) + ], + use_site_exchange_rate=True +) +``` + +## CreatePrepaidUsageComponentPricePoint + +### Initialization Code + +#### Example + +```python +value = CreatePrepaidUsageComponentPricePoint( + name='name0', + pricing_scheme=PricingScheme.PER_UNIT, + prices=[ + Price( + starting_quantity=242, + unit_price=23.26 + ) + ], + overage_pricing=OveragePricing( + pricing_scheme=PricingScheme.STAIRSTEP + ), + use_site_exchange_rate=True +) +``` + diff --git a/doc/models/containers/create-invoice-coupon-amount.md b/doc/models/containers/create-invoice-coupon-amount.md index 61b74a4a..65c4c35d 100644 --- a/doc/models/containers/create-invoice-coupon-amount.md +++ b/doc/models/containers/create-invoice-coupon-amount.md @@ -12,3 +12,23 @@ | `str` | | `float` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/create-invoice-coupon-percentage.md b/doc/models/containers/create-invoice-coupon-percentage.md index c2fed0a7..4ccf1933 100644 --- a/doc/models/containers/create-invoice-coupon-percentage.md +++ b/doc/models/containers/create-invoice-coupon-percentage.md @@ -12,3 +12,23 @@ | `str` | | `float` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/create-invoice-coupon-product-family-id.md b/doc/models/containers/create-invoice-coupon-product-family-id.md index 9f22b665..7761b335 100644 --- a/doc/models/containers/create-invoice-coupon-product-family-id.md +++ b/doc/models/containers/create-invoice-coupon-product-family-id.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/create-invoice-item-component-id.md b/doc/models/containers/create-invoice-item-component-id.md index f887bb71..2ea4b224 100644 --- a/doc/models/containers/create-invoice-item-component-id.md +++ b/doc/models/containers/create-invoice-item-component-id.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/create-invoice-item-price-point-id.md b/doc/models/containers/create-invoice-item-price-point-id.md index 24317372..7a1a1806 100644 --- a/doc/models/containers/create-invoice-item-price-point-id.md +++ b/doc/models/containers/create-invoice-item-price-point-id.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/create-invoice-item-product-id.md b/doc/models/containers/create-invoice-item-product-id.md index e0052893..0fdc7fe4 100644 --- a/doc/models/containers/create-invoice-item-product-id.md +++ b/doc/models/containers/create-invoice-item-product-id.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/create-invoice-item-product-price-point-id.md b/doc/models/containers/create-invoice-item-product-price-point-id.md index db46dd7c..41cd05c1 100644 --- a/doc/models/containers/create-invoice-item-product-price-point-id.md +++ b/doc/models/containers/create-invoice-item-product-price-point-id.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/create-invoice-item-quantity.md b/doc/models/containers/create-invoice-item-quantity.md index 46ff6021..4f48e209 100644 --- a/doc/models/containers/create-invoice-item-quantity.md +++ b/doc/models/containers/create-invoice-item-quantity.md @@ -12,3 +12,23 @@ | `float` | | `str` | +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/create-invoice-item-unit-price.md b/doc/models/containers/create-invoice-item-unit-price.md index bb9311d6..609de6bf 100644 --- a/doc/models/containers/create-invoice-item-unit-price.md +++ b/doc/models/containers/create-invoice-item-unit-price.md @@ -12,3 +12,23 @@ | `float` | | `str` | +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/create-invoice-payment-amount.md b/doc/models/containers/create-invoice-payment-amount.md index bb92961e..bea4891f 100644 --- a/doc/models/containers/create-invoice-payment-amount.md +++ b/doc/models/containers/create-invoice-payment-amount.md @@ -12,3 +12,23 @@ | `str` | | `float` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/create-metafields-request-metafields.md b/doc/models/containers/create-metafields-request-metafields.md index e5233302..0cc3dc17 100644 --- a/doc/models/containers/create-metafields-request-metafields.md +++ b/doc/models/containers/create-metafields-request-metafields.md @@ -12,3 +12,39 @@ | [`CreateMetafield`](../../../doc/models/create-metafield.md) | | [`List[CreateMetafield]`](../../../doc/models/create-metafield.md) | +## CreateMetafield + +### Initialization Code + +#### Example + +```python +value = CreateMetafield( + name='my_field', + scope=MetafieldScope( + csv=IncludeOption.EXCLUDE, + invoices=IncludeOption.EXCLUDE, + statements=IncludeOption.EXCLUDE, + portal=IncludeOption.EXCLUDE, + public_show=IncludeOption.EXCLUDE, + public_edit=IncludeOption.EXCLUDE + ), + input_type=MetafieldInput.TEXT, + enum=[ + 'string' + ] +) +``` + +## List[CreateMetafield] + +### Initialization Code + +#### Example + +```python +value = [ + CreateMetafield() +] +``` + diff --git a/doc/models/containers/create-multi-invoice-payment-amount.md b/doc/models/containers/create-multi-invoice-payment-amount.md index cbff20b4..0506ac44 100644 --- a/doc/models/containers/create-multi-invoice-payment-amount.md +++ b/doc/models/containers/create-multi-invoice-payment-amount.md @@ -12,3 +12,23 @@ | `str` | | `float` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/create-or-update-segment-price-unit-price.md b/doc/models/containers/create-or-update-segment-price-unit-price.md index 8b72d260..63a9ee2b 100644 --- a/doc/models/containers/create-or-update-segment-price-unit-price.md +++ b/doc/models/containers/create-or-update-segment-price-unit-price.md @@ -12,3 +12,23 @@ | `str` | | `float` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/create-payment-profile-expiration-month.md b/doc/models/containers/create-payment-profile-expiration-month.md index 65f6a6a6..d98b7282 100644 --- a/doc/models/containers/create-payment-profile-expiration-month.md +++ b/doc/models/containers/create-payment-profile-expiration-month.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/create-payment-profile-expiration-year.md b/doc/models/containers/create-payment-profile-expiration-year.md index 31b49f86..d8519581 100644 --- a/doc/models/containers/create-payment-profile-expiration-year.md +++ b/doc/models/containers/create-payment-profile-expiration-year.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/create-product-price-point-product-id.md b/doc/models/containers/create-product-price-point-product-id.md index dd4b847c..8a7a81a3 100644 --- a/doc/models/containers/create-product-price-point-product-id.md +++ b/doc/models/containers/create-product-price-point-product-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/create-segment-segment-property-1-value.md b/doc/models/containers/create-segment-segment-property-1-value.md index a094684a..32c0c3a5 100644 --- a/doc/models/containers/create-segment-segment-property-1-value.md +++ b/doc/models/containers/create-segment-segment-property-1-value.md @@ -14,3 +14,43 @@ | `int` | | `bool` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## bool + +### Initialization Code + +#### Example + +```python +value = False +``` + diff --git a/doc/models/containers/create-segment-segment-property-2-value.md b/doc/models/containers/create-segment-segment-property-2-value.md index 251565e7..cc29d1ad 100644 --- a/doc/models/containers/create-segment-segment-property-2-value.md +++ b/doc/models/containers/create-segment-segment-property-2-value.md @@ -14,3 +14,43 @@ | `int` | | `bool` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## bool + +### Initialization Code + +#### Example + +```python +value = False +``` + diff --git a/doc/models/containers/create-segment-segment-property-3-value.md b/doc/models/containers/create-segment-segment-property-3-value.md index 892101e8..f96da601 100644 --- a/doc/models/containers/create-segment-segment-property-3-value.md +++ b/doc/models/containers/create-segment-segment-property-3-value.md @@ -14,3 +14,43 @@ | `int` | | `bool` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## bool + +### Initialization Code + +#### Example + +```python +value = False +``` + diff --git a/doc/models/containers/create-segment-segment-property-4-value.md b/doc/models/containers/create-segment-segment-property-4-value.md index dc45aef1..4b4bb982 100644 --- a/doc/models/containers/create-segment-segment-property-4-value.md +++ b/doc/models/containers/create-segment-segment-property-4-value.md @@ -14,3 +14,43 @@ | `int` | | `bool` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## bool + +### Initialization Code + +#### Example + +```python +value = False +``` + diff --git a/doc/models/containers/create-subscription-component-allocated-quantity.md b/doc/models/containers/create-subscription-component-allocated-quantity.md index 1f2af9db..3f81e45e 100644 --- a/doc/models/containers/create-subscription-component-allocated-quantity.md +++ b/doc/models/containers/create-subscription-component-allocated-quantity.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/create-subscription-component-component-id.md b/doc/models/containers/create-subscription-component-component-id.md index 25b33d92..171e3004 100644 --- a/doc/models/containers/create-subscription-component-component-id.md +++ b/doc/models/containers/create-subscription-component-component-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/create-subscription-component-price-point-id.md b/doc/models/containers/create-subscription-component-price-point-id.md index 86849091..d3ee0e75 100644 --- a/doc/models/containers/create-subscription-component-price-point-id.md +++ b/doc/models/containers/create-subscription-component-price-point-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/create-subscription-offer-id.md b/doc/models/containers/create-subscription-offer-id.md index e1ceab5e..95363e5e 100644 --- a/doc/models/containers/create-subscription-offer-id.md +++ b/doc/models/containers/create-subscription-offer-id.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/create-usage-component-id.md b/doc/models/containers/create-usage-component-id.md index 5111bf29..ee448b18 100644 --- a/doc/models/containers/create-usage-component-id.md +++ b/doc/models/containers/create-usage-component-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/create-usage-subscription-id-or-reference.md b/doc/models/containers/create-usage-subscription-id-or-reference.md index 5180df9e..1d299cea 100644 --- a/doc/models/containers/create-usage-subscription-id-or-reference.md +++ b/doc/models/containers/create-usage-subscription-id-or-reference.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/customer-error-response-errors.md b/doc/models/containers/customer-error-response-errors.md index eac50436..234d479b 100644 --- a/doc/models/containers/customer-error-response-errors.md +++ b/doc/models/containers/customer-error-response-errors.md @@ -12,3 +12,25 @@ | [`CustomerError`](../../../doc/models/customer-error.md) | | `List[str]` | +## CustomerError + +### Initialization Code + +#### Example + +```python +value = CustomerError() +``` + +## List[str] + +### Initialization Code + +#### Example + +```python +value = [ + 'String1' +] +``` + diff --git a/doc/models/containers/deduct-service-credit-amount.md b/doc/models/containers/deduct-service-credit-amount.md index a5bb5399..8eab2253 100644 --- a/doc/models/containers/deduct-service-credit-amount.md +++ b/doc/models/containers/deduct-service-credit-amount.md @@ -12,3 +12,23 @@ | `str` | | `float` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/ebb-component-unit-price.md b/doc/models/containers/ebb-component-unit-price.md index 781f3cd2..fba02a69 100644 --- a/doc/models/containers/ebb-component-unit-price.md +++ b/doc/models/containers/ebb-component-unit-price.md @@ -12,3 +12,23 @@ | `str` | | `float` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/event-event-specific-data.md b/doc/models/containers/event-event-specific-data.md index 1fae19f9..79aadbfa 100644 --- a/doc/models/containers/event-event-specific-data.md +++ b/doc/models/containers/event-event-specific-data.md @@ -28,3 +28,318 @@ | [`ItemPricePointChanged`](../../../doc/models/item-price-point-changed.md) | | [`CustomFieldValueChange`](../../../doc/models/custom-field-value-change.md) | +## SubscriptionProductChange + +### Initialization Code + +#### Example + +```python +value = SubscriptionProductChange( + previous_product_id=126, + new_product_id=12 +) +``` + +## SubscriptionStateChange + +### Initialization Code + +#### Example + +```python +value = SubscriptionStateChange( + previous_subscription_state='previous_subscription_state2', + new_subscription_state='new_subscription_state6' +) +``` + +## PaymentRelatedEvents + +### Initialization Code + +#### Example + +```python +value = PaymentRelatedEvents( + product_id=42, + account_transaction_id=58 +) +``` + +## RefundSuccess + +### Initialization Code + +#### Example + +```python +value = RefundSuccess( + refund_id=12, + gateway_transaction_id=182, + product_id=168 +) +``` + +## ComponentAllocationChange + +### Initialization Code + +#### Example + +```python +value = ComponentAllocationChange( + previous_allocation=94, + new_allocation=102, + component_id=88, + component_handle='component_handle8', + memo='memo2', + allocation_id=158 +) +``` + +## MeteredUsage + +### Initialization Code + +#### Example + +```python +value = MeteredUsage( + previous_unit_balance='previous_unit_balance6', + new_unit_balance=80, + usage_quantity=42, + component_id=4, + component_handle='component_handle8', + memo='memo2' +) +``` + +## PrepaidUsage + +### Initialization Code + +#### Example + +```python +value = PrepaidUsage( + previous_unit_balance='previous_unit_balance0', + previous_overage_unit_balance='previous_overage_unit_balance4', + new_unit_balance=252, + new_overage_unit_balance=224, + usage_quantity=214, + overage_usage_quantity=106, + component_id=176, + component_handle='component_handle4', + memo='memo8', + allocation_details=[ + PrepaidUsageAllocationDetail() + ] +) +``` + +## DunningStepReached + +### Initialization Code + +#### Example + +```python +value = DunningStepReached( + dunner=DunnerData( + state='state8', + subscription_id=194, + revenue_at_risk_in_cents=98, + created_at=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + attempts=42, + last_attempted_at=dateutil.parser.parse('2016-03-13T12:52:32.123Z') + ), + current_step=DunningStepData( + day_threshold=198, + action='action4', + send_email=False, + send_bcc_email=False, + send_sms=False + ), + next_step=DunningStepData( + day_threshold=30, + action='action4', + send_email=False, + send_bcc_email=False, + send_sms=False + ) +) +``` + +## InvoiceIssued + +### Initialization Code + +#### Example + +```python +value = InvoiceIssued( + uid='uid4', + number='number8', + role='role2', + due_date=dateutil.parser.parse('2016-03-13').date(), + issue_date='issue_date0', + paid_date='paid_date6', + due_amount='due_amount6', + paid_amount='paid_amount4', + tax_amount='tax_amount2', + refund_amount='refund_amount0', + total_amount='total_amount0', + status_amount='status_amount4', + product_name='product_name0', + consolidation_level='consolidation_level4', + line_items=[ + InvoiceLineItemEventData() + ] +) +``` + +## PendingCancellationChange + +### Initialization Code + +#### Example + +```python +value = PendingCancellationChange( + cancellation_state='cancellation_state8', + cancels_at=dateutil.parser.parse('2016-03-13T12:52:32.123Z') +) +``` + +## PrepaidSubscriptionBalanceChanged + +### Initialization Code + +#### Example + +```python +value = PrepaidSubscriptionBalanceChanged( + reason='reason8', + current_account_balance_in_cents=250, + prepayment_account_balance_in_cents=44, + current_usage_amount_in_cents=242 +) +``` + +## ProformaInvoiceIssued + +### Initialization Code + +#### Example + +```python +value = ProformaInvoiceIssued( + uid='uid0', + number='number2', + role='role6', + delivery_date=dateutil.parser.parse('2016-03-13').date(), + created_at=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + due_amount='due_amount2', + paid_amount='paid_amount8', + tax_amount='tax_amount6', + total_amount='total_amount6', + product_name='product_name6', + line_items=[ + InvoiceLineItemEventData() + ] +) +``` + +## SubscriptionGroupSignupEventData + +### Initialization Code + +#### Example + +```python +value = SubscriptionGroupSignupEventData( + subscription_group=SubscriptionGroupSignupFailureData(), + customer=Customer() +) +``` + +## CreditAccountBalanceChanged + +### Initialization Code + +#### Example + +```python +value = CreditAccountBalanceChanged( + reason='reason8', + service_credit_account_balance_in_cents=10, + service_credit_balance_change_in_cents=116, + currency_code='currency_code8', + at_time=dateutil.parser.parse('2016-03-13T12:52:32.123Z') +) +``` + +## PrepaymentAccountBalanceChanged + +### Initialization Code + +#### Example + +```python +value = PrepaymentAccountBalanceChanged( + reason='reason4', + prepayment_account_balance_in_cents=182, + prepayment_balance_change_in_cents=206, + currency_code='currency_code4' +) +``` + +## PaymentCollectionMethodChanged + +### Initialization Code + +#### Example + +```python +value = PaymentCollectionMethodChanged( + previous_value='previous_value4', + current_value='current_value2' +) +``` + +## ItemPricePointChanged + +### Initialization Code + +#### Example + +```python +value = ItemPricePointChanged( + item_id=66, + item_type='item_type6', + item_handle='item_handle4', + item_name='item_name8', + previous_price_point=ItemPricePointData(), + current_price_point=ItemPricePointData() +) +``` + +## CustomFieldValueChange + +### Initialization Code + +#### Example + +```python +value = CustomFieldValueChange( + event_type='event_type2', + metafield_name='metafield_name6', + metafield_id=78, + old_value='old_value2', + new_value='new_value8', + resource_type='resource_type2', + resource_id=74 +) +``` + diff --git a/doc/models/containers/invoice-event-payment.md b/doc/models/containers/invoice-event-payment.md index 339d4190..c0b227b1 100644 --- a/doc/models/containers/invoice-event-payment.md +++ b/doc/models/containers/invoice-event-payment.md @@ -1,6 +1,8 @@ # Invoice-Event-Payment +A nested data structure detailing the method of payment + ## Data Type `PaymentMethodApplePay | PaymentMethodBankAccount | PaymentMethodCreditCard | PaymentMethodExternal | PaymentMethodPaypal` @@ -15,3 +17,71 @@ | [`PaymentMethodExternal`](../../../doc/models/payment-method-external.md) | | [`PaymentMethodPaypal`](../../../doc/models/payment-method-paypal.md) | +## PaymentMethodApplePay + +### Initialization Code + +#### Example + +```python +value = PaymentMethodApplePay( + mtype=InvoiceEventPaymentMethod.APPLE_PAY +) +``` + +## PaymentMethodBankAccount + +### Initialization Code + +#### Example + +```python +value = PaymentMethodBankAccount( + masked_account_number='masked_account_number2', + masked_routing_number='masked_routing_number2', + mtype=InvoiceEventPaymentMethod.BANK_ACCOUNT +) +``` + +## PaymentMethodCreditCard + +### Initialization Code + +#### Example + +```python +value = PaymentMethodCreditCard( + card_brand='card_brand4', + masked_card_number='masked_card_number0', + mtype=InvoiceEventPaymentMethod.CREDIT_CARD +) +``` + +## PaymentMethodExternal + +### Initialization Code + +#### Example + +```python +value = PaymentMethodExternal( + details='details4', + kind='kind2', + memo='memo8', + mtype=InvoiceEventPaymentMethod.EXTERNAL +) +``` + +## PaymentMethodPaypal + +### Initialization Code + +#### Example + +```python +value = PaymentMethodPaypal( + email='email2', + mtype=InvoiceEventPaymentMethod.PAYPAL_ACCOUNT +) +``` + diff --git a/doc/models/containers/invoice-event.md b/doc/models/containers/invoice-event.md index 94c8fa49..6ae29a63 100644 --- a/doc/models/containers/invoice-event.md +++ b/doc/models/containers/invoice-event.md @@ -25,3 +25,390 @@ | [`VoidInvoiceEvent`](../../../doc/models/void-invoice-event.md) | | [`VoidRemainderEvent`](../../../doc/models/void-remainder-event.md) | +## ApplyCreditNoteEvent + +### Initialization Code + +#### Example + +```python +value = ApplyCreditNoteEvent( + id=214, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.APPLY_CREDIT_NOTE, + event_data=ApplyCreditNoteEventData( + uid='uid6', + credit_note_number='credit_note_number0', + credit_note_uid='credit_note_uid0', + original_amount='original_amount0', + applied_amount='applied_amount2' + ) +) +``` + +## ApplyDebitNoteEvent + +### Initialization Code + +#### Example + +```python +value = ApplyDebitNoteEvent( + id=164, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.APPLY_DEBIT_NOTE, + event_data=ApplyDebitNoteEventData( + debit_note_number='debit_note_number6', + debit_note_uid='debit_note_uid2', + original_amount='original_amount0', + applied_amount='applied_amount2' + ) +) +``` + +## ApplyPaymentEvent + +### Initialization Code + +#### Example + +```python +value = ApplyPaymentEvent( + id=234, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.APPLY_PAYMENT, + event_data=ApplyPaymentEventData( + consolidation_level=InvoiceConsolidationLevel.CHILD, + memo='memo0', + original_amount='original_amount0', + applied_amount='applied_amount2', + transaction_time=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + payment_method=PaymentMethodApplePay( + mtype=InvoiceEventPaymentMethod.APPLE_PAY + ) + ) +) +``` + +## BackportInvoiceEvent + +### Initialization Code + +#### Example + +```python +value = BackportInvoiceEvent( + id=78, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.BACKPORT_INVOICE, + event_data=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ) +) +``` + +## ChangeChargebackStatusEvent + +### Initialization Code + +#### Example + +```python +value = ChangeChargebackStatusEvent( + id=214, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.CHANGE_CHARGEBACK_STATUS, + event_data=ChangeChargebackStatusEventData( + chargeback_status=ChargebackStatus.WON + ) +) +``` + +## ChangeInvoiceCollectionMethodEvent + +### Initialization Code + +#### Example + +```python +value = ChangeInvoiceCollectionMethodEvent( + id=246, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.CHANGE_INVOICE_COLLECTION_METHOD, + event_data=ChangeInvoiceCollectionMethodEventData( + from_collection_method='from_collection_method4', + to_collection_method='to_collection_method8' + ) +) +``` + +## ChangeInvoiceStatusEvent + +### Initialization Code + +#### Example + +```python +value = ChangeInvoiceStatusEvent( + id=92, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.CHANGE_INVOICE_STATUS, + event_data=ChangeInvoiceStatusEventData( + from_status=InvoiceStatus.OPEN, + to_status=InvoiceStatus.PENDING + ) +) +``` + +## CreateCreditNoteEvent + +### Initialization Code + +#### Example + +```python +value = CreateCreditNoteEvent( + id=28, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.CREATE_CREDIT_NOTE, + event_data=CreditNote() +) +``` + +## CreateDebitNoteEvent + +### Initialization Code + +#### Example + +```python +value = CreateDebitNoteEvent( + id=98, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.CREATE_DEBIT_NOTE, + event_data=DebitNote() +) +``` + +## FailedPaymentEvent + +### Initialization Code + +#### Example + +```python +value = FailedPaymentEvent( + id=120, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.FAILED_PAYMENT, + event_data=FailedPaymentEventData( + amount_in_cents=220, + applied_amount=194, + payment_method=InvoicePaymentMethodType.CASH, + transaction_id=78 + ) +) +``` + +## IssueInvoiceEvent + +### Initialization Code + +#### Example + +```python +value = IssueInvoiceEvent( + id=130, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.ISSUE_INVOICE, + event_data=IssueInvoiceEventData( + consolidation_level=InvoiceConsolidationLevel.CHILD, + from_status=InvoiceStatus.OPEN, + to_status=InvoiceStatus.PENDING, + due_amount='due_amount8', + total_amount='total_amount2' + ) +) +``` + +## RefundInvoiceEvent + +### Initialization Code + +#### Example + +```python +value = RefundInvoiceEvent( + id=54, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.REFUND_INVOICE, + event_data=RefundInvoiceEventData( + apply_credit=False, + credit_note_attributes=CreditNote(), + payment_id=204, + refund_amount='refund_amount8', + refund_id=248, + transaction_time=dateutil.parser.parse('2016-03-13T12:52:32.123Z') + ) +) +``` + +## RemovePaymentEvent + +### Initialization Code + +#### Example + +```python +value = RemovePaymentEvent( + id=236, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.REMOVE_PAYMENT, + event_data=RemovePaymentEventData( + transaction_id=78, + memo='memo0', + applied_amount='applied_amount2', + transaction_time=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + payment_method=PaymentMethodApplePay( + mtype=InvoiceEventPaymentMethod.APPLE_PAY + ), + prepayment=False + ) +) +``` + +## VoidInvoiceEvent + +### Initialization Code + +#### Example + +```python +value = VoidInvoiceEvent( + id=16, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.VOID_INVOICE, + event_data=VoidInvoiceEventData( + credit_note_attributes=CreditNote(), + memo='memo0', + applied_amount='applied_amount2', + transaction_time=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + is_advance_invoice=False, + reason='reason2' + ) +) +``` + +## VoidRemainderEvent + +### Initialization Code + +#### Example + +```python +value = VoidRemainderEvent( + id=128, + timestamp=dateutil.parser.parse('2016-03-13T12:52:32.123Z'), + invoice=Invoice( + issue_date=dateutil.parser.parse('2024-01-01').date(), + due_date=dateutil.parser.parse('2024-01-01').date(), + paid_date=dateutil.parser.parse('2024-01-01').date(), + public_url_expires_on=dateutil.parser.parse('2024-01-21').date() + ), + event_type=InvoiceEventType.VOID_REMAINDER, + event_data=VoidRemainderEventData( + credit_note_attributes=CreditNote(), + memo='memo0', + applied_amount='applied_amount2', + transaction_time=dateutil.parser.parse('2016-03-13T12:52:32.123Z') + ) +) +``` + diff --git a/doc/models/containers/issue-service-credit-amount.md b/doc/models/containers/issue-service-credit-amount.md index 4956fa45..2fa5c70b 100644 --- a/doc/models/containers/issue-service-credit-amount.md +++ b/doc/models/containers/issue-service-credit-amount.md @@ -12,3 +12,23 @@ | `float` | | `str` | +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/list-product-price-points-input-product-id.md b/doc/models/containers/list-product-price-points-input-product-id.md index 1fbf6926..c8472a57 100644 --- a/doc/models/containers/list-product-price-points-input-product-id.md +++ b/doc/models/containers/list-product-price-points-input-product-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/list-usages-input-component-id.md b/doc/models/containers/list-usages-input-component-id.md index a74d0bf5..78d8c923 100644 --- a/doc/models/containers/list-usages-input-component-id.md +++ b/doc/models/containers/list-usages-input-component-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/list-usages-input-subscription-id-or-reference.md b/doc/models/containers/list-usages-input-subscription-id-or-reference.md index 3d900ee9..047e7fc6 100644 --- a/doc/models/containers/list-usages-input-subscription-id-or-reference.md +++ b/doc/models/containers/list-usages-input-subscription-id-or-reference.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/metafield-enum.md b/doc/models/containers/metafield-enum.md index 48f93a83..f585974d 100644 --- a/doc/models/containers/metafield-enum.md +++ b/doc/models/containers/metafield-enum.md @@ -12,3 +12,25 @@ | `str` | | `List[str]` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## List[str] + +### Initialization Code + +#### Example + +```python +value = [ + 'String1' +] +``` + diff --git a/doc/models/containers/metered-component-unit-price.md b/doc/models/containers/metered-component-unit-price.md index b9c18b1b..4b16666c 100644 --- a/doc/models/containers/metered-component-unit-price.md +++ b/doc/models/containers/metered-component-unit-price.md @@ -12,3 +12,23 @@ | `str` | | `float` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/on-off-component-unit-price.md b/doc/models/containers/on-off-component-unit-price.md index ef99ae97..ce91ee91 100644 --- a/doc/models/containers/on-off-component-unit-price.md +++ b/doc/models/containers/on-off-component-unit-price.md @@ -12,3 +12,23 @@ | `str` | | `float` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/payment-profile-attributes-expiration-month.md b/doc/models/containers/payment-profile-attributes-expiration-month.md index f98e4b07..d05ddee2 100644 --- a/doc/models/containers/payment-profile-attributes-expiration-month.md +++ b/doc/models/containers/payment-profile-attributes-expiration-month.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/payment-profile-attributes-expiration-year.md b/doc/models/containers/payment-profile-attributes-expiration-year.md index c018373e..2c78b81a 100644 --- a/doc/models/containers/payment-profile-attributes-expiration-year.md +++ b/doc/models/containers/payment-profile-attributes-expiration-year.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/payment-profile.md b/doc/models/containers/payment-profile.md index 797ccec7..1f879870 100644 --- a/doc/models/containers/payment-profile.md +++ b/doc/models/containers/payment-profile.md @@ -14,3 +14,71 @@ | [`CreditCardPaymentProfile`](../../../doc/models/credit-card-payment-profile.md) | | [`PaypalPaymentProfile`](../../../doc/models/paypal-payment-profile.md) | +## ApplePayPaymentProfile + +### Initialization Code + +#### Example + +```python +value = ApplePayPaymentProfile( + payment_type=PaymentType.APPLE_PAY +) +``` + +## BankAccountPaymentProfile + +### Initialization Code + +#### Example + +```python +value = BankAccountPaymentProfile( + payment_type=PaymentType.BANK_ACCOUNT, + verified=False +) +``` + +## CreditCardPaymentProfile + +### Initialization Code + +#### Example + +```python +value = CreditCardPaymentProfile( + payment_type=PaymentType.CREDIT_CARD, + id=10088716, + first_name='Test', + last_name='Subscription', + masked_card_number='XXXX-XXXX-XXXX-1', + card_type=CardType.BOGUS, + expiration_month=1, + expiration_year=2022, + customer_id=14543792, + current_vault=CreditCardVault.BOGUS, + vault_token='1', + billing_address='123 Montana Way', + billing_city='Billings', + billing_state='MT', + billing_zip='59101', + billing_country='US', + customer_vault_token='customer_vault_token2', + billing_address_2='', + site_gateway_setting_id=1, + gateway_handle='gateway_handle8' +) +``` + +## PaypalPaymentProfile + +### Initialization Code + +#### Example + +```python +value = PaypalPaymentProfile( + payment_type=PaymentType.PAYPAL_ACCOUNT +) +``` + diff --git a/doc/models/containers/prepaid-usage-component-unit-price.md b/doc/models/containers/prepaid-usage-component-unit-price.md index 8996b2c6..f78a2b60 100644 --- a/doc/models/containers/prepaid-usage-component-unit-price.md +++ b/doc/models/containers/prepaid-usage-component-unit-price.md @@ -12,3 +12,23 @@ | `str` | | `float` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/price-ending-quantity.md b/doc/models/containers/price-ending-quantity.md index 91a84fc5..6955145f 100644 --- a/doc/models/containers/price-ending-quantity.md +++ b/doc/models/containers/price-ending-quantity.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/price-starting-quantity.md b/doc/models/containers/price-starting-quantity.md index fe734457..252eb249 100644 --- a/doc/models/containers/price-starting-quantity.md +++ b/doc/models/containers/price-starting-quantity.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/price-unit-price.md b/doc/models/containers/price-unit-price.md index 4c62f9a6..54ee3549 100644 --- a/doc/models/containers/price-unit-price.md +++ b/doc/models/containers/price-unit-price.md @@ -12,3 +12,23 @@ | `float` | | `str` | +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/quantity-based-component-unit-price.md b/doc/models/containers/quantity-based-component-unit-price.md index 1345aac6..5eaa3a03 100644 --- a/doc/models/containers/quantity-based-component-unit-price.md +++ b/doc/models/containers/quantity-based-component-unit-price.md @@ -12,3 +12,23 @@ | `str` | | `float` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/reactivate-subscription-request-resume.md b/doc/models/containers/reactivate-subscription-request-resume.md index 38ffe3f8..e9f16790 100644 --- a/doc/models/containers/reactivate-subscription-request-resume.md +++ b/doc/models/containers/reactivate-subscription-request-resume.md @@ -12,3 +12,23 @@ | `bool` | | [`ResumeOptions`](../../../doc/models/resume-options.md) | +## bool + +### Initialization Code + +#### Example + +```python +value = False +``` + +## ResumeOptions + +### Initialization Code + +#### Example + +```python +value = ResumeOptions() +``` + diff --git a/doc/models/containers/read-component-price-point-component-id.md b/doc/models/containers/read-component-price-point-component-id.md index 4f253ad6..c33566ad 100644 --- a/doc/models/containers/read-component-price-point-component-id.md +++ b/doc/models/containers/read-component-price-point-component-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/read-component-price-point-price-point-id.md b/doc/models/containers/read-component-price-point-price-point-id.md index c8f50f27..784b288e 100644 --- a/doc/models/containers/read-component-price-point-price-point-id.md +++ b/doc/models/containers/read-component-price-point-price-point-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/read-product-price-point-price-point-id.md b/doc/models/containers/read-product-price-point-price-point-id.md index ff678204..42f76d1b 100644 --- a/doc/models/containers/read-product-price-point-price-point-id.md +++ b/doc/models/containers/read-product-price-point-price-point-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/read-product-price-point-product-id.md b/doc/models/containers/read-product-price-point-product-id.md index 487e7046..67eb3191 100644 --- a/doc/models/containers/read-product-price-point-product-id.md +++ b/doc/models/containers/read-product-price-point-product-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/refund-consolidated-invoice-segment-uids.md b/doc/models/containers/refund-consolidated-invoice-segment-uids.md index 7b1ac10d..111a1aa5 100644 --- a/doc/models/containers/refund-consolidated-invoice-segment-uids.md +++ b/doc/models/containers/refund-consolidated-invoice-segment-uids.md @@ -12,3 +12,25 @@ | `List[str]` | | `str` | +## List[str] + +### Initialization Code + +#### Example + +```python +value = [ + 'String1' +] +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/refund-invoice-request-refund.md b/doc/models/containers/refund-invoice-request-refund.md index 9cb056de..4396112a 100644 --- a/doc/models/containers/refund-invoice-request-refund.md +++ b/doc/models/containers/refund-invoice-request-refund.md @@ -12,3 +12,34 @@ | [`RefundInvoice`](../../../doc/models/refund-invoice.md) | | [`RefundConsolidatedInvoice`](../../../doc/models/refund-consolidated-invoice.md) | +## RefundInvoice + +### Initialization Code + +#### Example + +```python +value = RefundInvoice( + amount='amount8', + memo='memo0', + payment_id=0 +) +``` + +## RefundConsolidatedInvoice + +### Initialization Code + +#### Example + +```python +value = RefundConsolidatedInvoice( + memo='memo0', + payment_id=46, + segment_uids=[ + 'String0', + 'String1' + ] +) +``` + diff --git a/doc/models/containers/refund-prepayment-amount.md b/doc/models/containers/refund-prepayment-amount.md index 60061505..94dc1aea 100644 --- a/doc/models/containers/refund-prepayment-amount.md +++ b/doc/models/containers/refund-prepayment-amount.md @@ -12,3 +12,23 @@ | `str` | | `float` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/renewal-preview-component-component-id.md b/doc/models/containers/renewal-preview-component-component-id.md index 18dcd5bc..1cf5a794 100644 --- a/doc/models/containers/renewal-preview-component-component-id.md +++ b/doc/models/containers/renewal-preview-component-component-id.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/renewal-preview-component-price-point-id.md b/doc/models/containers/renewal-preview-component-price-point-id.md index 00a92bb3..56bda9aa 100644 --- a/doc/models/containers/renewal-preview-component-price-point-id.md +++ b/doc/models/containers/renewal-preview-component-price-point-id.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/scheduled-renewal-configuration-item-request-renewal-configuration-item.md b/doc/models/containers/scheduled-renewal-configuration-item-request-renewal-configuration-item.md index 88108485..e24dc5b4 100644 --- a/doc/models/containers/scheduled-renewal-configuration-item-request-renewal-configuration-item.md +++ b/doc/models/containers/scheduled-renewal-configuration-item-request-renewal-configuration-item.md @@ -12,3 +12,27 @@ | [`ScheduledRenewalItemRequestBodyComponent`](../../../doc/models/scheduled-renewal-item-request-body-component.md) | | [`ScheduledRenewalItemRequestBodyProduct`](../../../doc/models/scheduled-renewal-item-request-body-product.md) | +## ScheduledRenewalItemRequestBodyComponent + +### Initialization Code + +#### Example + +```python +value = ScheduledRenewalItemRequestBodyComponent( + item_id=108 +) +``` + +## ScheduledRenewalItemRequestBodyProduct + +### Initialization Code + +#### Example + +```python +value = ScheduledRenewalItemRequestBodyProduct( + item_id=32 +) +``` + diff --git a/doc/models/containers/scheduled-renewal-product-price-point-interval.md b/doc/models/containers/scheduled-renewal-product-price-point-interval.md index ad056bb7..97bc6417 100644 --- a/doc/models/containers/scheduled-renewal-product-price-point-interval.md +++ b/doc/models/containers/scheduled-renewal-product-price-point-interval.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/scheduled-renewal-product-price-point-price-in-cents.md b/doc/models/containers/scheduled-renewal-product-price-point-price-in-cents.md index 310b6c3f..6391cac8 100644 --- a/doc/models/containers/scheduled-renewal-product-price-point-price-in-cents.md +++ b/doc/models/containers/scheduled-renewal-product-price-point-price-in-cents.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/scheduled-renewal-update-request-renewal-configuration-item.md b/doc/models/containers/scheduled-renewal-update-request-renewal-configuration-item.md index b6d6cce8..18767445 100644 --- a/doc/models/containers/scheduled-renewal-update-request-renewal-configuration-item.md +++ b/doc/models/containers/scheduled-renewal-update-request-renewal-configuration-item.md @@ -12,3 +12,27 @@ | [`ScheduledRenewalItemRequestBodyComponent`](../../../doc/models/scheduled-renewal-item-request-body-component.md) | | [`ScheduledRenewalItemRequestBodyProduct`](../../../doc/models/scheduled-renewal-item-request-body-product.md) | +## ScheduledRenewalItemRequestBodyComponent + +### Initialization Code + +#### Example + +```python +value = ScheduledRenewalItemRequestBodyComponent( + item_id=108 +) +``` + +## ScheduledRenewalItemRequestBodyProduct + +### Initialization Code + +#### Example + +```python +value = ScheduledRenewalItemRequestBodyProduct( + item_id=32 +) +``` + diff --git a/doc/models/containers/segment-segment-property-1-value.md b/doc/models/containers/segment-segment-property-1-value.md index d4cc4e0d..093ce3e0 100644 --- a/doc/models/containers/segment-segment-property-1-value.md +++ b/doc/models/containers/segment-segment-property-1-value.md @@ -14,3 +14,43 @@ | `int` | | `bool` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## bool + +### Initialization Code + +#### Example + +```python +value = False +``` + diff --git a/doc/models/containers/segment-segment-property-2-value.md b/doc/models/containers/segment-segment-property-2-value.md index 3cedb3fa..ee31cfd1 100644 --- a/doc/models/containers/segment-segment-property-2-value.md +++ b/doc/models/containers/segment-segment-property-2-value.md @@ -14,3 +14,43 @@ | `int` | | `bool` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## bool + +### Initialization Code + +#### Example + +```python +value = False +``` + diff --git a/doc/models/containers/segment-segment-property-3-value.md b/doc/models/containers/segment-segment-property-3-value.md index 1a9ed88a..d9be9753 100644 --- a/doc/models/containers/segment-segment-property-3-value.md +++ b/doc/models/containers/segment-segment-property-3-value.md @@ -14,3 +14,43 @@ | `int` | | `bool` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## bool + +### Initialization Code + +#### Example + +```python +value = False +``` + diff --git a/doc/models/containers/segment-segment-property-4-value.md b/doc/models/containers/segment-segment-property-4-value.md index b2a96c32..9b22e094 100644 --- a/doc/models/containers/segment-segment-property-4-value.md +++ b/doc/models/containers/segment-segment-property-4-value.md @@ -14,3 +14,43 @@ | `int` | | `bool` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## bool + +### Initialization Code + +#### Example + +```python +value = False +``` + diff --git a/doc/models/containers/subscription-component-allocated-quantity.md b/doc/models/containers/subscription-component-allocated-quantity.md index c4deaedb..7c01e8cd 100644 --- a/doc/models/containers/subscription-component-allocated-quantity.md +++ b/doc/models/containers/subscription-component-allocated-quantity.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/subscription-custom-price-expiration-interval.md b/doc/models/containers/subscription-custom-price-expiration-interval.md index b82f7602..a4b1cc4e 100644 --- a/doc/models/containers/subscription-custom-price-expiration-interval.md +++ b/doc/models/containers/subscription-custom-price-expiration-interval.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/subscription-custom-price-initial-charge-in-cents.md b/doc/models/containers/subscription-custom-price-initial-charge-in-cents.md index f3793721..b309fe85 100644 --- a/doc/models/containers/subscription-custom-price-initial-charge-in-cents.md +++ b/doc/models/containers/subscription-custom-price-initial-charge-in-cents.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/subscription-custom-price-interval.md b/doc/models/containers/subscription-custom-price-interval.md index ed970ac5..f3cefcd3 100644 --- a/doc/models/containers/subscription-custom-price-interval.md +++ b/doc/models/containers/subscription-custom-price-interval.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/subscription-custom-price-price-in-cents.md b/doc/models/containers/subscription-custom-price-price-in-cents.md index 9eb49903..c325eeeb 100644 --- a/doc/models/containers/subscription-custom-price-price-in-cents.md +++ b/doc/models/containers/subscription-custom-price-price-in-cents.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/subscription-custom-price-trial-interval.md b/doc/models/containers/subscription-custom-price-trial-interval.md index c01dc102..9b81be4c 100644 --- a/doc/models/containers/subscription-custom-price-trial-interval.md +++ b/doc/models/containers/subscription-custom-price-trial-interval.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/subscription-custom-price-trial-price-in-cents.md b/doc/models/containers/subscription-custom-price-trial-price-in-cents.md index 524b09f9..5a46c9db 100644 --- a/doc/models/containers/subscription-custom-price-trial-price-in-cents.md +++ b/doc/models/containers/subscription-custom-price-trial-price-in-cents.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/subscription-group-create-error-response-errors.md b/doc/models/containers/subscription-group-create-error-response-errors.md index dfcd21aa..578528d9 100644 --- a/doc/models/containers/subscription-group-create-error-response-errors.md +++ b/doc/models/containers/subscription-group-create-error-response-errors.md @@ -13,3 +13,39 @@ | [`SubscriptionGroupSingleError`](../../../doc/models/subscription-group-single-error.md) | | `str` | +## SubscriptionGroupMembersArrayError + +### Initialization Code + +#### Example + +```python +value = SubscriptionGroupMembersArrayError( + members=[ + 'members6' + ] +) +``` + +## SubscriptionGroupSingleError + +### Initialization Code + +#### Example + +```python +value = SubscriptionGroupSingleError( + subscription_group='subscription_group2' +) +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/subscription-group-credit-card-expiration-month.md b/doc/models/containers/subscription-group-credit-card-expiration-month.md index d4470b9c..2fd886a5 100644 --- a/doc/models/containers/subscription-group-credit-card-expiration-month.md +++ b/doc/models/containers/subscription-group-credit-card-expiration-month.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/subscription-group-credit-card-expiration-year.md b/doc/models/containers/subscription-group-credit-card-expiration-year.md index 0ec32a0c..3b139293 100644 --- a/doc/models/containers/subscription-group-credit-card-expiration-year.md +++ b/doc/models/containers/subscription-group-credit-card-expiration-year.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/subscription-group-credit-card-full-number.md b/doc/models/containers/subscription-group-credit-card-full-number.md index 45c26ce7..e6dd91e9 100644 --- a/doc/models/containers/subscription-group-credit-card-full-number.md +++ b/doc/models/containers/subscription-group-credit-card-full-number.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/subscription-group-signup-component-allocated-quantity.md b/doc/models/containers/subscription-group-signup-component-allocated-quantity.md index 0f57f56d..08a41b6c 100644 --- a/doc/models/containers/subscription-group-signup-component-allocated-quantity.md +++ b/doc/models/containers/subscription-group-signup-component-allocated-quantity.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/subscription-group-signup-component-component-id.md b/doc/models/containers/subscription-group-signup-component-component-id.md index 24bb19f8..a330d9ac 100644 --- a/doc/models/containers/subscription-group-signup-component-component-id.md +++ b/doc/models/containers/subscription-group-signup-component-component-id.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/subscription-group-signup-component-price-point-id.md b/doc/models/containers/subscription-group-signup-component-price-point-id.md index 1ffba0dc..c375e2f6 100644 --- a/doc/models/containers/subscription-group-signup-component-price-point-id.md +++ b/doc/models/containers/subscription-group-signup-component-price-point-id.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/subscription-group-signup-component-unit-balance.md b/doc/models/containers/subscription-group-signup-component-unit-balance.md index bb47b809..09b70418 100644 --- a/doc/models/containers/subscription-group-signup-component-unit-balance.md +++ b/doc/models/containers/subscription-group-signup-component-unit-balance.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/update-component-price-point-component-id.md b/doc/models/containers/update-component-price-point-component-id.md index c32d17e6..1cc7825f 100644 --- a/doc/models/containers/update-component-price-point-component-id.md +++ b/doc/models/containers/update-component-price-point-component-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/update-component-price-point-price-point-id.md b/doc/models/containers/update-component-price-point-price-point-id.md index c7d2dc5b..44deac42 100644 --- a/doc/models/containers/update-component-price-point-price-point-id.md +++ b/doc/models/containers/update-component-price-point-price-point-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/update-metafields-request-metafields.md b/doc/models/containers/update-metafields-request-metafields.md index 39e6938b..766c8dba 100644 --- a/doc/models/containers/update-metafields-request-metafields.md +++ b/doc/models/containers/update-metafields-request-metafields.md @@ -12,3 +12,25 @@ | [`UpdateMetafield`](../../../doc/models/update-metafield.md) | | [`List[UpdateMetafield]`](../../../doc/models/update-metafield.md) | +## UpdateMetafield + +### Initialization Code + +#### Example + +```python +value = UpdateMetafield() +``` + +## List[UpdateMetafield] + +### Initialization Code + +#### Example + +```python +value = [ + UpdateMetafield() +] +``` + diff --git a/doc/models/containers/update-price-ending-quantity.md b/doc/models/containers/update-price-ending-quantity.md index a2c03ca6..a199c5a3 100644 --- a/doc/models/containers/update-price-ending-quantity.md +++ b/doc/models/containers/update-price-ending-quantity.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/update-price-starting-quantity.md b/doc/models/containers/update-price-starting-quantity.md index fad4970e..16259ed5 100644 --- a/doc/models/containers/update-price-starting-quantity.md +++ b/doc/models/containers/update-price-starting-quantity.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/update-price-unit-price.md b/doc/models/containers/update-price-unit-price.md index 8df820a1..4df291c3 100644 --- a/doc/models/containers/update-price-unit-price.md +++ b/doc/models/containers/update-price-unit-price.md @@ -12,3 +12,23 @@ | `float` | | `str` | +## float + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/update-product-price-point-price-point-id.md b/doc/models/containers/update-product-price-point-price-point-id.md index c57b0738..c6cadfd3 100644 --- a/doc/models/containers/update-product-price-point-price-point-id.md +++ b/doc/models/containers/update-product-price-point-price-point-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/update-product-price-point-product-id.md b/doc/models/containers/update-product-price-point-product-id.md index 38367b4a..8f60fd06 100644 --- a/doc/models/containers/update-product-price-point-product-id.md +++ b/doc/models/containers/update-product-price-point-product-id.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/containers/update-subscription-net-terms.md b/doc/models/containers/update-subscription-net-terms.md index eb1dd2b7..3649ccbf 100644 --- a/doc/models/containers/update-subscription-net-terms.md +++ b/doc/models/containers/update-subscription-net-terms.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/update-subscription-snap-day.md b/doc/models/containers/update-subscription-snap-day.md index 8f0f2da4..48b45181 100644 --- a/doc/models/containers/update-subscription-snap-day.md +++ b/doc/models/containers/update-subscription-snap-day.md @@ -12,3 +12,23 @@ | `str` | | `int` | +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + diff --git a/doc/models/containers/usage-quantity.md b/doc/models/containers/usage-quantity.md index 74747def..5a5bfbae 100644 --- a/doc/models/containers/usage-quantity.md +++ b/doc/models/containers/usage-quantity.md @@ -12,3 +12,23 @@ | `int` | | `str` | +## int + +### Initialization Code + +#### Example + +```python +value = 0 +``` + +## str + +### Initialization Code + +#### Example + +```python +value = 'String0' +``` + diff --git a/doc/models/create-allocation.md b/doc/models/create-allocation.md index cd96a65a..1007e1c8 100644 --- a/doc/models/create-allocation.md +++ b/doc/models/create-allocation.md @@ -22,7 +22,7 @@ | `accrue_charge` | `bool` | Optional | "If the change in cost is an upgrade, this determines if the charge should accrue to the next renewal or if capture should be attempted immediately.

`true` - Attempt to charge the customer at the next renewal.

`false` - Attempt to charge the customer right away. If it fails, the charge will be accrued until the next renewal.

Defaults to the site setting if unspecified in the request. | | `initiate_dunning` | `bool` | Optional | If set to true, if the immediate component payment fails, initiate dunning for the subscription.
Otherwise, leave the charges on the subscription to pay for at renewal. Defaults to false. | | `price_point_id` | str \| int \| None | Optional | This is a container for one-of cases. | -| `billing_schedule` | [`BillingSchedule`](../../doc/models/billing-schedule.md) | Optional | This attribute is particularly useful when you need to align billing events for different components on distinct schedules within a subscription. This only works for site with Multifrequency enabled. | +| `billing_schedule` | [`BillingSchedule`](../../doc/models/billing-schedule.md) | Optional | Billing schedule settings for component allocations or usages on multi-frequency subscriptions. Use this to start a component's billing period on a custom date instead of aligning with the product charge schedule. | | `custom_price` | [`ComponentCustomPrice`](../../doc/models/component-custom-price.md) | Optional | Create or update custom pricing unique to the subscription. Used in place of `price_point_id`. | ## Example (as JSON) diff --git a/doc/models/create-invoice.md b/doc/models/create-invoice.md index e9d50c06..4e5d0b35 100644 --- a/doc/models/create-invoice.md +++ b/doc/models/create-invoice.md @@ -10,7 +10,7 @@ | Name | Type | Tags | Description | | --- | --- | --- | --- | | `line_items` | [`List[CreateInvoiceItem]`](../../doc/models/create-invoice-item.md) | Optional | - | -| `issue_date` | `date` | Optional | - | +| `issue_date` | `date` | Optional | Date on which the invoice will be issued (format YYYY-MM-DD). This date is interpreted and validated in your site's time zone. It must be today or a date in the past — future dates are not accepted. If omitted, defaults to today in your site's time zone. | | `net_terms` | `int` | Optional | By default, invoices will be created with a due date matching the date of invoice creation. If a different due date is desired, the net_terms parameter can be sent indicating the number of days in advance the due date should be. | | `payment_instructions` | `str` | Optional | - | | `memo` | `str` | Optional | A custom memo can be sent to override the site's default. | diff --git a/doc/models/create-on-off-component.md b/doc/models/create-on-off-component.md index 606acd56..a87d8fc5 100644 --- a/doc/models/create-on-off-component.md +++ b/doc/models/create-on-off-component.md @@ -1,5 +1,5 @@ -# Create on Off Component +# Create On Off Component ## Structure diff --git a/doc/models/create-or-update-endpoint.md b/doc/models/create-or-update-endpoint.md index 551ac18c..e3d39325 100644 --- a/doc/models/create-or-update-endpoint.md +++ b/doc/models/create-or-update-endpoint.md @@ -20,7 +20,7 @@ Used to Create or Update Endpoint { "url": "url8", "webhook_subscriptions": [ - "payment_success" + "subscription_prepayment_account_balance_changed" ] } ``` diff --git a/doc/models/create-payment-profile.md b/doc/models/create-payment-profile.md index 0f46211a..2201fc8c 100644 --- a/doc/models/create-payment-profile.md +++ b/doc/models/create-payment-profile.md @@ -9,7 +9,7 @@ | Name | Type | Tags | Description | | --- | --- | --- | --- | -| `chargify_token` | `str` | Optional | Token received after sending billing information using chargify.js. | +| `chargify_token` | `str` | Optional | Token received after sending billing information using Maxio.js (formerly Chargify.js). | | `id` | `int` | Optional | - | | `payment_type` | [`PaymentType`](../../doc/models/payment-type.md) | Optional | - | | `first_name` | `str` | Optional | First name on card or bank account. If omitted, the first_name from customer attributes will be used. | @@ -29,8 +29,8 @@ | `vault_token` | `str` | Optional | The “token” provided by your vault storage for an already stored payment profile | | `customer_vault_token` | `str` | Optional | (only for Authorize.Net CIM storage or Square) The customerProfileId for the owner of the customerPaymentProfileId provided as the vault_token | | `customer_id` | `int` | Optional | (Required when creating a new payment profile) The Chargify customer id. | -| `paypal_email` | `str` | Optional | used by merchants that implemented BraintreeBlue javaScript libraries on their own. We recommend using Chargify.js instead. | -| `payment_method_nonce` | `str` | Optional | used by merchants that implemented BraintreeBlue javaScript libraries on their own. We recommend using Chargify.js instead. | +| `paypal_email` | `str` | Optional | used by merchants that implemented BraintreeBlue javaScript libraries on their own. We recommend using Maxio.js (formerly Chargify.js) instead. | +| `payment_method_nonce` | `str` | Optional | used by merchants that implemented BraintreeBlue javaScript libraries on their own. We recommend using Maxio.js (formerly Chargify.js) instead. | | `gateway_handle` | `str` | Optional | This attribute is only available if MultiGateway feature is enabled for your Site. This feature is in the Private Beta currently. gateway_handle is used to directly select a gateway where a payment profile will be stored in. Every connected gateway must have a unique gateway handle specified. Read [Multigateway description](https://chargify.zendesk.com/hc/en-us/articles/4407761759643#connecting-with-multiple-gateways) to learn more about new concepts that MultiGateway introduces and the default behavior when this attribute is not passed. | | `cvv` | `str` | Optional | The 3- or 4-digit Card Verification Value. This value is merely passed through to the payment gateway. | | `bank_name` | `str` | Optional | (Required when creating with ACH or GoCardless, optional with Stripe Direct Debit). The name of the bank where the customerʼs account resides | diff --git a/doc/models/create-usage.md b/doc/models/create-usage.md index 93ac1650..75ff03df 100644 --- a/doc/models/create-usage.md +++ b/doc/models/create-usage.md @@ -12,7 +12,7 @@ | `quantity` | `float` | Optional | integer by default or decimal number if fractional quantities are enabled for the component | | `price_point_id` | `str` | Optional | - | | `memo` | `str` | Optional | - | -| `billing_schedule` | [`BillingSchedule`](../../doc/models/billing-schedule.md) | Optional | This attribute is particularly useful when you need to align billing events for different components on distinct schedules within a subscription. This only works for site with Multifrequency enabled. | +| `billing_schedule` | [`BillingSchedule`](../../doc/models/billing-schedule.md) | Optional | Billing schedule settings for component allocations or usages on multi-frequency subscriptions. Use this to start a component's billing period on a custom date instead of aligning with the product charge schedule. | | `custom_price` | [`ComponentCustomPrice`](../../doc/models/component-custom-price.md) | Optional | Create or update custom pricing unique to the subscription. Used in place of `price_point_id`. | ## Example (as JSON) diff --git a/doc/models/credit-card-payment-profile.md b/doc/models/credit-card-payment-profile.md index 5268e6ed..17fb7784 100644 --- a/doc/models/credit-card-payment-profile.md +++ b/doc/models/credit-card-payment-profile.md @@ -28,7 +28,7 @@ | `billing_address_2` | `str` | Optional | The current billing street address, second line, for the card. | | `payment_type` | [`PaymentType`](../../doc/models/payment-type.md) | Required | **Default**: `"credit_card"` | | `disabled` | `bool` | Optional | - | -| `chargify_token` | `str` | Optional | Token received after sending billing information using chargify.js. This token will only be received if passed as a sole attribute of credit_card_attributes (i.e. tok_9g6hw85pnpt6knmskpwp4ttt) | +| `chargify_token` | `str` | Optional | Token received after sending billing information using Maxio.js (formerly Chargify.js). This token will only be received if passed as a sole attribute of credit_card_attributes (i.e. tok_9g6hw85pnpt6knmskpwp4ttt) | | `site_gateway_setting_id` | `int` | Optional | - | | `gateway_handle` | `str` | Optional | An identifier of connected gateway. | | `created_at` | `datetime` | Optional | A timestamp indicating when this payment profile was created | diff --git a/doc/models/credit-note-line-item.md b/doc/models/credit-note-line-item.md index e59a912d..fd8cae9d 100644 --- a/doc/models/credit-note-line-item.md +++ b/doc/models/credit-note-line-item.md @@ -17,6 +17,7 @@ | `subtotal_amount` | `str` | Optional | The line subtotal, generally calculated as `quantity * unit_price`. This is the canonical amount of record for the line - when rounding differences are in play, `subtotal_amount` takes precedence over the value derived from `quantity * unit_price` (which may not have the proper precision to exactly equal this amount). | | `discount_amount` | `str` | Optional | The approximate discount of just this line.

The value is approximated in cases where rounding errors make it difficult to apportion exactly a total discount among many lines. Several lines may have been summed prior to applying the discount to arrive at `discount_amount` for the invoice - backing that out to the discount on a single line may introduce rounding or precision errors. | | `tax_amount` | `str` | Optional | The approximate tax of just this line.

The value is approximated in cases where rounding errors make it difficult to apportion exactly a total tax among many lines. Several lines may have been summed prior to applying the tax rate to arrive at `tax_amount` for the invoice - backing that out to the tax on a single line may introduce rounding or precision errors. | +| `tax_included` | `bool` | Optional | Whether the unit price for this line item is tax-inclusive.

When `true`, `unit_price` already includes tax and `tax_amount` represents the portion of the price attributable to tax. When `false`, any applicable tax is added on top of the price.

The value is inherited from the source price point's `tax_included` setting. Custom or ad-hoc line items (which have no associated price point) always return `false`. | | `total_amount` | `str` | Optional | The non-canonical total amount for the line.

`subtotal_amount` is the canonical amount for a line. The invoice `total_amount` is derived from the sum of the line `subtotal_amount`s and discounts or taxes applied thereafter. Therefore, due to rounding or precision errors, the sum of line `total_amount`s may not equal the invoice `total_amount`. | | `tiered_unit_price` | `bool` | Optional | When `true`, indicates that the actual pricing scheme for the line was tiered, so the `unit_price` shown is the blended average for all units. | | `period_range_start` | `date` | Optional | Start date for the period credited by this line. The format is `"YYYY-MM-DD"`. | diff --git a/doc/models/event-key.md b/doc/models/event-key.md index feb40461..e95df013 100644 --- a/doc/models/event-key.md +++ b/doc/models/event-key.md @@ -42,6 +42,7 @@ | `TRIAL_END_NOTICE` | | `DUNNING_STEP_REACHED` | | `INVOICE_ISSUED` | +| `INVOICE_PENDING` | | `PREPAID_SUBSCRIPTION_BALANCE_CHANGED` | | `SUBSCRIPTION_GROUP_SIGNUP_SUCCESS` | | `SUBSCRIPTION_GROUP_SIGNUP_FAILURE` | diff --git a/doc/models/event-response.md b/doc/models/event-response.md index 75b10614..f63a649c 100644 --- a/doc/models/event-response.md +++ b/doc/models/event-response.md @@ -17,7 +17,7 @@ { "event": { "id": 242, - "key": "subscription_state_change", + "key": "prepaid_subscription_balance_changed", "message": "message0", "subscription_id": 96, "customer_id": 24, diff --git a/doc/models/event.md b/doc/models/event.md index 07f21b65..869492e2 100644 --- a/doc/models/event.md +++ b/doc/models/event.md @@ -22,7 +22,7 @@ ```json { "id": 40, - "key": "invoice_issued", + "key": "expiring_card", "message": "message8", "subscription_id": 150, "customer_id": 78, diff --git a/doc/models/invoice-line-item.md b/doc/models/invoice-line-item.md index c0b7457c..81382fa2 100644 --- a/doc/models/invoice-line-item.md +++ b/doc/models/invoice-line-item.md @@ -17,6 +17,7 @@ | `subtotal_amount` | `str` | Optional | The line subtotal, generally calculated as `quantity * unit_price`. This is the canonical amount of record for the line - when rounding differences are in play, `subtotal_amount` takes precedence over the value derived from `quantity * unit_price` (which may not have the proper precision to exactly equal this amount). | | `discount_amount` | `str` | Optional | The approximate discount applied to just this line.

The value is approximated in cases where rounding errors make it difficult to apportion exactly a total discount among many lines. Several lines may have been summed prior to applying the discount to arrive at `discount_amount` for the invoice - backing that out to the discount on a single line may introduce rounding or precision errors. | | `tax_amount` | `str` | Optional | The approximate tax applied to just this line.

The value is approximated in cases where rounding errors make it difficult to apportion exactly a total tax among many lines. Several lines may have been summed prior to applying the tax rate to arrive at `tax_amount` for the invoice - backing that out to the tax on a single line may introduce rounding or precision errors. | +| `tax_included` | `bool` | Optional | Whether the unit price for this line item is tax-inclusive.

When `true`, `unit_price` already includes tax and `tax_amount` represents the portion of the price attributable to tax. When `false`, any applicable tax is added on top of the price.

The value is inherited from the source price point's `tax_included` setting. Custom or ad-hoc line items (which have no associated price point) always return `false`. | | `total_amount` | `str` | Optional | The non-canonical total amount for the line.

`subtotal_amount` is the canonical amount for a line. The invoice `total_amount` is derived from the sum of the line `subtotal_amount`s and discounts or taxes applied thereafter. Therefore, due to rounding or precision errors, the sum of line `total_amount`s may not equal the invoice `total_amount`. | | `tiered_unit_price` | `bool` | Optional | When `true`, indicates that the actual pricing scheme for the line was tiered, so the `unit_price` shown is the blended average for all units. | | `period_range_start` | `date` | Optional | Start date for the period covered by this line. The format is `"YYYY-MM-DD"`.

* For periodic charges paid in advance, this date will match the billing date, and the end date will be in the future.
* For periodic charges paid in arrears (e.g. metered charges), this date will be the date of the previous billing, and the end date will be the current billing date.
* For non-periodic charges, this date and the end date will match. | diff --git a/doc/models/payment-profile-attributes.md b/doc/models/payment-profile-attributes.md index 3eefdd21..3d15812b 100644 --- a/doc/models/payment-profile-attributes.md +++ b/doc/models/payment-profile-attributes.md @@ -11,7 +11,7 @@ alias to credit_card_attributes | Name | Type | Tags | Description | | --- | --- | --- | --- | -| `chargify_token` | `str` | Optional | (Optional) Token received after sending billing information using chargify.js. This token must be passed as a sole attribute of `payment_profile_attributes` (i.e. tok_9g6hw85pnpt6knmskpwp4ttt) | +| `chargify_token` | `str` | Optional | (Optional) Token received after sending billing information using Maxio.js (formerly Chargify.js). This token must be passed as a sole attribute of `payment_profile_attributes` (i.e. tok_9g6hw85pnpt6knmskpwp4ttt) | | `id` | `int` | Optional | - | | `payment_type` | [`PaymentType`](../../doc/models/payment-type.md) | Optional | - | | `first_name` | `str` | Optional | (Optional) First name on card or bank account. If omitted, the first_name from customer attributes will be used. | diff --git a/doc/models/webhook-subscription.md b/doc/models/webhook-subscription.md index ced689e1..172e795d 100644 --- a/doc/models/webhook-subscription.md +++ b/doc/models/webhook-subscription.md @@ -17,6 +17,7 @@ | `EXPIRING_CARD` | | `EXPIRATION_DATE_CHANGE` | | `INVOICE_ISSUED` | +| `INVOICE_PENDING` | | `METERED_USAGE` | | `PAYMENT_FAILURE` | | `PAYMENT_SUCCESS` | diff --git a/pyproject.toml b/pyproject.toml index 8dff6ed1..e649b2b8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "maxio-advanced-billing-sdk" description = "Ultimate billing and pricing flexibility for B2B SaaS.\nMaxio integrates directly into your product, so you can seamlessly manage your product catalog, bill customers, and collect payments." -version = "9.0.0" +version = "9.1.0" readme = "README.md" keywords = ["Maxio", "Advaced Billing", "Payments", "Subscription"] dependencies = ["apimatic-core~=0.2.0, >= 0.2.24", "apimatic-core-interfaces~=0.1.0, >= 0.1.8", "apimatic-requests-client-adapter~=0.1.0, >= 0.1.10", "python-dotenv>=0.21, <2.0", "deprecation~=2.1"] From 8299510e02c7063a370cd48106fd83fcd24216b1 Mon Sep 17 00:00:00 2001 From: lucassus Date: Thu, 11 Jun 2026 13:22:03 +0000 Subject: [PATCH 2/4] Automated commit message --- .../controllers/advance_invoice_controller.py | 7 +- .../controllers/api_exports_controller.py | 26 ++- .../controllers/billing_portal_controller.py | 19 +- .../component_price_points_controller.py | 29 ++- .../controllers/components_controller.py | 49 ++--- .../controllers/coupons_controller.py | 72 +++---- .../controllers/custom_fields_controller.py | 7 +- .../controllers/customers_controller.py | 19 +- ...vents_based_billing_segments_controller.py | 25 ++- .../controllers/events_controller.py | 9 +- .../controllers/insights_controller.py | 9 +- .../controllers/offers_controller.py | 14 +- .../payment_profiles_controller.py | 20 +- .../product_families_controller.py | 4 +- .../product_price_points_controller.py | 9 +- .../controllers/products_controller.py | 6 +- .../proforma_invoices_controller.py | 57 +++-- .../controllers/reason_codes_controller.py | 21 +- .../controllers/referral_codes_controller.py | 6 +- .../sales_commissions_controller.py | 6 +- advancedbilling/models/__init__.py | 4 + .../models/chjs_tokenization_failure.py | 154 ++++++++++++++ .../models/chjs_tokenization_success.py | 152 +++++++++++++ advancedbilling/models/create_subscription.py | 11 +- .../models/credit_note_line_item.py | 29 +++ advancedbilling/models/customer.py | 24 +++ advancedbilling/models/event.py | 9 +- advancedbilling/models/event_key.py | 7 + advancedbilling/models/invoice_line_item.py | 29 +++ advancedbilling/models/payment_profile.py | 200 ++++++++++++++++++ .../models/payment_profile_params.py | 173 +++++++++++++++ .../models/payment_profile_response.py | 6 +- advancedbilling/models/site.py | 72 +++++++ .../models/webhook_subscription.py | 6 + .../utilities/union_type_lookup.py | 10 +- doc/controllers/advance-invoice.md | 4 +- doc/controllers/api-exports.md | 18 +- doc/controllers/billing-portal.md | 16 +- doc/controllers/component-price-points.md | 18 +- doc/controllers/components.md | 24 +-- doc/controllers/coupons.md | 45 ++-- doc/controllers/custom-fields.md | 6 +- doc/controllers/customers.md | 12 +- .../events-based-billing-segments.md | 12 +- doc/controllers/events.md | 8 +- doc/controllers/insights.md | 6 +- doc/controllers/offers.md | 10 +- doc/controllers/payment-profiles.md | 12 +- doc/controllers/product-families.md | 4 +- doc/controllers/product-price-points.md | 6 +- doc/controllers/products.md | 6 +- doc/controllers/proforma-invoices.md | 24 +-- doc/controllers/reason-codes.md | 14 +- doc/controllers/referral-codes.md | 2 +- doc/controllers/sales-commissions.md | 6 +- doc/models/chjs-tokenization-failure.md | 27 +++ doc/models/chjs-tokenization-success.md | 28 +++ .../containers/event-event-specific-data.md | 30 ++- ...ayment-profile.md => payment-profile-2.md} | 2 +- .../create-or-update-endpoint-request.md | 2 +- doc/models/create-or-update-endpoint.md | 2 +- doc/models/create-subscription-request.md | 1 - doc/models/create-subscription.md | 3 +- doc/models/credit-note-line-item.md | 1 + doc/models/customer.md | 1 + doc/models/event-key.md | 2 + doc/models/event-response.md | 2 +- doc/models/event.md | 4 +- doc/models/invoice-line-item.md | 1 + doc/models/payment-profile-params.md | 27 +++ doc/models/payment-profile.md | 27 +++ doc/models/site.md | 3 + doc/models/webhook-subscription.md | 2 + 73 files changed, 1351 insertions(+), 367 deletions(-) create mode 100644 advancedbilling/models/chjs_tokenization_failure.py create mode 100644 advancedbilling/models/chjs_tokenization_success.py create mode 100644 advancedbilling/models/payment_profile.py create mode 100644 advancedbilling/models/payment_profile_params.py create mode 100644 doc/models/chjs-tokenization-failure.md create mode 100644 doc/models/chjs-tokenization-success.md rename doc/models/containers/{payment-profile.md => payment-profile-2.md} (98%) create mode 100644 doc/models/payment-profile-params.md create mode 100644 doc/models/payment-profile.md diff --git a/advancedbilling/controllers/advance_invoice_controller.py b/advancedbilling/controllers/advance_invoice_controller.py index 3fa6a593..684ed561 100644 --- a/advancedbilling/controllers/advance_invoice_controller.py +++ b/advancedbilling/controllers/advance_invoice_controller.py @@ -46,7 +46,7 @@ def issue_advance_invoice(self, our docs](https://maxio.zendesk.com/hc/en-us/articles/24252026404749-Issue-Invoice -In-Advance) for more information on advance invoices, including eligibility - on generating one; for the most part, they function like any other invoice, + for generating one; for the most part, they function like any other invoice, except they are issued early and have special behavior upon being voided. A subscription may only have one advance invoice per billing period. Attempting to issue an advance invoice when one already exists will return an @@ -106,9 +106,8 @@ def read_advance_invoice(self, """Perform a GET request to /subscriptions/{subscription_id}/advance_invoice.json. - Once an advance invoice has been generated for a subscription's upcoming - renewal, it can be viewed through this endpoint. There can only be one - advance invoice per subscription per billing cycle. + Returns the advance invoice generated for a subscription's upcoming renewal. + There can only be one advance invoice per subscription per billing cycle. Args: subscription_id (int): The Chargify id of the subscription. diff --git a/advancedbilling/controllers/api_exports_controller.py b/advancedbilling/controllers/api_exports_controller.py index fe5bf423..19196bc4 100644 --- a/advancedbilling/controllers/api_exports_controller.py +++ b/advancedbilling/controllers/api_exports_controller.py @@ -50,9 +50,8 @@ def list_exported_proforma_invoices(self, """Perform a GET request to /api_exports/proforma_invoices/{batch_id}/rows.json. - This API returns an array of exported proforma invoices for a provided - `batch_id`. Pay close attention to pagination in order to control responses - from the server. + Lists exported proforma invoices for a provided `batch_id`. Use pagination to + control responses returned from the server. Example: `GET https://{subdomain}.chargify.com/api_exports/proforma_invoices/123/rows?per_pa ge=10000&page=1`. @@ -116,8 +115,8 @@ def list_exported_invoices(self, options=dict()): """Perform a GET request to /api_exports/invoices/{batch_id}/rows.json. - This API returns an array of exported invoices for a provided `batch_id`. Pay - close attention to pagination in order to control responses from the server. + Lists exported invoices for a provided `batch_id`. Use pagination to control + responses returned from the server. Example: `GET https://{subdomain}.chargify.com/api_exports/invoices/123/rows?per_page=10000& page=1`. @@ -182,9 +181,8 @@ def list_exported_subscriptions(self, """Perform a GET request to /api_exports/subscriptions/{batch_id}/rows.json. - This API returns an array of exported subscriptions for a provided - `batch_id`. Pay close attention to pagination in order to control responses - from the server. + Lists exported subscriptions for a provided `batch_id`. Use pagination to + control responses returned from the server. Example: `GET https://{subdomain}.chargify.com/api_exports/subscriptions/123/rows?per_page=2 00&page=1`. @@ -247,7 +245,7 @@ def list_exported_subscriptions(self, def export_proforma_invoices(self): """Perform a POST request to /api_exports/proforma_invoices.json. - This API creates a proforma invoices export and returns a batchjob object. + Creates a proforma invoices export and returns a batch job object. It is only available for Relationship Invoicing architecture. Returns: @@ -281,7 +279,7 @@ def export_proforma_invoices(self): def export_invoices(self): """Perform a POST request to /api_exports/invoices.json. - This API creates an invoices export and returns a batchjob object. + Creates an invoices export and returns a batch job object. Returns: BatchJobResponse: Response from the API. Created @@ -314,7 +312,7 @@ def export_invoices(self): def export_subscriptions(self): """Perform a POST request to /api_exports/subscriptions.json. - This API creates a subscriptions export and returns a batchjob object. + Creates a subscriptions export and returns a batch job object. Returns: BatchJobResponse: Response from the API. Created @@ -348,7 +346,7 @@ def read_proforma_invoices_export(self, """Perform a GET request to /api_exports/proforma_invoices/{batch_id}.json. - This API returns a batchjob object for proforma invoices export. + Returns a batch job object for a proforma invoices export. Args: batch_id (str): Id of a Batch Job. @@ -386,7 +384,7 @@ def read_invoices_export(self, batch_id): """Perform a GET request to /api_exports/invoices/{batch_id}.json. - This API returns a batchjob object for invoices export. + Returns a batch job object for an invoices export. Args: batch_id (str): Id of a Batch Job. @@ -424,7 +422,7 @@ def read_subscriptions_export(self, batch_id): """Perform a GET request to /api_exports/subscriptions/{batch_id}.json. - This API returns a batchjob object for subscriptions export. + Returns a batch job object for a subscriptions export. Args: batch_id (str): Id of a Batch Job. diff --git a/advancedbilling/controllers/billing_portal_controller.py b/advancedbilling/controllers/billing_portal_controller.py index 7e2b41aa..9e11cedd 100644 --- a/advancedbilling/controllers/billing_portal_controller.py +++ b/advancedbilling/controllers/billing_portal_controller.py @@ -56,12 +56,14 @@ def enable_billing_portal_for_customer(self, """Perform a POST request to /portal/customers/{customer_id}/enable.json. + Enables Billing Portal access for a customer, with an option to send an + invitation email at the same time. ## Billing Portal Documentation Full documentation on how the Billing Portal operates within the Advanced Billing UI can be located [here](https://maxio.zendesk.com/hc/en-us/articles/24252412965133-Billing-Port al-Overview). - This documentation is focused on how the to configure the Billing Portal + This documentation is focused on how to configure the Billing Portal Settings, as well as Subscriber Interaction and Merchant Management of the Billing Portal. You can use this endpoint to enable Billing Portal access for a Customer, @@ -127,8 +129,7 @@ def read_billing_portal_link(self, """Perform a GET request to /portal/customers/{customer_id}/management_link.json. - This method will provide to the API user the exact URL required for a - subscriber to access the Billing Portal. + Returns the exact URL required for a subscriber to access the Billing Portal. ## Rules for Management Link API + When retrieving a management URL, multiple requests for the same customer in a short period will return the **same** URL @@ -184,15 +185,13 @@ def resend_billing_portal_invitation(self, """Perform a POST request to /portal/customers/{customer_id}/invitations/invite.json. - You can resend a customer's Billing Portal invitation. + Resends a customer's Billing Portal invitation. If you attempt to resend an invitation 5 times within 30 minutes, you will - receive a `422` response with `error` message in the body. + receive a `422` response with an `error` message in the body. If you attempt to resend an invitation when the Billing Portal is already disabled for a Customer, you will receive a `422` error response. - If you attempt to resend an invitation when the Billing Portal is already - disabled for a Customer, you will receive a `422` error response. - If you attempt to resend an invitation when the Customer does not exist a - Customer, you will receive a `404` error response. + If you attempt to resend an invitation when the Customer does not exist, you + will receive a `404` error response. ## Limitations This endpoint will only return a JSON response. @@ -237,7 +236,7 @@ def revoke_billing_portal_access(self, """Perform a DELETE request to /portal/customers/{customer_id}/invitations/revoke.json. - You can revoke a customer's Billing Portal invitation. + Revokes a customer's Billing Portal invitation. If you attempt to revoke an invitation when the Billing Portal is already disabled for a Customer, you will receive a 422 error response. ## Limitations diff --git a/advancedbilling/controllers/component_price_points_controller.py b/advancedbilling/controllers/component_price_points_controller.py index f3910d6d..3b293433 100644 --- a/advancedbilling/controllers/component_price_points_controller.py +++ b/advancedbilling/controllers/component_price_points_controller.py @@ -172,8 +172,7 @@ def list_component_price_points(self, """Perform a GET request to /components/{component_id}/price_points.json. - Use this endpoint to read current price points that are associated with a - component. + Lists the price points associated with a component. You may specify the component by using either the numeric id or the `handle:gold` syntax. When fetching a component's price points, if you have defined multiple @@ -254,7 +253,7 @@ def bulk_create_component_price_points(self, """Perform a POST request to /components/{component_id}/price_points/bulk.json. - Use this endpoint to create multiple component price points in one request. + Creates multiple component price points in one request. Args: component_id (str): The Advanced Billing id of the component for which @@ -384,8 +383,7 @@ def update_component_price_point(self, """Perform a PUT request to /components/{component_id}/price_points/{price_point_id}.json. - When updating a price point, prices can be updated as well by creating new - prices or editing / removing existing ones. + Updates a component price point and its associated prices. Passing in a price bracket without an `id` will attempt to create a new price. Including an `id` will update the corresponding price, and including the `_destroy` flag set to true along with the `id` will remove that price. @@ -457,8 +455,8 @@ def read_component_price_point(self, """Perform a GET request to /components/{component_id}/price_points/{price_point_id}.json. - Use this endpoint to retrieve details for a specific component price point. - You can achieve this by using either the component price point ID or handle. + Returns details for a specific component price point. You can achieve this by + using either the component price point ID or handle. Args: component_id (int | str): The id or handle of the component. When using @@ -516,9 +514,9 @@ def archive_component_price_point(self, """Perform a DELETE request to /components/{component_id}/price_points/{price_point_id}.json. - A price point can be archived at any time. Subscriptions using a price point - that has been archived will continue using it until they're moved to another - price point. + Archives a component price point. Subscriptions using a price point that has + been archived will continue using it until they're moved to another price + point. Args: component_id (int | str): The id or handle of the component. When using @@ -576,7 +574,7 @@ def unarchive_component_price_point(self, """Perform a PUT request to /components/{component_id}/price_points/{price_point_id}/unarchive.json. - Use this endpoint to unarchive a component price point. + Unarchives a component price point. Args: component_id (int): The Advanced Billing id of the component to which the @@ -622,8 +620,7 @@ def create_currency_prices(self, """Perform a POST request to /price_points/{price_point_id}/currency_prices.json. - This endpoint allows you to create currency prices for a given currency that - has been defined on the site level in your settings. + Creates currency prices for a given currency defined at the site level. When creating currency prices, they need to mirror the structure of your primary pricing. For each price level defined on the component price point, there should be a matching price level created in the given currency. @@ -677,8 +674,7 @@ def update_currency_prices(self, """Perform a PUT request to /price_points/{price_point_id}/currency_prices.json. - This endpoint allows you to update currency prices for a given currency that - has been defined on the site level in your settings. + Updates currency prices for a given currency defined at the site level. Note: Currency Prices are not able to be updated for custom price points. Args: @@ -727,8 +723,7 @@ def list_all_component_price_points(self, options=dict()): """Perform a GET request to /components_price_points.json. - This method allows to retrieve a list of Components Price Points belonging to - a Site. + Lists all component price points belonging to a site. Args: options (dict, optional): Key-value pairs for any of the parameters to diff --git a/advancedbilling/controllers/components_controller.py b/advancedbilling/controllers/components_controller.py index 52b7bb77..f2dd3338 100644 --- a/advancedbilling/controllers/components_controller.py +++ b/advancedbilling/controllers/components_controller.py @@ -50,9 +50,8 @@ def create_metered_component(self, """Perform a POST request to /product_families/{product_family_id}/metered_components.json. - This request will create a component definition of kind **metered_component** - under the specified product family. Metered component can then be added and - “allocated” for a subscription. + Creates a metered component definition under the specified product family. A + metered component can then be added and “allocated” for a subscription. Metered components are used to bill for any type of unit that resets to 0 at the end of the billing period (think daily Google Ads clicks or monthly cell phone minutes). This is most commonly associated with usage-based billing and @@ -115,10 +114,10 @@ def create_quantity_based_component(self, """Perform a POST request to /product_families/{product_family_id}/quantity_based_components.json. - This request will create a component definition of kind - **quantity_based_component** under the specified product family. Quantity - Based component can then be added and “allocated” for a subscription. - When defining Quantity Based component, You can choose one of 2 types: + Creates a Quantity Based component definition under the specified product + family. A Quantity Based component can then be added and “allocated” for a + subscription. + When defining a Quantity Based component, you can choose one of 2 types: #### Recurring Recurring quantity-based components are used to bill for the number of some unit (think monthly software user licenses or the number of pairs of socks in @@ -184,9 +183,8 @@ def create_on_off_component(self, """Perform a POST request to /product_families/{product_family_id}/on_off_components.json. - This request will create a component definition of kind **on_off_component** - under the specified product family. On/Off component can then be added and - “allocated” for a subscription. + Creates an On/Off component definition under the specified product family. An + On/Off component can then be added and “allocated” for a subscription. On/off components are used for any flat fee, recurring add on (think $99/month for tech support or a flat add on shipping fee). For more information on components, see our documentation @@ -243,9 +241,9 @@ def create_prepaid_usage_component(self, """Perform a POST request to /product_families/{product_family_id}/prepaid_usage_components.json. - This request will create a component definition of kind - **prepaid_usage_component** under the specified product family. Prepaid - component can then be added and “allocated” for a subscription. + Creates a prepaid usage component definition under the specified product + family. A prepaid component can then be added and “allocated” for a + subscription. Prepaid components allow customers to pre-purchase units that can be used up over time on their subscription. In a sense, they are the mirror image of metered components; while metered components charge at the end of the period @@ -306,9 +304,9 @@ def create_event_based_component(self, """Perform a POST request to /product_families/{product_family_id}/event_based_components.json. - This request will create a component definition of kind - **event_based_component** under the specified product family. Event-based - component can then be added and “allocated” for a subscription. + Creates an event-based component definition under the specified product + family. An event-based component can then be added and “allocated” for a + subscription. Event-based components are similar to other component types, in that you define the component parameters (such as name and taxability) and the pricing. A key difference for the event-based component is that it must be @@ -369,9 +367,9 @@ def find_component(self, handle): """Perform a GET request to /components/lookup.json. - This request will return information regarding a component having the handle - you provide. You can identify your components with a handle so you don't have - to save or reference the IDs we generate. + Returns information for a component matching the provided handle. You can + identify your components with a handle so you don't have to save or reference + the IDs we generate. Args: handle (str): The handle of the component to find @@ -459,7 +457,7 @@ def update_product_family_component(self, """Perform a PUT request to /product_families/{product_family_id}/components/{component_id}.json. - This request will update a component from a specific product family. + Updates a component from a specific product family. You may read the component by either the component's id or handle. When using the handle, it must be prefixed with `handle:`. @@ -519,9 +517,8 @@ def archive_component(self, """Perform a DELETE request to /product_families/{product_family_id}/components/{component_id}.json. - Sending a DELETE request to this endpoint will archive the component. All - current subscribers will be unffected; their subscription/purchase will - continue to be charged as usual. + Archives the component; all current subscribers will continue to be charged + as usual. Args: product_family_id (int): The Advanced Billing id of the product family to @@ -570,7 +567,7 @@ def list_components(self, options=dict()): """Perform a GET request to /components.json. - This request will return a list of components for a site. + Lists components for a site. Args: options (dict, optional): Key-value pairs for any of the parameters to @@ -672,7 +669,7 @@ def update_component(self, body=None): """Perform a PUT request to /components/{component_id}.json. - This request will update a component. + Updates a component. You may read the component by either the component's id or handle. When using the handle, it must be prefixed with `handle:`. @@ -723,7 +720,7 @@ def list_components_for_product_family(self, """Perform a GET request to /product_families/{product_family_id}/components.json. - This request will return a list of components for a particular product family. + Lists components for a particular product family. Args: options (dict, optional): Key-value pairs for any of the parameters to diff --git a/advancedbilling/controllers/coupons_controller.py b/advancedbilling/controllers/coupons_controller.py index 5c86e912..028c9c76 100644 --- a/advancedbilling/controllers/coupons_controller.py +++ b/advancedbilling/controllers/coupons_controller.py @@ -62,23 +62,21 @@ def create_coupon(self, """Perform a POST request to /product_families/{product_family_id}/coupons.json. - ## Coupons Documentation - Coupons can be administered in the Advanced Billing application or created - via API. View our section on [creating - coupons](https://maxio.zendesk.com/hc/en-us/articles/24261212433165-Creating-E - diting-Deleting-Coupons) for more information. - Additionally, for documentation on how to apply a coupon to a subscription - within the Advanced Billing UI, see our documentation - [here](https://maxio.zendesk.com/hc/en-us/articles/24261259337101-Coupons-and- - Subscriptions). - ## Create Coupon - This request will create a coupon, based on the provided information. - You can create either a flat amount coupon, by specyfing `amount_in_cents`, - or percentage coupon by specyfing `percentage`. + Creates a coupon under the specified product family. + You can create either a flat amount coupon by specifying amount_in_cents, or + a percentage coupon by specifying percentage You can restrict a coupon to only apply to specific products / components by optionally passing in `restricted_products` and/or `restricted_components` objects in the format: `{ "": boolean_value }` + Coupons can be administered in the Advanced Billing application or created + via API. See [creating + coupons](https://maxio.zendesk.com/hc/en-us/articles/24261212433165-Creating-E + diting-Deleting-Coupons) for more information. + See [Apply Coupons to + Subscriptions](https://maxio.zendesk.com/hc/en-us/articles/24261259337101-Coup + ons-and-Subscriptions) for information on applying a coupon to a subscription + in the Advanced Billing UI. Args: product_family_id (int): The Advanced Billing id of the product family to @@ -128,7 +126,7 @@ def list_coupons_for_product_family(self, """Perform a GET request to /product_families/{product_family_id}/coupons.json. - List coupons for a specific Product Family in a Site. + Lists coupons for a specific product family in a site. Args: options (dict, optional): Key-value pairs for any of the parameters to @@ -205,9 +203,9 @@ def find_coupon(self, currency_prices=None): """Perform a GET request to /coupons/find.json. - You can search for a coupon via the API with the find method. By passing a - code parameter, the find will attempt to locate a coupon that matches that - code. If no coupon is found, a 404 is returned. + Searches for a coupon by code, returning a 404 if no coupon is found. By + passing a code parameter, the find will attempt to locate a coupon that + matches that code. If you have more than one product family and if the coupon you are trying to find does not belong to the default product family in your site, then you will need to specify (either in the url or as a query string param) the @@ -261,9 +259,8 @@ def read_coupon(self, """Perform a GET request to /product_families/{product_family_id}/coupons/{coupon_id}.json. - You can retrieve the Coupon via the API with the Show method. You must - identify the Coupon in this call by the ID parameter that Advanced Billing - assigns. + Returns a coupon by its Advanced Billing-assigned ID. You must identify the + Coupon in this call by the ID parameter that Advanced Billing assigns. If instead you would like to find a Coupon using a Coupon code, see the Coupon Find method. When fetching a coupon, if you have defined multiple currencies at the site @@ -325,9 +322,7 @@ def update_coupon(self, """Perform a PUT request to /product_families/{product_family_id}/coupons/{coupon_id}.json. - ## Update Coupon - You can update a Coupon via the API with a PUT request to the resource - endpoint. + Updates a coupon. You can restrict a coupon to only apply to specific products / components by optionally passing in hashes of `restricted_products` and/or `restricted_components` in the format: @@ -388,7 +383,8 @@ def archive_coupon(self, """Perform a DELETE request to /product_families/{product_family_id}/coupons/{coupon_id}.json. - You can archive a Coupon via the API with the archive method. + Archives a coupon, making it unavailable for future use while remaining + active on existing subscriptions. Archiving makes that Coupon unavailable for future use, but allows it to remain attached and functional on existing Subscriptions that are using it. The `archived_at` date and time will be assigned. @@ -435,7 +431,7 @@ def list_coupons(self, options=dict()): """Perform a GET request to /coupons.json. - You can retrieve a list of coupons. + Lists coupons for a site. Args: options (dict, optional): Key-value pairs for any of the parameters to @@ -505,8 +501,7 @@ def read_coupon_usage(self, """Perform a GET request to /product_families/{product_family_id}/coupons/{coupon_id}/usage.json. - This request will provide details about the coupon usage as an array of data - hashes, one per product. + Lists coupon usage details, one entry per product. Args: product_family_id (int): The Advanced Billing id of the product family to @@ -551,10 +546,9 @@ def validate_coupon(self, product_family_id=None): """Perform a GET request to /coupons/validate.json. - You can verify if a specific coupon code is valid using the `validate` - method. This method is useful for validating coupon codes that are entered by - a customer. If the coupon is found and is valid, the coupon will be returned - with a 200 status code. + Verifies whether a specific coupon code is valid. This method is useful for + validating coupon codes that are entered by a customer. If the coupon is + found and is valid, the coupon will be returned with a 200 status code. If the coupon is invalid, the status code will be 404 and the response will say why it is invalid. If the coupon is valid, the status code will be 200 and the coupon will be returned. The following reasons for invalidity are @@ -621,10 +615,10 @@ def create_or_update_coupon_currency_prices(self, body=None): """Perform a PUT request to /coupons/{coupon_id}/currency_prices.json. - This endpoint allows you to create and/or update currency prices for an - existing coupon. Multiple prices can be created or updated in a single - request but each of the currencies must be defined on the site level already - and the coupon must be an amount-based coupon, not percentage. + Creates and/or updates currency prices for an existing coupon. Multiple + prices can be created or updated in a single request but each of the + currencies must be defined on the site level already and the coupon must be + an amount-based coupon, not percentage. Currency pricing for coupons must mirror the setup of the primary coupon pricing - if the primary coupon is percentage based, you will not be able to define pricing in non-primary currencies. @@ -676,6 +670,7 @@ def create_coupon_subcodes(self, body=None): """Perform a POST request to /coupons/{coupon_id}/codes.json. + Creates subcodes for an existing coupon. ## Coupon Subcodes Intro Coupon Subcodes allow you to create a set of unique codes that allow you to expand the use of one coupon. @@ -757,7 +752,7 @@ def list_coupon_subcodes(self, options=dict()): """Perform a GET request to /coupons/{coupon_id}/codes.json. - This request allows you to request the subcodes that are attached to a coupon. + Lists the subcodes attached to a coupon. Args: options (dict, optional): Key-value pairs for any of the parameters to @@ -818,8 +813,8 @@ def update_coupon_subcodes(self, body=None): """Perform a PUT request to /coupons/{coupon_id}/codes.json. - You can update the subcodes for the given Coupon via the API with a PUT - request to the resource endpoint. + Updates the subcodes for a coupon, replacing all existing subcodes with the + new list. Send an array of new coupon subcodes. **Note**: All current subcodes for that Coupon will be deleted first, and replaced with the list of subcodes sent to this endpoint. @@ -872,6 +867,7 @@ def delete_coupon_subcode(self, """Perform a DELETE request to /coupons/{coupon_id}/codes/{subcode}.json. + Deletes a specific subcode from a coupon. ## Example Given a coupon with an ID of 567, and a coupon subcode of 20OFF, the URL to `DELETE` this coupon subcode would be: diff --git a/advancedbilling/controllers/custom_fields_controller.py b/advancedbilling/controllers/custom_fields_controller.py index df2ea95d..8a54da1b 100644 --- a/advancedbilling/controllers/custom_fields_controller.py +++ b/advancedbilling/controllers/custom_fields_controller.py @@ -219,7 +219,7 @@ def update_metafield(self, specify all metadata values including the new value you want to add. - Add new metadata to a dropdown or radio for a metafield that was created without metadata. - - Remove metadata for a dropdown or radio for a metafield. + - Remove metadata for a dropdown or radio for a metafield. >Note: Updates to metadata overwrite existing values. To remove one or more values, specify all metadata values except those you want to remove. - Add or update scope settings for a metafield. @@ -458,7 +458,8 @@ def update_metadata(self, subscription or customer you specify. You can update the input_type for the metafield with the Update Metafield endpoint. Each site is limited to 100 unique metafields per resource. This means you - can have 100 metafields for Subscription and another 100 for Customer. + can have 100 metafields for the Subscription resource and another 100 for the + Customer resource. Args: resource_type (ResourceType): The resource type to which the metafields @@ -567,7 +568,7 @@ def list_metadata_for_resource_type(self, options=dict()): """Perform a GET request to /{resource_type}/metadata.json. - Lists metadata for a specified array of subscriptions or customers. + Lists metadata for a specified array of subscriptions or customers. Args: options (dict, optional): Key-value pairs for any of the parameters to diff --git a/advancedbilling/controllers/customers_controller.py b/advancedbilling/controllers/customers_controller.py index a6914390..86a07f44 100644 --- a/advancedbilling/controllers/customers_controller.py +++ b/advancedbilling/controllers/customers_controller.py @@ -45,9 +45,9 @@ def create_customer(self, body=None): """Perform a POST request to /customers.json. - You may create a new Customer at any time, or you may create a Customer at - the same time you create a Subscription. The only validation restriction is - that you may only create one customer for a given reference value. + Creates a new customer; can also be created alongside a new subscription. The + only validation restriction is that you may only create one customer for a + given reference value. If provided, the `reference` value must be unique. It represents a unique identifier for the customer from your own app, i.e. the customer’s ID. This allows you to retrieve a given customer via a piece of shared information. @@ -120,7 +120,8 @@ def list_customers(self, options=dict()): """Perform a GET request to /customers.json. - This request will by default list all customers associated with your Site. + Lists all customers associated with your site, or filters results using the + search parameter. ## Find Customer Use the search feature with the `q` query parameter to retrieve an array of customers that matches the search query. @@ -272,7 +273,7 @@ def update_customer(self, body=None): """Perform a PUT request to /customers/{id}.json. - This method allows to update the Customer. + Updates the customer. Args: id (int): The Advanced Billing id of the customer @@ -321,7 +322,7 @@ def delete_customer(self, id): """Perform a DELETE request to /customers/{id}.json. - This method allows you to delete the Customer. + Deletes the customer. Args: id (int): The Advanced Billing id of the customer @@ -351,8 +352,8 @@ def read_customer_by_reference(self, reference): """Perform a GET request to /customers/lookup.json. - Use this method to return the customer object if you have the unique - **Reference ID (Your App)** value handy. It will return a single match. + Returns a customer by their unique reference ID. It will return a single + match. Args: reference (str): Customer reference @@ -389,7 +390,7 @@ def list_customer_subscriptions(self, """Perform a GET request to /customers/{customer_id}/subscriptions.json. - This method lists all subscriptions that belong to a customer. + Lists all subscriptions that belong to a customer. Args: customer_id (int): The Chargify id of the customer diff --git a/advancedbilling/controllers/events_based_billing_segments_controller.py b/advancedbilling/controllers/events_based_billing_segments_controller.py index e69bc3fe..369c1332 100644 --- a/advancedbilling/controllers/events_based_billing_segments_controller.py +++ b/advancedbilling/controllers/events_based_billing_segments_controller.py @@ -57,10 +57,10 @@ def create_segment(self, """Perform a POST request to /components/{component_id}/price_points/{price_point_id}/segments.json. - This endpoint creates a new Segment for a Component with segmented Metric. It - allows you to specify properties to bill upon and prices for each Segment. - You can only pass as many "property_values" as the related Metric has - segmenting properties defined. + Creates a new segment for a component with a segmented metric. It allows you + to specify properties to bill upon and prices for each Segment. You can only + pass as many "property_values" as the related Metric has segmenting + properties defined. You may specify component and/or price point by using either the numeric ID or the `handle:gold` syntax. @@ -119,8 +119,7 @@ def list_segments_for_price_point(self, """Perform a GET request to /components/{component_id}/price_points/{price_point_id}/segments.json. - This endpoint allows you to fetch Segments created for a given Price Point. - They will be returned in the order of creation. + Lists segments created for a given price point, in order of creation. You can pass `page` and `per_page` parameters in order to access all of the segments. By default it will return `30` records. You can set `per_page` to `200` at most. @@ -207,8 +206,8 @@ def update_segment(self, """Perform a PUT request to /components/{component_id}/price_points/{price_point_id}/segments/{id}.json. - This endpoint updates a single Segment for a Component with a segmented - Metric. It allows you to update the pricing for the segment. + Updates a single segment for a component with a segmented metric. It allows + you to update the pricing for the segment. You may specify component and/or price point by using either the numeric ID or the `handle:gold` syntax. @@ -275,7 +274,7 @@ def delete_segment(self, """Perform a DELETE request to /components/{component_id}/price_points/{price_point_id}/segments/{id}.json. - This endpoint allows you to delete a Segment with specified ID. + Deletes a segment with the specified ID. You may specify component and/or price point by using either the numeric ID or the `handle:gold` syntax. @@ -323,8 +322,8 @@ def bulk_create_segments(self, """Perform a POST request to /components/{component_id}/price_points/{price_point_id}/segments/bulk.json. - This endpoint allows you to create multiple segments in one request. The - array of segments can contain up to `2000` records. + Creates multiple segments in one request. The array of segments can contain + up to `2000` records. If any of the records contain an error the whole request would fail and none of the requested segments get created. The error response contains a message for only the one segment that failed validation, with the corresponding index @@ -389,8 +388,8 @@ def bulk_update_segments(self, """Perform a PUT request to /components/{component_id}/price_points/{price_point_id}/segments/bulk.json. - This endpoint allows you to update multiple segments in one request. The - array of segments can contain up to `1000` records. + Updates multiple segments in one request. The array of segments can contain + up to `1000` records. If any of the records contain an error the whole request would fail and none of the requested segments get updated. The error response contains a message for only the one segment that failed validation, with the corresponding index diff --git a/advancedbilling/controllers/events_controller.py b/advancedbilling/controllers/events_controller.py index 19ec544b..bbe74a34 100644 --- a/advancedbilling/controllers/events_controller.py +++ b/advancedbilling/controllers/events_controller.py @@ -42,13 +42,14 @@ def list_events(self, options=dict()): """Perform a GET request to /events.json. + Lists events for a site. ## Events Intro Advanced Billing Events include various activity that happens around a Site. This information is **especially** useful to track down issues that arise when subscriptions are not created due to errors. Within the Advanced Billing UI, "Events" are referred to as "Site Activity". - Full documentation on how to record view Events / Site Activty in the - Advanced Billing UI can be located + Full documentation on how to view Events / Site Activity in the Advanced + Billing UI can be located [here](https://maxio.zendesk.com/hc/en-us/articles/24250671733517-Site-Activit y). ## List Events for a Site @@ -223,7 +224,7 @@ def list_subscription_events(self, """Perform a GET request to /subscriptions/{subscription_id}/events.json. - The following request will return a list of events for a subscription. + Lists events for a subscription. ## Event Key The event type is identified by the key property. You can check supported keys [here]($m/Event%20Key). @@ -315,7 +316,7 @@ def read_events_count(self, options=dict()): """Perform a GET request to /events/count.json. - Get a count of all the events for a given site by using this method. + Returns the total count of events for a given site. Args: options (dict, optional): Key-value pairs for any of the parameters to diff --git a/advancedbilling/controllers/insights_controller.py b/advancedbilling/controllers/insights_controller.py index ecf00116..b1898edf 100644 --- a/advancedbilling/controllers/insights_controller.py +++ b/advancedbilling/controllers/insights_controller.py @@ -51,8 +51,8 @@ def __init__(self, config): def read_site_stats(self): """Perform a GET request to /stats.json. - The Stats API is a very basic view of some Site-level stats. This API call - only answers with JSON responses. An XML version is not provided. + Returns basic site-level stats. This API call only answers with JSON + responses. An XML version is not provided. ## Stats Documentation There currently is not a complimentary matching set of documentation that compliments this endpoint. However, each Site's dashboard will reflect the @@ -90,8 +90,7 @@ def read_mrr(self, subscription_id=None): """Perform a GET request to /mrr.json. - This endpoint returns your site's current MRR, including plan and usage - breakouts. + Returns your site's current MRR, including plan and usage breakouts. Args: at_time (datetime, optional): submit a timestamp in ISO8601 format to @@ -134,7 +133,7 @@ def list_mrr_movements(self, options=dict()): """Perform a GET request to /mrr_movements.json. - This endpoint returns your site's MRR movements. + Lists your site's MRR movements. ## Understanding MRR movements This endpoint will aid in accessing your site's [MRR Report](https://maxio.zendesk.com/hc/en-us/articles/24285894587021-MRR-Analyti diff --git a/advancedbilling/controllers/offers_controller.py b/advancedbilling/controllers/offers_controller.py index f9e1dfdb..642fae1a 100644 --- a/advancedbilling/controllers/offers_controller.py +++ b/advancedbilling/controllers/offers_controller.py @@ -45,7 +45,7 @@ def create_offer(self, body=None): """Perform a POST request to /offers.json. - Create an offer within your Advanced Billing site by sending a POST request. + Creates an offer within your Advanced Billing site. ## Documentation Offers allow you to package complicated combinations of products, components and coupons into a convenient package which can then be subscribed to just @@ -102,7 +102,7 @@ def list_offers(self, options=dict()): """Perform a GET request to /offers.json. - This endpoint will list offers for a site. + Lists offers for a site. Args: options (dict, optional): Key-value pairs for any of the parameters to @@ -165,8 +165,8 @@ def read_offer(self, offer_id): """Perform a GET request to /offers/{offer_id}.json. - This method allows you to list a specific offer's attributes. This is - different than list all offers for a site, as it requires an `offer_id`. + Returns a specific offer's attributes. This is different from listing all + offers for a site, as it requires an `offer_id`. Args: offer_id (int): The Chargify id of the offer @@ -203,7 +203,7 @@ def archive_offer(self, offer_id): """Perform a PUT request to /offers/{offer_id}/archive.json. - Archive an existing offer. Please provide an `offer_id` in order to archive + Archives an existing offer. Please provide an `offer_id` in order to archive the correct item. Args: @@ -234,8 +234,8 @@ def unarchive_offer(self, offer_id): """Perform a PUT request to /offers/{offer_id}/unarchive.json. - Unarchive a previously archived offer. Please provide an `offer_id` in order - to un-archive the correct item. + Unarchives a previously archived offer. Please provide an `offer_id` in order + to unarchive the correct item. Args: offer_id (int): The Chargify id of the offer diff --git a/advancedbilling/controllers/payment_profiles_controller.py b/advancedbilling/controllers/payment_profiles_controller.py index 371559e5..80c258b3 100644 --- a/advancedbilling/controllers/payment_profiles_controller.py +++ b/advancedbilling/controllers/payment_profiles_controller.py @@ -97,7 +97,7 @@ def create_payment_profile(self, + [Maxio.js with Stripe Direct Debit - full example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01 K0PJ15QRECQQ4ECS3ZA55GY7) - + [CMaxio.js with Stripe BECS Direct Debit - minimal + + [Maxio.js with Stripe BECS Direct Debit - minimal example](https://developers.chargify.com/docs/developer-docs/ZG9jOjE0NjAzNDIy- examples#minimal-example-with-sepa-or-becs-direct-debit-stripe-gateway) + [Maxio.js with Stripe BECS Direct Debit - full @@ -170,9 +170,9 @@ def list_payment_profiles(self, options=dict()): """Perform a GET request to /payment_profiles.json. - This method will return all of the active `payment_profiles` for a Site, or - for one Customer within a site. If no payment profiles are found, this - endpoint will return an empty array, not a 404. + Returns all active payment profiles for a site, or for one customer within a + site. If no payment profiles are found, this endpoint will return an empty + array, not a 404. Args: options (dict, optional): Key-value pairs for any of the parameters to @@ -232,8 +232,7 @@ def read_payment_profile(self, """Perform a GET request to /payment_profiles/{payment_profile_id}.json. - Using the GET method you can retrieve a Payment Profile identified by its - unique ID. + Returns a payment profile identified by its unique ID. Note that a different JSON object will be returned if the card method on file is a bank account. ### Response for Bank Account @@ -306,6 +305,7 @@ def update_payment_profile(self, """Perform a PUT request to /payment_profiles/{payment_profile_id}.json. + Updates a payment profile. ## Partial Card Updates In the event that you are using the Authorize.net, Stripe, Cybersource, Forte or Braintree Blue payment gateways, you can update just the billing and @@ -475,8 +475,8 @@ def verify_bank_account(self, """Perform a PUT request to /bank_accounts/{bank_account_id}/verification.json. - Submit the two small deposit amounts the customer received in their bank - account in order to verify the bank account. (Stripe only) + Verifies a bank account. Submit the two small deposit amounts the customer + received in their bank account to verify the bank account. (Stripe only) Args: bank_account_id (int): Identifier of the bank account in the system. @@ -569,8 +569,8 @@ def change_subscription_default_payment_profile(self, /subscriptions/{subscription_id}/payment_profiles/{payment_profile_id}/change_p ayment_profile.json. - This will change the default payment profile on the subscription to the - existing payment profile with the id specified. + Changes the default payment profile on the subscription to the existing + payment profile with the specified ID. You must elect to change the existing payment profile to a new payment profile ID in order to receive a satisfactory response from this endpoint. diff --git a/advancedbilling/controllers/product_families_controller.py b/advancedbilling/controllers/product_families_controller.py index d66e844f..8f8c47ba 100644 --- a/advancedbilling/controllers/product_families_controller.py +++ b/advancedbilling/controllers/product_families_controller.py @@ -168,7 +168,7 @@ def create_product_family(self, """Perform a POST request to /product_families.json. Creates a Product Family within your Advanced Billing site. Create a Product - Family to act as a container for your products, components and coupons. + Family to act as a container for your products, components, and coupons. Full documentation on how Product Families operate within the Advanced Billing UI can be located [here](https://maxio.zendesk.com/hc/en-us/articles/24261098936205-Product-Fami @@ -214,7 +214,7 @@ def list_product_families(self, options=dict()): """Perform a GET request to /product_families.json. - Retrieve a list of Product Families for a site. + Returns a list of Product Families for a site. Args: options (dict, optional): Key-value pairs for any of the parameters to diff --git a/advancedbilling/controllers/product_price_points_controller.py b/advancedbilling/controllers/product_price_points_controller.py index 30a3d524..4a23590f 100644 --- a/advancedbilling/controllers/product_price_points_controller.py +++ b/advancedbilling/controllers/product_price_points_controller.py @@ -273,8 +273,8 @@ def read_product_price_point(self, """Perform a GET request to /products/{product_id}/price_points/{price_point_id}.json. - Use this endpoint to retrieve details for a specific product price point. You - can achieve this by using either the product price point ID or handle. + Returns details for a specific product price point. You can achieve this by + using either the product price point ID or handle. Args: product_id (int | str): The id or handle of the product. When using the @@ -396,7 +396,7 @@ def unarchive_product_price_point(self, """Perform a PATCH request to /products/{product_id}/price_points/{price_point_id}/unarchive.json. - Use this endpoint to unarchive an archived product price point. + Unarchives an archived product price point. Args: product_id (int): The Advanced Billing id of the product to which the @@ -653,8 +653,7 @@ def list_all_product_price_points(self, options=dict()): """Perform a GET request to /products_price_points.json. - This method allows retrieval of a list of Products Price Points belonging to - a Site. + Lists Product Price Points belonging to a site. Args: options (dict, optional): Key-value pairs for any of the parameters to diff --git a/advancedbilling/controllers/products_controller.py b/advancedbilling/controllers/products_controller.py index 8c1adaa4..78e1c042 100644 --- a/advancedbilling/controllers/products_controller.py +++ b/advancedbilling/controllers/products_controller.py @@ -45,7 +45,7 @@ def create_product(self, /product_families/{product_family_id}/products.json. Creates a product in your Advanced Billing site. - See the following product docuemation for more information: + See the following product documentation for more information: + [Products Documentation](https://maxio.zendesk.com/hc/en-us/articles/24261090117645-Prod ucts-Overview) @@ -193,7 +193,7 @@ def archive_product(self, product_id): """Perform a DELETE request to /products/{product_id}.json. - Archives the product. All current subscribers will be unffected; their + Archives the product. All current subscribers will be unaffected; their subscription/purchase will continue to be charged monthly. This will restrict the option to chose the product for purchase via the Billing Portal, as well as disable Public Signup Pages for the product. @@ -274,7 +274,7 @@ def list_products(self, options=dict()): """Perform a GET request to /products.json. - This method allows to retrieve a list of Products belonging to a Site. + Lists products belonging to a site. Args: options (dict, optional): Key-value pairs for any of the parameters to diff --git a/advancedbilling/controllers/proforma_invoices_controller.py b/advancedbilling/controllers/proforma_invoices_controller.py index 20feabe1..a3f781a5 100644 --- a/advancedbilling/controllers/proforma_invoices_controller.py +++ b/advancedbilling/controllers/proforma_invoices_controller.py @@ -55,11 +55,11 @@ def create_consolidated_proforma_invoice(self, """Perform a POST request to /subscription_groups/{uid}/proforma_invoices.json. - This endpoint will trigger the creation of a consolidated proforma invoice - asynchronously. It will return a 201 with no message, or a 422 with any - errors. To find and view the new consolidated proforma invoice, you may poll - the subscription group listing for proforma invoices; only one consolidated - proforma invoice may be created per group at a time. + Creates a consolidated proforma invoice asynchronously. It will return a 201 + with no message, or a 422 with any errors. To find and view the new + consolidated proforma invoice, you may poll the subscription group listing + for proforma invoices; only one consolidated proforma invoice may be created + per group at a time. If the information becomes outdated, simply void the old consolidated proforma invoice and generate a new one. ## Restrictions @@ -96,7 +96,8 @@ def list_subscription_group_proforma_invoices(self, """Perform a GET request to /subscription_groups/{uid}/proforma_invoices.json. - Only proforma invoices with a `consolidation_level` of parent are returned. + Lists proforma invoices with a `consolidation_level` of parent for the + subscription group. By default, proforma invoices returned on the index will only include totals, not detailed breakdowns for `line_items`, `discounts`, `taxes`, `credits`, `payments`, `custom_fields`. To include breakdowns, pass the specific field @@ -168,7 +169,7 @@ def read_proforma_invoice(self, """Perform a GET request to /proforma_invoices/{proforma_invoice_uid}.json. - Use this endpoint to read the details of an existing proforma invoice. + Returns the details of an existing proforma invoice. ## Restrictions Proforma invoices are only available on Relationship Invoicing sites. @@ -209,9 +210,8 @@ def create_proforma_invoice(self, """Perform a POST request to /subscriptions/{subscription_id}/proforma_invoices.json. - This endpoint will create a proforma invoice and return it as a response. If - the information becomes outdated, simply void the old proforma invoice and - generate a new one. + Creates a proforma invoice and returns it as a response. If the information + becomes outdated, simply void the old proforma invoice and generate a new one. If you would like to preview the next billing amounts without generating a full proforma invoice, use the renewal preview endpoint. ## Restrictions @@ -259,10 +259,10 @@ def list_proforma_invoices(self, """Perform a GET request to /subscriptions/{subscription_id}/proforma_invoices.json. - By default, proforma invoices returned on the index will only include totals, - not detailed breakdowns for `line_items`, `discounts`, `taxes`, `credits`, - `payments`, or `custom_fields`. To include breakdowns, pass the specific - field as a key in the query with a value set to `true`. + Lists proforma invoices for a subscription. By default, results only include + totals, not detailed breakdowns for `line_items`, `discounts`, `taxes`, + `credits`, `payments`, or `custom_fields`. To include breakdowns, pass the + specific field as a key in the query with a value set to `true`. Args: options (dict, optional): Key-value pairs for any of the parameters to @@ -368,8 +368,7 @@ def deliver_proforma_invoice(self, """Perform a POST request to /proforma_invoices/{proforma_invoice_uid}/deliveries.json. - Allows for proforma invoices to be programmatically delivered via email. - Supports email + Delivers a proforma invoice programmatically via email. Supports email delivery to direct recipients, carbon-copy (cc) recipients, and blind carbon-copy (bcc) recipients. If `recipient_emails` is omitted, the system will fall back to the primary @@ -428,7 +427,7 @@ def void_proforma_invoice(self, """Perform a POST request to /proforma_invoices/{proforma_invoice_uid}/void.json. - This endpoint will void a proforma invoice that has the status "draft". + Voids a proforma invoice that has the status "draft". ## Restrictions Proforma invoices are only available on Relationship Invoicing sites. Only proforma invoices that have the appropriate status may be reopened. If @@ -486,7 +485,7 @@ def preview_proforma_invoice(self, """Perform a POST request to /subscriptions/{subscription_id}/proforma_invoices/preview.json. - Return a preview of the data that will be included on a given subscription's + Returns a preview of the data that will be included on a given subscription's proforma invoice if one were to be generated. It will have similar line items and totals as a renewal preview, but the response will be presented in the format of a proforma invoice. Consequently it will include additional @@ -543,12 +542,11 @@ def create_signup_proforma_invoice(self, body=None): """Perform a POST request to /subscriptions/proforma_invoices.json. - This endpoint is only available for Relationship Invoicing sites. It cannot + Creates a proforma invoice to preview costs before a subscription's signup. + This endpoint is only available for Relationship Invoicing sites and cannot be used to create consolidated proforma invoices or preview prepaid - subscriptions. - Create a proforma invoice to preview costs before a subscription's signup. - Like other proforma invoices, it can be emailed to the customer, voided, and - publicly viewed on the chargifypay domain. + subscriptions. Like other proforma invoices, it can be emailed to the + customer, voided, and publicly viewed on the chargifypay domain. Pass a payload that resembles a subscription create or signup preview request. For example, you can specify components, coupons/a referral, offers, custom pricing, and an existing customer or payment profile to populate a @@ -604,13 +602,12 @@ def preview_signup_proforma_invoice(self, """Perform a POST request to /subscriptions/proforma_invoices/preview.json. - This endpoint is only available for Relationship Invoicing sites. It cannot - be used to create consolidated proforma invoice previews or preview prepaid - subscriptions. - Create a signup preview in the format of a proforma invoice to preview costs - before a subscription's signup. You have the option of optionally previewing - the first renewal's costs as well. The proforma invoice preview will not be - persisted. + Creates a signup preview in the format of a proforma invoice to preview costs + before a subscription's signup. This endpoint is only available for + Relationship Invoicing sites and cannot be used to create consolidated + proforma invoice previews or preview prepaid subscriptions. You have the + option of previewing the first renewal's costs as well. The proforma invoice + preview will not be persisted. Pass a payload that resembles a subscription create or signup preview request. For example, you can specify components, coupons/a referral, offers, custom pricing, and an existing customer or payment profile to populate a diff --git a/advancedbilling/controllers/reason_codes_controller.py b/advancedbilling/controllers/reason_codes_controller.py index e6d5ab7f..0992f239 100644 --- a/advancedbilling/controllers/reason_codes_controller.py +++ b/advancedbilling/controllers/reason_codes_controller.py @@ -45,8 +45,9 @@ def create_reason_code(self, body=None): """Perform a POST request to /reason_codes.json. + Creates a reason code for a given site. # Reason Codes Intro - ReasonCodes are a way to gain a high level view of why your customers are + Reason Codes are a way to gain a high-level view of why your customers are cancelling the subscription to your product or service. Add a set of churn reason codes to be displayed in-app and/or the Maxio Billing Portal. As your subscribers decide to cancel their subscription, @@ -58,8 +59,8 @@ def create_reason_code(self, Codes](https://maxio.zendesk.com/hc/en-us/articles/24286647554701-Churn-Reason -Codes) ## Create Reason Code - This method gives a merchant the option to create a reason codes for a given - Site. + This method gives a merchant the option to create reason codes for a given + site. Args: body (CreateReasonCodeRequest, optional): The request body parameter. @@ -101,8 +102,7 @@ def list_reason_codes(self, options=dict()): """Perform a GET request to /reason_codes.json. - This method gives a merchant the option to retrieve a list of all of the - current churn codes for a given site. + Lists all current churn codes for a given site. Args: options (dict, optional): Key-value pairs for any of the parameters to @@ -160,8 +160,7 @@ def read_reason_code(self, reason_code_id): """Perform a GET request to /reason_codes/{reason_code_id}.json. - This method gives a merchant the option to retrieve a list of a particular - code for a given Site by providing the unique numerical ID of the code. + Returns a particular churn reason code for a given site by its unique ID. Args: reason_code_id (int): The Advanced Billing id of the reason code @@ -200,8 +199,7 @@ def update_reason_code(self, body=None): """Perform a PUT request to /reason_codes/{reason_code_id}.json. - This method gives a merchant the option to update an existing reason code for - a given site. + Updates an existing reason code for a given site. Args: reason_code_id (int): The Advanced Billing id of the reason code @@ -250,9 +248,8 @@ def delete_reason_code(self, reason_code_id): """Perform a DELETE request to /reason_codes/{reason_code_id}.json. - This method gives a merchant the option to delete one reason code from the - Churn Reason Codes. This code will be immediately removed. This action is not - reversible. + Deletes a reason code from the Churn Reason Codes. This code will be + immediately removed. This action is not reversible. Args: reason_code_id (int): The Advanced Billing id of the reason code diff --git a/advancedbilling/controllers/referral_codes_controller.py b/advancedbilling/controllers/referral_codes_controller.py index 3b9eb73c..fed9ac13 100644 --- a/advancedbilling/controllers/referral_codes_controller.py +++ b/advancedbilling/controllers/referral_codes_controller.py @@ -39,9 +39,9 @@ def validate_referral_code(self, code): """Perform a GET request to /referral_codes/validate.json. - Use this method to determine if the referral code is valid and applicable - within your Site. This method is useful for validating referral codes that - are entered by a customer. + Validates whether a referral code is valid and applicable within your site. + This method is useful for validating referral codes that are entered by a + customer. ## Referrals Documentation Full documentation on how to use the referrals feature in the Advanced Billing UI can be located diff --git a/advancedbilling/controllers/sales_commissions_controller.py b/advancedbilling/controllers/sales_commissions_controller.py index 2abc6239..ed75cf38 100644 --- a/advancedbilling/controllers/sales_commissions_controller.py +++ b/advancedbilling/controllers/sales_commissions_controller.py @@ -43,7 +43,7 @@ def list_sales_commission_settings(self, """Perform a GET request to /sellers/{seller_id}/sales_commission_settings.json. - Endpoint returns subscriptions with associated sales reps + Lists subscriptions with associated sales reps. ## Modified Authentication Process The Sales Commission API differs from other Chargify API endpoints. This resource is associated with the seller itself. Up to now all available @@ -129,7 +129,7 @@ def list_sales_reps(self, options=dict()): """Perform a GET request to /sellers/{seller_id}/sales_reps.json. - Endpoint returns sales rep list with details + Returns a sales rep list with details. ## Modified Authentication Process The Sales Commission API differs from other Chargify API endpoints. This resource is associated with the seller itself. Up to now all available @@ -221,7 +221,7 @@ def read_sales_rep(self, """Perform a GET request to /sellers/{seller_id}/sales_reps/{sales_rep_id}.json. - Endpoint returns sales rep and attached subscriptions details. + Returns a sales rep and attached subscription details. ## Modified Authentication Process The Sales Commission API differs from other Chargify API endpoints. This resource is associated with the seller itself. Up to now all available diff --git a/advancedbilling/models/__init__.py b/advancedbilling/models/__init__.py index 789478e7..a9a87f7e 100644 --- a/advancedbilling/models/__init__.py +++ b/advancedbilling/models/__init__.py @@ -74,6 +74,8 @@ "change_invoice_status_event_data", "chargeback_status", "chargify_ebb", + "chjs_tokenization_failure", + "chjs_tokenization_success", "cleanup_scope", "clone_component_price_point", "clone_component_price_point_request", @@ -375,7 +377,9 @@ "payment_method_credit_card", "payment_method_external", "payment_method_paypal", + "payment_profile", "payment_profile_attributes", + "payment_profile_params", "payment_profile_response", "payment_related_events", "payment_type", diff --git a/advancedbilling/models/chjs_tokenization_failure.py b/advancedbilling/models/chjs_tokenization_failure.py new file mode 100644 index 00000000..f3e958b5 --- /dev/null +++ b/advancedbilling/models/chjs_tokenization_failure.py @@ -0,0 +1,154 @@ +"""advanced_billing. + +This file was automatically generated for Maxio by APIMATIC v3.0 ( + https://www.apimatic.io ). +""" + +# ruff: noqa: E501 +from advancedbilling.api_helper import APIHelper +from advancedbilling.models.payment_profile_params import ( + PaymentProfileParams, +) + + +class ChjsTokenizationFailure(object): + """Implementation of the 'Chjs Tokenization Failure' model. + + Attributes: + errors (str): The model property of type str. + payment_profile_params (PaymentProfileParams): PCI-safe cardholder fields + only. Full card numbers, CVV, and billing address are never included. + additional_properties (Dict[str, object]): The additional properties for the + model. + + """ + + # Create a mapping from Model property names to API property names + _names = { + "errors": "errors", + "payment_profile_params": "payment_profile_params", + } + + _optionals = [ + "payment_profile_params", + ] + + def __init__( + self, + errors=None, + payment_profile_params=APIHelper.SKIP, + additional_properties=None): + """Initialize a ChjsTokenizationFailure instance.""" + # Initialize members of the class + self.errors = errors + if payment_profile_params is not APIHelper.SKIP: + self.payment_profile_params = payment_profile_params + + # Add additional model properties to the instance + if additional_properties is None: + additional_properties = {} + self.additional_properties = additional_properties + + @classmethod + def from_dictionary(cls, + dictionary): + """Create an instance of this model from a dictionary + + Args: + dictionary (dictionary): A dictionary representation of the object + as obtained from the deserialization of the server's response. The + keys MUST match property names in the API description. + + Returns: + object: An instance of this structure class. + + """ + if not isinstance(dictionary, dict) or dictionary is None: + return None + + # Extract variables from the dictionary + errors =\ + dictionary.get("errors")\ + if dictionary.get("errors")\ + else None + payment_profile_params =\ + PaymentProfileParams.from_dictionary( + dictionary.get("payment_profile_params"))\ + if "payment_profile_params" in dictionary.keys()\ + else APIHelper.SKIP + + # Clean out expected properties from dictionary + additional_properties =\ + {k: v for k, v in dictionary.items() if k not in cls._names.values()} + + # Return an object of this model + return cls(errors, + payment_profile_params, + additional_properties) + + @classmethod + def validate(cls, dictionary): + """Validate dictionary against class required properties + + Args: + dictionary (dictionary): A dictionary representation of the object + as obtained from the deserialization of the server's response. The + keys MUST match property names in the API description. + + Returns: + boolean : if dictionary is valid contains required properties. + + """ + if isinstance(dictionary, cls): + return APIHelper.is_valid_type( + value=dictionary.errors, + type_callable=lambda value: + isinstance( + value, + str, + )) + + if not isinstance(dictionary, dict): + return False + + return APIHelper.is_valid_type( + value=dictionary.get("errors"), + type_callable=lambda value: + isinstance( + value, + str, + )) + + def __repr__(self): + """Return a unambiguous string representation.""" + _errors=self.errors + _payment_profile_params=( + self.payment_profile_params + if hasattr(self, "payment_profile_params") + else None + ) + _additional_properties=self.additional_properties + return ( + f"{self.__class__.__name__}(" + f"errors={_errors!r}, " + f"payment_profile_params={_payment_profile_params!r}, " + f"additional_properties={_additional_properties!r}, " + f")" + ) + + def __str__(self): + """Return a human-readable string representation.""" + _errors=self.errors + _payment_profile_params=( + self.payment_profile_params + if hasattr(self, "payment_profile_params") + else None + ) + _additional_properties=self.additional_properties + return ( + f"{self.__class__.__name__}(" + f"errors={_errors!s}, " + f"payment_profile_params={_payment_profile_params!s}, " + f"additional_properties={_additional_properties!s}, " + f")" + ) diff --git a/advancedbilling/models/chjs_tokenization_success.py b/advancedbilling/models/chjs_tokenization_success.py new file mode 100644 index 00000000..2269db89 --- /dev/null +++ b/advancedbilling/models/chjs_tokenization_success.py @@ -0,0 +1,152 @@ +"""advanced_billing. + +This file was automatically generated for Maxio by APIMATIC v3.0 ( + https://www.apimatic.io ). +""" + +# ruff: noqa: E501 +from advancedbilling.api_helper import APIHelper +from advancedbilling.models.payment_profile import ( + PaymentProfile, +) + + +class ChjsTokenizationSuccess(object): + """Implementation of the 'Chjs Tokenization Success' model. + + Attributes: + payment_profile (PaymentProfile): The model property of type PaymentProfile. + gateway_customer_id (int): The model property of type int. + additional_properties (Dict[str, object]): The additional properties for the + model. + + """ + + # Create a mapping from Model property names to API property names + _names = { + "payment_profile": "payment_profile", + "gateway_customer_id": "gateway_customer_id", + } + + _optionals = [ + "gateway_customer_id", + ] + + _nullables = [ + "gateway_customer_id", + ] + + def __init__( + self, + payment_profile=None, + gateway_customer_id=APIHelper.SKIP, + additional_properties=None): + """Initialize a ChjsTokenizationSuccess instance.""" + # Initialize members of the class + self.payment_profile = payment_profile + if gateway_customer_id is not APIHelper.SKIP: + self.gateway_customer_id = gateway_customer_id + + # Add additional model properties to the instance + if additional_properties is None: + additional_properties = {} + self.additional_properties = additional_properties + + @classmethod + def from_dictionary(cls, + dictionary): + """Create an instance of this model from a dictionary + + Args: + dictionary (dictionary): A dictionary representation of the object + as obtained from the deserialization of the server's response. The + keys MUST match property names in the API description. + + Returns: + object: An instance of this structure class. + + """ + if not isinstance(dictionary, dict) or dictionary is None: + return None + + # Extract variables from the dictionary + payment_profile =\ + PaymentProfile.from_dictionary( + dictionary.get("payment_profile"))\ + if dictionary.get("payment_profile") else None + gateway_customer_id =\ + dictionary.get("gateway_customer_id")\ + if "gateway_customer_id" in dictionary.keys()\ + else APIHelper.SKIP + + # Clean out expected properties from dictionary + additional_properties =\ + {k: v for k, v in dictionary.items() if k not in cls._names.values()} + + # Return an object of this model + return cls(payment_profile, + gateway_customer_id, + additional_properties) + + @classmethod + def validate(cls, dictionary): + """Validate dictionary against class required properties + + Args: + dictionary (dictionary): A dictionary representation of the object + as obtained from the deserialization of the server's response. The + keys MUST match property names in the API description. + + Returns: + boolean : if dictionary is valid contains required properties. + + """ + if isinstance(dictionary, cls): + return APIHelper.is_valid_type( + value=dictionary.payment_profile, + type_callable=lambda value: + PaymentProfile.validate(value), + is_model_dict=True) + + if not isinstance(dictionary, dict): + return False + + return APIHelper.is_valid_type( + value=dictionary.get("payment_profile"), + type_callable=lambda value: + PaymentProfile.validate(value), + is_model_dict=True) + + def __repr__(self): + """Return a unambiguous string representation.""" + _payment_profile=self.payment_profile + _gateway_customer_id=( + self.gateway_customer_id + if hasattr(self, "gateway_customer_id") + else None + ) + _additional_properties=self.additional_properties + return ( + f"{self.__class__.__name__}(" + f"payment_profile={_payment_profile!r}, " + f"gateway_customer_id={_gateway_customer_id!r}, " + f"additional_properties={_additional_properties!r}, " + f")" + ) + + def __str__(self): + """Return a human-readable string representation.""" + _payment_profile=self.payment_profile + _gateway_customer_id=( + self.gateway_customer_id + if hasattr(self, "gateway_customer_id") + else None + ) + _additional_properties=self.additional_properties + return ( + f"{self.__class__.__name__}(" + f"payment_profile={_payment_profile!s}, " + f"gateway_customer_id={_gateway_customer_id!s}, " + f"additional_properties={_additional_properties!s}, " + f")" + ) diff --git a/advancedbilling/models/create_subscription.py b/advancedbilling/models/create_subscription.py index 5285699d..a744ae7a 100644 --- a/advancedbilling/models/create_subscription.py +++ b/advancedbilling/models/create_subscription.py @@ -217,7 +217,7 @@ class CreateSubscription(object): Communication Delay feature. skip_billing_manifest_taxes (bool): Valid only for the Subscription Preview endpoint. When set to `true` it skips calculating taxes for the current - and next billing manifests. + and next billing manifests. Defaults to `false` when not provided. additional_properties (Dict[str, object]): The additional properties for the model. @@ -387,7 +387,7 @@ def __init__( ach_agreement=APIHelper.SKIP, dunning_communication_delay_enabled=False, dunning_communication_delay_time_zone=APIHelper.SKIP, - skip_billing_manifest_taxes=False, + skip_billing_manifest_taxes=APIHelper.SKIP, additional_properties=None): """Initialize a CreateSubscription instance.""" # Initialize members of the class @@ -508,7 +508,8 @@ def __init__( if dunning_communication_delay_time_zone is not APIHelper.SKIP: self.dunning_communication_delay_time_zone =\ dunning_communication_delay_time_zone - self.skip_billing_manifest_taxes = skip_billing_manifest_taxes + if skip_billing_manifest_taxes is not APIHelper.SKIP: + self.skip_billing_manifest_taxes = skip_billing_manifest_taxes # Add additional model properties to the instance if additional_properties is None: @@ -745,8 +746,8 @@ def from_dictionary(cls, else APIHelper.SKIP skip_billing_manifest_taxes =\ dictionary.get("skip_billing_manifest_taxes")\ - if dictionary.get("skip_billing_manifest_taxes")\ - else False + if "skip_billing_manifest_taxes" in dictionary.keys()\ + else APIHelper.SKIP # Clean out expected properties from dictionary additional_properties =\ diff --git a/advancedbilling/models/credit_note_line_item.py b/advancedbilling/models/credit_note_line_item.py index 1295ccdf..2d54adbd 100644 --- a/advancedbilling/models/credit_note_line_item.py +++ b/advancedbilling/models/credit_note_line_item.py @@ -76,6 +76,9 @@ class CreditNoteLineItem(object): Will be `nil` for non-component credits. billing_schedule_item_id (int): The model property of type int. custom_item (bool): The model property of type bool. + prepaid_allocation_expires_at (date): The date a prepaid allocation is set to + expire. Only present on line items representing prepaid component + allocations. The format is `"YYYY-MM-DD"`. additional_properties (Dict[str, object]): The additional properties for the model. @@ -102,6 +105,7 @@ class CreditNoteLineItem(object): "price_point_id": "price_point_id", "billing_schedule_item_id": "billing_schedule_item_id", "custom_item": "custom_item", + "prepaid_allocation_expires_at": "prepaid_allocation_expires_at", } _optionals = [ @@ -124,12 +128,14 @@ class CreditNoteLineItem(object): "price_point_id", "billing_schedule_item_id", "custom_item", + "prepaid_allocation_expires_at", ] _nullables = [ "component_id", "price_point_id", "billing_schedule_item_id", + "prepaid_allocation_expires_at", ] def __init__( @@ -153,6 +159,7 @@ def __init__( price_point_id=APIHelper.SKIP, billing_schedule_item_id=APIHelper.SKIP, custom_item=APIHelper.SKIP, + prepaid_allocation_expires_at=APIHelper.SKIP, additional_properties=None): """Initialize a CreditNoteLineItem instance.""" # Initialize members of the class @@ -194,6 +201,8 @@ def __init__( self.billing_schedule_item_id = billing_schedule_item_id if custom_item is not APIHelper.SKIP: self.custom_item = custom_item + if prepaid_allocation_expires_at is not APIHelper.SKIP: + self.prepaid_allocation_expires_at = prepaid_allocation_expires_at # Add additional model properties to the instance if additional_properties is None: @@ -292,6 +301,13 @@ def from_dictionary(cls, dictionary.get("custom_item")\ if "custom_item" in dictionary.keys()\ else APIHelper.SKIP + if "prepaid_allocation_expires_at" in dictionary.keys(): + prepaid_allocation_expires_at = dateutil.parser.parse( + dictionary.get("prepaid_allocation_expires_at")).date()\ + if dictionary.get("prepaid_allocation_expires_at") else None + + else: + prepaid_allocation_expires_at = APIHelper.SKIP # Clean out expected properties from dictionary additional_properties =\ @@ -317,6 +333,7 @@ def from_dictionary(cls, price_point_id, billing_schedule_item_id, custom_item, + prepaid_allocation_expires_at, additional_properties) @classmethod @@ -437,6 +454,11 @@ def __repr__(self): if hasattr(self, "custom_item") else None ) + _prepaid_allocation_expires_at=( + self.prepaid_allocation_expires_at + if hasattr(self, "prepaid_allocation_expires_at") + else None + ) _additional_properties=self.additional_properties return ( f"{self.__class__.__name__}(" @@ -459,6 +481,7 @@ def __repr__(self): f"price_point_id={_price_point_id!r}, " f"billing_schedule_item_id={_billing_schedule_item_id!r}, " f"custom_item={_custom_item!r}, " + f"prepaid_allocation_expires_at={_prepaid_allocation_expires_at!r}, " f"additional_properties={_additional_properties!r}, " f")" ) @@ -560,6 +583,11 @@ def __str__(self): if hasattr(self, "custom_item") else None ) + _prepaid_allocation_expires_at=( + self.prepaid_allocation_expires_at + if hasattr(self, "prepaid_allocation_expires_at") + else None + ) _additional_properties=self.additional_properties return ( f"{self.__class__.__name__}(" @@ -582,6 +610,7 @@ def __str__(self): f"price_point_id={_price_point_id!s}, " f"billing_schedule_item_id={_billing_schedule_item_id!s}, " f"custom_item={_custom_item!s}, " + f"prepaid_allocation_expires_at={_prepaid_allocation_expires_at!s}, " f"additional_properties={_additional_properties!s}, " f")" ) diff --git a/advancedbilling/models/customer.py b/advancedbilling/models/customer.py index 362d9829..9587b5d1 100644 --- a/advancedbilling/models/customer.py +++ b/advancedbilling/models/customer.py @@ -59,6 +59,7 @@ class Customer(object): tax_exempt_reason (str): The Tax Exemption Reason Code for the customer default_auto_renewal_profile_id (int): The default auto-renewal profile ID for the customer + maxioid (str): The Maxio-generated unique identifier for the customer. additional_properties (Dict[str, object]): The additional properties for the model. @@ -96,6 +97,7 @@ class Customer(object): "salesforce_id": "salesforce_id", "tax_exempt_reason": "tax_exempt_reason", "default_auto_renewal_profile_id": "default_auto_renewal_profile_id", + "maxioid": "maxioid", } _optionals = [ @@ -129,6 +131,7 @@ class Customer(object): "salesforce_id", "tax_exempt_reason", "default_auto_renewal_profile_id", + "maxioid", ] _nullables = [ @@ -155,6 +158,7 @@ class Customer(object): "salesforce_id", "tax_exempt_reason", "default_auto_renewal_profile_id", + "maxioid", ] def __init__( @@ -189,6 +193,7 @@ def __init__( salesforce_id=APIHelper.SKIP, tax_exempt_reason=APIHelper.SKIP, default_auto_renewal_profile_id=APIHelper.SKIP, + maxioid=APIHelper.SKIP, additional_properties=None): """Initialize a Customer instance.""" # Initialize members of the class @@ -267,6 +272,8 @@ def __init__( self.tax_exempt_reason = tax_exempt_reason if default_auto_renewal_profile_id is not APIHelper.SKIP: self.default_auto_renewal_profile_id = default_auto_renewal_profile_id + if maxioid is not APIHelper.SKIP: + self.maxioid = maxioid # Add additional model properties to the instance if additional_properties is None: @@ -418,6 +425,10 @@ def from_dictionary(cls, dictionary.get("default_auto_renewal_profile_id")\ if "default_auto_renewal_profile_id" in dictionary.keys()\ else APIHelper.SKIP + maxioid =\ + dictionary.get("maxioid")\ + if "maxioid" in dictionary.keys()\ + else APIHelper.SKIP # Clean out expected properties from dictionary additional_properties =\ @@ -454,6 +465,7 @@ def from_dictionary(cls, salesforce_id, tax_exempt_reason, default_auto_renewal_profile_id, + maxioid, additional_properties) @classmethod @@ -629,6 +641,11 @@ def __repr__(self): if hasattr(self, "default_auto_renewal_profile_id") else None ) + _maxioid=( + self.maxioid + if hasattr(self, "maxioid") + else None + ) _additional_properties=self.additional_properties return ( f"{self.__class__.__name__}(" @@ -662,6 +679,7 @@ def __repr__(self): f"salesforce_id={_salesforce_id!r}, " f"tax_exempt_reason={_tax_exempt_reason!r}, " f"default_auto_renewal_profile_id={_default_auto_renewal_profile_id!r}, " + f"maxioid={_maxioid!r}, " f"additional_properties={_additional_properties!r}, " f")" ) @@ -818,6 +836,11 @@ def __str__(self): if hasattr(self, "default_auto_renewal_profile_id") else None ) + _maxioid=( + self.maxioid + if hasattr(self, "maxioid") + else None + ) _additional_properties=self.additional_properties return ( f"{self.__class__.__name__}(" @@ -851,6 +874,7 @@ def __str__(self): f"salesforce_id={_salesforce_id!s}, " f"tax_exempt_reason={_tax_exempt_reason!s}, " f"default_auto_renewal_profile_id={_default_auto_renewal_profile_id!s}, " + f"maxioid={_maxioid!s}, " f"additional_properties={_additional_properties!s}, " f")" ) diff --git a/advancedbilling/models/event.py b/advancedbilling/models/event.py index b1860b88..fcb436f5 100644 --- a/advancedbilling/models/event.py +++ b/advancedbilling/models/event.py @@ -28,8 +28,9 @@ class Event(object): ProformaInvoiceIssued | SubscriptionGroupSignupEventData | CreditAccountBalanceChanged | PrepaymentAccountBalanceChanged | PaymentCollectionMethodChanged | ItemPricePointChanged | - CustomFieldValueChange | None): The schema varies based on the event key. - The key-to-event data mapping is as follows: * + CustomFieldValueChange | ChjsTokenizationSuccess | + ChjsTokenizationFailure | None): The schema varies based on the event + key. The key-to-event data mapping is as follows: * `subscription_product_change` - SubscriptionProductChange * `subscription_state_change` - SubscriptionStateChange * `signup_success`, `delayed_signup_creation_success`, `payment_success`, `payment_failure`, @@ -50,7 +51,9 @@ class Event(object): `subscription_service_credit_account_balance_changed` - CreditAccountBalanceChanged * `item_price_point_changed` - ItemPricePointChanged * `custom_field_value_change` - - CustomFieldValueChange * The rest, that is + CustomFieldValueChange * `chjs_tokenization_success` - + ChjsTokenizationSuccess * `chjs_tokenization_failure` - + ChjsTokenizationFailure * The rest, that is `delayed_signup_creation_failure`, `billing_date_change`, `expiration_date_change`, `expiring_card`, `customer_update`, `customer_create`, `customer_delete`, `upgrade_downgrade_success`, diff --git a/advancedbilling/models/event_key.py b/advancedbilling/models/event_key.py index 4166c959..6ad79866 100644 --- a/advancedbilling/models/event_key.py +++ b/advancedbilling/models/event_key.py @@ -88,6 +88,8 @@ class EventKey(object): CHARGEBACK_WON: The enum member of type str. PAYMENT_COLLECTION_METHOD_CHANGED: The enum member of type str. COMPONENT_BILLING_DATE_CHANGED: The enum member of type str. + CHJS_TOKENIZATION_FAILURE: The enum member of type str. + CHJS_TOKENIZATION_SUCCESS: The enum member of type str. SUBSCRIPTION_TERM_RENEWAL_SCHEDULED: The enum member of type str. SUBSCRIPTION_TERM_RENEWAL_PENDING: The enum member of type str. SUBSCRIPTION_TERM_RENEWAL_ACTIVATED: The enum member of type str. @@ -133,6 +135,7 @@ class EventKey(object): "subscription_removed_from_group", "chargeback_opened", "chargeback_lost", "chargeback_accepted", "chargeback_closed", "chargeback_won", "payment_collection_method_changed", "component_billing_date_changed", + "chjs_tokenization_failure", "chjs_tokenization_success", "subscription_term_renewal_scheduled", "subscription_term_renewal_pending", "subscription_term_renewal_activated", "subscription_term_renewal_removed"] PAYMENT_SUCCESS = "payment_success" @@ -289,6 +292,10 @@ class EventKey(object): COMPONENT_BILLING_DATE_CHANGED = "component_billing_date_changed" + CHJS_TOKENIZATION_FAILURE = "chjs_tokenization_failure" + + CHJS_TOKENIZATION_SUCCESS = "chjs_tokenization_success" + SUBSCRIPTION_TERM_RENEWAL_SCHEDULED = "subscription_term_renewal_scheduled" SUBSCRIPTION_TERM_RENEWAL_PENDING = "subscription_term_renewal_pending" diff --git a/advancedbilling/models/invoice_line_item.py b/advancedbilling/models/invoice_line_item.py index 53c83be0..870e1cbc 100644 --- a/advancedbilling/models/invoice_line_item.py +++ b/advancedbilling/models/invoice_line_item.py @@ -96,6 +96,9 @@ class InvoiceLineItem(object): product_price_point_id (int): The price point ID of the line item's product custom_item (bool): The model property of type bool. kind (str): The model property of type str. + prepaid_allocation_expires_at (date): The date a prepaid allocation is set to + expire. Only present on line items representing prepaid component + allocations. The format is `"YYYY-MM-DD"`. additional_properties (Dict[str, object]): The additional properties for the model. @@ -127,6 +130,7 @@ class InvoiceLineItem(object): "product_price_point_id": "product_price_point_id", "custom_item": "custom_item", "kind": "kind", + "prepaid_allocation_expires_at": "prepaid_allocation_expires_at", } _optionals = [ @@ -154,6 +158,7 @@ class InvoiceLineItem(object): "product_price_point_id", "custom_item", "kind", + "prepaid_allocation_expires_at", ] _nullables = [ @@ -164,6 +169,7 @@ class InvoiceLineItem(object): "billing_schedule_item_id", "component_cost_data", "product_price_point_id", + "prepaid_allocation_expires_at", ] def __init__( @@ -192,6 +198,7 @@ def __init__( product_price_point_id=APIHelper.SKIP, custom_item=APIHelper.SKIP, kind=APIHelper.SKIP, + prepaid_allocation_expires_at=APIHelper.SKIP, additional_properties=None): """Initialize a InvoiceLineItem instance.""" # Initialize members of the class @@ -243,6 +250,8 @@ def __init__( self.custom_item = custom_item if kind is not APIHelper.SKIP: self.kind = kind + if prepaid_allocation_expires_at is not APIHelper.SKIP: + self.prepaid_allocation_expires_at = prepaid_allocation_expires_at # Add additional model properties to the instance if additional_properties is None: @@ -364,6 +373,13 @@ def from_dictionary(cls, dictionary.get("kind")\ if dictionary.get("kind")\ else APIHelper.SKIP + if "prepaid_allocation_expires_at" in dictionary.keys(): + prepaid_allocation_expires_at = dateutil.parser.parse( + dictionary.get("prepaid_allocation_expires_at")).date()\ + if dictionary.get("prepaid_allocation_expires_at") else None + + else: + prepaid_allocation_expires_at = APIHelper.SKIP # Clean out expected properties from dictionary additional_properties =\ @@ -394,6 +410,7 @@ def from_dictionary(cls, product_price_point_id, custom_item, kind, + prepaid_allocation_expires_at, additional_properties) @classmethod @@ -539,6 +556,11 @@ def __repr__(self): if hasattr(self, "kind") else None ) + _prepaid_allocation_expires_at=( + self.prepaid_allocation_expires_at + if hasattr(self, "prepaid_allocation_expires_at") + else None + ) _additional_properties=self.additional_properties return ( f"{self.__class__.__name__}(" @@ -566,6 +588,7 @@ def __repr__(self): f"product_price_point_id={_product_price_point_id!r}, " f"custom_item={_custom_item!r}, " f"kind={_kind!r}, " + f"prepaid_allocation_expires_at={_prepaid_allocation_expires_at!r}, " f"additional_properties={_additional_properties!r}, " f")" ) @@ -692,6 +715,11 @@ def __str__(self): if hasattr(self, "kind") else None ) + _prepaid_allocation_expires_at=( + self.prepaid_allocation_expires_at + if hasattr(self, "prepaid_allocation_expires_at") + else None + ) _additional_properties=self.additional_properties return ( f"{self.__class__.__name__}(" @@ -719,6 +747,7 @@ def __str__(self): f"product_price_point_id={_product_price_point_id!s}, " f"custom_item={_custom_item!s}, " f"kind={_kind!s}, " + f"prepaid_allocation_expires_at={_prepaid_allocation_expires_at!s}, " f"additional_properties={_additional_properties!s}, " f")" ) diff --git a/advancedbilling/models/payment_profile.py b/advancedbilling/models/payment_profile.py new file mode 100644 index 00000000..8188db57 --- /dev/null +++ b/advancedbilling/models/payment_profile.py @@ -0,0 +1,200 @@ +"""advanced_billing. + +This file was automatically generated for Maxio by APIMATIC v3.0 ( + https://www.apimatic.io ). +""" + +# ruff: noqa: E501 +from advancedbilling.api_helper import APIHelper + + +class PaymentProfile(object): + """Implementation of the 'PaymentProfile' model. + + Attributes: + id (int): The model property of type int. + vault_token (str): The model property of type str. + gateway_handle (str): The model property of type str. + customer_vault_token (str): The model property of type str. + additional_properties (Dict[str, object]): The additional properties for the + model. + + """ + + # Create a mapping from Model property names to API property names + _names = { + "id": "id", + "vault_token": "vault_token", + "gateway_handle": "gateway_handle", + "customer_vault_token": "customer_vault_token", + } + + _optionals = [ + "vault_token", + "gateway_handle", + "customer_vault_token", + ] + + _nullables = [ + "gateway_handle", + "customer_vault_token", + ] + + def __init__( + self, + id=None, + vault_token=APIHelper.SKIP, + gateway_handle=APIHelper.SKIP, + customer_vault_token=APIHelper.SKIP, + additional_properties=None): + """Initialize a PaymentProfile instance.""" + # Initialize members of the class + self.id = id + if vault_token is not APIHelper.SKIP: + self.vault_token = vault_token + if gateway_handle is not APIHelper.SKIP: + self.gateway_handle = gateway_handle + if customer_vault_token is not APIHelper.SKIP: + self.customer_vault_token = customer_vault_token + + # Add additional model properties to the instance + if additional_properties is None: + additional_properties = {} + self.additional_properties = additional_properties + + @classmethod + def from_dictionary(cls, + dictionary): + """Create an instance of this model from a dictionary + + Args: + dictionary (dictionary): A dictionary representation of the object + as obtained from the deserialization of the server's response. The + keys MUST match property names in the API description. + + Returns: + object: An instance of this structure class. + + """ + if not isinstance(dictionary, dict) or dictionary is None: + return None + + # Extract variables from the dictionary + id =\ + dictionary.get("id")\ + if dictionary.get("id")\ + else None + vault_token =\ + dictionary.get("vault_token")\ + if dictionary.get("vault_token")\ + else APIHelper.SKIP + gateway_handle =\ + dictionary.get("gateway_handle")\ + if "gateway_handle" in dictionary.keys()\ + else APIHelper.SKIP + customer_vault_token =\ + dictionary.get("customer_vault_token")\ + if "customer_vault_token" in dictionary.keys()\ + else APIHelper.SKIP + + # Clean out expected properties from dictionary + additional_properties =\ + {k: v for k, v in dictionary.items() if k not in cls._names.values()} + + # Return an object of this model + return cls(id, + vault_token, + gateway_handle, + customer_vault_token, + additional_properties) + + @classmethod + def validate(cls, dictionary): + """Validate dictionary against class required properties + + Args: + dictionary (dictionary): A dictionary representation of the object + as obtained from the deserialization of the server's response. The + keys MUST match property names in the API description. + + Returns: + boolean : if dictionary is valid contains required properties. + + """ + if isinstance(dictionary, cls): + return APIHelper.is_valid_type( + value=dictionary.id, + type_callable=lambda value: + isinstance( + value, + int, + )) + + if not isinstance(dictionary, dict): + return False + + return APIHelper.is_valid_type( + value=dictionary.get("id"), + type_callable=lambda value: + isinstance( + value, + int, + )) + + def __repr__(self): + """Return a unambiguous string representation.""" + _id=self.id + _vault_token=( + self.vault_token + if hasattr(self, "vault_token") + else None + ) + _gateway_handle=( + self.gateway_handle + if hasattr(self, "gateway_handle") + else None + ) + _customer_vault_token=( + self.customer_vault_token + if hasattr(self, "customer_vault_token") + else None + ) + _additional_properties=self.additional_properties + return ( + f"{self.__class__.__name__}(" + f"id={_id!r}, " + f"vault_token={_vault_token!r}, " + f"gateway_handle={_gateway_handle!r}, " + f"customer_vault_token={_customer_vault_token!r}, " + f"additional_properties={_additional_properties!r}, " + f")" + ) + + def __str__(self): + """Return a human-readable string representation.""" + _id=self.id + _vault_token=( + self.vault_token + if hasattr(self, "vault_token") + else None + ) + _gateway_handle=( + self.gateway_handle + if hasattr(self, "gateway_handle") + else None + ) + _customer_vault_token=( + self.customer_vault_token + if hasattr(self, "customer_vault_token") + else None + ) + _additional_properties=self.additional_properties + return ( + f"{self.__class__.__name__}(" + f"id={_id!s}, " + f"vault_token={_vault_token!s}, " + f"gateway_handle={_gateway_handle!s}, " + f"customer_vault_token={_customer_vault_token!s}, " + f"additional_properties={_additional_properties!s}, " + f")" + ) diff --git a/advancedbilling/models/payment_profile_params.py b/advancedbilling/models/payment_profile_params.py new file mode 100644 index 00000000..35df2212 --- /dev/null +++ b/advancedbilling/models/payment_profile_params.py @@ -0,0 +1,173 @@ +"""advanced_billing. + +This file was automatically generated for Maxio by APIMATIC v3.0 ( + https://www.apimatic.io ). +""" + +# ruff: noqa: E501 +from advancedbilling.api_helper import APIHelper + + +class PaymentProfileParams(object): + """Implementation of the 'PaymentProfileParams' model. + + PCI-safe cardholder fields only. Full card numbers, CVV, and billing address are + never included. + + Attributes: + first_name (str): The model property of type str. + last_name (str): The model property of type str. + card_type (str): The model property of type str. + additional_properties (Dict[str, object]): The additional properties for the + model. + + """ + + # Create a mapping from Model property names to API property names + _names = { + "first_name": "first_name", + "last_name": "last_name", + "card_type": "card_type", + } + + _optionals = [ + "first_name", + "last_name", + "card_type", + ] + + def __init__( + self, + first_name=APIHelper.SKIP, + last_name=APIHelper.SKIP, + card_type=APIHelper.SKIP, + additional_properties=None): + """Initialize a PaymentProfileParams instance.""" + # Initialize members of the class + if first_name is not APIHelper.SKIP: + self.first_name = first_name + if last_name is not APIHelper.SKIP: + self.last_name = last_name + if card_type is not APIHelper.SKIP: + self.card_type = card_type + + # Add additional model properties to the instance + if additional_properties is None: + additional_properties = {} + self.additional_properties = additional_properties + + @classmethod + def from_dictionary(cls, + dictionary): + """Create an instance of this model from a dictionary + + Args: + dictionary (dictionary): A dictionary representation of the object + as obtained from the deserialization of the server's response. The + keys MUST match property names in the API description. + + Returns: + object: An instance of this structure class. + + """ + if not isinstance(dictionary, dict) or dictionary is None: + return None + + # Extract variables from the dictionary + first_name =\ + dictionary.get("first_name")\ + if dictionary.get("first_name")\ + else APIHelper.SKIP + last_name =\ + dictionary.get("last_name")\ + if dictionary.get("last_name")\ + else APIHelper.SKIP + card_type =\ + dictionary.get("card_type")\ + if dictionary.get("card_type")\ + else APIHelper.SKIP + + # Clean out expected properties from dictionary + additional_properties =\ + {k: v for k, v in dictionary.items() if k not in cls._names.values()} + + # Return an object of this model + return cls(first_name, + last_name, + card_type, + additional_properties) + + @classmethod + def validate(cls, dictionary): + """Validate dictionary against class required properties + + Args: + dictionary (dictionary): A dictionary representation of the object + as obtained from the deserialization of the server's response. The + keys MUST match property names in the API description. + + Returns: + boolean : if dictionary is valid contains required properties. + + """ + if isinstance(dictionary, cls): + return True + + if not isinstance(dictionary, dict): + return False + + return True + + def __repr__(self): + """Return a unambiguous string representation.""" + _first_name=( + self.first_name + if hasattr(self, "first_name") + else None + ) + _last_name=( + self.last_name + if hasattr(self, "last_name") + else None + ) + _card_type=( + self.card_type + if hasattr(self, "card_type") + else None + ) + _additional_properties=self.additional_properties + return ( + f"{self.__class__.__name__}(" + f"first_name={_first_name!r}, " + f"last_name={_last_name!r}, " + f"card_type={_card_type!r}, " + f"additional_properties={_additional_properties!r}, " + f")" + ) + + def __str__(self): + """Return a human-readable string representation.""" + _first_name=( + self.first_name + if hasattr(self, "first_name") + else None + ) + _last_name=( + self.last_name + if hasattr(self, "last_name") + else None + ) + _card_type=( + self.card_type + if hasattr(self, "card_type") + else None + ) + _additional_properties=self.additional_properties + return ( + f"{self.__class__.__name__}(" + f"first_name={_first_name!s}, " + f"last_name={_last_name!s}, " + f"card_type={_card_type!s}, " + f"additional_properties={_additional_properties!s}, " + f")" + ) diff --git a/advancedbilling/models/payment_profile_response.py b/advancedbilling/models/payment_profile_response.py index 9f5b7455..48c8fa04 100644 --- a/advancedbilling/models/payment_profile_response.py +++ b/advancedbilling/models/payment_profile_response.py @@ -62,7 +62,7 @@ def from_dictionary(cls, # Extract variables from the dictionary payment_profile = APIHelper.deserialize_union_type( - UnionTypeLookUp.get("Payment-Profile"), + UnionTypeLookUp.get("Payment-Profile2"), dictionary.get("payment_profile"), False)\ if dictionary.get("payment_profile") is not None\ @@ -94,13 +94,13 @@ def validate(cls, dictionary): ) if isinstance(dictionary, cls): - return (UnionTypeLookUp.get("Payment-Profile") + return (UnionTypeLookUp.get("Payment-Profile2") .validate(dictionary.payment_profile).is_valid) if not isinstance(dictionary, dict): return False - return (UnionTypeLookUp.get("Payment-Profile") + return (UnionTypeLookUp.get("Payment-Profile2") .validate(dictionary.get("payment_profile")).is_valid) def __repr__(self): diff --git a/advancedbilling/models/site.py b/advancedbilling/models/site.py index 8fdf473f..850d6b2a 100644 --- a/advancedbilling/models/site.py +++ b/advancedbilling/models/site.py @@ -44,6 +44,12 @@ class Site(object): tax_configuration (TaxConfiguration): The model property of type TaxConfiguration. net_terms (NetTerms): The model property of type NetTerms. + multi_frequency_enabled (bool): Whether the site has the multi-frequency + billing feature enabled. Only present when relationship invoicing is + active. + auto_renewals_enabled (bool): Whether the auto-renewals feature is enabled + for this site. + portal_enabled (bool): Whether the Billing Portal is enabled for this site. test (bool): The model property of type bool. additional_properties (Dict[str, object]): The additional properties for the model. @@ -69,6 +75,9 @@ class Site(object): "organization_address": "organization_address", "tax_configuration": "tax_configuration", "net_terms": "net_terms", + "multi_frequency_enabled": "multi_frequency_enabled", + "auto_renewals_enabled": "auto_renewals_enabled", + "portal_enabled": "portal_enabled", "test": "test", } @@ -89,6 +98,9 @@ class Site(object): "organization_address", "tax_configuration", "net_terms", + "multi_frequency_enabled", + "auto_renewals_enabled", + "portal_enabled", "test", ] @@ -110,6 +122,9 @@ def __init__( organization_address=APIHelper.SKIP, tax_configuration=APIHelper.SKIP, net_terms=APIHelper.SKIP, + multi_frequency_enabled=APIHelper.SKIP, + auto_renewals_enabled=APIHelper.SKIP, + portal_enabled=APIHelper.SKIP, test=APIHelper.SKIP, additional_properties=None): """Initialize a Site instance.""" @@ -148,6 +163,12 @@ def __init__( self.tax_configuration = tax_configuration if net_terms is not APIHelper.SKIP: self.net_terms = net_terms + if multi_frequency_enabled is not APIHelper.SKIP: + self.multi_frequency_enabled = multi_frequency_enabled + if auto_renewals_enabled is not APIHelper.SKIP: + self.auto_renewals_enabled = auto_renewals_enabled + if portal_enabled is not APIHelper.SKIP: + self.portal_enabled = portal_enabled if test is not APIHelper.SKIP: self.test = test @@ -242,6 +263,18 @@ def from_dictionary(cls, dictionary.get("net_terms"))\ if "net_terms" in dictionary.keys()\ else APIHelper.SKIP + multi_frequency_enabled =\ + dictionary.get("multi_frequency_enabled")\ + if "multi_frequency_enabled" in dictionary.keys()\ + else APIHelper.SKIP + auto_renewals_enabled =\ + dictionary.get("auto_renewals_enabled")\ + if "auto_renewals_enabled" in dictionary.keys()\ + else APIHelper.SKIP + portal_enabled =\ + dictionary.get("portal_enabled")\ + if "portal_enabled" in dictionary.keys()\ + else APIHelper.SKIP test =\ dictionary.get("test")\ if "test" in dictionary.keys()\ @@ -268,6 +301,9 @@ def from_dictionary(cls, organization_address, tax_configuration, net_terms, + multi_frequency_enabled, + auto_renewals_enabled, + portal_enabled, test, additional_properties) @@ -353,6 +389,21 @@ def __repr__(self): if hasattr(self, "net_terms") else None ) + _multi_frequency_enabled=( + self.multi_frequency_enabled + if hasattr(self, "multi_frequency_enabled") + else None + ) + _auto_renewals_enabled=( + self.auto_renewals_enabled + if hasattr(self, "auto_renewals_enabled") + else None + ) + _portal_enabled=( + self.portal_enabled + if hasattr(self, "portal_enabled") + else None + ) _test=( self.test if hasattr(self, "test") @@ -377,6 +428,9 @@ def __repr__(self): f"organization_address={_organization_address!r}, " f"tax_configuration={_tax_configuration!r}, " f"net_terms={_net_terms!r}, " + f"multi_frequency_enabled={_multi_frequency_enabled!r}, " + f"auto_renewals_enabled={_auto_renewals_enabled!r}, " + f"portal_enabled={_portal_enabled!r}, " f"test={_test!r}, " f"additional_properties={_additional_properties!r}, " f")" @@ -464,6 +518,21 @@ def __str__(self): if hasattr(self, "net_terms") else None ) + _multi_frequency_enabled=( + self.multi_frequency_enabled + if hasattr(self, "multi_frequency_enabled") + else None + ) + _auto_renewals_enabled=( + self.auto_renewals_enabled + if hasattr(self, "auto_renewals_enabled") + else None + ) + _portal_enabled=( + self.portal_enabled + if hasattr(self, "portal_enabled") + else None + ) _test=( self.test if hasattr(self, "test") @@ -488,6 +557,9 @@ def __str__(self): f"organization_address={_organization_address!s}, " f"tax_configuration={_tax_configuration!s}, " f"net_terms={_net_terms!s}, " + f"multi_frequency_enabled={_multi_frequency_enabled!s}, " + f"auto_renewals_enabled={_auto_renewals_enabled!s}, " + f"portal_enabled={_portal_enabled!s}, " f"test={_test!s}, " f"additional_properties={_additional_properties!s}, " f")" diff --git a/advancedbilling/models/webhook_subscription.py b/advancedbilling/models/webhook_subscription.py index 173a3151..f48ad938 100644 --- a/advancedbilling/models/webhook_subscription.py +++ b/advancedbilling/models/webhook_subscription.py @@ -12,6 +12,8 @@ class WebhookSubscription(object): Attributes: BILLING_DATE_CHANGE: The enum member of type str. COMPONENT_ALLOCATION_CHANGE: The enum member of type str. + CHJS_TOKENIZATION_FAILURE: The enum member of type str. + CHJS_TOKENIZATION_SUCCESS: The enum member of type str. CUSTOMER_CREATE: The enum member of type str. CUSTOMER_UPDATE: The enum member of type str. DUNNING_STEP_REACHED: The enum member of type str. @@ -56,6 +58,10 @@ class WebhookSubscription(object): COMPONENT_ALLOCATION_CHANGE = "component_allocation_change" + CHJS_TOKENIZATION_FAILURE = "chjs_tokenization_failure" + + CHJS_TOKENIZATION_SUCCESS = "chjs_tokenization_success" + CUSTOMER_CREATE = "customer_create" CUSTOMER_UPDATE = "customer_update" diff --git a/advancedbilling/utilities/union_type_lookup.py b/advancedbilling/utilities/union_type_lookup.py index b7ffb704..ad194472 100644 --- a/advancedbilling/utilities/union_type_lookup.py +++ b/advancedbilling/utilities/union_type_lookup.py @@ -54,6 +54,12 @@ from advancedbilling.models.change_invoice_status_event import ( ChangeInvoiceStatusEvent, ) +from advancedbilling.models.chjs_tokenization_failure import ( + ChjsTokenizationFailure, +) +from advancedbilling.models.chjs_tokenization_success import ( + ChjsTokenizationSuccess, +) from advancedbilling.models.component_allocation_change import ( ComponentAllocationChange, ) @@ -791,6 +797,8 @@ class UnionTypeLookUp: LeafType(PaymentCollectionMethodChanged), LeafType(ItemPricePointChanged), LeafType(CustomFieldValueChange), + LeafType(ChjsTokenizationSuccess), + LeafType(ChjsTokenizationFailure), ], Context.create( is_nullable=True, @@ -848,7 +856,7 @@ class UnionTypeLookUp: is_optional=True, ), ), - "Payment-Profile": lambda: AnyOf( + "Payment-Profile2": lambda: AnyOf( [ LeafType(ApplePayPaymentProfile, Context.create( diff --git a/doc/controllers/advance-invoice.md b/doc/controllers/advance-invoice.md index af5d16a3..2a8220f4 100644 --- a/doc/controllers/advance-invoice.md +++ b/doc/controllers/advance-invoice.md @@ -17,7 +17,7 @@ advance_invoice_controller = client.advance_invoice # Issue Advance Invoice -Generate an invoice in advance for a subscription's next renewal date. [See our docs](https://maxio.zendesk.com/hc/en-us/articles/24252026404749-Issue-Invoice-In-Advance) for more information on advance invoices, including eligibility on generating one; for the most part, they function like any other invoice, except they are issued early and have special behavior upon being voided. +Generate an invoice in advance for a subscription's next renewal date. [See our docs](https://maxio.zendesk.com/hc/en-us/articles/24252026404749-Issue-Invoice-In-Advance) for more information on advance invoices, including eligibility for generating one; for the most part, they function like any other invoice, except they are issued early and have special behavior upon being voided. A subscription may only have one advance invoice per billing period. Attempting to issue an advance invoice when one already exists will return an error. That said, regeneration of the invoice may be forced with the params `force: true`, which will void an advance invoice if one exists and generate a new one. If no advance invoice exists, a new one will be generated. We recommend using either the create or preview endpoints for proforma invoices to preview this advance invoice before using this endpoint to generate it. @@ -71,7 +71,7 @@ print(result) # Read Advance Invoice -Once an advance invoice has been generated for a subscription's upcoming renewal, it can be viewed through this endpoint. There can only be one advance invoice per subscription per billing cycle. +Returns the advance invoice generated for a subscription's upcoming renewal. There can only be one advance invoice per subscription per billing cycle. ```python def read_advance_invoice(self, diff --git a/doc/controllers/api-exports.md b/doc/controllers/api-exports.md index 2850665e..2ac10bb3 100644 --- a/doc/controllers/api-exports.md +++ b/doc/controllers/api-exports.md @@ -23,7 +23,7 @@ api_exports_controller = client.api_exports # List Exported Proforma Invoices -This API returns an array of exported proforma invoices for a provided `batch_id`. Pay close attention to pagination in order to control responses from the server. +Lists exported proforma invoices for a provided `batch_id`. Use pagination to control responses returned from the server. Example: `GET https://{subdomain}.chargify.com/api_exports/proforma_invoices/123/rows?per_page=10000&page=1`. @@ -71,7 +71,7 @@ print(result) # List Exported Invoices -This API returns an array of exported invoices for a provided `batch_id`. Pay close attention to pagination in order to control responses from the server. +Lists exported invoices for a provided `batch_id`. Use pagination to control responses returned from the server. Example: `GET https://{subdomain}.chargify.com/api_exports/invoices/123/rows?per_page=10000&page=1`. @@ -119,7 +119,7 @@ print(result) # List Exported Subscriptions -This API returns an array of exported subscriptions for a provided `batch_id`. Pay close attention to pagination in order to control responses from the server. +Lists exported subscriptions for a provided `batch_id`. Use pagination to control responses returned from the server. Example: `GET https://{subdomain}.chargify.com/api_exports/subscriptions/123/rows?per_page=200&page=1`. @@ -167,7 +167,7 @@ print(result) # Export Proforma Invoices -This API creates a proforma invoices export and returns a batchjob object. +Creates a proforma invoices export and returns a batch job object. It is only available for Relationship Invoicing architecture. @@ -202,7 +202,7 @@ print(result) # Export Invoices -This API creates an invoices export and returns a batchjob object. +Creates an invoices export and returns a batch job object. ```python def export_invoices(self) @@ -235,7 +235,7 @@ print(result) # Export Subscriptions -This API creates a subscriptions export and returns a batchjob object. +Creates a subscriptions export and returns a batch job object. ```python def export_subscriptions(self) @@ -267,7 +267,7 @@ print(result) # Read Proforma Invoices Export -This API returns a batchjob object for proforma invoices export. +Returns a batch job object for a proforma invoices export. ```python def read_proforma_invoices_export(self, @@ -308,7 +308,7 @@ print(result) # Read Invoices Export -This API returns a batchjob object for invoices export. +Returns a batch job object for an invoices export. ```python def read_invoices_export(self, @@ -349,7 +349,7 @@ print(result) # Read Subscriptions Export -This API returns a batchjob object for subscriptions export. +Returns a batch job object for a subscriptions export. ```python def read_subscriptions_export(self, diff --git a/doc/controllers/billing-portal.md b/doc/controllers/billing-portal.md index 960cc00f..d3c20362 100644 --- a/doc/controllers/billing-portal.md +++ b/doc/controllers/billing-portal.md @@ -18,11 +18,13 @@ billing_portal_controller = client.billing_portal # Enable Billing Portal for Customer +Enables Billing Portal access for a customer, with an option to send an invitation email at the same time. + ## Billing Portal Documentation Full documentation on how the Billing Portal operates within the Advanced Billing UI can be located [here](https://maxio.zendesk.com/hc/en-us/articles/24252412965133-Billing-Portal-Overview). -This documentation is focused on how the to configure the Billing Portal Settings, as well as Subscriber Interaction and Merchant Management of the Billing Portal. +This documentation is focused on how to configure the Billing Portal Settings, as well as Subscriber Interaction and Merchant Management of the Billing Portal. You can use this endpoint to enable Billing Portal access for a Customer, with the option of sending the Customer an Invitation email at the same time. @@ -75,7 +77,7 @@ print(result) # Read Billing Portal Link -This method will provide to the API user the exact URL required for a subscriber to access the Billing Portal. +Returns the exact URL required for a subscriber to access the Billing Portal. ## Rules for Management Link API @@ -138,15 +140,13 @@ print(result) # Resend Billing Portal Invitation -You can resend a customer's Billing Portal invitation. - -If you attempt to resend an invitation 5 times within 30 minutes, you will receive a `422` response with `error` message in the body. +Resends a customer's Billing Portal invitation. -If you attempt to resend an invitation when the Billing Portal is already disabled for a Customer, you will receive a `422` error response. +If you attempt to resend an invitation 5 times within 30 minutes, you will receive a `422` response with an `error` message in the body. If you attempt to resend an invitation when the Billing Portal is already disabled for a Customer, you will receive a `422` error response. -If you attempt to resend an invitation when the Customer does not exist a Customer, you will receive a `404` error response. +If you attempt to resend an invitation when the Customer does not exist, you will receive a `404` error response. ## Limitations @@ -203,7 +203,7 @@ print(result) # Revoke Billing Portal Access -You can revoke a customer's Billing Portal invitation. +Revokes a customer's Billing Portal invitation. If you attempt to revoke an invitation when the Billing Portal is already disabled for a Customer, you will receive a 422 error response. diff --git a/doc/controllers/component-price-points.md b/doc/controllers/component-price-points.md index 7ca1f952..d13392f7 100644 --- a/doc/controllers/component-price-points.md +++ b/doc/controllers/component-price-points.md @@ -172,7 +172,7 @@ print(result) # List Component Price Points -Use this endpoint to read current price points that are associated with a component. +Lists the price points associated with a component. You may specify the component by using either the numeric id or the `handle:gold` syntax. @@ -270,7 +270,7 @@ print(result) # Bulk Create Component Price Points -Use this endpoint to create multiple component price points in one request. +Creates multiple component price points in one request. ```python def bulk_create_component_price_points(self, @@ -541,7 +541,7 @@ print(result) # Update Component Price Point -When updating a price point, prices can be updated as well by creating new prices or editing / removing existing ones. +Updates a component price point and its associated prices. Passing in a price bracket without an `id` will attempt to create a new price. @@ -619,7 +619,7 @@ print(result) # Read Component Price Point -Use this endpoint to retrieve details for a specific component price point. You can achieve this by using either the component price point ID or handle. +Returns details for a specific component price point. You can achieve this by using either the component price point ID or handle. ```python def read_component_price_point(self, @@ -663,7 +663,7 @@ print(result) # Archive Component Price Point -A price point can be archived at any time. Subscriptions using a price point that has been archived will continue using it until they're moved to another price point. +Archives a component price point. Subscriptions using a price point that has been archived will continue using it until they're moved to another price point. ```python def archive_component_price_point(self, @@ -745,7 +745,7 @@ print(result) # Unarchive Component Price Point -Use this endpoint to unarchive a component price point. +Unarchives a component price point. ```python def unarchive_component_price_point(self, @@ -821,7 +821,7 @@ print(result) # Create Currency Prices -This endpoint allows you to create currency prices for a given currency that has been defined on the site level in your settings. +Creates currency prices for a given currency defined at the site level. When creating currency prices, they need to mirror the structure of your primary pricing. For each price level defined on the component price point, there should be a matching price level created in the given currency. @@ -903,7 +903,7 @@ print(result) # Update Currency Prices -This endpoint allows you to update currency prices for a given currency that has been defined on the site level in your settings. +Updates currency prices for a given currency defined at the site level. Note: Currency Prices are not able to be updated for custom price points. @@ -981,7 +981,7 @@ print(result) # List All Component Price Points -This method allows to retrieve a list of Components Price Points belonging to a Site. +Lists all component price points belonging to a site. ```python def list_all_component_price_points(self, diff --git a/doc/controllers/components.md b/doc/controllers/components.md index 834c7668..a7afefda 100644 --- a/doc/controllers/components.md +++ b/doc/controllers/components.md @@ -26,7 +26,7 @@ components_controller = client.components # Create Metered Component -This request will create a component definition of kind **metered_component** under the specified product family. Metered component can then be added and “allocated” for a subscription. +Creates a metered component definition under the specified product family. A metered component can then be added and “allocated” for a subscription. Metered components are used to bill for any type of unit that resets to 0 at the end of the billing period (think daily Google Ads clicks or monthly cell phone minutes). This is most commonly associated with usage-based billing and many other pricing schemes. @@ -144,9 +144,9 @@ print(result) # Create Quantity Based Component -This request will create a component definition of kind **quantity_based_component** under the specified product family. Quantity Based component can then be added and “allocated” for a subscription. +Creates a Quantity Based component definition under the specified product family. A Quantity Based component can then be added and “allocated” for a subscription. -When defining Quantity Based component, You can choose one of 2 types: +When defining a Quantity Based component, you can choose one of 2 types: #### Recurring @@ -271,7 +271,7 @@ print(result) # Create On Off Component -This request will create a component definition of kind **on_off_component** under the specified product family. On/Off component can then be added and “allocated” for a subscription. +Creates an On/Off component definition under the specified product family. An On/Off component can then be added and “allocated” for a subscription. On/off components are used for any flat fee, recurring add on (think $99/month for tech support or a flat add on shipping fee). @@ -373,7 +373,7 @@ print(result) # Create Prepaid Usage Component -This request will create a component definition of kind **prepaid_usage_component** under the specified product family. Prepaid component can then be added and “allocated” for a subscription. +Creates a prepaid usage component definition under the specified product family. A prepaid component can then be added and “allocated” for a subscription. Prepaid components allow customers to pre-purchase units that can be used up over time on their subscription. In a sense, they are the mirror image of metered components; while metered components charge at the end of the period for the amount of units used, prepaid components are charged for at the time of purchase, and we subsequently keep track of the usage against the amount purchased. @@ -513,7 +513,7 @@ print(result) # Create Event Based Component -This request will create a component definition of kind **event_based_component** under the specified product family. Event-based component can then be added and “allocated” for a subscription. +Creates an event-based component definition under the specified product family. An event-based component can then be added and “allocated” for a subscription. Event-based components are similar to other component types, in that you define the component parameters (such as name and taxability) and the pricing. A key difference for the event-based component is that it must be attached to a metric. This is because the metric provides the component with the actual quantity used in computing what and how much will be billed each period for each subscription. @@ -623,7 +623,7 @@ print(result) # Find Component -This request will return information regarding a component having the handle you provide. You can identify your components with a handle so you don't have to save or reference the IDs we generate. +Returns information for a component matching the provided handle. You can identify your components with a handle so you don't have to save or reference the IDs we generate. ```python def find_component(self, @@ -763,7 +763,7 @@ print(result) # Update Product Family Component -This request will update a component from a specific product family. +Updates a component from a specific product family. You may read the component by either the component's id or handle. When using the handle, it must be prefixed with `handle:`. @@ -852,7 +852,7 @@ print(result) # Archive Component -Sending a DELETE request to this endpoint will archive the component. All current subscribers will be unffected; their subscription/purchase will continue to be charged as usual. +Archives the component; all current subscribers will continue to be charged as usual. ```python def archive_component(self, @@ -926,7 +926,7 @@ print(result) # List Components -This request will return a list of components for a site. +Lists components for a site. ```python def list_components(self, @@ -1078,7 +1078,7 @@ print(result) # Update Component -This request will update a component. +Updates a component. You may read the component by either the component's id or handle. When using the handle, it must be prefixed with `handle:`. @@ -1162,7 +1162,7 @@ print(result) # List Components for Product Family -This request will return a list of components for a particular product family. +Lists components for a particular product family. ```python def list_components_for_product_family(self, diff --git a/doc/controllers/coupons.md b/doc/controllers/coupons.md index 434d4fb9..02a9fba5 100644 --- a/doc/controllers/coupons.md +++ b/doc/controllers/coupons.md @@ -28,21 +28,16 @@ coupons_controller = client.coupons # Create Coupon -## Coupons Documentation - -Coupons can be administered in the Advanced Billing application or created via API. View our section on [creating coupons](https://maxio.zendesk.com/hc/en-us/articles/24261212433165-Creating-Editing-Deleting-Coupons) for more information. - -Additionally, for documentation on how to apply a coupon to a subscription within the Advanced Billing UI, see our documentation [here](https://maxio.zendesk.com/hc/en-us/articles/24261259337101-Coupons-and-Subscriptions). - -## Create Coupon - -This request will create a coupon, based on the provided information. - -You can create either a flat amount coupon, by specyfing `amount_in_cents`, or percentage coupon by specyfing `percentage`. +Creates a coupon under the specified product family. +You can create either a flat amount coupon by specifying amount_in_cents, or a percentage coupon by specifying percentage You can restrict a coupon to only apply to specific products / components by optionally passing in `restricted_products` and/or `restricted_components` objects in the format: `{ "": boolean_value }` +Coupons can be administered in the Advanced Billing application or created via API. See [creating coupons](https://maxio.zendesk.com/hc/en-us/articles/24261212433165-Creating-Editing-Deleting-Coupons) for more information. + +See [Apply Coupons to Subscriptions](https://maxio.zendesk.com/hc/en-us/articles/24261259337101-Coupons-and-Subscriptions) for information on applying a coupon to a subscription in the Advanced Billing UI. + ```python def create_coupon(self, product_family_id, @@ -111,7 +106,7 @@ print(result) # List Coupons for Product Family -List coupons for a specific Product Family in a Site. +Lists coupons for a specific product family in a site. ```python def list_coupons_for_product_family(self, @@ -260,7 +255,7 @@ print(result) # Find Coupon -You can search for a coupon via the API with the find method. By passing a code parameter, the find will attempt to locate a coupon that matches that code. If no coupon is found, a 404 is returned. +Searches for a coupon by code, returning a 404 if no coupon is found. By passing a code parameter, the find will attempt to locate a coupon that matches that code. If you have more than one product family and if the coupon you are trying to find does not belong to the default product family in your site, then you will need to specify (either in the url or as a query string param) the product family id. @@ -303,7 +298,7 @@ print(result) # Read Coupon -You can retrieve the Coupon via the API with the Show method. You must identify the Coupon in this call by the ID parameter that Advanced Billing assigns. +Returns a coupon by its Advanced Billing-assigned ID. You must identify the Coupon in this call by the ID parameter that Advanced Billing assigns. If instead you would like to find a Coupon using a Coupon code, see the Coupon Find method. When fetching a coupon, if you have defined multiple currencies at the site level, you can optionally pass the `?currency_prices=true` query param to include an array of currency price data in the response. @@ -384,9 +379,7 @@ print(result) # Update Coupon -## Update Coupon - -You can update a Coupon via the API with a PUT request to the resource endpoint. +Updates a coupon. You can restrict a coupon to only apply to specific products / components by optionally passing in hashes of `restricted_products` and/or `restricted_components` in the format: `{ "": boolean_value }` @@ -491,7 +484,7 @@ print(result) # Archive Coupon -You can archive a Coupon via the API with the archive method. +Archives a coupon, making it unavailable for future use while remaining active on existing subscriptions. Archiving makes that Coupon unavailable for future use, but allows it to remain attached and functional on existing Subscriptions that are using it. The `archived_at` date and time will be assigned. @@ -564,7 +557,7 @@ print(result) # List Coupons -You can retrieve a list of coupons. +Lists coupons for a site. ```python def list_coupons(self, @@ -668,7 +661,7 @@ print(result) # Read Coupon Usage -This request will provide details about the coupon usage as an array of data hashes, one per product. +Lists coupon usage details, one entry per product. ```python def read_coupon_usage(self, @@ -744,7 +737,7 @@ print(result) # Validate Coupon -You can verify if a specific coupon code is valid using the `validate` method. This method is useful for validating coupon codes that are entered by a customer. If the coupon is found and is valid, the coupon will be returned with a 200 status code. +Verifies whether a specific coupon code is valid. This method is useful for validating coupon codes that are entered by a customer. If the coupon is found and is valid, the coupon will be returned with a 200 status code. If the coupon is invalid, the status code will be 404 and the response will say why it is invalid. If the coupon is valid, the status code will be 200 and the coupon will be returned. The following reasons for invalidity are supported: @@ -836,7 +829,7 @@ print(result) # Create or Update Coupon Currency Prices -This endpoint allows you to create and/or update currency prices for an existing coupon. Multiple prices can be created or updated in a single request but each of the currencies must be defined on the site level already and the coupon must be an amount-based coupon, not percentage. +Creates and/or updates currency prices for an existing coupon. Multiple prices can be created or updated in a single request but each of the currencies must be defined on the site level already and the coupon must be an amount-based coupon, not percentage. Currency pricing for coupons must mirror the setup of the primary coupon pricing - if the primary coupon is percentage based, you will not be able to define pricing in non-primary currencies. @@ -897,6 +890,8 @@ print(result) # Create Coupon Subcodes +Creates subcodes for an existing coupon. + ## Coupon Subcodes Intro Coupon Subcodes allow you to create a set of unique codes that allow you to expand the use of one coupon. @@ -996,7 +991,7 @@ print(result) # List Coupon Subcodes -This request allows you to request the subcodes that are attached to a coupon. +Lists the subcodes attached to a coupon. ```python def list_coupon_subcodes(self, @@ -1065,7 +1060,7 @@ print(result) # Update Coupon Subcodes -You can update the subcodes for the given Coupon via the API with a PUT request to the resource endpoint. +Updates the subcodes for a coupon, replacing all existing subcodes with the new list. Send an array of new coupon subcodes. **Note**: All current subcodes for that Coupon will be deleted first, and replaced with the list of subcodes sent to this endpoint. @@ -1123,6 +1118,8 @@ print(result) # Delete Coupon Subcode +Deletes a specific subcode from a coupon. + ## Example Given a coupon with an ID of 567, and a coupon subcode of 20OFF, the URL to `DELETE` this coupon subcode would be: diff --git a/doc/controllers/custom-fields.md b/doc/controllers/custom-fields.md index e587dc8f..2366dc6c 100644 --- a/doc/controllers/custom-fields.md +++ b/doc/controllers/custom-fields.md @@ -220,7 +220,7 @@ With this endpoint, you can: - Add new metadata to a dropdown or radio for a metafield that was created without metadata. -- Remove metadata for a dropdown or radio for a metafield. +- Remove metadata for a dropdown or radio for a metafield. > Note: Updates to metadata overwrite existing values. To remove one or more values, specify all metadata values except those you want to remove. @@ -446,7 +446,7 @@ Updates metadata and metafields on the Site and the customer or subscription spe If you update metadata on a subscription or customer with a metafield that does not already exist, the metafield is created with the metadata you specify and it is always added as a text field to the Site and to the subscription or customer you specify. You can update the input_type for the metafield with the Update Metafield endpoint. -Each site is limited to 100 unique metafields per resource. This means you can have 100 metafields for Subscription and another 100 for Customer. +Each site is limited to 100 unique metafields per resource. This means you can have 100 metafields for the Subscription resource and another 100 for the Customer resource. ```python def update_metadata(self, @@ -547,7 +547,7 @@ custom_fields_controller.delete_metadata( # List Metadata for Resource Type -Lists metadata for a specified array of subscriptions or customers. +Lists metadata for a specified array of subscriptions or customers. ```python def list_metadata_for_resource_type(self, diff --git a/doc/controllers/customers.md b/doc/controllers/customers.md index 80d86b25..d4f6a83f 100644 --- a/doc/controllers/customers.md +++ b/doc/controllers/customers.md @@ -21,7 +21,7 @@ customers_controller = client.customers # Create Customer -You may create a new Customer at any time, or you may create a Customer at the same time you create a Subscription. The only validation restriction is that you may only create one customer for a given reference value. +Creates a new customer; can also be created alongside a new subscription. The only validation restriction is that you may only create one customer for a given reference value. If provided, the `reference` value must be unique. It represents a unique identifier for the customer from your own app, i.e. the customer’s ID. This allows you to retrieve a given customer via a piece of shared information. Alternatively, you may choose to leave `reference` blank, and store Advanced Billing’s unique ID for the customer, which is in the `id` attribute. @@ -139,7 +139,7 @@ print(result) # List Customers -This request will by default list all customers associated with your Site. +Lists all customers associated with your site, or filters results using the search parameter. ## Find Customer @@ -355,7 +355,7 @@ print(result) # Update Customer -This method allows to update the Customer. +Updates the customer. ```python def update_customer(self, @@ -441,7 +441,7 @@ print(result) # Delete Customer -This method allows you to delete the Customer. +Deletes the customer. ```python def delete_customer(self, @@ -475,7 +475,7 @@ customers_controller.delete_customer(id) # Read Customer by Reference -Use this method to return the customer object if you have the unique **Reference ID (Your App)** value handy. It will return a single match. +Returns a customer by their unique reference ID. It will return a single match. ```python def read_customer_by_reference(self, @@ -510,7 +510,7 @@ print(result) # List Customer Subscriptions -This method lists all subscriptions that belong to a customer. +Lists all subscriptions that belong to a customer. ```python def list_customer_subscriptions(self, diff --git a/doc/controllers/events-based-billing-segments.md b/doc/controllers/events-based-billing-segments.md index 0e687fa9..ef643a51 100644 --- a/doc/controllers/events-based-billing-segments.md +++ b/doc/controllers/events-based-billing-segments.md @@ -20,7 +20,7 @@ events_based_billing_segments_controller = client.events_based_billing_segments # Create Segment -This endpoint creates a new Segment for a Component with segmented Metric. It allows you to specify properties to bill upon and prices for each Segment. You can only pass as many "property_values" as the related Metric has segmenting properties defined. +Creates a new segment for a component with a segmented metric. It allows you to specify properties to bill upon and prices for each Segment. You can only pass as many "property_values" as the related Metric has segmenting properties defined. You may specify component and/or price point by using either the numeric ID or the `handle:gold` syntax. @@ -93,7 +93,7 @@ print(result) # List Segments for Price Point -This endpoint allows you to fetch Segments created for a given Price Point. They will be returned in the order of creation. +Lists segments created for a given price point, in order of creation. You can pass `page` and `per_page` parameters in order to access all of the segments. By default it will return `30` records. You can set `per_page` to `200` at most. @@ -150,7 +150,7 @@ print(result) # Update Segment -This endpoint updates a single Segment for a Component with a segmented Metric. It allows you to update the pricing for the segment. +Updates a single segment for a component with a segmented metric. It allows you to update the pricing for the segment. You may specify component and/or price point by using either the numeric ID or the `handle:gold` syntax. @@ -208,7 +208,7 @@ print(result) # Delete Segment -This endpoint allows you to delete a Segment with specified ID. +Deletes a segment with the specified ID. You may specify component and/or price point by using either the numeric ID or the `handle:gold` syntax. @@ -263,7 +263,7 @@ events_based_billing_segments_controller.delete_segment( # Bulk Create Segments -This endpoint allows you to create multiple segments in one request. The array of segments can contain up to `2000` records. +Creates multiple segments in one request. The array of segments can contain up to `2000` records. If any of the records contain an error the whole request would fail and none of the requested segments get created. The error response contains a message for only the one segment that failed validation, with the corresponding index in the array. @@ -318,7 +318,7 @@ print(result) # Bulk Update Segments -This endpoint allows you to update multiple segments in one request. The array of segments can contain up to `1000` records. +Updates multiple segments in one request. The array of segments can contain up to `1000` records. If any of the records contain an error the whole request would fail and none of the requested segments get updated. The error response contains a message for only the one segment that failed validation, with the corresponding index in the array. diff --git a/doc/controllers/events.md b/doc/controllers/events.md index 51d214e3..7543a91a 100644 --- a/doc/controllers/events.md +++ b/doc/controllers/events.md @@ -17,11 +17,13 @@ events_controller = client.events # List Events +Lists events for a site. + ## Events Intro Advanced Billing Events include various activity that happens around a Site. This information is **especially** useful to track down issues that arise when subscriptions are not created due to errors. -Within the Advanced Billing UI, "Events" are referred to as "Site Activity". Full documentation on how to record view Events / Site Activty in the Advanced Billing UI can be located [here](https://maxio.zendesk.com/hc/en-us/articles/24250671733517-Site-Activity). +Within the Advanced Billing UI, "Events" are referred to as "Site Activity". Full documentation on how to view Events / Site Activity in the Advanced Billing UI can be located [here](https://maxio.zendesk.com/hc/en-us/articles/24250671733517-Site-Activity). ## List Events for a Site @@ -199,7 +201,7 @@ print(result) # List Subscription Events -The following request will return a list of events for a subscription. +Lists events for a subscription. ## Event Key @@ -301,7 +303,7 @@ print(result) # Read Events Count -Get a count of all the events for a given site by using this method. +Returns the total count of events for a given site. ```python def read_events_count(self, diff --git a/doc/controllers/insights.md b/doc/controllers/insights.md index 4f448000..0c26e5b7 100644 --- a/doc/controllers/insights.md +++ b/doc/controllers/insights.md @@ -18,7 +18,7 @@ insights_controller = client.insights # Read Site Stats -The Stats API is a very basic view of some Site-level stats. This API call only answers with JSON responses. An XML version is not provided. +Returns basic site-level stats. This API call only answers with JSON responses. An XML version is not provided. ## Stats Documentation @@ -73,7 +73,7 @@ print(result) **This endpoint is deprecated.** -This endpoint returns your site's current MRR, including plan and usage breakouts. +Returns your site's current MRR, including plan and usage breakouts. ```python def read_mrr(self, @@ -130,7 +130,7 @@ print(result) **This endpoint is deprecated.** -This endpoint returns your site's MRR movements. +Lists your site's MRR movements. ## Understanding MRR movements diff --git a/doc/controllers/offers.md b/doc/controllers/offers.md index 18ca065b..0bdefd24 100644 --- a/doc/controllers/offers.md +++ b/doc/controllers/offers.md @@ -19,7 +19,7 @@ offers_controller = client.offers # Create Offer -Create an offer within your Advanced Billing site by sending a POST request. +Creates an offer within your Advanced Billing site. ## Documentation @@ -133,7 +133,7 @@ print(result) # List Offers -This endpoint will list offers for a site. +Lists offers for a site. ```python def list_offers(self, @@ -234,7 +234,7 @@ print(result) # Read Offer -This method allows you to list a specific offer's attributes. This is different than list all offers for a site, as it requires an `offer_id`. +Returns a specific offer's attributes. This is different from listing all offers for a site, as it requires an `offer_id`. ```python def read_offer(self, @@ -269,7 +269,7 @@ print(result) # Archive Offer -Archive an existing offer. Please provide an `offer_id` in order to archive the correct item. +Archives an existing offer. Please provide an `offer_id` in order to archive the correct item. ```python def archive_offer(self, @@ -303,7 +303,7 @@ offers_controller.archive_offer(offer_id) # Unarchive Offer -Unarchive a previously archived offer. Please provide an `offer_id` in order to un-archive the correct item. +Unarchives a previously archived offer. Please provide an `offer_id` in order to unarchive the correct item. ```python def unarchive_offer(self, diff --git a/doc/controllers/payment-profiles.md b/doc/controllers/payment-profiles.md index 02c13228..48122e2b 100644 --- a/doc/controllers/payment-profiles.md +++ b/doc/controllers/payment-profiles.md @@ -47,7 +47,7 @@ See the following articles to learn more about subscriptions and payments: + [Maxio.js with GoCardless - full example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01K0PJ15QR09JVHWW0MCA7HVJV) + [Maxio.js with Stripe Direct Debit - minimal example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01K0PJ15QQFKKN8Z7B7DZ9AJS5) + [Maxio.js with Stripe Direct Debit - full example](https://docs.maxio.com/hc/en-us/articles/38206331271693-Examples#h_01K0PJ15QRECQQ4ECS3ZA55GY7) - + [CMaxio.js with Stripe BECS Direct Debit - minimal example](https://developers.chargify.com/docs/developer-docs/ZG9jOjE0NjAzNDIy-examples#minimal-example-with-sepa-or-becs-direct-debit-stripe-gateway) + + [Maxio.js with Stripe BECS Direct Debit - minimal example](https://developers.chargify.com/docs/developer-docs/ZG9jOjE0NjAzNDIy-examples#minimal-example-with-sepa-or-becs-direct-debit-stripe-gateway) + [Maxio.js with Stripe BECS Direct Debit - full example](https://developers.chargify.com/docs/developer-docs/ZG9jOjE0NjAzNDIy-examples#full-example-with-sepa-direct-debit-stripe-gateway) + [Full documentation on GoCardless](https://maxio.zendesk.com/hc/en-us/articles/24176159136909-GoCardless) + [Full documentation on Stripe SEPA Direct Debit](https://maxio.zendesk.com/hc/en-us/articles/24176170430093-Stripe-SEPA-and-BECS-Direct-Debit) @@ -136,7 +136,7 @@ print(result) # List Payment Profiles -This method will return all of the active `payment_profiles` for a Site, or for one Customer within a site. If no payment profiles are found, this endpoint will return an empty array, not a 404. +Returns all active payment profiles for a site, or for one customer within a site. If no payment profiles are found, this endpoint will return an empty array, not a 404. ```python def list_payment_profiles(self, @@ -238,7 +238,7 @@ print(result) # Read Payment Profile -Using the GET method you can retrieve a Payment Profile identified by its unique ID. +Returns a payment profile identified by its unique ID. Note that a different JSON object will be returned if the card method on file is a bank account. @@ -346,6 +346,8 @@ print(result) # Update Payment Profile +Updates a payment profile. + ## Partial Card Updates In the event that you are using the Authorize.net, Stripe, Cybersource, Forte or Braintree Blue payment gateways, you can update just the billing and contact information for a payment method. Note the lack of credit-card related data contained in the JSON payload. @@ -546,7 +548,7 @@ payment_profiles_controller.delete_subscriptions_payment_profile( # Verify Bank Account -Submit the two small deposit amounts the customer received in their bank account in order to verify the bank account. (Stripe only) +Verifies a bank account. Submit the two small deposit amounts the customer received in their bank account to verify the bank account. (Stripe only) ```python def verify_bank_account(self, @@ -671,7 +673,7 @@ payment_profiles_controller.delete_subscription_group_payment_profile( # Change Subscription Default Payment Profile -This will change the default payment profile on the subscription to the existing payment profile with the id specified. +Changes the default payment profile on the subscription to the existing payment profile with the specified ID. You must elect to change the existing payment profile to a new payment profile ID in order to receive a satisfactory response from this endpoint. diff --git a/doc/controllers/product-families.md b/doc/controllers/product-families.md index 2c50eada..6adab612 100644 --- a/doc/controllers/product-families.md +++ b/doc/controllers/product-families.md @@ -180,7 +180,7 @@ print(result) # Create Product Family -Creates a Product Family within your Advanced Billing site. Create a Product Family to act as a container for your products, components and coupons. +Creates a Product Family within your Advanced Billing site. Create a Product Family to act as a container for your products, components, and coupons. Full documentation on how Product Families operate within the Advanced Billing UI can be located [here](https://maxio.zendesk.com/hc/en-us/articles/24261098936205-Product-Families). @@ -244,7 +244,7 @@ print(result) # List Product Families -Retrieve a list of Product Families for a site. +Returns a list of Product Families for a site. ```python def list_product_families(self, diff --git a/doc/controllers/product-price-points.md b/doc/controllers/product-price-points.md index fe7e548c..c1e5b1a6 100644 --- a/doc/controllers/product-price-points.md +++ b/doc/controllers/product-price-points.md @@ -270,7 +270,7 @@ print(result) # Read Product Price Point -Use this endpoint to retrieve details for a specific product price point. You can achieve this by using either the product price point ID or handle. +Returns details for a specific product price point. You can achieve this by using either the product price point ID or handle. ```python def read_product_price_point(self, @@ -416,7 +416,7 @@ print(result) # Unarchive Product Price Point -Use this endpoint to unarchive an archived product price point. +Unarchives an archived product price point. ```python def unarchive_product_price_point(self, @@ -859,7 +859,7 @@ print(result) # List All Product Price Points -This method allows retrieval of a list of Products Price Points belonging to a Site. +Lists Product Price Points belonging to a site. ```python def list_all_product_price_points(self, diff --git a/doc/controllers/products.md b/doc/controllers/products.md index 510e31f9..0f6a84ce 100644 --- a/doc/controllers/products.md +++ b/doc/controllers/products.md @@ -22,7 +22,7 @@ products_controller = client.products Creates a product in your Advanced Billing site. -See the following product docuemation for more information: +See the following product documentation for more information: + [Products Documentation](https://maxio.zendesk.com/hc/en-us/articles/24261090117645-Products-Overview) + [Changing a Subscription's Product](https://maxio.zendesk.com/hc/en-us/articles/24252069837581-Product-Changes-and-Migrations) @@ -312,7 +312,7 @@ print(result) # Archive Product -Archives the product. All current subscribers will be unffected; their subscription/purchase will continue to be charged monthly. +Archives the product. All current subscribers will be unaffected; their subscription/purchase will continue to be charged monthly. This will restrict the option to chose the product for purchase via the Billing Portal, as well as disable Public Signup Pages for the product. @@ -501,7 +501,7 @@ print(result) # List Products -This method allows to retrieve a list of Products belonging to a Site. +Lists products belonging to a site. ```python def list_products(self, diff --git a/doc/controllers/proforma-invoices.md b/doc/controllers/proforma-invoices.md index 4100ede2..36371e79 100644 --- a/doc/controllers/proforma-invoices.md +++ b/doc/controllers/proforma-invoices.md @@ -24,7 +24,7 @@ proforma_invoices_controller = client.proforma_invoices # Create Consolidated Proforma Invoice -This endpoint will trigger the creation of a consolidated proforma invoice asynchronously. It will return a 201 with no message, or a 422 with any errors. To find and view the new consolidated proforma invoice, you may poll the subscription group listing for proforma invoices; only one consolidated proforma invoice may be created per group at a time. +Creates a consolidated proforma invoice asynchronously. It will return a 201 with no message, or a 422 with any errors. To find and view the new consolidated proforma invoice, you may poll the subscription group listing for proforma invoices; only one consolidated proforma invoice may be created per group at a time. If the information becomes outdated, simply void the old consolidated proforma invoice and generate a new one. @@ -70,7 +70,7 @@ proforma_invoices_controller.create_consolidated_proforma_invoice(uid) # List Subscription Group Proforma Invoices -Only proforma invoices with a `consolidation_level` of parent are returned. +Lists proforma invoices with a `consolidation_level` of parent for the subscription group. By default, proforma invoices returned on the index will only include totals, not detailed breakdowns for `line_items`, `discounts`, `taxes`, `credits`, `payments`, `custom_fields`. To include breakdowns, pass the specific field as a key in the query with a value set to true. @@ -126,7 +126,7 @@ print(result) # Read Proforma Invoice -Use this endpoint to read the details of an existing proforma invoice. +Returns the details of an existing proforma invoice. ## Restrictions @@ -171,7 +171,7 @@ print(result) # Create Proforma Invoice -This endpoint will create a proforma invoice and return it as a response. If the information becomes outdated, simply void the old proforma invoice and generate a new one. +Creates a proforma invoice and returns it as a response. If the information becomes outdated, simply void the old proforma invoice and generate a new one. If you would like to preview the next billing amounts without generating a full proforma invoice, use the renewal preview endpoint. @@ -218,7 +218,7 @@ print(result) # List Proforma Invoices -By default, proforma invoices returned on the index will only include totals, not detailed breakdowns for `line_items`, `discounts`, `taxes`, `credits`, `payments`, or `custom_fields`. To include breakdowns, pass the specific field as a key in the query with a value set to `true`. +Lists proforma invoices for a subscription. By default, results only include totals, not detailed breakdowns for `line_items`, `discounts`, `taxes`, `credits`, `payments`, or `custom_fields`. To include breakdowns, pass the specific field as a key in the query with a value set to `true`. ```python def list_proforma_invoices(self, @@ -275,7 +275,7 @@ print(result) # Deliver Proforma Invoice -Allows for proforma invoices to be programmatically delivered via email. Supports email +Delivers a proforma invoice programmatically via email. Supports email delivery to direct recipients, carbon-copy (cc) recipients, and blind carbon-copy (bcc) recipients. If `recipient_emails` is omitted, the system will fall back to the primary recipient derived from the invoice or @@ -339,7 +339,7 @@ print(result) # Void Proforma Invoice -This endpoint will void a proforma invoice that has the status "draft". +Voids a proforma invoice that has the status "draft". ## Restrictions @@ -391,7 +391,7 @@ print(result) # Preview Proforma Invoice -Return a preview of the data that will be included on a given subscription's proforma invoice if one were to be generated. It will have similar line items and totals as a renewal preview, but the response will be presented in the format of a proforma invoice. Consequently it will include additional information such as the name and addresses that will appear on the proforma invoice. +Returns a preview of the data that will be included on a given subscription's proforma invoice if one were to be generated. It will have similar line items and totals as a renewal preview, but the response will be presented in the format of a proforma invoice. Consequently it will include additional information such as the name and addresses that will appear on the proforma invoice. The preview endpoint is subject to all the same conditions as the proforma invoice endpoint. For example, previews are only available on the Relationship Invoicing architecture, and previews cannot be made for end-of-life subscriptions. @@ -439,9 +439,7 @@ print(result) # Create Signup Proforma Invoice -This endpoint is only available for Relationship Invoicing sites. It cannot be used to create consolidated proforma invoices or preview prepaid subscriptions. - -Create a proforma invoice to preview costs before a subscription's signup. Like other proforma invoices, it can be emailed to the customer, voided, and publicly viewed on the chargifypay domain. +Creates a proforma invoice to preview costs before a subscription's signup. This endpoint is only available for Relationship Invoicing sites and cannot be used to create consolidated proforma invoices or preview prepaid subscriptions. Like other proforma invoices, it can be emailed to the customer, voided, and publicly viewed on the chargifypay domain. Pass a payload that resembles a subscription create or signup preview request. For example, you can specify components, coupons/a referral, offers, custom pricing, and an existing customer or payment profile to populate a shipping or billing address. @@ -498,9 +496,7 @@ print(result) # Preview Signup Proforma Invoice -This endpoint is only available for Relationship Invoicing sites. It cannot be used to create consolidated proforma invoice previews or preview prepaid subscriptions. - -Create a signup preview in the format of a proforma invoice to preview costs before a subscription's signup. You have the option of optionally previewing the first renewal's costs as well. The proforma invoice preview will not be persisted. +Creates a signup preview in the format of a proforma invoice to preview costs before a subscription's signup. This endpoint is only available for Relationship Invoicing sites and cannot be used to create consolidated proforma invoice previews or preview prepaid subscriptions. You have the option of previewing the first renewal's costs as well. The proforma invoice preview will not be persisted. Pass a payload that resembles a subscription create or signup preview request. For example, you can specify components, coupons/a referral, offers, custom pricing, and an existing customer or payment profile to populate a shipping or billing address. diff --git a/doc/controllers/reason-codes.md b/doc/controllers/reason-codes.md index cfa1e839..e17c9b23 100644 --- a/doc/controllers/reason-codes.md +++ b/doc/controllers/reason-codes.md @@ -19,9 +19,11 @@ reason_codes_controller = client.reason_codes # Create Reason Code +Creates a reason code for a given site. + # Reason Codes Intro -ReasonCodes are a way to gain a high level view of why your customers are cancelling the subscription to your product or service. +Reason Codes are a way to gain a high-level view of why your customers are cancelling the subscription to your product or service. Add a set of churn reason codes to be displayed in-app and/or the Maxio Billing Portal. As your subscribers decide to cancel their subscription, learn why they decided to cancel. @@ -33,7 +35,7 @@ Full documentation on how Reason Codes operate within Advanced Billing can be lo ## Create Reason Code -This method gives a merchant the option to create a reason codes for a given Site. +This method gives a merchant the option to create reason codes for a given site. ```python def create_reason_code(self, @@ -82,7 +84,7 @@ print(result) # List Reason Codes -This method gives a merchant the option to retrieve a list of all of the current churn codes for a given site. +Lists all current churn codes for a given site. ```python def list_reason_codes(self, @@ -166,7 +168,7 @@ print(result) # Read Reason Code -This method gives a merchant the option to retrieve a list of a particular code for a given Site by providing the unique numerical ID of the code. +Returns a particular churn reason code for a given site by its unique ID. ```python def read_reason_code(self, @@ -207,7 +209,7 @@ print(result) # Update Reason Code -This method gives a merchant the option to update an existing reason code for a given site. +Updates an existing reason code for a given site. ```python def update_reason_code(self, @@ -251,7 +253,7 @@ print(result) # Delete Reason Code -This method gives a merchant the option to delete one reason code from the Churn Reason Codes. This code will be immediately removed. This action is not reversible. +Deletes a reason code from the Churn Reason Codes. This code will be immediately removed. This action is not reversible. ```python def delete_reason_code(self, diff --git a/doc/controllers/referral-codes.md b/doc/controllers/referral-codes.md index 568de82c..fe69bef8 100644 --- a/doc/controllers/referral-codes.md +++ b/doc/controllers/referral-codes.md @@ -11,7 +11,7 @@ referral_codes_controller = client.referral_codes # Validate Referral Code -Use this method to determine if the referral code is valid and applicable within your Site. This method is useful for validating referral codes that are entered by a customer. +Validates whether a referral code is valid and applicable within your site. This method is useful for validating referral codes that are entered by a customer. ## Referrals Documentation diff --git a/doc/controllers/sales-commissions.md b/doc/controllers/sales-commissions.md index e41e8737..97b4f09d 100644 --- a/doc/controllers/sales-commissions.md +++ b/doc/controllers/sales-commissions.md @@ -17,7 +17,7 @@ sales_commissions_controller = client.sales_commissions # List Sales Commission Settings -Endpoint returns subscriptions with associated sales reps +Lists subscriptions with associated sales reps. ## Modified Authentication Process @@ -102,7 +102,7 @@ print(result) # List Sales Reps -Endpoint returns sales rep list with details +Returns a sales rep list with details. ## Modified Authentication Process @@ -236,7 +236,7 @@ print(result) # Read Sales Rep -Endpoint returns sales rep and attached subscriptions details. +Returns a sales rep and attached subscription details. ## Modified Authentication Process diff --git a/doc/models/chjs-tokenization-failure.md b/doc/models/chjs-tokenization-failure.md new file mode 100644 index 00000000..52fac741 --- /dev/null +++ b/doc/models/chjs-tokenization-failure.md @@ -0,0 +1,27 @@ + +# Chjs Tokenization Failure + +## Structure + +`ChjsTokenizationFailure` + +## Fields + +| Name | Type | Tags | Description | +| --- | --- | --- | --- | +| `errors` | `str` | Required | - | +| `payment_profile_params` | [`PaymentProfileParams`](../../doc/models/payment-profile-params.md) | Optional | PCI-safe cardholder fields only. Full card numbers, CVV, and billing address are never included. | + +## Example (as JSON) + +```json +{ + "errors": "errors2", + "payment_profile_params": { + "first_name": "first_name2", + "last_name": "last_name0", + "card_type": "card_type2" + } +} +``` + diff --git a/doc/models/chjs-tokenization-success.md b/doc/models/chjs-tokenization-success.md new file mode 100644 index 00000000..43e97f2c --- /dev/null +++ b/doc/models/chjs-tokenization-success.md @@ -0,0 +1,28 @@ + +# Chjs Tokenization Success + +## Structure + +`ChjsTokenizationSuccess` + +## Fields + +| Name | Type | Tags | Description | +| --- | --- | --- | --- | +| `payment_profile` | [`PaymentProfile`](../../doc/models/payment-profile.md) | Required | - | +| `gateway_customer_id` | `int` | Optional | - | + +## Example (as JSON) + +```json +{ + "payment_profile": { + "id": 44, + "vault_token": "vault_token6", + "gateway_handle": "gateway_handle4", + "customer_vault_token": "customer_vault_token2" + }, + "gateway_customer_id": 44 +} +``` + diff --git a/doc/models/containers/event-event-specific-data.md b/doc/models/containers/event-event-specific-data.md index 79aadbfa..7ed0c6d0 100644 --- a/doc/models/containers/event-event-specific-data.md +++ b/doc/models/containers/event-event-specific-data.md @@ -3,7 +3,7 @@ ## Data Type -`SubscriptionProductChange | SubscriptionStateChange | PaymentRelatedEvents | RefundSuccess | ComponentAllocationChange | MeteredUsage | PrepaidUsage | DunningStepReached | InvoiceIssued | PendingCancellationChange | PrepaidSubscriptionBalanceChanged | ProformaInvoiceIssued | SubscriptionGroupSignupEventData | CreditAccountBalanceChanged | PrepaymentAccountBalanceChanged | PaymentCollectionMethodChanged | ItemPricePointChanged | CustomFieldValueChange` +`SubscriptionProductChange | SubscriptionStateChange | PaymentRelatedEvents | RefundSuccess | ComponentAllocationChange | MeteredUsage | PrepaidUsage | DunningStepReached | InvoiceIssued | PendingCancellationChange | PrepaidSubscriptionBalanceChanged | ProformaInvoiceIssued | SubscriptionGroupSignupEventData | CreditAccountBalanceChanged | PrepaymentAccountBalanceChanged | PaymentCollectionMethodChanged | ItemPricePointChanged | CustomFieldValueChange | ChjsTokenizationSuccess | ChjsTokenizationFailure` ## Cases @@ -27,6 +27,8 @@ | [`PaymentCollectionMethodChanged`](../../../doc/models/payment-collection-method-changed.md) | | [`ItemPricePointChanged`](../../../doc/models/item-price-point-changed.md) | | [`CustomFieldValueChange`](../../../doc/models/custom-field-value-change.md) | +| [`ChjsTokenizationSuccess`](../../../doc/models/chjs-tokenization-success.md) | +| [`ChjsTokenizationFailure`](../../../doc/models/chjs-tokenization-failure.md) | ## SubscriptionProductChange @@ -343,3 +345,29 @@ value = CustomFieldValueChange( ) ``` +## ChjsTokenizationSuccess + +### Initialization Code + +#### Example + +```python +value = ChjsTokenizationSuccess( + payment_profile=PaymentProfile( + id=44 + ) +) +``` + +## ChjsTokenizationFailure + +### Initialization Code + +#### Example + +```python +value = ChjsTokenizationFailure( + errors='errors2' +) +``` + diff --git a/doc/models/containers/payment-profile.md b/doc/models/containers/payment-profile-2.md similarity index 98% rename from doc/models/containers/payment-profile.md rename to doc/models/containers/payment-profile-2.md index 1f879870..fae5e214 100644 --- a/doc/models/containers/payment-profile.md +++ b/doc/models/containers/payment-profile-2.md @@ -1,5 +1,5 @@ -# Payment-Profile +# Payment-Profile 2 ## Data Type diff --git a/doc/models/create-or-update-endpoint-request.md b/doc/models/create-or-update-endpoint-request.md index 1f5787c0..787658ee 100644 --- a/doc/models/create-or-update-endpoint-request.md +++ b/doc/models/create-or-update-endpoint-request.md @@ -20,7 +20,7 @@ Used to Create or Update Endpoint "endpoint": { "url": "url2", "webhook_subscriptions": [ - "dunning_step_reached" + "subscription_prepayment_account_balance_changed" ] } } diff --git a/doc/models/create-or-update-endpoint.md b/doc/models/create-or-update-endpoint.md index e3d39325..c6fe739b 100644 --- a/doc/models/create-or-update-endpoint.md +++ b/doc/models/create-or-update-endpoint.md @@ -20,7 +20,7 @@ Used to Create or Update Endpoint { "url": "url8", "webhook_subscriptions": [ - "subscription_prepayment_account_balance_changed" + "refund_success" ] } ``` diff --git a/doc/models/create-subscription-request.md b/doc/models/create-subscription-request.md index 117b150e..3c5137ba 100644 --- a/doc/models/create-subscription-request.md +++ b/doc/models/create-subscription-request.md @@ -23,7 +23,6 @@ }, "dunning_communication_delay_enabled": false, "dunning_communication_delay_time_zone": "\"Eastern Time (US & Canada)\"", - "skip_billing_manifest_taxes": false, "product_handle": "product_handle6", "product_id": 206, "product_price_point_handle": "product_price_point_handle2", diff --git a/doc/models/create-subscription.md b/doc/models/create-subscription.md index 8bf22598..07d64a68 100644 --- a/doc/models/create-subscription.md +++ b/doc/models/create-subscription.md @@ -58,7 +58,7 @@ | `ach_agreement` | [`ACHAgreement`](../../doc/models/ach-agreement.md) | Optional | (Optional) If passed, the proof of the authorized ACH agreement terms will be persisted. | | `dunning_communication_delay_enabled` | `bool` | Optional | Enable Communication Delay feature, making sure no communication (email or SMS) is sent to the Customer between 9PM and 8AM in time zone set by the `dunning_communication_delay_time_zone` attribute.

**Default**: `False` | | `dunning_communication_delay_time_zone` | `str` | Optional | Time zone for the Dunning Communication Delay feature. | -| `skip_billing_manifest_taxes` | `bool` | Optional | Valid only for the Subscription Preview endpoint. When set to `true` it skips calculating taxes for the current and next billing manifests.

**Default**: `False` | +| `skip_billing_manifest_taxes` | `bool` | Optional | Valid only for the Subscription Preview endpoint. When set to `true` it skips calculating taxes for the current and next billing manifests. Defaults to `false` when not provided. | ## Example (as JSON) @@ -71,7 +71,6 @@ }, "dunning_communication_delay_enabled": false, "dunning_communication_delay_time_zone": "\"Eastern Time (US & Canada)\"", - "skip_billing_manifest_taxes": false, "product_handle": "product_handle6", "product_id": 212, "product_price_point_handle": "product_price_point_handle0", diff --git a/doc/models/credit-note-line-item.md b/doc/models/credit-note-line-item.md index fd8cae9d..feb7c9ee 100644 --- a/doc/models/credit-note-line-item.md +++ b/doc/models/credit-note-line-item.md @@ -28,6 +28,7 @@ | `price_point_id` | `int` | Optional | The price point ID of the component being credited. Will be `nil` for non-component credits. | | `billing_schedule_item_id` | `int` | Optional | - | | `custom_item` | `bool` | Optional | - | +| `prepaid_allocation_expires_at` | `date` | Optional | The date a prepaid allocation is set to expire. Only present on line items representing prepaid component allocations. The format is `"YYYY-MM-DD"`. | ## Example (as JSON) diff --git a/doc/models/customer.md b/doc/models/customer.md index 89a98fcf..1a51ac89 100644 --- a/doc/models/customer.md +++ b/doc/models/customer.md @@ -39,6 +39,7 @@ | `salesforce_id` | `str` | Optional | The Salesforce ID for the customer | | `tax_exempt_reason` | `str` | Optional | The Tax Exemption Reason Code for the customer | | `default_auto_renewal_profile_id` | `int` | Optional | The default auto-renewal profile ID for the customer | +| `maxioid` | `str` | Optional | The Maxio-generated unique identifier for the customer. | ## Example (as JSON) diff --git a/doc/models/event-key.md b/doc/models/event-key.md index e95df013..a400739e 100644 --- a/doc/models/event-key.md +++ b/doc/models/event-key.md @@ -86,6 +86,8 @@ | `CHARGEBACK_WON` | | `PAYMENT_COLLECTION_METHOD_CHANGED` | | `COMPONENT_BILLING_DATE_CHANGED` | +| `CHJS_TOKENIZATION_FAILURE` | +| `CHJS_TOKENIZATION_SUCCESS` | | `SUBSCRIPTION_TERM_RENEWAL_SCHEDULED` | | `SUBSCRIPTION_TERM_RENEWAL_PENDING` | | `SUBSCRIPTION_TERM_RENEWAL_ACTIVATED` | diff --git a/doc/models/event-response.md b/doc/models/event-response.md index f63a649c..1c4163af 100644 --- a/doc/models/event-response.md +++ b/doc/models/event-response.md @@ -17,7 +17,7 @@ { "event": { "id": 242, - "key": "prepaid_subscription_balance_changed", + "key": "maxio_payments_direct_debit_payment_rejected", "message": "message0", "subscription_id": 96, "customer_id": 24, diff --git a/doc/models/event.md b/doc/models/event.md index 869492e2..b7179a2b 100644 --- a/doc/models/event.md +++ b/doc/models/event.md @@ -15,14 +15,14 @@ | `subscription_id` | `int` | Required | - | | `customer_id` | `int` | Required | - | | `created_at` | `datetime` | Required | - | -| `event_specific_data` | [Subscription Product Change](../../doc/models/subscription-product-change.md) \| [Subscription State Change](../../doc/models/subscription-state-change.md) \| [Payment Related Events](../../doc/models/payment-related-events.md) \| [Refund Success](../../doc/models/refund-success.md) \| [Component Allocation Change](../../doc/models/component-allocation-change.md) \| [Metered Usage](../../doc/models/metered-usage.md) \| [Prepaid Usage](../../doc/models/prepaid-usage.md) \| [Dunning Step Reached](../../doc/models/dunning-step-reached.md) \| [Invoice Issued](../../doc/models/invoice-issued.md) \| [Pending Cancellation Change](../../doc/models/pending-cancellation-change.md) \| [Prepaid Subscription Balance Changed](../../doc/models/prepaid-subscription-balance-changed.md) \| [Proforma Invoice Issued](../../doc/models/proforma-invoice-issued.md) \| [Subscription Group Signup Event Data](../../doc/models/subscription-group-signup-event-data.md) \| [Credit Account Balance Changed](../../doc/models/credit-account-balance-changed.md) \| [Prepayment Account Balance Changed](../../doc/models/prepayment-account-balance-changed.md) \| [Payment Collection Method Changed](../../doc/models/payment-collection-method-changed.md) \| [Item Price Point Changed](../../doc/models/item-price-point-changed.md) \| [Custom Field Value Change](../../doc/models/custom-field-value-change.md) \| None | Required | This is a container for one-of cases. | +| `event_specific_data` | [Subscription Product Change](../../doc/models/subscription-product-change.md) \| [Subscription State Change](../../doc/models/subscription-state-change.md) \| [Payment Related Events](../../doc/models/payment-related-events.md) \| [Refund Success](../../doc/models/refund-success.md) \| [Component Allocation Change](../../doc/models/component-allocation-change.md) \| [Metered Usage](../../doc/models/metered-usage.md) \| [Prepaid Usage](../../doc/models/prepaid-usage.md) \| [Dunning Step Reached](../../doc/models/dunning-step-reached.md) \| [Invoice Issued](../../doc/models/invoice-issued.md) \| [Pending Cancellation Change](../../doc/models/pending-cancellation-change.md) \| [Prepaid Subscription Balance Changed](../../doc/models/prepaid-subscription-balance-changed.md) \| [Proforma Invoice Issued](../../doc/models/proforma-invoice-issued.md) \| [Subscription Group Signup Event Data](../../doc/models/subscription-group-signup-event-data.md) \| [Credit Account Balance Changed](../../doc/models/credit-account-balance-changed.md) \| [Prepayment Account Balance Changed](../../doc/models/prepayment-account-balance-changed.md) \| [Payment Collection Method Changed](../../doc/models/payment-collection-method-changed.md) \| [Item Price Point Changed](../../doc/models/item-price-point-changed.md) \| [Custom Field Value Change](../../doc/models/custom-field-value-change.md) \| [Chjs Tokenization Success](../../doc/models/chjs-tokenization-success.md) \| [Chjs Tokenization Failure](../../doc/models/chjs-tokenization-failure.md) \| None | Required | This is a container for one-of cases. | ## Example (as JSON) ```json { "id": 40, - "key": "expiring_card", + "key": "subscription_group_signup_success", "message": "message8", "subscription_id": 150, "customer_id": 78, diff --git a/doc/models/invoice-line-item.md b/doc/models/invoice-line-item.md index 81382fa2..db1e8eea 100644 --- a/doc/models/invoice-line-item.md +++ b/doc/models/invoice-line-item.md @@ -33,6 +33,7 @@ | `product_price_point_id` | `int` | Optional | The price point ID of the line item's product | | `custom_item` | `bool` | Optional | - | | `kind` | `str` | Optional | - | +| `prepaid_allocation_expires_at` | `date` | Optional | The date a prepaid allocation is set to expire. Only present on line items representing prepaid component allocations. The format is `"YYYY-MM-DD"`. | ## Example (as JSON) diff --git a/doc/models/payment-profile-params.md b/doc/models/payment-profile-params.md new file mode 100644 index 00000000..079f293c --- /dev/null +++ b/doc/models/payment-profile-params.md @@ -0,0 +1,27 @@ + +# Payment Profile Params + +PCI-safe cardholder fields only. Full card numbers, CVV, and billing address are never included. + +## Structure + +`PaymentProfileParams` + +## Fields + +| Name | Type | Tags | Description | +| --- | --- | --- | --- | +| `first_name` | `str` | Optional | - | +| `last_name` | `str` | Optional | - | +| `card_type` | `str` | Optional | - | + +## Example (as JSON) + +```json +{ + "first_name": "first_name2", + "last_name": "last_name0", + "card_type": "card_type8" +} +``` + diff --git a/doc/models/payment-profile.md b/doc/models/payment-profile.md new file mode 100644 index 00000000..e8bc304a --- /dev/null +++ b/doc/models/payment-profile.md @@ -0,0 +1,27 @@ + +# Payment Profile + +## Structure + +`PaymentProfile` + +## Fields + +| Name | Type | Tags | Description | +| --- | --- | --- | --- | +| `id` | `int` | Required | - | +| `vault_token` | `str` | Optional | - | +| `gateway_handle` | `str` | Optional | - | +| `customer_vault_token` | `str` | Optional | - | + +## Example (as JSON) + +```json +{ + "id": 56, + "vault_token": "vault_token0", + "gateway_handle": "gateway_handle0", + "customer_vault_token": "customer_vault_token6" +} +``` + diff --git a/doc/models/site.md b/doc/models/site.md index 83f4e74f..9cd696fc 100644 --- a/doc/models/site.md +++ b/doc/models/site.md @@ -25,6 +25,9 @@ | `organization_address` | [`OrganizationAddress`](../../doc/models/organization-address.md) | Optional | - | | `tax_configuration` | [`TaxConfiguration`](../../doc/models/tax-configuration.md) | Optional | - | | `net_terms` | [`NetTerms`](../../doc/models/net-terms.md) | Optional | - | +| `multi_frequency_enabled` | `bool` | Optional | Whether the site has the multi-frequency billing feature enabled. Only present when relationship invoicing is active. | +| `auto_renewals_enabled` | `bool` | Optional | Whether the auto-renewals feature is enabled for this site. | +| `portal_enabled` | `bool` | Optional | Whether the Billing Portal is enabled for this site. | | `test` | `bool` | Optional | - | ## Example (as JSON) diff --git a/doc/models/webhook-subscription.md b/doc/models/webhook-subscription.md index 172e795d..85990e59 100644 --- a/doc/models/webhook-subscription.md +++ b/doc/models/webhook-subscription.md @@ -11,6 +11,8 @@ | --- | | `BILLING_DATE_CHANGE` | | `COMPONENT_ALLOCATION_CHANGE` | +| `CHJS_TOKENIZATION_FAILURE` | +| `CHJS_TOKENIZATION_SUCCESS` | | `CUSTOMER_CREATE` | | `CUSTOMER_UPDATE` | | `DUNNING_STEP_REACHED` | From e4a9cd7ae16428350f73aa3c165785c183f2a55c Mon Sep 17 00:00:00 2001 From: lucassus Date: Thu, 11 Jun 2026 17:55:37 +0000 Subject: [PATCH 3/4] Automated commit message --- advancedbilling/models/__init__.py | 2 +- advancedbilling/models/chjs_tokenization_success.py | 13 +++++++------ advancedbilling/models/payment_profile_response.py | 6 +++--- ...ment_profile.py => tokenized_payment_profile.py} | 6 +++--- advancedbilling/utilities/union_type_lookup.py | 2 +- doc/models/chjs-tokenization-success.md | 2 +- doc/models/containers/event-event-specific-data.md | 2 +- .../{payment-profile-2.md => payment-profile.md} | 2 +- ...ment-profile.md => tokenized-payment-profile.md} | 12 ++++++------ 9 files changed, 24 insertions(+), 23 deletions(-) rename advancedbilling/models/{payment_profile.py => tokenized_payment_profile.py} (97%) rename doc/models/containers/{payment-profile-2.md => payment-profile.md} (98%) rename doc/models/{payment-profile.md => tokenized-payment-profile.md} (61%) diff --git a/advancedbilling/models/__init__.py b/advancedbilling/models/__init__.py index a9a87f7e..c5fb95cd 100644 --- a/advancedbilling/models/__init__.py +++ b/advancedbilling/models/__init__.py @@ -377,7 +377,6 @@ "payment_method_credit_card", "payment_method_external", "payment_method_paypal", - "payment_profile", "payment_profile_attributes", "payment_profile_params", "payment_profile_response", @@ -558,6 +557,7 @@ "tax_configuration", "tax_configuration_kind", "tax_destination_address", + "tokenized_payment_profile", "too_many_management_link_requests", "trial_type", "update_allocation_expiration_date", diff --git a/advancedbilling/models/chjs_tokenization_success.py b/advancedbilling/models/chjs_tokenization_success.py index 2269db89..c499fa06 100644 --- a/advancedbilling/models/chjs_tokenization_success.py +++ b/advancedbilling/models/chjs_tokenization_success.py @@ -6,8 +6,8 @@ # ruff: noqa: E501 from advancedbilling.api_helper import APIHelper -from advancedbilling.models.payment_profile import ( - PaymentProfile, +from advancedbilling.models.tokenized_payment_profile import ( + TokenizedPaymentProfile, ) @@ -15,7 +15,8 @@ class ChjsTokenizationSuccess(object): """Implementation of the 'Chjs Tokenization Success' model. Attributes: - payment_profile (PaymentProfile): The model property of type PaymentProfile. + payment_profile (TokenizedPaymentProfile): The model property of type + TokenizedPaymentProfile. gateway_customer_id (int): The model property of type int. additional_properties (Dict[str, object]): The additional properties for the model. @@ -71,7 +72,7 @@ def from_dictionary(cls, # Extract variables from the dictionary payment_profile =\ - PaymentProfile.from_dictionary( + TokenizedPaymentProfile.from_dictionary( dictionary.get("payment_profile"))\ if dictionary.get("payment_profile") else None gateway_customer_id =\ @@ -105,7 +106,7 @@ def validate(cls, dictionary): return APIHelper.is_valid_type( value=dictionary.payment_profile, type_callable=lambda value: - PaymentProfile.validate(value), + TokenizedPaymentProfile.validate(value), is_model_dict=True) if not isinstance(dictionary, dict): @@ -114,7 +115,7 @@ def validate(cls, dictionary): return APIHelper.is_valid_type( value=dictionary.get("payment_profile"), type_callable=lambda value: - PaymentProfile.validate(value), + TokenizedPaymentProfile.validate(value), is_model_dict=True) def __repr__(self): diff --git a/advancedbilling/models/payment_profile_response.py b/advancedbilling/models/payment_profile_response.py index 48c8fa04..9f5b7455 100644 --- a/advancedbilling/models/payment_profile_response.py +++ b/advancedbilling/models/payment_profile_response.py @@ -62,7 +62,7 @@ def from_dictionary(cls, # Extract variables from the dictionary payment_profile = APIHelper.deserialize_union_type( - UnionTypeLookUp.get("Payment-Profile2"), + UnionTypeLookUp.get("Payment-Profile"), dictionary.get("payment_profile"), False)\ if dictionary.get("payment_profile") is not None\ @@ -94,13 +94,13 @@ def validate(cls, dictionary): ) if isinstance(dictionary, cls): - return (UnionTypeLookUp.get("Payment-Profile2") + return (UnionTypeLookUp.get("Payment-Profile") .validate(dictionary.payment_profile).is_valid) if not isinstance(dictionary, dict): return False - return (UnionTypeLookUp.get("Payment-Profile2") + return (UnionTypeLookUp.get("Payment-Profile") .validate(dictionary.get("payment_profile")).is_valid) def __repr__(self): diff --git a/advancedbilling/models/payment_profile.py b/advancedbilling/models/tokenized_payment_profile.py similarity index 97% rename from advancedbilling/models/payment_profile.py rename to advancedbilling/models/tokenized_payment_profile.py index 8188db57..97190f18 100644 --- a/advancedbilling/models/payment_profile.py +++ b/advancedbilling/models/tokenized_payment_profile.py @@ -8,8 +8,8 @@ from advancedbilling.api_helper import APIHelper -class PaymentProfile(object): - """Implementation of the 'PaymentProfile' model. +class TokenizedPaymentProfile(object): + """Implementation of the 'Tokenized Payment Profile' model. Attributes: id (int): The model property of type int. @@ -47,7 +47,7 @@ def __init__( gateway_handle=APIHelper.SKIP, customer_vault_token=APIHelper.SKIP, additional_properties=None): - """Initialize a PaymentProfile instance.""" + """Initialize a TokenizedPaymentProfile instance.""" # Initialize members of the class self.id = id if vault_token is not APIHelper.SKIP: diff --git a/advancedbilling/utilities/union_type_lookup.py b/advancedbilling/utilities/union_type_lookup.py index ad194472..c80d597a 100644 --- a/advancedbilling/utilities/union_type_lookup.py +++ b/advancedbilling/utilities/union_type_lookup.py @@ -856,7 +856,7 @@ class UnionTypeLookUp: is_optional=True, ), ), - "Payment-Profile2": lambda: AnyOf( + "Payment-Profile": lambda: AnyOf( [ LeafType(ApplePayPaymentProfile, Context.create( diff --git a/doc/models/chjs-tokenization-success.md b/doc/models/chjs-tokenization-success.md index 43e97f2c..76ab9dad 100644 --- a/doc/models/chjs-tokenization-success.md +++ b/doc/models/chjs-tokenization-success.md @@ -9,7 +9,7 @@ | Name | Type | Tags | Description | | --- | --- | --- | --- | -| `payment_profile` | [`PaymentProfile`](../../doc/models/payment-profile.md) | Required | - | +| `payment_profile` | [`TokenizedPaymentProfile`](../../doc/models/tokenized-payment-profile.md) | Required | - | | `gateway_customer_id` | `int` | Optional | - | ## Example (as JSON) diff --git a/doc/models/containers/event-event-specific-data.md b/doc/models/containers/event-event-specific-data.md index 7ed0c6d0..6d845132 100644 --- a/doc/models/containers/event-event-specific-data.md +++ b/doc/models/containers/event-event-specific-data.md @@ -353,7 +353,7 @@ value = CustomFieldValueChange( ```python value = ChjsTokenizationSuccess( - payment_profile=PaymentProfile( + payment_profile=TokenizedPaymentProfile( id=44 ) ) diff --git a/doc/models/containers/payment-profile-2.md b/doc/models/containers/payment-profile.md similarity index 98% rename from doc/models/containers/payment-profile-2.md rename to doc/models/containers/payment-profile.md index fae5e214..1f879870 100644 --- a/doc/models/containers/payment-profile-2.md +++ b/doc/models/containers/payment-profile.md @@ -1,5 +1,5 @@ -# Payment-Profile 2 +# Payment-Profile ## Data Type diff --git a/doc/models/payment-profile.md b/doc/models/tokenized-payment-profile.md similarity index 61% rename from doc/models/payment-profile.md rename to doc/models/tokenized-payment-profile.md index e8bc304a..16a2ade5 100644 --- a/doc/models/payment-profile.md +++ b/doc/models/tokenized-payment-profile.md @@ -1,9 +1,9 @@ -# Payment Profile +# Tokenized Payment Profile ## Structure -`PaymentProfile` +`TokenizedPaymentProfile` ## Fields @@ -18,10 +18,10 @@ ```json { - "id": 56, - "vault_token": "vault_token0", - "gateway_handle": "gateway_handle0", - "customer_vault_token": "customer_vault_token6" + "id": 72, + "vault_token": "vault_token2", + "gateway_handle": "gateway_handle8", + "customer_vault_token": "customer_vault_token8" } ``` From fac8073e2e8cf859718aff9da9cc1f5ed7580cba Mon Sep 17 00:00:00 2001 From: Luke Date: Thu, 11 Jun 2026 13:34:29 -0500 Subject: [PATCH 4/4] Update VAT number assertion --- tests/data/init_cases.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/data/init_cases.py b/tests/data/init_cases.py index 388bd227..648d47cf 100644 --- a/tests/data/init_cases.py +++ b/tests/data/init_cases.py @@ -77,7 +77,7 @@ def get_customer_request() -> dict: "country": "US", "phone": "+00 123 456 789", "tax_exempt": False, - "vat_number": "test vat number", + "vat_number": "TEST VAT NUMBER", "parent_id": None, "locale": None, }