9.0.0
Changelog: v9.0.0
Breaking Changes
SnapDayenum removed — TheSnapDayenum (which contained a single valueEnd) has been deleted. All properties that previously usedSnapDayor its container types now usestringinstead. ReplaceSnapDay.Endwith the string"end".SubscriptionSnapDaycontainer removed — TheSubscriptionSnapDayunion type class has been deleted. TheSubscription.SnapDayproperty is now typed asstringdirectly, and the constructor parameter changed fromSubscriptionSnapDay snapDaytostring snapDay.CalendarBillingSnapDaycontainer changed — The second union case changed fromSnapDaytostring.CalendarBillingSnapDay.FromSnapDay()is replaced byCalendarBillingSnapDay.FromString(). TheMatchcallback signature changed accordingly:Func<SnapDay, T>→Func<string, T>.UpdateSubscriptionSnapDaycontainer changed — TheSnapDaycase was replaced withstring, and the parameter order inMatchwas reversed: old signature wasMatch<T>(Func<int, T> number, Func<SnapDay, T> snapDay), new signature isMatch<T>(Func<string, T> mString, Func<int, T> number). ExistingMatchcalls will silently swap callback meaning if only types are adjusted — review carefully.CalendarBilling.UnsetSnapDay()andCalendarBilling.ShouldSerializeSnapDay()removed — TheSnapDayproperty now usesNullValueHandling.Ignoreinstead of manual serialization control.UpdateSubscription.UnsetSnapDay()andUpdateSubscription.ShouldSerializeSnapDay()removed — Same change asCalendarBilling.CreateAllocationcredit type fields changed —DowngradeCreditnow usesDowngradeCreditCreditTypeandUpgradeChargenow usesUpgradeChargeCreditType, replacing the sharedCreditTypeenum. The accepted values (Full,Prorated,None) are unchanged.ReadComponentPricePointreturn type changed —ComponentPricePointsController.ReadComponentPricePoint(and its async variant) now returnsComponentPricePointCurrencyOverageResponseinstead ofComponentPricePointResponse. Update variable types at call sites.
New Features
- New controller:
SubscriptionRenewalsController— Full CRUD API for scheduled renewal configurations, accessible viaAdvancedBillingClient.SubscriptionRenewalsController. Includes 11 methods (sync + async):CreateScheduledRenewalConfiguration— Create a scheduled renewal config for a subscriptionListScheduledRenewalConfigurations— List configs with optional status filterReadScheduledRenewalConfiguration— Read a single configUpdateScheduledRenewalConfiguration— Update a configScheduleScheduledRenewalLockIn— Schedule a future lock-in dateLockInScheduledRenewalImmediately— Lock in immediatelyUnpublishScheduledRenewalConfiguration— Return a config to editable stateCancelScheduledRenewalConfiguration— Cancel a configCreateScheduledRenewalConfigurationItem— Add product/component line itemsUpdateScheduledRenewalConfigurationItem— Update an item's pricing and quantityDeleteScheduledRenewalConfigurationItem— Remove an item
CloneComponentPricePoint— New method onComponentPricePointsController. 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 onProformaInvoicesController. POST/proforma_invoices/{proforma_invoice_uid}/deliveries.json. Delivers a proforma invoice via email with support for direct recipients, CC, and BCC.IssueInvoicenow supports "draft" status — The endpoint can now issue invoices that are in both "pending" and "draft" status.
New Models
AvailableActionsCloneComponentPricePointCloneComponentPricePointRequestComponentPricePointCurrencyOverageResponseContractCurrencyOveragePricesDeliverProformaInvoiceRequestRegisterScheduledRenewalComponentCustomPriceScheduledRenewalConfigurationScheduledRenewalConfigurationItemScheduledRenewalConfigurationItemRequestScheduledRenewalConfigurationItemResponseScheduledRenewalConfigurationRequestScheduledRenewalConfigurationRequestBodyScheduledRenewalConfigurationResponseScheduledRenewalConfigurationsResponseScheduledRenewalItemRequestBodyComponentScheduledRenewalItemRequestBodyProductScheduledRenewalLockInRequestScheduledRenewalProductPricePointScheduledRenewalUpdateRequestSendEmail
New enum types:
DowngradeCreditCreditType— Values:Full,Prorated,NoneStatus— Values:Draft,Scheduled,Pending,Canceled,Active,FulfilledUpgradeChargeCreditType— Values:Full,Prorated,None
New container (union) types:
CloneComponentPricePointPricePointIdScheduledRenewalConfigurationItemRequestRenewalConfigurationItemScheduledRenewalProductPricePointIntervalScheduledRenewalProductPricePointPriceInCentsScheduledRenewalUpdateRequestRenewalConfigurationItem
Model Enhancements
CancellationOptions— AddedCancelAtEndOfPeriod(bool?),RefundPrepaymentAccountBalance(bool?),ScheduledCancellationAt(DateTimeOffset?)ComponentCustomPrice— AddedListPricePointId(int?),UseDefaultListPrice(bool?)CreateAllocation— AddedDecimalQuantity(string),PreviousQuantity(double?),DecimalPreviousQuantity(string),CustomPrice(ComponentCustomPrice)ProductFamily— AddedArchivedAt(DateTimeOffset?)ProformaInvoice— AddedAvailableActions(AvailableActions)SendInvoiceRequest— AddedAttachmentUrls(List<string>)SubscriptionGroup— AddedUid(string)SubscriptionSortenum — Added values:TotalPayments,Id,OpenBalance,ExpiresAt
Internal / Non-functional Changes
- SDK version bumped from
8.0.0to9.0.0across 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
usingdirective 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