Skip to content

Release 10.0.0 - #48

Merged
imlukedewitt merged 11 commits into
mainfrom
publish
Aug 14, 2026
Merged

Release 10.0.0#48
imlukedewitt merged 11 commits into
mainfrom
publish

Conversation

@imlukedewitt

@imlukedewitt imlukedewitt commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

ab-ruby-sdk 10.0.0 Changelog

Breaking Changes

  • unit_balance is now an Integer | String union. This affects SubscriptionComponent, CreateSubscriptionComponent, MeteredUsage, and PrepaidUsage. Components that support fractional quantities return a string.
  • GetOneTimeTokenRequest#payment_profile can now be a bank account profile. The endpoint returns GetOneTimeTokenPaymentProfile or GetOneTimeTokenBankAccountPaymentProfile. Ruby generates this as a plain any-of with no discriminator, so the object class is the only signal of which variant came back. The credit card class keeps its old name, because the spec file was renamed but the schema title was not.
  • CreditCardPaymentProfile#card_type is now nullable. The API can now return nil on a profile that previously always carried a value.
  • ListSubcriptionGroupPrepaymentItem is renamed to ListSubscriptionGroupPrepaymentItem. We corrected a typo in the schema title, and Ruby class names come from the title. The properties of the model are unchanged.

New Features

  • Added update_invoice and delete_invoice to InvoicesController. Both act only on ad hoc invoices in draft status.
  • Added support for the subscription_product_change_scheduled webhook event, as EventKey::SUBSCRIPTION_PRODUCT_CHANGE_SCHEDULED and WebhookSubscription::SUBSCRIPTION_PRODUCT_CHANGE_SCHEDULED. The payload deserializes into the existing SubscriptionProductChange model.
  • Added nine option keys to SubscriptionsController#list_subscriptions: q, q_scope, customer_id, collection_method, group_status, dunning_exemption, payment_gateways, currencies, and branding_theme_id.
  • The product filter on list_subscriptions now also accepts a String. It takes a product ID or an exact product name, but not a handle. Existing integer values keep working, so this is not a breaking change in Ruby.
  • Added three SubscriptionListInclude values: CURRENT_ACCOUNT_BALANCE_IN_CENTS, CURRENT_BILLING_AMOUNT, and COUPONS.
  • Added five SubscriptionStateFilter values: ENUM_EXPIRED_CARDS_LIVE_SUBSCRIPTIONS, ENUM_EXPIRED_CARDS_ALL_SUBSCRIPTIONS, AWAITING_SIGNUP, AWAITING_SIGNUP_DATE, and PREPAID_DUNNING.

Because list_subscriptions takes a single options hash, the reordered query parameters in the spec do not change any call site.

New Models

  • UpdateInvoice
  • UpdateInvoiceItem
  • UpdateInvoiceRequest
  • GetOneTimeTokenBankAccountPaymentProfile
  • QScope (enum)
  • CollectionMethod1 (enum). The 1 suffix avoids a collision with the existing CollectionMethod.
  • GroupStatus (enum)

The new unions are registered in lib/advanced_billing/utilities/union_type_lookup.rb rather than generated as standalone classes. They cover the unit_balance fields, GetOneTimeTokenRequestPaymentProfile, ListSubscriptionsInputProduct, and six UpdateInvoiceItem fields.

Model Enhancements

  • Component, EbbComponent, MeteredComponent, OnOffComponent, PrepaidUsageComponent, QuantityBasedComponent, UpdateComponent, Product, CreateOrUpdateProduct
    • Added unspsc_code (String, nullable).
  • Customer, CustomerAttributes, CreateCustomer, UpdateCustomer
    • Added surcharging (TrueClass | FalseClass).
  • ProductFamily, CreateProductFamily
    • Added surcharging (TrueClass | FalseClass).
  • Customer, CreateCustomer, UpdateCustomer, Invoice
    • Added branding_theme_id (Integer, nullable).
  • CreateSubscription, UpdateSubscription
    • Added branding_theme_id (Integer, nullable). Write-only. Create and update accept it, but the subscription response does not return it.
  • SubscriptionProductChange
    • Added previous_product_price_point_id (Integer, nullable).
    • Added new_product_price_point_id (Integer, nullable).
    • Added effective_at (DateTime, nullable).
    • Only the subscription_product_change_scheduled event populates these three fields.

Bug Fixes

  • subscription_product_change_scheduled events no longer fail to deserialize. The payload carries previous_product_price_point_id, new_product_price_point_id, and effective_at. SubscriptionProductChange did not model these fields. It now does, so Event#event_specific_data resolves the payload.

Internal / Non-functional Changes

  • Doc comments reworded across models and controllers after a wording and punctuation pass in the spec (no behavioral impact).
  • Version and user agent bumped to 10.0.0.

@imlukedewitt
imlukedewitt merged commit a76660a into main Aug 14, 2026
1 check passed
@imlukedewitt
imlukedewitt deleted the publish branch August 14, 2026 13:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants