Release v4.13.0#111
Conversation
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
WalkthroughChangesVersion 4.13.0 adds meter and metered-feature APIs, async response and webhook event models, new resource attributes and request parameters, expanded payment and domain enums, metadata shape changes, and client service accessors. Metering resources
API model updates
Estimated code review effort: 5 (Critical) | ~120 minutes Suggested reviewers: 🚥 Pre-merge checks | ❌ 1❌ Failed checks (1 warning)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 Checkov (3.3.8)build.gradle.ktsTraceback (most recent call last): 🔧 ast-grep (0.44.1)src/main/java/com/chargebee/v4/models/estimate/Estimate.javaast-grep timed out on this file Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/main/java/com/chargebee/v4/models/grantBlock/GrantBlock.java`:
- Around line 103-105: Preserve the existing String-returning getMetadata()
contract in GrantBlock.java lines 103-105 and PromotionalGrant.java lines 38-40;
expose the map through a new accessor instead of changing the existing method
signature, or otherwise treat the change as a major-version break.
In
`@src/main/java/com/chargebee/v4/models/meteredFeature/params/MeteredFeatureCreateParams.java`:
- Around line 182-185: Update the dataType serialization in
MeteredFeatureCreateParams so the data_type form field uses the enum’s wire
value via getValue() rather than the enum object’s toString() output. Preserve
the existing null check and form field key.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Enterprise
Run ID: 39d9afca-af51-41cd-9686-6a9ecb92be26
📒 Files selected for processing (88)
CHANGELOG.mdVERSIONbuild.gradle.ktssrc/main/java/com/chargebee/v4/client/ClientMethods.javasrc/main/java/com/chargebee/v4/client/ClientMethodsImpl.javasrc/main/java/com/chargebee/v4/client/ServiceRegistry.javasrc/main/java/com/chargebee/v4/models/alert/Alert.javasrc/main/java/com/chargebee/v4/models/alert/params/AlertCreateParams.javasrc/main/java/com/chargebee/v4/models/alert/params/AlertListParams.javasrc/main/java/com/chargebee/v4/models/alert/params/ApplicationAlertsForSubscriptionParams.javasrc/main/java/com/chargebee/v4/models/asyncResponse/AsyncResponse.javasrc/main/java/com/chargebee/v4/models/asyncResponseList/AsyncResponseList.javasrc/main/java/com/chargebee/v4/models/columnDefinition/ColumnDefinition.javasrc/main/java/com/chargebee/v4/models/creditNote/CreditNote.javasrc/main/java/com/chargebee/v4/models/creditNote/params/ImportCreditNoteParams.javasrc/main/java/com/chargebee/v4/models/creditNoteEstimate/CreditNoteEstimate.javasrc/main/java/com/chargebee/v4/models/customer/Customer.javasrc/main/java/com/chargebee/v4/models/customer/params/CustomerCollectPaymentParams.javasrc/main/java/com/chargebee/v4/models/customer/params/CustomerCreateParams.javasrc/main/java/com/chargebee/v4/models/customer/params/CustomerUpdatePaymentMethodParams.javasrc/main/java/com/chargebee/v4/models/entitlement/params/EntitlementListParams.javasrc/main/java/com/chargebee/v4/models/estimate/Estimate.javasrc/main/java/com/chargebee/v4/models/estimate/params/EstimateCreateInvoiceForItemsParams.javasrc/main/java/com/chargebee/v4/models/estimate/params/EstimateGiftSubscriptionForItemsParams.javasrc/main/java/com/chargebee/v4/models/estimate/params/EstimateGiftSubscriptionParams.javasrc/main/java/com/chargebee/v4/models/event/Event.javasrc/main/java/com/chargebee/v4/models/event/PaymentSourceBusinessEntityChangedEvent.javasrc/main/java/com/chargebee/v4/models/event/params/EventListParams.javasrc/main/java/com/chargebee/v4/models/export/params/ExportSubscriptionsParams.javasrc/main/java/com/chargebee/v4/models/export/params/ExportTransactionsParams.javasrc/main/java/com/chargebee/v4/models/feature/Feature.javasrc/main/java/com/chargebee/v4/models/feature/params/FeatureListParams.javasrc/main/java/com/chargebee/v4/models/gift/params/GiftCreateForItemsParams.javasrc/main/java/com/chargebee/v4/models/gift/params/GiftCreateParams.javasrc/main/java/com/chargebee/v4/models/grantBlock/GrantBlock.javasrc/main/java/com/chargebee/v4/models/invoice/Invoice.javasrc/main/java/com/chargebee/v4/models/invoice/params/ImportInvoiceParams.javasrc/main/java/com/chargebee/v4/models/invoice/params/InvoiceCreateForChargeItemsAndChargesParams.javasrc/main/java/com/chargebee/v4/models/invoice/params/InvoiceCreateParams.javasrc/main/java/com/chargebee/v4/models/invoiceEstimate/InvoiceEstimate.javasrc/main/java/com/chargebee/v4/models/ledgerOperation/LedgerOperation.javasrc/main/java/com/chargebee/v4/models/ledgerOperation/params/ListLedgerOperationsParams.javasrc/main/java/com/chargebee/v4/models/meter/Meter.javasrc/main/java/com/chargebee/v4/models/meter/params/MeterListParams.javasrc/main/java/com/chargebee/v4/models/meter/responses/MeterListResponse.javasrc/main/java/com/chargebee/v4/models/meteredFeature/MeteredFeature.javasrc/main/java/com/chargebee/v4/models/meteredFeature/params/MeteredFeatureArchiveParams.javasrc/main/java/com/chargebee/v4/models/meteredFeature/params/MeteredFeatureCreateParams.javasrc/main/java/com/chargebee/v4/models/meteredFeature/params/MeteredFeatureDeleteParams.javasrc/main/java/com/chargebee/v4/models/meteredFeature/params/MeteredFeatureReactivateParams.javasrc/main/java/com/chargebee/v4/models/meteredFeature/responses/MeteredFeatureArchiveResponse.javasrc/main/java/com/chargebee/v4/models/meteredFeature/responses/MeteredFeatureCreateResponse.javasrc/main/java/com/chargebee/v4/models/meteredFeature/responses/MeteredFeatureDeleteResponse.javasrc/main/java/com/chargebee/v4/models/meteredFeature/responses/MeteredFeatureReactivateResponse.javasrc/main/java/com/chargebee/v4/models/paymentIntent/PaymentIntent.javasrc/main/java/com/chargebee/v4/models/paymentIntent/params/PaymentIntentCreateParams.javasrc/main/java/com/chargebee/v4/models/paymentIntent/params/PaymentIntentUpdateParams.javasrc/main/java/com/chargebee/v4/models/paymentSource/PaymentSource.javasrc/main/java/com/chargebee/v4/models/paymentSource/params/PaymentSourceCreateUsingPaymentIntentParams.javasrc/main/java/com/chargebee/v4/models/paymentSource/params/PaymentSourceCreateUsingPermanentTokenParams.javasrc/main/java/com/chargebee/v4/models/paymentSource/params/PaymentSourceCreateUsingTempTokenParams.javasrc/main/java/com/chargebee/v4/models/paymentSource/params/PaymentSourceListParams.javasrc/main/java/com/chargebee/v4/models/promotionalGrant/PromotionalGrant.javasrc/main/java/com/chargebee/v4/models/purchase/params/PurchaseCreateParams.javasrc/main/java/com/chargebee/v4/models/quote/Quote.javasrc/main/java/com/chargebee/v4/models/quoteLineGroup/QuoteLineGroup.javasrc/main/java/com/chargebee/v4/models/quotedCharge/QuotedCharge.javasrc/main/java/com/chargebee/v4/models/ramp/Ramp.javasrc/main/java/com/chargebee/v4/models/ramp/params/RampCreateForSubscriptionParams.javasrc/main/java/com/chargebee/v4/models/ramp/params/RampListParams.javasrc/main/java/com/chargebee/v4/models/ramp/params/RampUpdateParams.javasrc/main/java/com/chargebee/v4/models/recordedPurchase/params/RecordedPurchaseCreateParams.javasrc/main/java/com/chargebee/v4/models/subscription/params/ImportSubscriptionParams.javasrc/main/java/com/chargebee/v4/models/subscription/params/SubscriptionCreateForCustomerParams.javasrc/main/java/com/chargebee/v4/models/subscription/params/SubscriptionCreateParams.javasrc/main/java/com/chargebee/v4/models/subscription/params/SubscriptionCreateWithItemsParams.javasrc/main/java/com/chargebee/v4/models/subscription/params/SubscriptionListParams.javasrc/main/java/com/chargebee/v4/models/subscription/params/SubscriptionReactivateParams.javasrc/main/java/com/chargebee/v4/models/subscription/params/SubscriptionResumeParams.javasrc/main/java/com/chargebee/v4/models/subscription/params/SubscriptionUpdateForItemsParams.javasrc/main/java/com/chargebee/v4/models/subscription/params/SubscriptionUpdateParams.javasrc/main/java/com/chargebee/v4/models/thirdPartyPaymentMethod/ThirdPartyPaymentMethod.javasrc/main/java/com/chargebee/v4/models/token/Token.javasrc/main/java/com/chargebee/v4/models/transaction/Transaction.javasrc/main/java/com/chargebee/v4/models/transaction/params/TransactionListParams.javasrc/main/java/com/chargebee/v4/services/MeterService.javasrc/main/java/com/chargebee/v4/services/MeteredFeatureService.javasrc/main/java/com/chargebee/v4/telemetry/TelemetryAttributeKeys.java
| public java.util.Map<String, Object> getMetadata() { | ||
| return metadata; | ||
| } |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Preserve the public getMetadata() contract.
Changing its return type breaks existing consumers at compile time and already-compiled consumers with NoSuchMethodError. Keep a compatible accessor and add a map-specific API, or release this as a major-version breaking change.
src/main/java/com/chargebee/v4/models/grantBlock/GrantBlock.java#L103-L105: retain theString-returning contract or move the map to a new accessor.src/main/java/com/chargebee/v4/models/promotionalGrant/PromotionalGrant.java#L38-L40: apply the same compatibility strategy.
📍 Affects 2 files
src/main/java/com/chargebee/v4/models/grantBlock/GrantBlock.java#L103-L105(this comment)src/main/java/com/chargebee/v4/models/promotionalGrant/PromotionalGrant.java#L38-L40
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/main/java/com/chargebee/v4/models/grantBlock/GrantBlock.java` around
lines 103 - 105, Preserve the existing String-returning getMetadata() contract
in GrantBlock.java lines 103-105 and PromotionalGrant.java lines 38-40; expose
the map through a new accessor instead of changing the existing method
signature, or otherwise treat the change as a major-version break.
| if (this.dataType != null) { | ||
|
|
||
| formData.put("data_type", this.dataType); | ||
| } |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Inspect how form-data enum values are serialized before HTTP send.
rg -nP --type=java -C3 '(getValue\(\)|instanceof\s+Enum|\.name\(\)|toFormData)' src/main/java/com/chargebee/v4/internal src/main/java/com/chargebee/v4/transport src/main/java/com/chargebee/v4/services/BaseService.java 2>/dev/null
# Compare with a sibling params class that serializes an enum into form data.
rg -nP --type=java -C2 'formData\.put\([^)]*this\.\w+\.getValue\(\)' src/main/java/com/chargebee/v4/models | head -40Repository: chargebee/chargebee-java
Length of output: 14906
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Inspect the form serializer implementation.
ast-grep outline src/main/java/com/chargebee/v4/transport/FormRequestBody.java --view expanded
# Inspect the specific params class and the DataType enum.
ast-grep outline src/main/java/com/chargebee/v4/models/meteredFeature/params/MeteredFeatureCreateParams.java --view expanded
# Print the relevant sections with line numbers.
sed -n '1,220p' src/main/java/com/chargebee/v4/transport/FormRequestBody.java | cat -n
printf '\n----\n'
sed -n '1,260p' src/main/java/com/chargebee/v4/models/meteredFeature/params/MeteredFeatureCreateParams.java | cat -nRepository: chargebee/chargebee-java
Length of output: 14963
Serialize data_type with the enum wire value
FormRequestBody encodes scalars via value.toString(), so formData.put("data_type", this.dataType) sends NUMBER/STRING instead of number/string. Use this.dataType.getValue() here or create requests for column definitions will fail.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@src/main/java/com/chargebee/v4/models/meteredFeature/params/MeteredFeatureCreateParams.java`
around lines 182 - 185, Update the dataType serialization in
MeteredFeatureCreateParams so the data_type form field uses the enum’s wire
value via getValue() rather than the enum object’s toString() output. Preserve
the existing null check and form field key.
v4.13.0 (2026-07-21)
New Resources:
AsyncResponsehas been added.AsyncResponseListhas been added.ColumnDefinitionhas been added.Meterhas been added.MeteredFeaturehas been added.New Attributes:
currency_codehas been added toAlert.thresholdhas been added toAlert.filter_conditionshas been added toAlert.exchange_rateshas been added toCreditNote.meteredhas been added toFeature.exchange_rateshas been added toInvoice.payment_intent_metadatahas been added toPaymentIntent.New Parameters:
meteredhas been added as query parameter tolist_featuresinFeature.decommissionedhas been added as query parameter tolist_subscriptionsinSubscription.currency_codehas been added as request body parameter tocreate_an_alertinAlert.line_items.proration_modehas been added as request body parameter toimport_credit_noteinCreditNote.item_prices.descriptionhas been added as request body parameter tocreate_invoice_for_items_estimateinEstimate.item_prices.entity_descriptionhas been added as request body parameter tocreate_invoice_for_items_estimateinEstimate.charges.entity_descriptionhas been added as request body parameter tocreate_invoice_for_items_estimateinEstimate.subscription.decommissionedhas been added as request body parameter toexport_subscriptionsinExport.item_prices.descriptionhas been added as request body parameter tocreate_invoice_for_items_and_one-time_chargesinInvoice.item_prices.entity_descriptionhas been added as request body parameter tocreate_invoice_for_items_and_one-time_chargesinInvoice.charges.entity_descriptionhas been added as request body parameter tocreate_invoice_for_items_and_one-time_chargesinInvoice.create_pending_invoicehas been added as request body parameter tocreate_invoice_for_items_and_one-time_chargesinInvoice.line_items.proration_modehas been added as request body parameter toimport_invoiceinInvoice.paid_athas been added as request body parameter toimport_invoiceinInvoice.discounts_to_add.quantityhas been added as request body parameter tocreate_a_rampinRamp.discounts_to_add.quantityhas been added as request body parameter toupdate_a_subscription_rampinRamp.customer.emailhas been added as request body parameter torecord_a_purchaseinRecordedPurchase.customer.first_namehas been added as request body parameter torecord_a_purchaseinRecordedPurchase.customer.last_namehas been added as request body parameter torecord_a_purchaseinRecordedPurchase.Parameter Updates:
metered_feature_idhas been changed from required to optional increate_an_alertofAlert.New Events:
payment_source_business_entity_changedhas been added.Deleted Attributes:
start_balancehas been removed fromLedgerOperation.end_balancehas been removed fromLedgerOperation.New Enums:
real_time_paymentshas been added as a new value enumDunningType.payment_source_business_entity_changedhas been added as a new value enumEventType.paynow,bizum, andpromptpayhave been added as new values enumPaymentMethod.paynow,bizum, andpromptpayhave been added as new values enumPaymentMethodType.active,archived, anddeletedhave been added as new values enumStatus.zero_rated,region_non_taxable,product_exempt,high_value_physical_goods,zero_value_item, andtax_not_configured_external_providerhave been added as new values enumTaxOverrideReason.paynow,bizum,promptpay,simple,compound, andspend_exceededhave been added as new values enumType.successandfailedhave been added as new values to enum attributestatusinAsyncResponse.numberandstringhave been added as new values to enum attributedata_typeinColumnDefinition.simpleandcompoundhave been added as new values to enum attributetypeinMeter.active,archived, anddeletedhave been added as new values to enum attributestatusinMeter.paynow,bizum, andpromptpayhave been added as new values to enum attributepayment_method_typeinPaymentIntent.paynow,bizum, andpromptpayhave been added as new values to enum attributeactive_payment_attempt.payment_method_typeinPaymentIntent.cb_js,components_fields,checkout_v3,paynow_v3,portal_v3,gift_v3,checkout_v4,payment_component,pc_inapp_v4, andpc_fpc_v4have been added as new values to enum attributepayment_intent_metadata.sourceinPaymentIntent.adjusted_term,service_period_revision,delta, andresethave been added as new values to enum request body parameterline_items.proration_modeinimport_credit_noteofCreditNote.trueandfalsehave been added as new values to enum query parametermetered.isinlist_featuresofFeature.adjusted_term,service_period_revision,delta, andresethave been added as new values to enum request body parameterline_items.proration_modeinimport_invoiceofInvoice.updated_at,name,created_at, andidhave been added as new values to enum query parametersort_by.ascinlist_all_available_metersofMeter.updated_at,name,created_at, andidhave been added as new values to enum query parametersort_by.descinlist_all_available_metersofMeter.numberandstringhave been added as new values to enum request body parametercolumn_definitions.data_typeincreate_a_metered_featureofMeteredFeature.paynow,bizum, andpromptpayhave been added as new values to enum request body parameterpayment_method_typeinupdate_a_payment_intentofPaymentIntent.paynow,bizum, andpromptpayhave been added as new values to enum request body parameterpayment_method_typeincreate_a_payment_intentofPaymentIntent.trueandfalsehave been added as new values to enum query parameterdecommissioned.isinlist_subscriptionsofSubscription.Released v4.13.0 with Meter and MeteredFeature APIs, AsyncResponse models, expanded attributes and request parameters, new webhook events, payment method and status enums, metadata type updates, proration support, and LedgerOperation attribute removals. Added metering services, builders, responses, filters, and updated versioning documentation.