# Python client library 3.9.0 changelog

## __init__

* Added new model `ActionType`.
* Added new model `AssociationRule`.
* Added new models related to commitments: `CommitmentBaseAttributes`, `CommitmentCycleAttributes`, `CommitmentInput`, `CommitmentOutput`, `CommitmentOutputSegmentsInner`, `CommitmentSegmentAttributes`, `CommitmentSegmentBaseAttributes`, `CommitmentSegmentInput`, `CommitmentTypeEnum`.
* Added new models `CommonRevenueAttributes` and `CommonTaxationAttributes`.
* Added new model `CyclePeriodTypeEnum`.
* Added new model `ExpandedCommitmentCycle`.
* Added new model `ProrationOptionEnum`.
* Added new model `QueryCommitmentCyclesResponse`.
* Added new models related to upsert operations: `UpsertCommitmentInput`, `UpsertCommitmentSegmentInput`, `UpsertCreateCommitmentInput`, `UpsertCreateCommitmentInputAllOfSegments`, `UpsertCreateCommitmentSegmentInput`, `UpsertUpdateCommitmentInput`, `UpsertUpdateCommitmentSegmentInput`.


## invoices_api

* Added pagination support with `page_size` and `page` parameters to control the number of records returned per page and the index of the page to retrieve.


## object_queries_api

* Resource path for commitment segment queries has been changed from `/object-query/commitmentSegment` to `/object-query/commitment-segment`.
* Added new method `query_commitment_cycle_by_key` to query CommitmentCycle by key with filters, expands, and sort capabilities.
* Added new method `query_commitment_cycles` to query CommitmentCycles with filters, expands, and sort capabilities.


## models/__init__

* Added new model `ActionType`.
* Added new model `AssociationRule`.
* Added new models related to commitments: `CommitmentBaseAttributes`, `CommitmentCycleAttributes`, `CommitmentInput`, `CommitmentOutput`, `CommitmentOutputSegmentsInner`, `CommitmentSegmentAttributes`, `CommitmentSegmentBaseAttributes`, `CommitmentSegmentInput`, `CommitmentTypeEnum`.
* Added new models `CommonRevenueAttributes` and `CommonTaxationAttributes`.
* Added new model `CyclePeriodTypeEnum`.
* Added new model `ExpandedCommitmentCycle`.
* Added new model `ProrationOptionEnum`.
* Added new model `QueryCommitmentCyclesResponse`.
* Added new models related to upsert operations: `UpsertCommitmentInput`, `UpsertCommitmentSegmentInput`, `UpsertCreateCommitmentInput`, `UpsertCreateCommitmentInputAllOfSegments`, `UpsertCreateCommitmentSegmentInput`, `UpsertUpdateCommitmentInput`, `UpsertUpdateCommitmentSegmentInput`.


## accounting_code_type

* Added new accounting code types: UNBILLEDRECEIVABLES, CONTRACTASSETS, CONTRACTLIABILITIES, ADJUSTMENTLIABILITIES, and ADJUSTMENTREVENUE.


## charge_override

* Added `pricingAttributes` field to support dynamic pricing with the DynamicPricing permission.
* Introduced `negotiatedPriceTable` field to handle negotiated price table information with the NegotiatedPriceTable permission.


## charge_update

* Added `is_dimensional_price` field to indicate if the charge uses dimensional pricing.
* Introduced `pricing_attributes` field for dynamic pricing attributes.
* Added `negotiated_price_table` field for negotiated price table information.


## collect_debit_memo_request_payment

* Added a new optional field `cryptogram` to the CollectDebitMemoRequestPayment model, which allows specifying a cryptogram value supplied by the token provider.


## create_authorization_request

* Added `cryptogram` field to CreateAuthorizationRequest model with a maximum length of 50 characters.


## create_credit_card_payment_method

* Added a new optional field `cryptogram` to the CreateCreditCardPaymentMethod model, which allows for the inclusion of a cryptogram value supplied by the token provider if a DPAN or network scheme token is present.


## create_order_charge_update

* Added `pricingAttributes` field to support dynamic pricing with the DynamicPricing permission.
* Introduced `negotiatedPriceTable` field to handle negotiated price table information with the NegotiatedPriceTable permission.


## create_order_request

* Added `commitments` field to CreateOrderRequest, allowing developers to include a list of commitments to create or update.


## create_order_response

* Added a new field `commitments` to the CreateOrderResponse model, which includes a list of CommitmentOutput objects. This allows developers to access commitments created by an order request.


## create_order_result

* Added a new optional field `commitments` of type List[CommitmentOutput] to the CreateOrderResult model.


## create_payment_request

* Added a new optional field `cryptogram` to the CreatePaymentRequest model for handling cryptogram values supplied by the token provider.


## expanded_daily_consumption_summary

* Added new fields `adjustmentRevenueGLString` and `recognizedRevenueGLString` to the ExpandedDailyConsumptionSummary model.


## expanded_rate_plan

* Added a new optional field `pricingAttributes` to the ExpandedRatePlan model.


## expanded_rate_plan_charge

* Added `pricingAttributes` as an optional field in the ExpandedRatePlanCharge model.
* Added `negotiatedPriceTable` as an optional field in the ExpandedRatePlanCharge model.


## get_async_create_order_job_response

* Added a new optional field `commitments` of type List[CommitmentOutput] to the GetAsyncCreateOrderJobResponse model.


## get_charge_override

* Added `is_dimensional_price` field to indicate if the charge uses dimensional pricing.
* Introduced `pricing_attributes` field for dynamic pricing attributes, requiring DynamicPricing permission.
* Added `negotiated_price_table` field for negotiated price table information, requiring NegotiatedPriceTable permission.


## get_invoice_application_part_request

* The `created_date` and `updated_date` fields have changed from `datetime` to `StrictStr`. This may require developers to update their code to handle these fields as strings instead of datetime objects.


## order

* Added a new field `commitments` to the Order model, which is a list of UpsertCommitmentInput objects. This allows developers to include commitments in their order processing.


## rate_plan_charge_segment

* Added `pricingAttributes` field for dynamic pricing, available when DynamicPricing permission is enabled.
* Added `isDimensionalPrice` field to indicate dimensional pricing, available when DynamicPricing permission is enabled.
* Added `isPriceNegotiated` field to indicate negotiated pricing, available when NegotiatedPriceTable permission is enabled.


## rate_plan_charge_segment_info

* Added `pricingAttributes` field for dynamic pricing, available with DynamicPricing permission.
* Added `isDimensionalPrice` field to indicate dimensional pricing, available with DynamicPricing permission.
* Added `isPriceNegotiated` field to indicate negotiated pricing, available with NegotiatedPriceTable permission.


## update_order_request

* Added `commitments` field to the UpdateOrderRequest model, allowing developers to include a list of UpsertCommitmentInput objects in their order updates.


## usage_tiered_with_overage_pricing_override

* Added `originalListPrice` field to the UsageTieredWithOveragePricingOverride model, allowing developers to access the original list price of a product or service.


## usage_tiered_with_overage_pricing_update

* Added `originalListPrice` field to the UsageTieredWithOveragePricingUpdate model, allowing developers to access or set the original list price of a product or service.


## verify_payment_method_request

* Added a new optional field `cryptogram` to the VerifyPaymentMethodRequest model, which allows developers to include a cryptogram value supplied by the token provider.


## zuora_client

* Added automatic token refresh functionality with a background thread.
* Introduced retry logic with exponential backoff for authentication failures.
* Added methods to configure and retrieve token refresh intervals and retry configurations.
* Provided manual token refresh capability.
* Implemented thread safety measures for token and configuration operations.