Skip to content

9.0.0

Choose a tag to compare

@imlukedewitt imlukedewitt released this 17 Mar 18:59
· 3 commits to main since this release

Changelog: v9.0.0

Breaking Changes

  • SnapDay enum removed — The SnapDay enum (which contained a single value End) has been deleted. All properties that previously used SnapDay or its container types now use string instead. Replace SnapDay.End with the string "end".
  • SubscriptionSnapDay container removed — The SubscriptionSnapDay union type class has been deleted. The Subscription.SnapDay property is now typed as string directly, and the constructor parameter changed from SubscriptionSnapDay snapDay to string snapDay.
  • CalendarBillingSnapDay container changed — The second union case changed from SnapDay to string. CalendarBillingSnapDay.FromSnapDay() is replaced by CalendarBillingSnapDay.FromString(). The Match callback signature changed accordingly: Func<SnapDay, T> → Func<string, T>.
  • UpdateSubscriptionSnapDay container changed — The SnapDay case was replaced with string, and the parameter order in Match was reversed: old signature was Match<T>(Func<int, T> number, Func<SnapDay, T> snapDay), new signature is Match<T>(Func<string, T> mString, Func<int, T> number). Existing Match calls will silently swap callback meaning if only types are adjusted — review carefully.
  • CalendarBilling.UnsetSnapDay() and CalendarBilling.ShouldSerializeSnapDay() removed — The SnapDay property now uses NullValueHandling.Ignore instead of manual serialization control.
  • UpdateSubscription.UnsetSnapDay() and UpdateSubscription.ShouldSerializeSnapDay() removed — Same change as CalendarBilling.
  • CreateAllocation credit type fields changed — DowngradeCredit now uses DowngradeCreditCreditType and UpgradeCharge now uses UpgradeChargeCreditType, replacing the shared CreditType enum. The accepted values (Full, Prorated, None) are unchanged.
  • ReadComponentPricePoint return type changed — ComponentPricePointsController.ReadComponentPricePoint (and its async variant) now returns ComponentPricePointCurrencyOverageResponse instead of ComponentPricePointResponse. Update variable types at call sites.

New Features

  • New controller: SubscriptionRenewalsController — Full CRUD API for scheduled renewal configurations, accessible via AdvancedBillingClient.SubscriptionRenewalsController. Includes 11 methods (sync + async):
    • CreateScheduledRenewalConfiguration — Create a scheduled renewal config for a subscription
    • ListScheduledRenewalConfigurations — List configs with optional status filter
    • ReadScheduledRenewalConfiguration — Read a single config
    • UpdateScheduledRenewalConfiguration — Update a config
    • ScheduleScheduledRenewalLockIn — Schedule a future lock-in date
    • LockInScheduledRenewalImmediately — Lock in immediately
    • UnpublishScheduledRenewalConfiguration — Return a config to editable state
    • CancelScheduledRenewalConfiguration — Cancel a config
    • CreateScheduledRenewalConfigurationItem — Add product/component line items
    • UpdateScheduledRenewalConfigurationItem — Update an item's pricing and quantity
    • DeleteScheduledRenewalConfigurationItem — Remove an item
  • CloneComponentPricePoint — New method on ComponentPricePointsController. POST /components/{component_id}/price_points/{price_point_id}/clone.json. Clones a component price point including pricing scheme, price tiers, tax settings, currency prices, overage pricing, and event-based billing segments.
  • DeliverProformaInvoice — New method on ProformaInvoicesController. POST /proforma_invoices/{proforma_invoice_uid}/deliveries.json. Delivers a proforma invoice via email with support for direct recipients, CC, and BCC.
  • IssueInvoice now supports "draft" status — The endpoint can now issue invoices that are in both "pending" and "draft" status.

New Models

  • AvailableActions
  • CloneComponentPricePoint
  • CloneComponentPricePointRequest
  • ComponentPricePointCurrencyOverageResponse
  • Contract
  • CurrencyOveragePrices
  • DeliverProformaInvoiceRequest
  • Register
  • ScheduledRenewalComponentCustomPrice
  • ScheduledRenewalConfiguration
  • ScheduledRenewalConfigurationItem
  • ScheduledRenewalConfigurationItemRequest
  • ScheduledRenewalConfigurationItemResponse
  • ScheduledRenewalConfigurationRequest
  • ScheduledRenewalConfigurationRequestBody
  • ScheduledRenewalConfigurationResponse
  • ScheduledRenewalConfigurationsResponse
  • ScheduledRenewalItemRequestBodyComponent
  • ScheduledRenewalItemRequestBodyProduct
  • ScheduledRenewalLockInRequest
  • ScheduledRenewalProductPricePoint
  • ScheduledRenewalUpdateRequest
  • SendEmail

New enum types:

  • DowngradeCreditCreditType — Values: Full, Prorated, None
  • Status — Values: Draft, Scheduled, Pending, Canceled, Active, Fulfilled
  • UpgradeChargeCreditType — Values: Full, Prorated, None

New container (union) types:

  • CloneComponentPricePointPricePointId
  • ScheduledRenewalConfigurationItemRequestRenewalConfigurationItem
  • ScheduledRenewalProductPricePointInterval
  • ScheduledRenewalProductPricePointPriceInCents
  • ScheduledRenewalUpdateRequestRenewalConfigurationItem

Model Enhancements

  • CancellationOptions — Added CancelAtEndOfPeriod (bool?), RefundPrepaymentAccountBalance (bool?), ScheduledCancellationAt (DateTimeOffset?)
  • ComponentCustomPrice — Added ListPricePointId (int?), UseDefaultListPrice (bool?)
  • CreateAllocation — Added DecimalQuantity (string), PreviousQuantity (double?), DecimalPreviousQuantity (string), CustomPrice (ComponentCustomPrice)
  • ProductFamily — Added ArchivedAt (DateTimeOffset?)
  • ProformaInvoice — Added AvailableActions (AvailableActions)
  • SendInvoiceRequest — Added AttachmentUrls (List<string>)
  • SubscriptionGroup — Added Uid (string)
  • SubscriptionSort enum — Added values: TotalPayments, Id, OpenBalance, ExpiresAt

Internal / Non-functional Changes

  • SDK version bumped from 8.0.0 to 9.0.0 across assembly metadata, user-agent string, and documentation
  • Warning suppressions expanded: added CS1570 (malformed XML doc comment) and CS0649 (field never assigned) to <NoWarn> in the project file
  • Bulk using directive cleanup across ~800 files — unused imports removed, import ordering updated (code generation artifact)
  • Solution file project GUID regenerated (no functional impact)
  • API documentation regenerated for all controllers and models