diff --git a/CHANGELOG.md b/CHANGELOG.md index cb3d742..ecc6de5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,43 @@ +### v3.14.0 (2025-11-26) +* * * + +### New Resources: +* Einvoice has been added. +* QuotedDeltaRamp has been added. + +### New Attributes: +* line_items_next_offset has been added to CreditNote. +* line_items_next_offset has been added to Invoice. +* credit_lines has been added to SalesOrder. +* billable_unit_price has been added to SalesOrder#LineItem. +* billable_quantity has been added to SalesOrder#LineItem. +* billable_amount has been added to SalesOrder#LineItem. + +### New Endpoint: +* move has been added to ItemPrice. + +### New Parameters: +* line_items_limit has been added to CreditNote#RetrieveRequest. +* line_items_offset has been added to CreditNote#RetrieveRequest. +* line_items_limit has been added to Invoice#RetrieveRequest. +* line_items_offset has been added to Invoice#RetrieveRequest. +* item_tiers has been added to Estimate#GiftSubscriptionForItemsRequest. +* unit_price has been added to Estimate#SubscriptionItems#GiftSubscriptionForItemsRequest. +* unit_price_in_decimal has been added to Estimate#SubscriptionItems#GiftSubscriptionForItemsRequest. +* item_tiers has been added to Gift#CreateForItemsRequest. +* meta_data has been added to Gift#CreateForItemsRequest. +* unit_price has been added to Gift#SubscriptionItems#CreateForItemsRequest. +* unit_price_in_decimal has been added to Gift#SubscriptionItems#CreateForItemsRequest. +* item_tiers has been added to HostedPage#CheckoutGiftForItemsRequest. +* unit_price has been added to HostedPage#SubscriptionItems#CheckoutGiftForItemsRequest. +* unit_price_in_decimal has been added to HostedPage#SubscriptionItems#CheckoutGiftForItemsRequest. +* auto_select_local_currency has been added to PricingPageSession#CreateForNewSubscriptionRequest. + +### New Enums: +* EZIDEBIT has been added to GatewayEnum. +* BUSINESS_RULE has been added to EntityTypeEnum. +* RULESET has been added to EntityTypeEnum. + ### v3.13.0 (2025-10-28) * * * diff --git a/chargebee/main.py b/chargebee/main.py index 66109a2..a2734f7 100644 --- a/chargebee/main.py +++ b/chargebee/main.py @@ -61,6 +61,7 @@ def __init__( self.DifferentialPrice = chargebee.DifferentialPrice(self.env) self.Discount = chargebee.Discount(self.env) self.Download = chargebee.Download(self.env) + self.Einvoice = chargebee.Einvoice(self.env) self.Entitlement = chargebee.Entitlement(self.env) self.EntitlementOverride = chargebee.EntitlementOverride(self.env) self.Estimate = chargebee.Estimate(self.env) @@ -118,6 +119,7 @@ def __init__( self.Quote = chargebee.Quote(self.env) self.QuoteLineGroup = chargebee.QuoteLineGroup(self.env) self.QuotedCharge = chargebee.QuotedCharge(self.env) + self.QuotedDeltaRamp = chargebee.QuotedDeltaRamp(self.env) self.QuotedRamp = chargebee.QuotedRamp(self.env) self.QuotedSubscription = chargebee.QuotedSubscription(self.env) self.Ramp = chargebee.Ramp(self.env) diff --git a/chargebee/models/__init__.py b/chargebee/models/__init__.py index 6756891..8f2cfab 100644 --- a/chargebee/models/__init__.py +++ b/chargebee/models/__init__.py @@ -136,6 +136,8 @@ from chargebee.models.download.operations import Download +from chargebee.models.einvoice.operations import Einvoice + from chargebee.models.entitlement.operations import Entitlement from chargebee.models.entitlement_override.operations import EntitlementOverride @@ -246,6 +248,8 @@ from chargebee.models.quoted_charge.operations import QuotedCharge +from chargebee.models.quoted_delta_ramp.operations import QuotedDeltaRamp + from chargebee.models.quoted_ramp.operations import QuotedRamp from chargebee.models.quoted_subscription.operations import QuotedSubscription diff --git a/chargebee/models/credit_note/operations.py b/chargebee/models/credit_note/operations.py index c135c7b..2522fbc 100644 --- a/chargebee/models/credit_note/operations.py +++ b/chargebee/models/credit_note/operations.py @@ -386,6 +386,8 @@ class CreateParams(TypedDict): class RetrieveParams(TypedDict): line_item: NotRequired["CreditNote.RetrieveLineItemParams"] + line_items_limit: NotRequired[int] + line_items_offset: NotRequired[str] class PdfParams(TypedDict): disposition_type: NotRequired[enums.DispositionType] diff --git a/chargebee/models/credit_note/responses.py b/chargebee/models/credit_note/responses.py index 03f3844..cd36417 100644 --- a/chargebee/models/credit_note/responses.py +++ b/chargebee/models/credit_note/responses.py @@ -2,7 +2,7 @@ from chargebee.model import Model from typing import Dict, List, Any from chargebee.response import Response -from chargebee.models import invoice, transaction, transaction, invoice, download +from chargebee.models import invoice, transaction, transaction, download, invoice @dataclass @@ -229,6 +229,7 @@ class CreditNoteResponse(Model): resource_version: int = None updated_at: int = None channel: str = None + line_items_next_offset: str = None sub_total: int = None sub_total_in_local_currency: int = None total_in_local_currency: int = None diff --git a/chargebee/models/einvoice/__init__.py b/chargebee/models/einvoice/__init__.py new file mode 100644 index 0000000..d22147c --- /dev/null +++ b/chargebee/models/einvoice/__init__.py @@ -0,0 +1,2 @@ +from .operations import Einvoice +from .responses import EinvoiceResponse diff --git a/chargebee/models/einvoice/operations.py b/chargebee/models/einvoice/operations.py new file mode 100644 index 0000000..6500566 --- /dev/null +++ b/chargebee/models/einvoice/operations.py @@ -0,0 +1,22 @@ +from .responses import * +from chargebee import request, environment +from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast +from enum import Enum + + +@dataclass +class Einvoice: + env: environment.Environment + + class Status(Enum): + SCHEDULED = "scheduled" + SKIPPED = "skipped" + IN_PROGRESS = "in_progress" + SUCCESS = "success" + FAILED = "failed" + REGISTERED = "registered" + + def __str__(self): + return self.value + + pass diff --git a/chargebee/models/einvoice/responses.py b/chargebee/models/einvoice/responses.py new file mode 100644 index 0000000..ceb34a1 --- /dev/null +++ b/chargebee/models/einvoice/responses.py @@ -0,0 +1,12 @@ +from dataclasses import dataclass +from chargebee.model import Model +from typing import Dict, List, Any + + +@dataclass +class EinvoiceResponse(Model): + raw_data: Dict[Any, Any] = None + id: str = None + reference_number: str = None + status: str = None + message: str = None diff --git a/chargebee/models/enums.py b/chargebee/models/enums.py index d87413e..692c802 100644 --- a/chargebee/models/enums.py +++ b/chargebee/models/enums.py @@ -390,6 +390,8 @@ class EntityType(Enum): OMNICHANNEL_ONE_TIME_ORDER = "omnichannel_one_time_order" OMNICHANNEL_ONE_TIME_ORDER_ITEM = "omnichannel_one_time_order_item" USAGE_FILE = "usage_file" + BUSINESS_RULE = "business_rule" + RULESET = "ruleset" def __str__(self): return self.value @@ -743,6 +745,7 @@ class Gateway(Enum): PAYSTACK = "paystack" JP_MORGAN = "jp_morgan" DEUTSCHE_BANK = "deutsche_bank" + EZIDEBIT = "ezidebit" GOCARDLESS = "gocardless" NOT_APPLICABLE = "not_applicable" diff --git a/chargebee/models/estimate/operations.py b/chargebee/models/estimate/operations.py index c348494..a6ca7cb 100644 --- a/chargebee/models/estimate/operations.py +++ b/chargebee/models/estimate/operations.py @@ -607,6 +607,17 @@ class GiftSubscriptionForItemsSubscriptionItemParams(TypedDict): item_price_id: NotRequired[str] quantity: NotRequired[int] quantity_in_decimal: NotRequired[str] + unit_price: NotRequired[int] + unit_price_in_decimal: NotRequired[str] + + class GiftSubscriptionForItemsItemTierParams(TypedDict): + item_price_id: NotRequired[str] + starting_unit: NotRequired[int] + ending_unit: NotRequired[int] + price: NotRequired[int] + starting_unit_in_decimal: NotRequired[str] + ending_unit_in_decimal: NotRequired[str] + price_in_decimal: NotRequired[str] class CreateInvoiceInvoiceParams(TypedDict): customer_id: NotRequired[str] @@ -1017,6 +1028,7 @@ class GiftSubscriptionForItemsParams(TypedDict): subscription_items: NotRequired[ List["Estimate.GiftSubscriptionForItemsSubscriptionItemParams"] ] + item_tiers: NotRequired[List["Estimate.GiftSubscriptionForItemsItemTierParams"]] class CreateInvoiceParams(TypedDict): invoice: NotRequired["Estimate.CreateInvoiceInvoiceParams"] diff --git a/chargebee/models/gift/operations.py b/chargebee/models/gift/operations.py index 36721f8..76ded5b 100644 --- a/chargebee/models/gift/operations.py +++ b/chargebee/models/gift/operations.py @@ -129,6 +129,17 @@ class CreateForItemsSubscriptionItemParams(TypedDict): item_price_id: NotRequired[str] quantity: NotRequired[int] quantity_in_decimal: NotRequired[str] + unit_price: NotRequired[int] + unit_price_in_decimal: NotRequired[str] + + class CreateForItemsItemTierParams(TypedDict): + item_price_id: NotRequired[str] + starting_unit: NotRequired[int] + ending_unit: NotRequired[int] + price: NotRequired[int] + starting_unit_in_decimal: NotRequired[str] + ending_unit_in_decimal: NotRequired[str] + price_in_decimal: NotRequired[str] class ListGiftReceiverParams(TypedDict): email: NotRequired[Filters.StringFilter] @@ -163,6 +174,8 @@ class CreateForItemsParams(TypedDict): subscription_items: NotRequired[ List["Gift.CreateForItemsSubscriptionItemParams"] ] + meta_data: NotRequired[Dict[Any, Any]] + item_tiers: NotRequired[List["Gift.CreateForItemsItemTierParams"]] class ListParams(TypedDict): limit: NotRequired[int] @@ -199,6 +212,7 @@ def create_for_items( self, params: CreateForItemsParams, headers=None ) -> CreateForItemsResponse: jsonKeys = { + "meta_data": 0, "additional_information": 1, } options = { diff --git a/chargebee/models/hosted_page/operations.py b/chargebee/models/hosted_page/operations.py index d3a6fad..6506614 100644 --- a/chargebee/models/hosted_page/operations.py +++ b/chargebee/models/hosted_page/operations.py @@ -602,6 +602,17 @@ class CheckoutGiftForItemsSubscriptionItemParams(TypedDict): item_price_id: NotRequired[str] quantity: NotRequired[int] quantity_in_decimal: NotRequired[str] + unit_price: NotRequired[int] + unit_price_in_decimal: NotRequired[str] + + class CheckoutGiftForItemsItemTierParams(TypedDict): + item_price_id: NotRequired[str] + starting_unit: NotRequired[int] + ending_unit: NotRequired[int] + price: NotRequired[int] + starting_unit_in_decimal: NotRequired[str] + ending_unit_in_decimal: NotRequired[str] + price_in_decimal: NotRequired[str] class ClaimGiftGiftParams(TypedDict): id: Required[str] @@ -837,6 +848,7 @@ class CheckoutGiftForItemsParams(TypedDict): subscription_items: NotRequired[ List["HostedPage.CheckoutGiftForItemsSubscriptionItemParams"] ] + item_tiers: NotRequired[List["HostedPage.CheckoutGiftForItemsItemTierParams"]] coupon_ids: NotRequired[List[str]] class ClaimGiftParams(TypedDict): diff --git a/chargebee/models/invoice/operations.py b/chargebee/models/invoice/operations.py index 62423bc..6dd7b8c 100644 --- a/chargebee/models/invoice/operations.py +++ b/chargebee/models/invoice/operations.py @@ -1104,6 +1104,8 @@ class InvoicesForSubscriptionParams(TypedDict): class RetrieveParams(TypedDict): line_item: NotRequired["Invoice.RetrieveLineItemParams"] + line_items_limit: NotRequired[int] + line_items_offset: NotRequired[str] class PdfParams(TypedDict): disposition_type: NotRequired[enums.DispositionType] diff --git a/chargebee/models/invoice/responses.py b/chargebee/models/invoice/responses.py index b196a1a..83f4af7 100644 --- a/chargebee/models/invoice/responses.py +++ b/chargebee/models/invoice/responses.py @@ -335,6 +335,7 @@ class InvoiceResponse(Model): voided_at: int = None resource_version: int = None updated_at: int = None + line_items_next_offset: str = None first_invoice: bool = None new_sales_amount: int = None has_advance_charges: bool = None diff --git a/chargebee/models/item_price/operations.py b/chargebee/models/item_price/operations.py index 9733854..3e7437c 100644 --- a/chargebee/models/item_price/operations.py +++ b/chargebee/models/item_price/operations.py @@ -258,6 +258,9 @@ class FindApplicableItemPricesParams(TypedDict): item_id: NotRequired[str] sort_by: NotRequired[Filters.SortFilter] + class MoveItemPriceParams(TypedDict): + destination_item_id: Required[str] + def create(self, params: CreateParams, headers=None) -> CreateResponse: jsonKeys = { "metadata": 0, @@ -383,3 +386,23 @@ def find_applicable_item_prices( jsonKeys, options, ) + + def move_item_price( + self, id, params: MoveItemPriceParams, headers=None + ) -> MoveItemPriceResponse: + jsonKeys = {} + options = { + "isIdempotent": True, + } + return request.send( + "post", + request.uri_path("item_prices", id, "move"), + self.env, + cast(Dict[Any, Any], params), + headers, + MoveItemPriceResponse, + None, + False, + jsonKeys, + options, + ) diff --git a/chargebee/models/item_price/responses.py b/chargebee/models/item_price/responses.py index 790b717..9b2502f 100644 --- a/chargebee/models/item_price/responses.py +++ b/chargebee/models/item_price/responses.py @@ -151,3 +151,9 @@ class FindApplicableItemPricesItemPriceResponse: class FindApplicableItemPricesResponse(Response): list: List[FindApplicableItemPricesItemPriceResponse] next_offset: str = None + + +@dataclass +class MoveItemPriceResponse(Response): + is_idempotency_replayed: bool + item_price: ItemPriceResponse diff --git a/chargebee/models/pricing_page_session/operations.py b/chargebee/models/pricing_page_session/operations.py index d17d96f..68173a6 100644 --- a/chargebee/models/pricing_page_session/operations.py +++ b/chargebee/models/pricing_page_session/operations.py @@ -94,6 +94,7 @@ class CreateForNewSubscriptionParams(TypedDict): "PricingPageSession.CreateForNewSubscriptionSubscriptionParams" ] business_entity_id: NotRequired[str] + auto_select_local_currency: NotRequired[bool] customer: NotRequired[ "PricingPageSession.CreateForNewSubscriptionCustomerParams" ] diff --git a/chargebee/models/quoted_delta_ramp/__init__.py b/chargebee/models/quoted_delta_ramp/__init__.py new file mode 100644 index 0000000..2bc8764 --- /dev/null +++ b/chargebee/models/quoted_delta_ramp/__init__.py @@ -0,0 +1,2 @@ +from .operations import QuotedDeltaRamp +from .responses import QuotedDeltaRampResponse diff --git a/chargebee/models/quoted_delta_ramp/operations.py b/chargebee/models/quoted_delta_ramp/operations.py new file mode 100644 index 0000000..df203e1 --- /dev/null +++ b/chargebee/models/quoted_delta_ramp/operations.py @@ -0,0 +1,13 @@ +from .responses import * +from chargebee import request, environment +from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast + + +@dataclass +class QuotedDeltaRamp: + env: environment.Environment + + class LineItem(TypedDict): + item_level_discount_per_billing_cycle_in_decimal: NotRequired[str] + + pass diff --git a/chargebee/models/quoted_delta_ramp/responses.py b/chargebee/models/quoted_delta_ramp/responses.py new file mode 100644 index 0000000..35183f5 --- /dev/null +++ b/chargebee/models/quoted_delta_ramp/responses.py @@ -0,0 +1,15 @@ +from dataclasses import dataclass +from chargebee.model import Model +from typing import Dict, List, Any + + +@dataclass +class LineItemResponse(Model): + raw_data: Dict[Any, Any] = None + item_level_discount_per_billing_cycle_in_decimal: str = None + + +@dataclass +class QuotedDeltaRampResponse(Model): + raw_data: Dict[Any, Any] = None + line_items: List[LineItemResponse] = None diff --git a/chargebee/version.py b/chargebee/version.py index 2edc062..faf1da0 100644 --- a/chargebee/version.py +++ b/chargebee/version.py @@ -1 +1 @@ -VERSION = "3.13.0" +VERSION = "3.14.0"