Skip to content

Release 10.0.0 - #56

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

Release 10.0.0#56
imlukedewitt merged 9 commits into
mainfrom
publish

Conversation

@imlukedewitt

@imlukedewitt imlukedewitt commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

ab-dotnet-sdk 10.0.0 Changelog

Breaking Changes

  • unit_balance is now a union container instead of an integer. This affects SubscriptionComponent, CreateSubscriptionComponent, MeteredUsage, and PrepaidUsage. Each container exposes FromNumber and FromString factory methods, and a Match method that takes a handler for each case.
  • GetOneTimeTokenRequest.PaymentProfile is now a discriminated union. The endpoint can return a credit card profile or a bank account profile, keyed on payment_type. Direct property access no longer reaches the profile fields, and GetOneTimeTokenRequestPaymentProfile exposes Match for both variants.
  • ListSubscriptionsInput.Product is now a union container. The filter accepts a product ID or an exact product name. Product handles are not supported. ListSubscriptionsInputProduct exposes FromNumber and FromString factory methods.
  • ListSubcriptionGroupPrepaymentItem is renamed to ListSubscriptionGroupPrepaymentItem. We corrected a typo in the schema title, and the generated class name follows the title. The properties of the model are unchanged.
  • The ListSubscriptionsInput constructor argument order changed. The parameter count went from 16 to 25. sort and direction moved to positions 3 and 4.
  • Surcharging was inserted mid-list in four customer constructors. The new parameter sits directly after taxExempt on Customer, CustomerAttributes, CreateCustomer, and UpdateCustomer. Every parameter after it shifted by one position. For positional calls, a type mismatch usually causes a compile error, but a positional null can bind to Surcharging silently.
  • CreditCardPaymentProfile.CardType can now be null. The C# type is unchanged at Models.CardType?, so this does not break compilation. The API can now return null on a profile that previously always carried a value.

New Features

  • Added UpdateInvoice and DeleteInvoice to InvoicesController, with async variants. Both act only on ad hoc invoices in draft status.
  • Added support for the subscription_product_change_scheduled webhook event, as EventKey.SubscriptionProductChangeScheduled and WebhookSubscription.SubscriptionProductChangeScheduled. The payload deserializes into the existing SubscriptionProductChange model.
  • Added nine filters to ListSubscriptionsInput: Q, QScope, CustomerId, CollectionMethod, GroupStatus, DunningExemption, PaymentGateways, Currencies, and BrandingThemeId.
  • Added three SubscriptionListInclude values: CurrentAccountBalanceInCents, CurrentBillingAmount, and Coupons.
  • Added five SubscriptionStateFilter values: EnumExpiredCardsLiveSubscriptions, EnumExpiredCardsAllSubscriptions, AwaitingSignup, AwaitingSignupDate, and PrepaidDunning.

New Models

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

New container types under AdvancedBilling.Standard.Models.Containers:

  • SubscriptionComponentUnitBalance
  • CreateSubscriptionComponentUnitBalance
  • MeteredUsageNewUnitBalance
  • PrepaidUsageNewUnitBalance
  • PrepaidUsageNewOverageUnitBalance
  • GetOneTimeTokenRequestPaymentProfile
  • ListSubscriptionsInputProduct
  • UpdateInvoiceItemQuantity
  • UpdateInvoiceItemUnitPrice
  • UpdateInvoiceItemProductId
  • UpdateInvoiceItemProductPricePointId
  • UpdateInvoiceItemComponentId
  • UpdateInvoiceItemPricePointId

Model Enhancements

  • Component, CreateOrUpdateProduct, Product, EBBComponent, MeteredComponent, OnOffComponent, PrepaidUsageComponent, QuantityBasedComponent, UpdateComponent
    • Added UnspscCode (string?).
  • Customer
    • Added Surcharging (bool?).
    • Added BrandingThemeId (int?).
  • CustomerAttributes
    • Added Surcharging (bool?).
  • CreateCustomer
    • Added Surcharging (bool?).
    • Added BrandingThemeId (int?).
  • UpdateCustomer
    • Added Surcharging (bool?).
    • Added BrandingThemeId (int?).
  • ProductFamily
    • Added Surcharging (bool?).
  • CreateProductFamily
    • Added Surcharging (bool?).
  • CreateSubscription
    • Added BrandingThemeId (int?). Write-only. The subscription response does not return it.
  • UpdateSubscription
    • Added BrandingThemeId (int?). Write-only. The subscription response does not return it.
  • Invoice
    • Added BrandingThemeId (int?).
  • SubscriptionProductChange
    • Added PreviousProductPricePointId (int?).
    • Added NewProductPricePointId (int?).
    • Added EffectiveAt (DateTimeOffset?).
    • 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.

Internal / Non-functional Changes

  • API endpoint doc comments reworded across controllers after a wording and punctuation pass in the spec (no behavioral impact).

@imlukedewitt
imlukedewitt merged commit 187db64 into main Aug 14, 2026
1 check passed
@imlukedewitt
imlukedewitt deleted the publish branch August 14, 2026 13:24
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