From 6a6aa17cb52535dcba439c801da5a0d6b40a5eaa Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 19:32:30 +0000 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20[=F0=9F=AA=BF]=20Remove=20`allow-su?= =?UTF-8?q?bscriptions-custom-billing-anchor`=20feature=20flag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .stats.yml | 4 +- src/metronome/types/shared/contract_v2.py | 86 +++++++++ .../shared/contract_without_amendments.py | 61 ++++++ src/metronome/types/shared/subscription.py | 29 +++ .../types/v1/contract_create_params.py | 93 ++++++++++ .../types/v1/contract_create_response.py | 61 ++++++ .../types/v1/package_create_params.py | 87 +++++++++ .../types/v1/package_list_response.py | 83 +++++++++ .../types/v1/package_retrieve_response.py | 83 +++++++++ .../types/v2/contract_edit_params.py | 173 ++++++++++++++++++ .../types/v2/contract_edit_response.py | 144 +++++++++++++++ .../v2/contract_get_edit_history_response.py | 144 +++++++++++++++ tests/api_resources/v1/test_contracts.py | 48 +++++ tests/api_resources/v1/test_packages.py | 42 +++++ tests/api_resources/v2/test_contracts.py | 88 +++++++++ 15 files changed, 1224 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index a0aad2266..68ebbfb63 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 115 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/metronome/metronome-f12f505faf40d5f25d74c0b5a417e2b36c7f3f9621a0e23acd3d6ec4c615443e.yml -openapi_spec_hash: 5c1f13896608a69feebd8855703b76df +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/metronome/metronome-1f38e029c0fe7cf3f0449b195155266eea4978ea30d53b9694298aa9ed736d14.yml +openapi_spec_hash: 217e30e22539ee11e1ab6a7e1e783f8b config_hash: 6bd82f310398d5d47bcfeb8d7ed150b3 diff --git a/src/metronome/types/shared/contract_v2.py b/src/metronome/types/shared/contract_v2.py index e117360d5..c76ecd615 100644 --- a/src/metronome/types/shared/contract_v2.py +++ b/src/metronome/types/shared/contract_v2.py @@ -76,11 +76,16 @@ "RecurringCommitProduct", "RecurringCommitContract", "RecurringCommitInvoiceAmount", + "RecurringCommitProrationRounding", + "RecurringCommitProrationRoundingAccess", + "RecurringCommitProrationRoundingInvoice", "RecurringCredit", "RecurringCreditAccessAmount", "RecurringCreditCommitDuration", "RecurringCreditProduct", "RecurringCreditContract", + "RecurringCreditProrationRounding", + "RecurringCreditProrationRoundingAccess", "ResellerRoyalty", "ResellerRoyaltySegment", "SpendTracker", @@ -92,9 +97,11 @@ "SubscriptionBillingPeriodsNext", "SubscriptionBillingPeriodsPrevious", "SubscriptionProration", + "SubscriptionProrationRounding", "SubscriptionQuantitySchedule", "SubscriptionSubscriptionRate", "SubscriptionSubscriptionRateProduct", + "SubscriptionBillingCycleConfig", "SubscriptionSeatConfig", ] @@ -877,6 +884,36 @@ class RecurringCommitInvoiceAmount(BaseModel): unit_price: float +class RecurringCommitProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class RecurringCommitProrationRoundingInvoice(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class RecurringCommitProrationRounding(BaseModel): + """Rounding configuration for prorated recurring commit amounts.""" + + access: Optional[RecurringCommitProrationRoundingAccess] = None + + invoice: Optional[RecurringCommitProrationRoundingInvoice] = None + + class RecurringCommit(BaseModel): id: str @@ -930,6 +967,9 @@ class RecurringCommit(BaseModel): last commits). """ + proration_rounding: Optional[RecurringCommitProrationRounding] = None + """Rounding configuration for prorated recurring commit amounts.""" + recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -985,6 +1025,23 @@ class RecurringCreditContract(BaseModel): id: str +class RecurringCreditProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class RecurringCreditProrationRounding(BaseModel): + """Rounding configuration for prorated recurring credit amounts.""" + + access: Optional[RecurringCreditProrationRoundingAccess] = None + + class RecurringCredit(BaseModel): id: str @@ -1035,6 +1092,9 @@ class RecurringCredit(BaseModel): last commits). """ + proration_rounding: Optional[RecurringCreditProrationRounding] = None + """Rounding configuration for prorated recurring credit amounts.""" + recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -1153,11 +1213,24 @@ class SubscriptionBillingPeriods(BaseModel): previous: Optional[SubscriptionBillingPeriodsPrevious] = None +class SubscriptionProrationRounding(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + class SubscriptionProration(BaseModel): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] is_prorated: bool + rounding: Optional[SubscriptionProrationRounding] = None + class SubscriptionQuantitySchedule(BaseModel): quantity: float @@ -1179,6 +1252,17 @@ class SubscriptionSubscriptionRate(BaseModel): product: SubscriptionSubscriptionRateProduct +class SubscriptionBillingCycleConfig(BaseModel): + anchor_date: datetime + """The date this subscription's billing cycle is anchored to.""" + + invoice_placement: Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"] + """ + Controls whether this subscription consolidates onto usage invoices or gets its + own scheduled invoice. + """ + + class SubscriptionSeatConfig(BaseModel): seat_group_key: str """ @@ -1224,6 +1308,8 @@ class Subscription(BaseModel): id: Optional[str] = None + billing_cycle_config: Optional[SubscriptionBillingCycleConfig] = None + custom_fields: Optional[Dict[str, str]] = None """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" diff --git a/src/metronome/types/shared/contract_without_amendments.py b/src/metronome/types/shared/contract_without_amendments.py index b16406ad3..751d7cab5 100644 --- a/src/metronome/types/shared/contract_without_amendments.py +++ b/src/metronome/types/shared/contract_without_amendments.py @@ -29,11 +29,16 @@ "RecurringCommitProduct", "RecurringCommitContract", "RecurringCommitInvoiceAmount", + "RecurringCommitProrationRounding", + "RecurringCommitProrationRoundingAccess", + "RecurringCommitProrationRoundingInvoice", "RecurringCredit", "RecurringCreditAccessAmount", "RecurringCreditCommitDuration", "RecurringCreditProduct", "RecurringCreditContract", + "RecurringCreditProrationRounding", + "RecurringCreditProrationRoundingAccess", "ResellerRoyalty", "SpendTracker", "SpendTrackerApplicableSpendSpecifier", @@ -96,6 +101,38 @@ class RecurringCommitInvoiceAmount(BaseModel): unit_price: float +class RecurringCommitProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class RecurringCommitProrationRoundingInvoice(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class RecurringCommitProrationRounding(BaseModel): + """Rounding configuration for prorated recurring commit amounts.""" + + access: Optional[RecurringCommitProrationRoundingAccess] = None + + invoice: Optional[RecurringCommitProrationRoundingInvoice] = None + + class RecurringCommit(BaseModel): id: str @@ -149,6 +186,9 @@ class RecurringCommit(BaseModel): last commits). """ + proration_rounding: Optional[RecurringCommitProrationRounding] = None + """Rounding configuration for prorated recurring commit amounts.""" + recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -204,6 +244,24 @@ class RecurringCreditContract(BaseModel): id: str +class RecurringCreditProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class RecurringCreditProrationRounding(BaseModel): + """Rounding configuration for prorated recurring credit amounts.""" + + access: Optional[RecurringCreditProrationRoundingAccess] = None + + class RecurringCredit(BaseModel): id: str @@ -254,6 +312,9 @@ class RecurringCredit(BaseModel): last commits). """ + proration_rounding: Optional[RecurringCreditProrationRounding] = None + """Rounding configuration for prorated recurring credit amounts.""" + recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. diff --git a/src/metronome/types/shared/subscription.py b/src/metronome/types/shared/subscription.py index 84ab27c6d..07bd865ab 100644 --- a/src/metronome/types/shared/subscription.py +++ b/src/metronome/types/shared/subscription.py @@ -13,9 +13,11 @@ "BillingPeriodsNext", "BillingPeriodsPrevious", "Proration", + "ProrationRounding", "QuantitySchedule", "SubscriptionRate", "SubscriptionRateProduct", + "BillingCycleConfig", "SeatConfig", ] @@ -48,11 +50,25 @@ class BillingPeriods(BaseModel): previous: Optional[BillingPeriodsPrevious] = None +class ProrationRounding(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + class Proration(BaseModel): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] is_prorated: bool + rounding: Optional[ProrationRounding] = None + class QuantitySchedule(BaseModel): quantity: float @@ -74,6 +90,17 @@ class SubscriptionRate(BaseModel): product: SubscriptionRateProduct +class BillingCycleConfig(BaseModel): + anchor_date: datetime + """The date this subscription's billing cycle is anchored to.""" + + invoice_placement: Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"] + """ + Controls whether this subscription consolidates onto usage invoices or gets its + own scheduled invoice. + """ + + class SeatConfig(BaseModel): seat_group_key: str """ @@ -119,6 +146,8 @@ class Subscription(BaseModel): id: Optional[str] = None + billing_cycle_config: Optional[BillingCycleConfig] = None + custom_fields: Optional[Dict[str, str]] = None """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" diff --git a/src/metronome/types/v1/contract_create_params.py b/src/metronome/types/v1/contract_create_params.py index 9d9354ebf..0fc6dc337 100644 --- a/src/metronome/types/v1/contract_create_params.py +++ b/src/metronome/types/v1/contract_create_params.py @@ -44,11 +44,16 @@ "RecurringCommitAccessAmount", "RecurringCommitCommitDuration", "RecurringCommitInvoiceAmount", + "RecurringCommitProrationRounding", + "RecurringCommitProrationRoundingAccess", + "RecurringCommitProrationRoundingInvoice", "RecurringCommitSubscriptionConfig", "RecurringCommitSubscriptionConfigApplySeatIncreaseConfig", "RecurringCredit", "RecurringCreditAccessAmount", "RecurringCreditCommitDuration", + "RecurringCreditProrationRounding", + "RecurringCreditProrationRoundingAccess", "RecurringCreditSubscriptionConfig", "RecurringCreditSubscriptionConfigApplySeatIncreaseConfig", "ResellerRoyalty", @@ -63,7 +68,9 @@ "SpendTrackerApplicableSpendSpecifier", "Subscription", "SubscriptionProration", + "SubscriptionProrationRounding", "SubscriptionSubscriptionRate", + "SubscriptionBillingCycleConfig", "SubscriptionSeatConfig", "Transition", "TransitionFutureInvoiceBehavior", @@ -858,6 +865,38 @@ class RecurringCommitInvoiceAmount(TypedDict, total=False): unit_price: Required[float] +class RecurringCommitProrationRoundingAccess(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + +class RecurringCommitProrationRoundingInvoice(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + +class RecurringCommitProrationRounding(TypedDict, total=False): + """Optional rounding configuration for prorated recurring commit amounts.""" + + access: RecurringCommitProrationRoundingAccess + + invoice: RecurringCommitProrationRoundingInvoice + + class RecurringCommitSubscriptionConfigApplySeatIncreaseConfig(TypedDict, total=False): is_prorated: Required[bool] """Indicates whether a mid-period seat increase should be prorated.""" @@ -929,6 +968,9 @@ class RecurringCommit(TypedDict, total=False): last commits). """ + proration_rounding: RecurringCommitProrationRounding + """Optional rounding configuration for prorated recurring commit amounts.""" + rate_type: Literal["COMMIT_RATE", "LIST_RATE"] """Whether the created commits will use the commit rate or list rate""" @@ -991,6 +1033,24 @@ class RecurringCreditCommitDuration(TypedDict, total=False): unit: Literal["PERIODS"] +class RecurringCreditProrationRoundingAccess(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + +class RecurringCreditProrationRounding(TypedDict, total=False): + """Optional rounding configuration for prorated recurring credit amounts.""" + + access: RecurringCreditProrationRoundingAccess + + class RecurringCreditSubscriptionConfigApplySeatIncreaseConfig(TypedDict, total=False): is_prorated: Required[bool] """Indicates whether a mid-period seat increase should be prorated.""" @@ -1059,6 +1119,9 @@ class RecurringCredit(TypedDict, total=False): last commits). """ + proration_rounding: RecurringCreditProrationRounding + """Optional rounding configuration for prorated recurring credit amounts.""" + rate_type: Literal["COMMIT_RATE", "LIST_RATE"] """Whether the created commits will use the commit rate or list rate""" @@ -1284,6 +1347,18 @@ class SpendTracker(TypedDict, total=False): reset_frequency: Required[Literal["BILLING_PERIOD"]] +class SubscriptionProrationRounding(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + class SubscriptionProration(TypedDict, total=False): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] """ @@ -1297,6 +1372,8 @@ class SubscriptionProration(TypedDict, total=False): is_prorated: bool """Indicates if the partial period will be prorated or charged a full amount.""" + rounding: SubscriptionProrationRounding + class SubscriptionSubscriptionRate(TypedDict, total=False): billing_frequency: Required[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] @@ -1309,6 +1386,20 @@ class SubscriptionSubscriptionRate(TypedDict, total=False): """Must be subscription type product""" +class SubscriptionBillingCycleConfig(TypedDict, total=False): + anchor_date: Annotated[Union[str, datetime], PropertyInfo(format="iso8601")] + """The date to anchor the billing cycle to. + + If omitted, defaults to the contract's usage invoice billing cycle anchor date. + """ + + invoice_placement: Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"] + """ + Controls whether this subscription consolidates onto usage invoices or gets its + own scheduled invoice. Defaults to ON_USAGE_INVOICE if omitted. + """ + + class SubscriptionSeatConfig(TypedDict, total=False): initial_seat_ids: Required[SequenceNotStr[str]] """The initial assigned seats on this subscription.""" @@ -1334,6 +1425,8 @@ class Subscription(TypedDict, total=False): subscription_rate: Required[SubscriptionSubscriptionRate] + billing_cycle_config: SubscriptionBillingCycleConfig + custom_fields: Dict[str, str] """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" diff --git a/src/metronome/types/v1/contract_create_response.py b/src/metronome/types/v1/contract_create_response.py index 26bff00a5..d193888ac 100644 --- a/src/metronome/types/v1/contract_create_response.py +++ b/src/metronome/types/v1/contract_create_response.py @@ -32,11 +32,16 @@ "DataContractRecurringCommitProduct", "DataContractRecurringCommitContract", "DataContractRecurringCommitInvoiceAmount", + "DataContractRecurringCommitProrationRounding", + "DataContractRecurringCommitProrationRoundingAccess", + "DataContractRecurringCommitProrationRoundingInvoice", "DataContractRecurringCredit", "DataContractRecurringCreditAccessAmount", "DataContractRecurringCreditCommitDuration", "DataContractRecurringCreditProduct", "DataContractRecurringCreditContract", + "DataContractRecurringCreditProrationRounding", + "DataContractRecurringCreditProrationRoundingAccess", ] @@ -148,6 +153,38 @@ class DataContractRecurringCommitInvoiceAmount(BaseModel): unit_price: float +class DataContractRecurringCommitProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataContractRecurringCommitProrationRoundingInvoice(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataContractRecurringCommitProrationRounding(BaseModel): + """Rounding configuration for prorated recurring commit amounts.""" + + access: Optional[DataContractRecurringCommitProrationRoundingAccess] = None + + invoice: Optional[DataContractRecurringCommitProrationRoundingInvoice] = None + + class DataContractRecurringCommit(BaseModel): id: str @@ -201,6 +238,9 @@ class DataContractRecurringCommit(BaseModel): last commits). """ + proration_rounding: Optional[DataContractRecurringCommitProrationRounding] = None + """Rounding configuration for prorated recurring commit amounts.""" + recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -256,6 +296,24 @@ class DataContractRecurringCreditContract(BaseModel): id: str +class DataContractRecurringCreditProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataContractRecurringCreditProrationRounding(BaseModel): + """Rounding configuration for prorated recurring credit amounts.""" + + access: Optional[DataContractRecurringCreditProrationRoundingAccess] = None + + class DataContractRecurringCredit(BaseModel): id: str @@ -306,6 +364,9 @@ class DataContractRecurringCredit(BaseModel): last commits). """ + proration_rounding: Optional[DataContractRecurringCreditProrationRounding] = None + """Rounding configuration for prorated recurring credit amounts.""" + recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. diff --git a/src/metronome/types/v1/package_create_params.py b/src/metronome/types/v1/package_create_params.py index 4817854a9..48119dd47 100644 --- a/src/metronome/types/v1/package_create_params.py +++ b/src/metronome/types/v1/package_create_params.py @@ -42,6 +42,9 @@ "RecurringCommitStartingAtOffset", "RecurringCommitDuration", "RecurringCommitInvoiceAmount", + "RecurringCommitProrationRounding", + "RecurringCommitProrationRoundingAccess", + "RecurringCommitProrationRoundingInvoice", "RecurringCommitSubscriptionConfig", "RecurringCommitSubscriptionConfigApplySeatIncreaseConfig", "RecurringCredit", @@ -49,6 +52,8 @@ "RecurringCreditCommitDuration", "RecurringCreditStartingAtOffset", "RecurringCreditDuration", + "RecurringCreditProrationRounding", + "RecurringCreditProrationRoundingAccess", "RecurringCreditSubscriptionConfig", "RecurringCreditSubscriptionConfigApplySeatIncreaseConfig", "ScheduledCharge", @@ -59,7 +64,9 @@ "SpendTrackerApplicableSpendSpecifier", "Subscription", "SubscriptionProration", + "SubscriptionProrationRounding", "SubscriptionSubscriptionRate", + "SubscriptionBillingCycleConfig", "SubscriptionDuration", "SubscriptionSeatConfig", "SubscriptionStartingAtOffset", @@ -610,6 +617,38 @@ class RecurringCommitInvoiceAmount(TypedDict, total=False): unit_price: Required[float] +class RecurringCommitProrationRoundingAccess(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + +class RecurringCommitProrationRoundingInvoice(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + +class RecurringCommitProrationRounding(TypedDict, total=False): + """Optional rounding configuration for prorated recurring commit amounts.""" + + access: RecurringCommitProrationRoundingAccess + + invoice: RecurringCommitProrationRoundingInvoice + + class RecurringCommitSubscriptionConfigApplySeatIncreaseConfig(TypedDict, total=False): is_prorated: Required[bool] """Indicates whether a mid-period seat increase should be prorated.""" @@ -681,6 +720,9 @@ class RecurringCommit(TypedDict, total=False): last commits). """ + proration_rounding: RecurringCommitProrationRounding + """Optional rounding configuration for prorated recurring commit amounts.""" + rate_type: Literal["COMMIT_RATE", "LIST_RATE"] """Whether the created commits will use the commit rate or list rate""" @@ -763,6 +805,24 @@ class RecurringCreditDuration(TypedDict, total=False): value: Required[int] +class RecurringCreditProrationRoundingAccess(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + +class RecurringCreditProrationRounding(TypedDict, total=False): + """Optional rounding configuration for prorated recurring credit amounts.""" + + access: RecurringCreditProrationRoundingAccess + + class RecurringCreditSubscriptionConfigApplySeatIncreaseConfig(TypedDict, total=False): is_prorated: Required[bool] """Indicates whether a mid-period seat increase should be prorated.""" @@ -831,6 +891,9 @@ class RecurringCredit(TypedDict, total=False): last commits). """ + proration_rounding: RecurringCreditProrationRounding + """Optional rounding configuration for prorated recurring credit amounts.""" + rate_type: Literal["COMMIT_RATE", "LIST_RATE"] """Whether the created commits will use the commit rate or list rate""" @@ -936,6 +999,18 @@ class SpendTracker(TypedDict, total=False): reset_frequency: Required[Literal["BILLING_PERIOD"]] +class SubscriptionProrationRounding(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + class SubscriptionProration(TypedDict, total=False): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] """ @@ -949,6 +1024,8 @@ class SubscriptionProration(TypedDict, total=False): is_prorated: bool """Indicates if the partial period will be prorated or charged a full amount.""" + rounding: SubscriptionProrationRounding + class SubscriptionSubscriptionRate(TypedDict, total=False): billing_frequency: Required[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] @@ -961,6 +1038,14 @@ class SubscriptionSubscriptionRate(TypedDict, total=False): """Must be subscription type product""" +class SubscriptionBillingCycleConfig(TypedDict, total=False): + invoice_placement: Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"] + """Controls whether subscriptions consolidate onto usage invoices. + + Defaults to ON_USAGE_INVOICE if omitted. + """ + + class SubscriptionDuration(TypedDict, total=False): """Lifetime of the subscription from its start. @@ -1004,6 +1089,8 @@ class Subscription(TypedDict, total=False): subscription_rate: Required[SubscriptionSubscriptionRate] + billing_cycle_config: SubscriptionBillingCycleConfig + custom_fields: Dict[str, str] """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" diff --git a/src/metronome/types/v1/package_list_response.py b/src/metronome/types/v1/package_list_response.py index 08620fee9..d22ba3653 100644 --- a/src/metronome/types/v1/package_list_response.py +++ b/src/metronome/types/v1/package_list_response.py @@ -49,6 +49,9 @@ "RecurringCommitStartingAtOffset", "RecurringCommitDuration", "RecurringCommitInvoiceAmount", + "RecurringCommitProrationRounding", + "RecurringCommitProrationRoundingAccess", + "RecurringCommitProrationRoundingInvoice", "RecurringCommitSubscriptionConfig", "RecurringCommitSubscriptionConfigApplySeatIncreaseConfig", "RecurringCredit", @@ -57,14 +60,18 @@ "RecurringCreditProduct", "RecurringCreditStartingAtOffset", "RecurringCreditDuration", + "RecurringCreditProrationRounding", + "RecurringCreditProrationRoundingAccess", "RecurringCreditSubscriptionConfig", "RecurringCreditSubscriptionConfigApplySeatIncreaseConfig", "SpendTracker", "SpendTrackerApplicableSpendSpecifier", "Subscription", "SubscriptionProration", + "SubscriptionProrationRounding", "SubscriptionSubscriptionRate", "SubscriptionSubscriptionRateProduct", + "SubscriptionBillingCycleConfig", "SubscriptionDuration", "SubscriptionSeatConfig", "SubscriptionStartingAtOffset", @@ -426,6 +433,38 @@ class RecurringCommitInvoiceAmount(BaseModel): unit_price: float +class RecurringCommitProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class RecurringCommitProrationRoundingInvoice(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class RecurringCommitProrationRounding(BaseModel): + """Rounding configuration for prorated recurring commit amounts.""" + + access: Optional[RecurringCommitProrationRoundingAccess] = None + + invoice: Optional[RecurringCommitProrationRoundingInvoice] = None + + class RecurringCommitSubscriptionConfigApplySeatIncreaseConfig(BaseModel): is_prorated: bool """Indicates whether a mid-period seat increase should be prorated.""" @@ -489,6 +528,9 @@ class RecurringCommit(BaseModel): last commits). """ + proration_rounding: Optional[RecurringCommitProrationRounding] = None + """Rounding configuration for prorated recurring commit amounts.""" + recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -560,6 +602,24 @@ class RecurringCreditDuration(BaseModel): value: int +class RecurringCreditProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class RecurringCreditProrationRounding(BaseModel): + """Rounding configuration for prorated recurring credit amounts.""" + + access: Optional[RecurringCreditProrationRoundingAccess] = None + + class RecurringCreditSubscriptionConfigApplySeatIncreaseConfig(BaseModel): is_prorated: bool """Indicates whether a mid-period seat increase should be prorated.""" @@ -620,6 +680,9 @@ class RecurringCredit(BaseModel): last commits). """ + proration_rounding: Optional[RecurringCreditProrationRounding] = None + """Rounding configuration for prorated recurring credit amounts.""" + recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -666,11 +729,25 @@ class SpendTracker(BaseModel): reset_frequency: Literal["BILLING_PERIOD"] +class SubscriptionProrationRounding(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + class SubscriptionProration(BaseModel): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] is_prorated: bool + rounding: Optional[SubscriptionProrationRounding] = None + class SubscriptionSubscriptionRateProduct(BaseModel): id: str @@ -684,6 +761,10 @@ class SubscriptionSubscriptionRate(BaseModel): product: SubscriptionSubscriptionRateProduct +class SubscriptionBillingCycleConfig(BaseModel): + invoice_placement: Optional[Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"]] = None + + class SubscriptionDuration(BaseModel): unit: Literal["DAYS", "WEEKS", "MONTHS", "YEARS"] @@ -717,6 +798,8 @@ class Subscription(BaseModel): id: Optional[str] = None + billing_cycle_config: Optional[SubscriptionBillingCycleConfig] = None + custom_fields: Optional[Dict[str, str]] = None """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" diff --git a/src/metronome/types/v1/package_retrieve_response.py b/src/metronome/types/v1/package_retrieve_response.py index 7d73c1721..9b34359c3 100644 --- a/src/metronome/types/v1/package_retrieve_response.py +++ b/src/metronome/types/v1/package_retrieve_response.py @@ -50,6 +50,9 @@ "DataRecurringCommitStartingAtOffset", "DataRecurringCommitDuration", "DataRecurringCommitInvoiceAmount", + "DataRecurringCommitProrationRounding", + "DataRecurringCommitProrationRoundingAccess", + "DataRecurringCommitProrationRoundingInvoice", "DataRecurringCommitSubscriptionConfig", "DataRecurringCommitSubscriptionConfigApplySeatIncreaseConfig", "DataRecurringCredit", @@ -58,14 +61,18 @@ "DataRecurringCreditProduct", "DataRecurringCreditStartingAtOffset", "DataRecurringCreditDuration", + "DataRecurringCreditProrationRounding", + "DataRecurringCreditProrationRoundingAccess", "DataRecurringCreditSubscriptionConfig", "DataRecurringCreditSubscriptionConfigApplySeatIncreaseConfig", "DataSpendTracker", "DataSpendTrackerApplicableSpendSpecifier", "DataSubscription", "DataSubscriptionProration", + "DataSubscriptionProrationRounding", "DataSubscriptionSubscriptionRate", "DataSubscriptionSubscriptionRateProduct", + "DataSubscriptionBillingCycleConfig", "DataSubscriptionDuration", "DataSubscriptionSeatConfig", "DataSubscriptionStartingAtOffset", @@ -427,6 +434,38 @@ class DataRecurringCommitInvoiceAmount(BaseModel): unit_price: float +class DataRecurringCommitProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataRecurringCommitProrationRoundingInvoice(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataRecurringCommitProrationRounding(BaseModel): + """Rounding configuration for prorated recurring commit amounts.""" + + access: Optional[DataRecurringCommitProrationRoundingAccess] = None + + invoice: Optional[DataRecurringCommitProrationRoundingInvoice] = None + + class DataRecurringCommitSubscriptionConfigApplySeatIncreaseConfig(BaseModel): is_prorated: bool """Indicates whether a mid-period seat increase should be prorated.""" @@ -490,6 +529,9 @@ class DataRecurringCommit(BaseModel): last commits). """ + proration_rounding: Optional[DataRecurringCommitProrationRounding] = None + """Rounding configuration for prorated recurring commit amounts.""" + recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -561,6 +603,24 @@ class DataRecurringCreditDuration(BaseModel): value: int +class DataRecurringCreditProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataRecurringCreditProrationRounding(BaseModel): + """Rounding configuration for prorated recurring credit amounts.""" + + access: Optional[DataRecurringCreditProrationRoundingAccess] = None + + class DataRecurringCreditSubscriptionConfigApplySeatIncreaseConfig(BaseModel): is_prorated: bool """Indicates whether a mid-period seat increase should be prorated.""" @@ -621,6 +681,9 @@ class DataRecurringCredit(BaseModel): last commits). """ + proration_rounding: Optional[DataRecurringCreditProrationRounding] = None + """Rounding configuration for prorated recurring credit amounts.""" + recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -667,11 +730,25 @@ class DataSpendTracker(BaseModel): reset_frequency: Literal["BILLING_PERIOD"] +class DataSubscriptionProrationRounding(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this + means rounding to the nearest dollar). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + class DataSubscriptionProration(BaseModel): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] is_prorated: bool + rounding: Optional[DataSubscriptionProrationRounding] = None + class DataSubscriptionSubscriptionRateProduct(BaseModel): id: str @@ -685,6 +762,10 @@ class DataSubscriptionSubscriptionRate(BaseModel): product: DataSubscriptionSubscriptionRateProduct +class DataSubscriptionBillingCycleConfig(BaseModel): + invoice_placement: Optional[Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"]] = None + + class DataSubscriptionDuration(BaseModel): unit: Literal["DAYS", "WEEKS", "MONTHS", "YEARS"] @@ -718,6 +799,8 @@ class DataSubscription(BaseModel): id: Optional[str] = None + billing_cycle_config: Optional[DataSubscriptionBillingCycleConfig] = None + custom_fields: Optional[Dict[str, str]] = None """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" diff --git a/src/metronome/types/v2/contract_edit_params.py b/src/metronome/types/v2/contract_edit_params.py index caa52466e..19aec2bcc 100644 --- a/src/metronome/types/v2/contract_edit_params.py +++ b/src/metronome/types/v2/contract_edit_params.py @@ -47,11 +47,16 @@ "AddRecurringCommitAccessAmount", "AddRecurringCommitCommitDuration", "AddRecurringCommitInvoiceAmount", + "AddRecurringCommitProrationRounding", + "AddRecurringCommitProrationRoundingAccess", + "AddRecurringCommitProrationRoundingInvoice", "AddRecurringCommitSubscriptionConfig", "AddRecurringCommitSubscriptionConfigApplySeatIncreaseConfig", "AddRecurringCredit", "AddRecurringCreditAccessAmount", "AddRecurringCreditCommitDuration", + "AddRecurringCreditProrationRounding", + "AddRecurringCreditProrationRoundingAccess", "AddRecurringCreditSubscriptionConfig", "AddRecurringCreditSubscriptionConfigApplySeatIncreaseConfig", "AddResellerRoyalty", @@ -68,7 +73,9 @@ "AddSpendTrackerApplicableSpendSpecifier", "AddSubscription", "AddSubscriptionProration", + "AddSubscriptionProrationRounding", "AddSubscriptionSubscriptionRate", + "AddSubscriptionBillingCycleConfig", "AddSubscriptionSeatConfig", "ArchiveCommit", "ArchiveCredit", @@ -98,8 +105,13 @@ "UpdateRecurringCommit", "UpdateRecurringCommitAccessAmount", "UpdateRecurringCommitInvoiceAmount", + "UpdateRecurringCommitProrationRounding", + "UpdateRecurringCommitProrationRoundingAccess", + "UpdateRecurringCommitProrationRoundingInvoice", "UpdateRecurringCredit", "UpdateRecurringCreditAccessAmount", + "UpdateRecurringCreditProrationRounding", + "UpdateRecurringCreditProrationRoundingAccess", "UpdateScheduledCharge", "UpdateScheduledChargeInvoiceSchedule", "UpdateScheduledChargeInvoiceScheduleAddScheduleItem", @@ -109,6 +121,7 @@ "UpdateSpendThresholdConfigurationDiscountConfiguration", "UpdateSpendThresholdConfigurationDiscountConfigurationCap", "UpdateSubscription", + "UpdateSubscriptionProrationRounding", "UpdateSubscriptionQuantityManagementModeUpdate", "UpdateSubscriptionQuantityManagementModeUpdateSeatConfig", "UpdateSubscriptionQuantityUpdate", @@ -943,6 +956,36 @@ class AddRecurringCommitInvoiceAmount(TypedDict, total=False): unit_price: Required[float] +class AddRecurringCommitProrationRoundingAccess(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + +class AddRecurringCommitProrationRoundingInvoice(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + +class AddRecurringCommitProrationRounding(TypedDict, total=False): + """Optional rounding configuration for prorated recurring commit amounts.""" + + access: AddRecurringCommitProrationRoundingAccess + + invoice: AddRecurringCommitProrationRoundingInvoice + + class AddRecurringCommitSubscriptionConfigApplySeatIncreaseConfig(TypedDict, total=False): is_prorated: Required[bool] """Indicates whether a mid-period seat increase should be prorated.""" @@ -1014,6 +1057,9 @@ class AddRecurringCommit(TypedDict, total=False): last commits). """ + proration_rounding: AddRecurringCommitProrationRounding + """Optional rounding configuration for prorated recurring commit amounts.""" + rate_type: Literal["COMMIT_RATE", "LIST_RATE"] """Whether the created commits will use the commit rate or list rate""" @@ -1078,6 +1124,23 @@ class AddRecurringCreditCommitDuration(TypedDict, total=False): unit: Literal["PERIODS"] +class AddRecurringCreditProrationRoundingAccess(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + +class AddRecurringCreditProrationRounding(TypedDict, total=False): + """Optional rounding configuration for prorated recurring credit amounts.""" + + access: AddRecurringCreditProrationRoundingAccess + + class AddRecurringCreditSubscriptionConfigApplySeatIncreaseConfig(TypedDict, total=False): is_prorated: Required[bool] """Indicates whether a mid-period seat increase should be prorated.""" @@ -1146,6 +1209,9 @@ class AddRecurringCredit(TypedDict, total=False): last commits). """ + proration_rounding: AddRecurringCreditProrationRounding + """Optional rounding configuration for prorated recurring credit amounts.""" + rate_type: Literal["COMMIT_RATE", "LIST_RATE"] """Whether the created commits will use the commit rate or list rate""" @@ -1373,6 +1439,17 @@ class AddSpendTracker(TypedDict, total=False): reset_frequency: Required[Literal["BILLING_PERIOD"]] +class AddSubscriptionProrationRounding(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + class AddSubscriptionProration(TypedDict, total=False): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] """ @@ -1386,6 +1463,8 @@ class AddSubscriptionProration(TypedDict, total=False): is_prorated: bool """Indicates if the partial period will be prorated or charged a full amount.""" + rounding: AddSubscriptionProrationRounding + class AddSubscriptionSubscriptionRate(TypedDict, total=False): billing_frequency: Required[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] @@ -1398,6 +1477,20 @@ class AddSubscriptionSubscriptionRate(TypedDict, total=False): """Must be subscription type product""" +class AddSubscriptionBillingCycleConfig(TypedDict, total=False): + anchor_date: Annotated[Union[str, datetime], PropertyInfo(format="iso8601")] + """The date to anchor the billing cycle to. + + If omitted, defaults to the contract's usage invoice billing cycle anchor date. + """ + + invoice_placement: Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"] + """ + Controls whether this subscription consolidates onto usage invoices or gets its + own scheduled invoice. Defaults to ON_USAGE_INVOICE if omitted. + """ + + class AddSubscriptionSeatConfig(TypedDict, total=False): initial_seat_ids: Required[SequenceNotStr[str]] """The initial assigned seats on this subscription.""" @@ -1423,6 +1516,8 @@ class AddSubscription(TypedDict, total=False): subscription_rate: Required[AddSubscriptionSubscriptionRate] + billing_cycle_config: AddSubscriptionBillingCycleConfig + custom_fields: Dict[str, str] """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" @@ -1782,6 +1877,39 @@ class UpdateRecurringCommitInvoiceAmount(TypedDict, total=False): unit_price: float +class UpdateRecurringCommitProrationRoundingAccess(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + +class UpdateRecurringCommitProrationRoundingInvoice(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + +class UpdateRecurringCommitProrationRounding(TypedDict, total=False): + """If provided, updates the rounding config on the recurring commit. + + Set to null to clear rounding. Omit to leave unchanged. + """ + + access: Optional[UpdateRecurringCommitProrationRoundingAccess] + + invoice: Optional[UpdateRecurringCommitProrationRoundingInvoice] + + class UpdateRecurringCommit(TypedDict, total=False): recurring_commit_id: Required[str] @@ -1791,6 +1919,12 @@ class UpdateRecurringCommit(TypedDict, total=False): invoice_amount: UpdateRecurringCommitInvoiceAmount + proration_rounding: Optional[UpdateRecurringCommitProrationRounding] + """If provided, updates the rounding config on the recurring commit. + + Set to null to clear rounding. Omit to leave unchanged. + """ + rate_type: Literal["LIST_RATE", "COMMIT_RATE"] """ If provided, updates the recurring commit to use the specified rate type when @@ -1804,6 +1938,26 @@ class UpdateRecurringCreditAccessAmount(TypedDict, total=False): unit_price: float +class UpdateRecurringCreditProrationRoundingAccess(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + +class UpdateRecurringCreditProrationRounding(TypedDict, total=False): + """If provided, updates the rounding config on the recurring credit. + + Set to null to clear rounding. Omit to leave unchanged. + """ + + access: Optional[UpdateRecurringCreditProrationRoundingAccess] + + class UpdateRecurringCredit(TypedDict, total=False): recurring_credit_id: Required[str] @@ -1811,6 +1965,12 @@ class UpdateRecurringCredit(TypedDict, total=False): ending_before: Annotated[Union[str, datetime, None], PropertyInfo(format="iso8601")] + proration_rounding: Optional[UpdateRecurringCreditProrationRounding] + """If provided, updates the rounding config on the recurring credit. + + Set to null to clear rounding. Omit to leave unchanged. + """ + rate_type: Literal["LIST_RATE", "COMMIT_RATE"] """ If provided, updates the recurring credit to use the specified rate type when @@ -1904,6 +2064,17 @@ class UpdateSpendThresholdConfiguration(TypedDict, total=False): """ +class UpdateSubscriptionProrationRounding(TypedDict, total=False): + decimal_places: Required[float] + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] + + class UpdateSubscriptionQuantityManagementModeUpdateSeatConfig(TypedDict, total=False): seat_group_key: Required[str] @@ -2007,6 +2178,8 @@ class UpdateSubscription(TypedDict, total=False): ending_before: Annotated[Union[str, datetime, None], PropertyInfo(format="iso8601")] + proration_rounding: Optional[UpdateSubscriptionProrationRounding] + quantity_management_mode_update: UpdateSubscriptionQuantityManagementModeUpdate """ Update the subscription's quantity management mode from QUANTITY_ONLY to diff --git a/src/metronome/types/v2/contract_edit_response.py b/src/metronome/types/v2/contract_edit_response.py index 843ed332f..23918ae30 100644 --- a/src/metronome/types/v2/contract_edit_response.py +++ b/src/metronome/types/v2/contract_edit_response.py @@ -41,11 +41,16 @@ "DataEditAddRecurringCommitProduct", "DataEditAddRecurringCommitContract", "DataEditAddRecurringCommitInvoiceAmount", + "DataEditAddRecurringCommitProrationRounding", + "DataEditAddRecurringCommitProrationRoundingAccess", + "DataEditAddRecurringCommitProrationRoundingInvoice", "DataEditAddRecurringCredit", "DataEditAddRecurringCreditAccessAmount", "DataEditAddRecurringCreditCommitDuration", "DataEditAddRecurringCreditProduct", "DataEditAddRecurringCreditContract", + "DataEditAddRecurringCreditProrationRounding", + "DataEditAddRecurringCreditProrationRoundingAccess", "DataEditAddResellerRoyalty", "DataEditAddScheduledCharge", "DataEditAddScheduledChargeProduct", @@ -55,9 +60,11 @@ "DataEditAddSubscriptionBillingPeriodsNext", "DataEditAddSubscriptionBillingPeriodsPrevious", "DataEditAddSubscriptionProration", + "DataEditAddSubscriptionProrationRounding", "DataEditAddSubscriptionQuantitySchedule", "DataEditAddSubscriptionSubscriptionRate", "DataEditAddSubscriptionSubscriptionRateProduct", + "DataEditAddSubscriptionBillingCycleConfig", "DataEditAddSubscriptionSeatConfig", "DataEditAddUsageFilter", "DataEditArchiveCommit", @@ -92,8 +99,13 @@ "DataEditUpdateRecurringCommit", "DataEditUpdateRecurringCommitAccessAmount", "DataEditUpdateRecurringCommitInvoiceAmount", + "DataEditUpdateRecurringCommitProrationRounding", + "DataEditUpdateRecurringCommitProrationRoundingAccess", + "DataEditUpdateRecurringCommitProrationRoundingInvoice", "DataEditUpdateRecurringCredit", "DataEditUpdateRecurringCreditAccessAmount", + "DataEditUpdateRecurringCreditProrationRounding", + "DataEditUpdateRecurringCreditProrationRoundingAccess", "DataEditUpdateRefundInvoice", "DataEditUpdateScheduledCharge", "DataEditUpdateScheduledChargeInvoiceSchedule", @@ -375,6 +387,36 @@ class DataEditAddRecurringCommitInvoiceAmount(BaseModel): unit_price: float +class DataEditAddRecurringCommitProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataEditAddRecurringCommitProrationRoundingInvoice(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataEditAddRecurringCommitProrationRounding(BaseModel): + """Rounding configuration for prorated recurring commit amounts.""" + + access: Optional[DataEditAddRecurringCommitProrationRoundingAccess] = None + + invoice: Optional[DataEditAddRecurringCommitProrationRoundingInvoice] = None + + class DataEditAddRecurringCommit(BaseModel): id: str @@ -428,6 +470,9 @@ class DataEditAddRecurringCommit(BaseModel): last commits). """ + proration_rounding: Optional[DataEditAddRecurringCommitProrationRounding] = None + """Rounding configuration for prorated recurring commit amounts.""" + recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -483,6 +528,23 @@ class DataEditAddRecurringCreditContract(BaseModel): id: str +class DataEditAddRecurringCreditProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataEditAddRecurringCreditProrationRounding(BaseModel): + """Rounding configuration for prorated recurring credit amounts.""" + + access: Optional[DataEditAddRecurringCreditProrationRoundingAccess] = None + + class DataEditAddRecurringCredit(BaseModel): id: str @@ -533,6 +595,9 @@ class DataEditAddRecurringCredit(BaseModel): last commits). """ + proration_rounding: Optional[DataEditAddRecurringCreditProrationRounding] = None + """Rounding configuration for prorated recurring credit amounts.""" + recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -636,11 +701,24 @@ class DataEditAddSubscriptionBillingPeriods(BaseModel): previous: Optional[DataEditAddSubscriptionBillingPeriodsPrevious] = None +class DataEditAddSubscriptionProrationRounding(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + class DataEditAddSubscriptionProration(BaseModel): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] is_prorated: bool + rounding: Optional[DataEditAddSubscriptionProrationRounding] = None + class DataEditAddSubscriptionQuantitySchedule(BaseModel): quantity: float @@ -662,6 +740,17 @@ class DataEditAddSubscriptionSubscriptionRate(BaseModel): product: DataEditAddSubscriptionSubscriptionRateProduct +class DataEditAddSubscriptionBillingCycleConfig(BaseModel): + anchor_date: datetime + """The date this subscription's billing cycle is anchored to.""" + + invoice_placement: Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"] + """ + Controls whether this subscription consolidates onto usage invoices or gets its + own scheduled invoice. + """ + + class DataEditAddSubscriptionSeatConfig(BaseModel): seat_group_key: str """ @@ -707,6 +796,8 @@ class DataEditAddSubscription(BaseModel): id: Optional[str] = None + billing_cycle_config: Optional[DataEditAddSubscriptionBillingCycleConfig] = None + custom_fields: Optional[Dict[str, str]] = None """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" @@ -1178,6 +1269,36 @@ class DataEditUpdateRecurringCommitInvoiceAmount(BaseModel): unit_price: Optional[float] = None +class DataEditUpdateRecurringCommitProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataEditUpdateRecurringCommitProrationRoundingInvoice(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataEditUpdateRecurringCommitProrationRounding(BaseModel): + """Rounding configuration for prorated recurring commit amounts.""" + + access: Optional[DataEditUpdateRecurringCommitProrationRoundingAccess] = None + + invoice: Optional[DataEditUpdateRecurringCommitProrationRoundingInvoice] = None + + class DataEditUpdateRecurringCommit(BaseModel): id: str @@ -1187,6 +1308,9 @@ class DataEditUpdateRecurringCommit(BaseModel): invoice_amount: Optional[DataEditUpdateRecurringCommitInvoiceAmount] = None + proration_rounding: Optional[DataEditUpdateRecurringCommitProrationRounding] = None + """Rounding configuration for prorated recurring commit amounts.""" + rate_type: Optional[Literal["LIST_RATE", "COMMIT_RATE"]] = None @@ -1196,6 +1320,23 @@ class DataEditUpdateRecurringCreditAccessAmount(BaseModel): unit_price: Optional[float] = None +class DataEditUpdateRecurringCreditProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataEditUpdateRecurringCreditProrationRounding(BaseModel): + """Rounding configuration for prorated recurring credit amounts.""" + + access: Optional[DataEditUpdateRecurringCreditProrationRoundingAccess] = None + + class DataEditUpdateRecurringCredit(BaseModel): id: str @@ -1203,6 +1344,9 @@ class DataEditUpdateRecurringCredit(BaseModel): ending_before: Optional[datetime] = None + proration_rounding: Optional[DataEditUpdateRecurringCreditProrationRounding] = None + """Rounding configuration for prorated recurring credit amounts.""" + rate_type: Optional[Literal["LIST_RATE", "COMMIT_RATE"]] = None diff --git a/src/metronome/types/v2/contract_get_edit_history_response.py b/src/metronome/types/v2/contract_get_edit_history_response.py index a2f598079..04d4c0481 100644 --- a/src/metronome/types/v2/contract_get_edit_history_response.py +++ b/src/metronome/types/v2/contract_get_edit_history_response.py @@ -40,11 +40,16 @@ "DataAddRecurringCommitProduct", "DataAddRecurringCommitContract", "DataAddRecurringCommitInvoiceAmount", + "DataAddRecurringCommitProrationRounding", + "DataAddRecurringCommitProrationRoundingAccess", + "DataAddRecurringCommitProrationRoundingInvoice", "DataAddRecurringCredit", "DataAddRecurringCreditAccessAmount", "DataAddRecurringCreditCommitDuration", "DataAddRecurringCreditProduct", "DataAddRecurringCreditContract", + "DataAddRecurringCreditProrationRounding", + "DataAddRecurringCreditProrationRoundingAccess", "DataAddResellerRoyalty", "DataAddScheduledCharge", "DataAddScheduledChargeProduct", @@ -54,9 +59,11 @@ "DataAddSubscriptionBillingPeriodsNext", "DataAddSubscriptionBillingPeriodsPrevious", "DataAddSubscriptionProration", + "DataAddSubscriptionProrationRounding", "DataAddSubscriptionQuantitySchedule", "DataAddSubscriptionSubscriptionRate", "DataAddSubscriptionSubscriptionRateProduct", + "DataAddSubscriptionBillingCycleConfig", "DataAddSubscriptionSeatConfig", "DataAddUsageFilter", "DataArchiveCommit", @@ -91,8 +98,13 @@ "DataUpdateRecurringCommit", "DataUpdateRecurringCommitAccessAmount", "DataUpdateRecurringCommitInvoiceAmount", + "DataUpdateRecurringCommitProrationRounding", + "DataUpdateRecurringCommitProrationRoundingAccess", + "DataUpdateRecurringCommitProrationRoundingInvoice", "DataUpdateRecurringCredit", "DataUpdateRecurringCreditAccessAmount", + "DataUpdateRecurringCreditProrationRounding", + "DataUpdateRecurringCreditProrationRoundingAccess", "DataUpdateRefundInvoice", "DataUpdateScheduledCharge", "DataUpdateScheduledChargeInvoiceSchedule", @@ -374,6 +386,36 @@ class DataAddRecurringCommitInvoiceAmount(BaseModel): unit_price: float +class DataAddRecurringCommitProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataAddRecurringCommitProrationRoundingInvoice(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataAddRecurringCommitProrationRounding(BaseModel): + """Rounding configuration for prorated recurring commit amounts.""" + + access: Optional[DataAddRecurringCommitProrationRoundingAccess] = None + + invoice: Optional[DataAddRecurringCommitProrationRoundingInvoice] = None + + class DataAddRecurringCommit(BaseModel): id: str @@ -427,6 +469,9 @@ class DataAddRecurringCommit(BaseModel): last commits). """ + proration_rounding: Optional[DataAddRecurringCommitProrationRounding] = None + """Rounding configuration for prorated recurring commit amounts.""" + recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -482,6 +527,23 @@ class DataAddRecurringCreditContract(BaseModel): id: str +class DataAddRecurringCreditProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataAddRecurringCreditProrationRounding(BaseModel): + """Rounding configuration for prorated recurring credit amounts.""" + + access: Optional[DataAddRecurringCreditProrationRoundingAccess] = None + + class DataAddRecurringCredit(BaseModel): id: str @@ -532,6 +594,9 @@ class DataAddRecurringCredit(BaseModel): last commits). """ + proration_rounding: Optional[DataAddRecurringCreditProrationRounding] = None + """Rounding configuration for prorated recurring credit amounts.""" + recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -635,11 +700,24 @@ class DataAddSubscriptionBillingPeriods(BaseModel): previous: Optional[DataAddSubscriptionBillingPeriodsPrevious] = None +class DataAddSubscriptionProrationRounding(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + class DataAddSubscriptionProration(BaseModel): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] is_prorated: bool + rounding: Optional[DataAddSubscriptionProrationRounding] = None + class DataAddSubscriptionQuantitySchedule(BaseModel): quantity: float @@ -661,6 +739,17 @@ class DataAddSubscriptionSubscriptionRate(BaseModel): product: DataAddSubscriptionSubscriptionRateProduct +class DataAddSubscriptionBillingCycleConfig(BaseModel): + anchor_date: datetime + """The date this subscription's billing cycle is anchored to.""" + + invoice_placement: Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"] + """ + Controls whether this subscription consolidates onto usage invoices or gets its + own scheduled invoice. + """ + + class DataAddSubscriptionSeatConfig(BaseModel): seat_group_key: str """ @@ -706,6 +795,8 @@ class DataAddSubscription(BaseModel): id: Optional[str] = None + billing_cycle_config: Optional[DataAddSubscriptionBillingCycleConfig] = None + custom_fields: Optional[Dict[str, str]] = None """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" @@ -1177,6 +1268,36 @@ class DataUpdateRecurringCommitInvoiceAmount(BaseModel): unit_price: Optional[float] = None +class DataUpdateRecurringCommitProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataUpdateRecurringCommitProrationRoundingInvoice(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataUpdateRecurringCommitProrationRounding(BaseModel): + """Rounding configuration for prorated recurring commit amounts.""" + + access: Optional[DataUpdateRecurringCommitProrationRoundingAccess] = None + + invoice: Optional[DataUpdateRecurringCommitProrationRoundingInvoice] = None + + class DataUpdateRecurringCommit(BaseModel): id: str @@ -1186,6 +1307,9 @@ class DataUpdateRecurringCommit(BaseModel): invoice_amount: Optional[DataUpdateRecurringCommitInvoiceAmount] = None + proration_rounding: Optional[DataUpdateRecurringCommitProrationRounding] = None + """Rounding configuration for prorated recurring commit amounts.""" + rate_type: Optional[Literal["LIST_RATE", "COMMIT_RATE"]] = None @@ -1195,6 +1319,23 @@ class DataUpdateRecurringCreditAccessAmount(BaseModel): unit_price: Optional[float] = None +class DataUpdateRecurringCreditProrationRoundingAccess(BaseModel): + decimal_places: float + """Number of decimal places to round to. + + Applied directly to the stored monetary representation. Negative values round to + powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). + """ + + rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] + + +class DataUpdateRecurringCreditProrationRounding(BaseModel): + """Rounding configuration for prorated recurring credit amounts.""" + + access: Optional[DataUpdateRecurringCreditProrationRoundingAccess] = None + + class DataUpdateRecurringCredit(BaseModel): id: str @@ -1202,6 +1343,9 @@ class DataUpdateRecurringCredit(BaseModel): ending_before: Optional[datetime] = None + proration_rounding: Optional[DataUpdateRecurringCreditProrationRounding] = None + """Rounding configuration for prorated recurring credit amounts.""" + rate_type: Optional[Literal["LIST_RATE", "COMMIT_RATE"]] = None diff --git a/tests/api_resources/v1/test_contracts.py b/tests/api_resources/v1/test_contracts.py index 11ae3f1c5..ed963be63 100644 --- a/tests/api_resources/v1/test_contracts.py +++ b/tests/api_resources/v1/test_contracts.py @@ -329,6 +329,16 @@ def test_method_create_with_all_params(self, client: Metronome) -> None: "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + "invoice": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -370,6 +380,12 @@ def test_method_create_with_all_params(self, client: Metronome) -> None: "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + } + }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -495,11 +511,19 @@ def test_method_create_with_all_params(self, client: Metronome) -> None: "proration": { "invoice_behavior": "BILL_IMMEDIATELY", "is_prorated": True, + "rounding": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, }, "subscription_rate": { "billing_frequency": "MONTHLY", "product_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", }, + "billing_cycle_config": { + "anchor_date": parse_datetime("2019-12-27T18:11:19.117Z"), + "invoice_placement": "ON_SCHEDULED_INVOICE", + }, "custom_fields": {"foo": "string"}, "description": "description", "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), @@ -1799,6 +1823,16 @@ async def test_method_create_with_all_params(self, async_client: AsyncMetronome) "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + "invoice": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -1840,6 +1874,12 @@ async def test_method_create_with_all_params(self, async_client: AsyncMetronome) "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + } + }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -1965,11 +2005,19 @@ async def test_method_create_with_all_params(self, async_client: AsyncMetronome) "proration": { "invoice_behavior": "BILL_IMMEDIATELY", "is_prorated": True, + "rounding": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, }, "subscription_rate": { "billing_frequency": "MONTHLY", "product_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", }, + "billing_cycle_config": { + "anchor_date": parse_datetime("2019-12-27T18:11:19.117Z"), + "invoice_placement": "ON_SCHEDULED_INVOICE", + }, "custom_fields": {"foo": "string"}, "description": "description", "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), diff --git a/tests/api_resources/v1/test_packages.py b/tests/api_resources/v1/test_packages.py index b78c6ed4d..a3959eed4 100644 --- a/tests/api_resources/v1/test_packages.py +++ b/tests/api_resources/v1/test_packages.py @@ -279,6 +279,16 @@ def test_method_create_with_all_params(self, client: Metronome) -> None: }, "name": "x", "proration": "NONE", + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + "invoice": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -324,6 +334,12 @@ def test_method_create_with_all_params(self, client: Metronome) -> None: }, "name": "x", "proration": "NONE", + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + } + }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -413,11 +429,16 @@ def test_method_create_with_all_params(self, client: Metronome) -> None: "proration": { "invoice_behavior": "BILL_IMMEDIATELY", "is_prorated": True, + "rounding": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, }, "subscription_rate": { "billing_frequency": "MONTHLY", "product_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", }, + "billing_cycle_config": {"invoice_placement": "ON_SCHEDULED_INVOICE"}, "custom_fields": {"foo": "string"}, "description": "description", "duration": { @@ -873,6 +894,16 @@ async def test_method_create_with_all_params(self, async_client: AsyncMetronome) }, "name": "x", "proration": "NONE", + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + "invoice": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -918,6 +949,12 @@ async def test_method_create_with_all_params(self, async_client: AsyncMetronome) }, "name": "x", "proration": "NONE", + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + } + }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -1007,11 +1044,16 @@ async def test_method_create_with_all_params(self, async_client: AsyncMetronome) "proration": { "invoice_behavior": "BILL_IMMEDIATELY", "is_prorated": True, + "rounding": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, }, "subscription_rate": { "billing_frequency": "MONTHLY", "product_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", }, + "billing_cycle_config": {"invoice_placement": "ON_SCHEDULED_INVOICE"}, "custom_fields": {"foo": "string"}, "description": "description", "duration": { diff --git a/tests/api_resources/v2/test_contracts.py b/tests/api_resources/v2/test_contracts.py index 96cc07cdb..db9e8d75c 100644 --- a/tests/api_resources/v2/test_contracts.py +++ b/tests/api_resources/v2/test_contracts.py @@ -406,6 +406,16 @@ def test_method_edit_with_all_params(self, client: Metronome) -> None: "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + "invoice": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -447,6 +457,12 @@ def test_method_edit_with_all_params(self, client: Metronome) -> None: "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + } + }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -573,11 +589,19 @@ def test_method_edit_with_all_params(self, client: Metronome) -> None: "proration": { "invoice_behavior": "BILL_IMMEDIATELY", "is_prorated": True, + "rounding": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, }, "subscription_rate": { "billing_frequency": "MONTHLY", "product_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", }, + "billing_cycle_config": { + "anchor_date": parse_datetime("2019-12-27T18:11:19.117Z"), + "invoice_placement": "ON_SCHEDULED_INVOICE", + }, "custom_fields": {"foo": "string"}, "description": "description", "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), @@ -757,6 +781,16 @@ def test_method_edit_with_all_params(self, client: Metronome) -> None: "quantity": 0, "unit_price": 0, }, + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + "invoice": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + }, "rate_type": "LIST_RATE", } ], @@ -768,6 +802,12 @@ def test_method_edit_with_all_params(self, client: Metronome) -> None: "unit_price": 0, }, "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + } + }, "rate_type": "LIST_RATE", } ], @@ -830,6 +870,10 @@ def test_method_edit_with_all_params(self, client: Metronome) -> None: { "subscription_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), + "proration_rounding": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, "quantity_management_mode_update": { "quantity_management_mode": "SEAT_BASED", "seat_config": {"seat_group_key": "seat_group_key"}, @@ -1492,6 +1536,16 @@ async def test_method_edit_with_all_params(self, async_client: AsyncMetronome) - "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + "invoice": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -1533,6 +1587,12 @@ async def test_method_edit_with_all_params(self, async_client: AsyncMetronome) - "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + } + }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -1659,11 +1719,19 @@ async def test_method_edit_with_all_params(self, async_client: AsyncMetronome) - "proration": { "invoice_behavior": "BILL_IMMEDIATELY", "is_prorated": True, + "rounding": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, }, "subscription_rate": { "billing_frequency": "MONTHLY", "product_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", }, + "billing_cycle_config": { + "anchor_date": parse_datetime("2019-12-27T18:11:19.117Z"), + "invoice_placement": "ON_SCHEDULED_INVOICE", + }, "custom_fields": {"foo": "string"}, "description": "description", "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), @@ -1843,6 +1911,16 @@ async def test_method_edit_with_all_params(self, async_client: AsyncMetronome) - "quantity": 0, "unit_price": 0, }, + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + "invoice": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, + }, "rate_type": "LIST_RATE", } ], @@ -1854,6 +1932,12 @@ async def test_method_edit_with_all_params(self, async_client: AsyncMetronome) - "unit_price": 0, }, "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), + "proration_rounding": { + "access": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + } + }, "rate_type": "LIST_RATE", } ], @@ -1916,6 +2000,10 @@ async def test_method_edit_with_all_params(self, async_client: AsyncMetronome) - { "subscription_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), + "proration_rounding": { + "decimal_places": -5, + "rounding_method": "HALF_UP", + }, "quantity_management_mode_update": { "quantity_management_mode": "SEAT_BASED", "seat_config": {"seat_group_key": "seat_group_key"}, From 5b5b50c35e05783bc7ec21cdfc35dc55ef7df98a Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 01:16:45 +0000 Subject: [PATCH 2/3] feat: Revert "[pgs] Remove `allow-subscriptions-custom-billing-anchor` and proration rounding feature flags" --- .stats.yml | 4 +- src/metronome/types/shared/contract_v2.py | 86 --------- .../shared/contract_without_amendments.py | 61 ------ src/metronome/types/shared/subscription.py | 29 --- .../types/v1/contract_create_params.py | 93 ---------- .../types/v1/contract_create_response.py | 61 ------ .../types/v1/package_create_params.py | 87 --------- .../types/v1/package_list_response.py | 83 --------- .../types/v1/package_retrieve_response.py | 83 --------- .../types/v2/contract_edit_params.py | 173 ------------------ .../types/v2/contract_edit_response.py | 144 --------------- .../v2/contract_get_edit_history_response.py | 144 --------------- tests/api_resources/v1/test_contracts.py | 48 ----- tests/api_resources/v1/test_packages.py | 42 ----- tests/api_resources/v2/test_contracts.py | 88 --------- 15 files changed, 2 insertions(+), 1224 deletions(-) diff --git a/.stats.yml b/.stats.yml index 68ebbfb63..a0aad2266 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 115 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/metronome/metronome-1f38e029c0fe7cf3f0449b195155266eea4978ea30d53b9694298aa9ed736d14.yml -openapi_spec_hash: 217e30e22539ee11e1ab6a7e1e783f8b +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/metronome/metronome-f12f505faf40d5f25d74c0b5a417e2b36c7f3f9621a0e23acd3d6ec4c615443e.yml +openapi_spec_hash: 5c1f13896608a69feebd8855703b76df config_hash: 6bd82f310398d5d47bcfeb8d7ed150b3 diff --git a/src/metronome/types/shared/contract_v2.py b/src/metronome/types/shared/contract_v2.py index c76ecd615..e117360d5 100644 --- a/src/metronome/types/shared/contract_v2.py +++ b/src/metronome/types/shared/contract_v2.py @@ -76,16 +76,11 @@ "RecurringCommitProduct", "RecurringCommitContract", "RecurringCommitInvoiceAmount", - "RecurringCommitProrationRounding", - "RecurringCommitProrationRoundingAccess", - "RecurringCommitProrationRoundingInvoice", "RecurringCredit", "RecurringCreditAccessAmount", "RecurringCreditCommitDuration", "RecurringCreditProduct", "RecurringCreditContract", - "RecurringCreditProrationRounding", - "RecurringCreditProrationRoundingAccess", "ResellerRoyalty", "ResellerRoyaltySegment", "SpendTracker", @@ -97,11 +92,9 @@ "SubscriptionBillingPeriodsNext", "SubscriptionBillingPeriodsPrevious", "SubscriptionProration", - "SubscriptionProrationRounding", "SubscriptionQuantitySchedule", "SubscriptionSubscriptionRate", "SubscriptionSubscriptionRateProduct", - "SubscriptionBillingCycleConfig", "SubscriptionSeatConfig", ] @@ -884,36 +877,6 @@ class RecurringCommitInvoiceAmount(BaseModel): unit_price: float -class RecurringCommitProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class RecurringCommitProrationRoundingInvoice(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class RecurringCommitProrationRounding(BaseModel): - """Rounding configuration for prorated recurring commit amounts.""" - - access: Optional[RecurringCommitProrationRoundingAccess] = None - - invoice: Optional[RecurringCommitProrationRoundingInvoice] = None - - class RecurringCommit(BaseModel): id: str @@ -967,9 +930,6 @@ class RecurringCommit(BaseModel): last commits). """ - proration_rounding: Optional[RecurringCommitProrationRounding] = None - """Rounding configuration for prorated recurring commit amounts.""" - recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -1025,23 +985,6 @@ class RecurringCreditContract(BaseModel): id: str -class RecurringCreditProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class RecurringCreditProrationRounding(BaseModel): - """Rounding configuration for prorated recurring credit amounts.""" - - access: Optional[RecurringCreditProrationRoundingAccess] = None - - class RecurringCredit(BaseModel): id: str @@ -1092,9 +1035,6 @@ class RecurringCredit(BaseModel): last commits). """ - proration_rounding: Optional[RecurringCreditProrationRounding] = None - """Rounding configuration for prorated recurring credit amounts.""" - recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -1213,24 +1153,11 @@ class SubscriptionBillingPeriods(BaseModel): previous: Optional[SubscriptionBillingPeriodsPrevious] = None -class SubscriptionProrationRounding(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - class SubscriptionProration(BaseModel): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] is_prorated: bool - rounding: Optional[SubscriptionProrationRounding] = None - class SubscriptionQuantitySchedule(BaseModel): quantity: float @@ -1252,17 +1179,6 @@ class SubscriptionSubscriptionRate(BaseModel): product: SubscriptionSubscriptionRateProduct -class SubscriptionBillingCycleConfig(BaseModel): - anchor_date: datetime - """The date this subscription's billing cycle is anchored to.""" - - invoice_placement: Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"] - """ - Controls whether this subscription consolidates onto usage invoices or gets its - own scheduled invoice. - """ - - class SubscriptionSeatConfig(BaseModel): seat_group_key: str """ @@ -1308,8 +1224,6 @@ class Subscription(BaseModel): id: Optional[str] = None - billing_cycle_config: Optional[SubscriptionBillingCycleConfig] = None - custom_fields: Optional[Dict[str, str]] = None """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" diff --git a/src/metronome/types/shared/contract_without_amendments.py b/src/metronome/types/shared/contract_without_amendments.py index 751d7cab5..b16406ad3 100644 --- a/src/metronome/types/shared/contract_without_amendments.py +++ b/src/metronome/types/shared/contract_without_amendments.py @@ -29,16 +29,11 @@ "RecurringCommitProduct", "RecurringCommitContract", "RecurringCommitInvoiceAmount", - "RecurringCommitProrationRounding", - "RecurringCommitProrationRoundingAccess", - "RecurringCommitProrationRoundingInvoice", "RecurringCredit", "RecurringCreditAccessAmount", "RecurringCreditCommitDuration", "RecurringCreditProduct", "RecurringCreditContract", - "RecurringCreditProrationRounding", - "RecurringCreditProrationRoundingAccess", "ResellerRoyalty", "SpendTracker", "SpendTrackerApplicableSpendSpecifier", @@ -101,38 +96,6 @@ class RecurringCommitInvoiceAmount(BaseModel): unit_price: float -class RecurringCommitProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class RecurringCommitProrationRoundingInvoice(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class RecurringCommitProrationRounding(BaseModel): - """Rounding configuration for prorated recurring commit amounts.""" - - access: Optional[RecurringCommitProrationRoundingAccess] = None - - invoice: Optional[RecurringCommitProrationRoundingInvoice] = None - - class RecurringCommit(BaseModel): id: str @@ -186,9 +149,6 @@ class RecurringCommit(BaseModel): last commits). """ - proration_rounding: Optional[RecurringCommitProrationRounding] = None - """Rounding configuration for prorated recurring commit amounts.""" - recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -244,24 +204,6 @@ class RecurringCreditContract(BaseModel): id: str -class RecurringCreditProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class RecurringCreditProrationRounding(BaseModel): - """Rounding configuration for prorated recurring credit amounts.""" - - access: Optional[RecurringCreditProrationRoundingAccess] = None - - class RecurringCredit(BaseModel): id: str @@ -312,9 +254,6 @@ class RecurringCredit(BaseModel): last commits). """ - proration_rounding: Optional[RecurringCreditProrationRounding] = None - """Rounding configuration for prorated recurring credit amounts.""" - recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. diff --git a/src/metronome/types/shared/subscription.py b/src/metronome/types/shared/subscription.py index 07bd865ab..84ab27c6d 100644 --- a/src/metronome/types/shared/subscription.py +++ b/src/metronome/types/shared/subscription.py @@ -13,11 +13,9 @@ "BillingPeriodsNext", "BillingPeriodsPrevious", "Proration", - "ProrationRounding", "QuantitySchedule", "SubscriptionRate", "SubscriptionRateProduct", - "BillingCycleConfig", "SeatConfig", ] @@ -50,25 +48,11 @@ class BillingPeriods(BaseModel): previous: Optional[BillingPeriodsPrevious] = None -class ProrationRounding(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - class Proration(BaseModel): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] is_prorated: bool - rounding: Optional[ProrationRounding] = None - class QuantitySchedule(BaseModel): quantity: float @@ -90,17 +74,6 @@ class SubscriptionRate(BaseModel): product: SubscriptionRateProduct -class BillingCycleConfig(BaseModel): - anchor_date: datetime - """The date this subscription's billing cycle is anchored to.""" - - invoice_placement: Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"] - """ - Controls whether this subscription consolidates onto usage invoices or gets its - own scheduled invoice. - """ - - class SeatConfig(BaseModel): seat_group_key: str """ @@ -146,8 +119,6 @@ class Subscription(BaseModel): id: Optional[str] = None - billing_cycle_config: Optional[BillingCycleConfig] = None - custom_fields: Optional[Dict[str, str]] = None """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" diff --git a/src/metronome/types/v1/contract_create_params.py b/src/metronome/types/v1/contract_create_params.py index 0fc6dc337..9d9354ebf 100644 --- a/src/metronome/types/v1/contract_create_params.py +++ b/src/metronome/types/v1/contract_create_params.py @@ -44,16 +44,11 @@ "RecurringCommitAccessAmount", "RecurringCommitCommitDuration", "RecurringCommitInvoiceAmount", - "RecurringCommitProrationRounding", - "RecurringCommitProrationRoundingAccess", - "RecurringCommitProrationRoundingInvoice", "RecurringCommitSubscriptionConfig", "RecurringCommitSubscriptionConfigApplySeatIncreaseConfig", "RecurringCredit", "RecurringCreditAccessAmount", "RecurringCreditCommitDuration", - "RecurringCreditProrationRounding", - "RecurringCreditProrationRoundingAccess", "RecurringCreditSubscriptionConfig", "RecurringCreditSubscriptionConfigApplySeatIncreaseConfig", "ResellerRoyalty", @@ -68,9 +63,7 @@ "SpendTrackerApplicableSpendSpecifier", "Subscription", "SubscriptionProration", - "SubscriptionProrationRounding", "SubscriptionSubscriptionRate", - "SubscriptionBillingCycleConfig", "SubscriptionSeatConfig", "Transition", "TransitionFutureInvoiceBehavior", @@ -865,38 +858,6 @@ class RecurringCommitInvoiceAmount(TypedDict, total=False): unit_price: Required[float] -class RecurringCommitProrationRoundingAccess(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - -class RecurringCommitProrationRoundingInvoice(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - -class RecurringCommitProrationRounding(TypedDict, total=False): - """Optional rounding configuration for prorated recurring commit amounts.""" - - access: RecurringCommitProrationRoundingAccess - - invoice: RecurringCommitProrationRoundingInvoice - - class RecurringCommitSubscriptionConfigApplySeatIncreaseConfig(TypedDict, total=False): is_prorated: Required[bool] """Indicates whether a mid-period seat increase should be prorated.""" @@ -968,9 +929,6 @@ class RecurringCommit(TypedDict, total=False): last commits). """ - proration_rounding: RecurringCommitProrationRounding - """Optional rounding configuration for prorated recurring commit amounts.""" - rate_type: Literal["COMMIT_RATE", "LIST_RATE"] """Whether the created commits will use the commit rate or list rate""" @@ -1033,24 +991,6 @@ class RecurringCreditCommitDuration(TypedDict, total=False): unit: Literal["PERIODS"] -class RecurringCreditProrationRoundingAccess(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - -class RecurringCreditProrationRounding(TypedDict, total=False): - """Optional rounding configuration for prorated recurring credit amounts.""" - - access: RecurringCreditProrationRoundingAccess - - class RecurringCreditSubscriptionConfigApplySeatIncreaseConfig(TypedDict, total=False): is_prorated: Required[bool] """Indicates whether a mid-period seat increase should be prorated.""" @@ -1119,9 +1059,6 @@ class RecurringCredit(TypedDict, total=False): last commits). """ - proration_rounding: RecurringCreditProrationRounding - """Optional rounding configuration for prorated recurring credit amounts.""" - rate_type: Literal["COMMIT_RATE", "LIST_RATE"] """Whether the created commits will use the commit rate or list rate""" @@ -1347,18 +1284,6 @@ class SpendTracker(TypedDict, total=False): reset_frequency: Required[Literal["BILLING_PERIOD"]] -class SubscriptionProrationRounding(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - class SubscriptionProration(TypedDict, total=False): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] """ @@ -1372,8 +1297,6 @@ class SubscriptionProration(TypedDict, total=False): is_prorated: bool """Indicates if the partial period will be prorated or charged a full amount.""" - rounding: SubscriptionProrationRounding - class SubscriptionSubscriptionRate(TypedDict, total=False): billing_frequency: Required[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] @@ -1386,20 +1309,6 @@ class SubscriptionSubscriptionRate(TypedDict, total=False): """Must be subscription type product""" -class SubscriptionBillingCycleConfig(TypedDict, total=False): - anchor_date: Annotated[Union[str, datetime], PropertyInfo(format="iso8601")] - """The date to anchor the billing cycle to. - - If omitted, defaults to the contract's usage invoice billing cycle anchor date. - """ - - invoice_placement: Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"] - """ - Controls whether this subscription consolidates onto usage invoices or gets its - own scheduled invoice. Defaults to ON_USAGE_INVOICE if omitted. - """ - - class SubscriptionSeatConfig(TypedDict, total=False): initial_seat_ids: Required[SequenceNotStr[str]] """The initial assigned seats on this subscription.""" @@ -1425,8 +1334,6 @@ class Subscription(TypedDict, total=False): subscription_rate: Required[SubscriptionSubscriptionRate] - billing_cycle_config: SubscriptionBillingCycleConfig - custom_fields: Dict[str, str] """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" diff --git a/src/metronome/types/v1/contract_create_response.py b/src/metronome/types/v1/contract_create_response.py index d193888ac..26bff00a5 100644 --- a/src/metronome/types/v1/contract_create_response.py +++ b/src/metronome/types/v1/contract_create_response.py @@ -32,16 +32,11 @@ "DataContractRecurringCommitProduct", "DataContractRecurringCommitContract", "DataContractRecurringCommitInvoiceAmount", - "DataContractRecurringCommitProrationRounding", - "DataContractRecurringCommitProrationRoundingAccess", - "DataContractRecurringCommitProrationRoundingInvoice", "DataContractRecurringCredit", "DataContractRecurringCreditAccessAmount", "DataContractRecurringCreditCommitDuration", "DataContractRecurringCreditProduct", "DataContractRecurringCreditContract", - "DataContractRecurringCreditProrationRounding", - "DataContractRecurringCreditProrationRoundingAccess", ] @@ -153,38 +148,6 @@ class DataContractRecurringCommitInvoiceAmount(BaseModel): unit_price: float -class DataContractRecurringCommitProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataContractRecurringCommitProrationRoundingInvoice(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataContractRecurringCommitProrationRounding(BaseModel): - """Rounding configuration for prorated recurring commit amounts.""" - - access: Optional[DataContractRecurringCommitProrationRoundingAccess] = None - - invoice: Optional[DataContractRecurringCommitProrationRoundingInvoice] = None - - class DataContractRecurringCommit(BaseModel): id: str @@ -238,9 +201,6 @@ class DataContractRecurringCommit(BaseModel): last commits). """ - proration_rounding: Optional[DataContractRecurringCommitProrationRounding] = None - """Rounding configuration for prorated recurring commit amounts.""" - recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -296,24 +256,6 @@ class DataContractRecurringCreditContract(BaseModel): id: str -class DataContractRecurringCreditProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataContractRecurringCreditProrationRounding(BaseModel): - """Rounding configuration for prorated recurring credit amounts.""" - - access: Optional[DataContractRecurringCreditProrationRoundingAccess] = None - - class DataContractRecurringCredit(BaseModel): id: str @@ -364,9 +306,6 @@ class DataContractRecurringCredit(BaseModel): last commits). """ - proration_rounding: Optional[DataContractRecurringCreditProrationRounding] = None - """Rounding configuration for prorated recurring credit amounts.""" - recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. diff --git a/src/metronome/types/v1/package_create_params.py b/src/metronome/types/v1/package_create_params.py index 48119dd47..4817854a9 100644 --- a/src/metronome/types/v1/package_create_params.py +++ b/src/metronome/types/v1/package_create_params.py @@ -42,9 +42,6 @@ "RecurringCommitStartingAtOffset", "RecurringCommitDuration", "RecurringCommitInvoiceAmount", - "RecurringCommitProrationRounding", - "RecurringCommitProrationRoundingAccess", - "RecurringCommitProrationRoundingInvoice", "RecurringCommitSubscriptionConfig", "RecurringCommitSubscriptionConfigApplySeatIncreaseConfig", "RecurringCredit", @@ -52,8 +49,6 @@ "RecurringCreditCommitDuration", "RecurringCreditStartingAtOffset", "RecurringCreditDuration", - "RecurringCreditProrationRounding", - "RecurringCreditProrationRoundingAccess", "RecurringCreditSubscriptionConfig", "RecurringCreditSubscriptionConfigApplySeatIncreaseConfig", "ScheduledCharge", @@ -64,9 +59,7 @@ "SpendTrackerApplicableSpendSpecifier", "Subscription", "SubscriptionProration", - "SubscriptionProrationRounding", "SubscriptionSubscriptionRate", - "SubscriptionBillingCycleConfig", "SubscriptionDuration", "SubscriptionSeatConfig", "SubscriptionStartingAtOffset", @@ -617,38 +610,6 @@ class RecurringCommitInvoiceAmount(TypedDict, total=False): unit_price: Required[float] -class RecurringCommitProrationRoundingAccess(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - -class RecurringCommitProrationRoundingInvoice(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - -class RecurringCommitProrationRounding(TypedDict, total=False): - """Optional rounding configuration for prorated recurring commit amounts.""" - - access: RecurringCommitProrationRoundingAccess - - invoice: RecurringCommitProrationRoundingInvoice - - class RecurringCommitSubscriptionConfigApplySeatIncreaseConfig(TypedDict, total=False): is_prorated: Required[bool] """Indicates whether a mid-period seat increase should be prorated.""" @@ -720,9 +681,6 @@ class RecurringCommit(TypedDict, total=False): last commits). """ - proration_rounding: RecurringCommitProrationRounding - """Optional rounding configuration for prorated recurring commit amounts.""" - rate_type: Literal["COMMIT_RATE", "LIST_RATE"] """Whether the created commits will use the commit rate or list rate""" @@ -805,24 +763,6 @@ class RecurringCreditDuration(TypedDict, total=False): value: Required[int] -class RecurringCreditProrationRoundingAccess(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - -class RecurringCreditProrationRounding(TypedDict, total=False): - """Optional rounding configuration for prorated recurring credit amounts.""" - - access: RecurringCreditProrationRoundingAccess - - class RecurringCreditSubscriptionConfigApplySeatIncreaseConfig(TypedDict, total=False): is_prorated: Required[bool] """Indicates whether a mid-period seat increase should be prorated.""" @@ -891,9 +831,6 @@ class RecurringCredit(TypedDict, total=False): last commits). """ - proration_rounding: RecurringCreditProrationRounding - """Optional rounding configuration for prorated recurring credit amounts.""" - rate_type: Literal["COMMIT_RATE", "LIST_RATE"] """Whether the created commits will use the commit rate or list rate""" @@ -999,18 +936,6 @@ class SpendTracker(TypedDict, total=False): reset_frequency: Required[Literal["BILLING_PERIOD"]] -class SubscriptionProrationRounding(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - class SubscriptionProration(TypedDict, total=False): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] """ @@ -1024,8 +949,6 @@ class SubscriptionProration(TypedDict, total=False): is_prorated: bool """Indicates if the partial period will be prorated or charged a full amount.""" - rounding: SubscriptionProrationRounding - class SubscriptionSubscriptionRate(TypedDict, total=False): billing_frequency: Required[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] @@ -1038,14 +961,6 @@ class SubscriptionSubscriptionRate(TypedDict, total=False): """Must be subscription type product""" -class SubscriptionBillingCycleConfig(TypedDict, total=False): - invoice_placement: Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"] - """Controls whether subscriptions consolidate onto usage invoices. - - Defaults to ON_USAGE_INVOICE if omitted. - """ - - class SubscriptionDuration(TypedDict, total=False): """Lifetime of the subscription from its start. @@ -1089,8 +1004,6 @@ class Subscription(TypedDict, total=False): subscription_rate: Required[SubscriptionSubscriptionRate] - billing_cycle_config: SubscriptionBillingCycleConfig - custom_fields: Dict[str, str] """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" diff --git a/src/metronome/types/v1/package_list_response.py b/src/metronome/types/v1/package_list_response.py index d22ba3653..08620fee9 100644 --- a/src/metronome/types/v1/package_list_response.py +++ b/src/metronome/types/v1/package_list_response.py @@ -49,9 +49,6 @@ "RecurringCommitStartingAtOffset", "RecurringCommitDuration", "RecurringCommitInvoiceAmount", - "RecurringCommitProrationRounding", - "RecurringCommitProrationRoundingAccess", - "RecurringCommitProrationRoundingInvoice", "RecurringCommitSubscriptionConfig", "RecurringCommitSubscriptionConfigApplySeatIncreaseConfig", "RecurringCredit", @@ -60,18 +57,14 @@ "RecurringCreditProduct", "RecurringCreditStartingAtOffset", "RecurringCreditDuration", - "RecurringCreditProrationRounding", - "RecurringCreditProrationRoundingAccess", "RecurringCreditSubscriptionConfig", "RecurringCreditSubscriptionConfigApplySeatIncreaseConfig", "SpendTracker", "SpendTrackerApplicableSpendSpecifier", "Subscription", "SubscriptionProration", - "SubscriptionProrationRounding", "SubscriptionSubscriptionRate", "SubscriptionSubscriptionRateProduct", - "SubscriptionBillingCycleConfig", "SubscriptionDuration", "SubscriptionSeatConfig", "SubscriptionStartingAtOffset", @@ -433,38 +426,6 @@ class RecurringCommitInvoiceAmount(BaseModel): unit_price: float -class RecurringCommitProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class RecurringCommitProrationRoundingInvoice(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class RecurringCommitProrationRounding(BaseModel): - """Rounding configuration for prorated recurring commit amounts.""" - - access: Optional[RecurringCommitProrationRoundingAccess] = None - - invoice: Optional[RecurringCommitProrationRoundingInvoice] = None - - class RecurringCommitSubscriptionConfigApplySeatIncreaseConfig(BaseModel): is_prorated: bool """Indicates whether a mid-period seat increase should be prorated.""" @@ -528,9 +489,6 @@ class RecurringCommit(BaseModel): last commits). """ - proration_rounding: Optional[RecurringCommitProrationRounding] = None - """Rounding configuration for prorated recurring commit amounts.""" - recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -602,24 +560,6 @@ class RecurringCreditDuration(BaseModel): value: int -class RecurringCreditProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class RecurringCreditProrationRounding(BaseModel): - """Rounding configuration for prorated recurring credit amounts.""" - - access: Optional[RecurringCreditProrationRoundingAccess] = None - - class RecurringCreditSubscriptionConfigApplySeatIncreaseConfig(BaseModel): is_prorated: bool """Indicates whether a mid-period seat increase should be prorated.""" @@ -680,9 +620,6 @@ class RecurringCredit(BaseModel): last commits). """ - proration_rounding: Optional[RecurringCreditProrationRounding] = None - """Rounding configuration for prorated recurring credit amounts.""" - recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -729,25 +666,11 @@ class SpendTracker(BaseModel): reset_frequency: Literal["BILLING_PERIOD"] -class SubscriptionProrationRounding(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - class SubscriptionProration(BaseModel): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] is_prorated: bool - rounding: Optional[SubscriptionProrationRounding] = None - class SubscriptionSubscriptionRateProduct(BaseModel): id: str @@ -761,10 +684,6 @@ class SubscriptionSubscriptionRate(BaseModel): product: SubscriptionSubscriptionRateProduct -class SubscriptionBillingCycleConfig(BaseModel): - invoice_placement: Optional[Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"]] = None - - class SubscriptionDuration(BaseModel): unit: Literal["DAYS", "WEEKS", "MONTHS", "YEARS"] @@ -798,8 +717,6 @@ class Subscription(BaseModel): id: Optional[str] = None - billing_cycle_config: Optional[SubscriptionBillingCycleConfig] = None - custom_fields: Optional[Dict[str, str]] = None """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" diff --git a/src/metronome/types/v1/package_retrieve_response.py b/src/metronome/types/v1/package_retrieve_response.py index 9b34359c3..7d73c1721 100644 --- a/src/metronome/types/v1/package_retrieve_response.py +++ b/src/metronome/types/v1/package_retrieve_response.py @@ -50,9 +50,6 @@ "DataRecurringCommitStartingAtOffset", "DataRecurringCommitDuration", "DataRecurringCommitInvoiceAmount", - "DataRecurringCommitProrationRounding", - "DataRecurringCommitProrationRoundingAccess", - "DataRecurringCommitProrationRoundingInvoice", "DataRecurringCommitSubscriptionConfig", "DataRecurringCommitSubscriptionConfigApplySeatIncreaseConfig", "DataRecurringCredit", @@ -61,18 +58,14 @@ "DataRecurringCreditProduct", "DataRecurringCreditStartingAtOffset", "DataRecurringCreditDuration", - "DataRecurringCreditProrationRounding", - "DataRecurringCreditProrationRoundingAccess", "DataRecurringCreditSubscriptionConfig", "DataRecurringCreditSubscriptionConfigApplySeatIncreaseConfig", "DataSpendTracker", "DataSpendTrackerApplicableSpendSpecifier", "DataSubscription", "DataSubscriptionProration", - "DataSubscriptionProrationRounding", "DataSubscriptionSubscriptionRate", "DataSubscriptionSubscriptionRateProduct", - "DataSubscriptionBillingCycleConfig", "DataSubscriptionDuration", "DataSubscriptionSeatConfig", "DataSubscriptionStartingAtOffset", @@ -434,38 +427,6 @@ class DataRecurringCommitInvoiceAmount(BaseModel): unit_price: float -class DataRecurringCommitProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataRecurringCommitProrationRoundingInvoice(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataRecurringCommitProrationRounding(BaseModel): - """Rounding configuration for prorated recurring commit amounts.""" - - access: Optional[DataRecurringCommitProrationRoundingAccess] = None - - invoice: Optional[DataRecurringCommitProrationRoundingInvoice] = None - - class DataRecurringCommitSubscriptionConfigApplySeatIncreaseConfig(BaseModel): is_prorated: bool """Indicates whether a mid-period seat increase should be prorated.""" @@ -529,9 +490,6 @@ class DataRecurringCommit(BaseModel): last commits). """ - proration_rounding: Optional[DataRecurringCommitProrationRounding] = None - """Rounding configuration for prorated recurring commit amounts.""" - recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -603,24 +561,6 @@ class DataRecurringCreditDuration(BaseModel): value: int -class DataRecurringCreditProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataRecurringCreditProrationRounding(BaseModel): - """Rounding configuration for prorated recurring credit amounts.""" - - access: Optional[DataRecurringCreditProrationRoundingAccess] = None - - class DataRecurringCreditSubscriptionConfigApplySeatIncreaseConfig(BaseModel): is_prorated: bool """Indicates whether a mid-period seat increase should be prorated.""" @@ -681,9 +621,6 @@ class DataRecurringCredit(BaseModel): last commits). """ - proration_rounding: Optional[DataRecurringCreditProrationRounding] = None - """Rounding configuration for prorated recurring credit amounts.""" - recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -730,25 +667,11 @@ class DataSpendTracker(BaseModel): reset_frequency: Literal["BILLING_PERIOD"] -class DataSubscriptionProrationRounding(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit. For USD, this - means rounding to the nearest dollar). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - class DataSubscriptionProration(BaseModel): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] is_prorated: bool - rounding: Optional[DataSubscriptionProrationRounding] = None - class DataSubscriptionSubscriptionRateProduct(BaseModel): id: str @@ -762,10 +685,6 @@ class DataSubscriptionSubscriptionRate(BaseModel): product: DataSubscriptionSubscriptionRateProduct -class DataSubscriptionBillingCycleConfig(BaseModel): - invoice_placement: Optional[Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"]] = None - - class DataSubscriptionDuration(BaseModel): unit: Literal["DAYS", "WEEKS", "MONTHS", "YEARS"] @@ -799,8 +718,6 @@ class DataSubscription(BaseModel): id: Optional[str] = None - billing_cycle_config: Optional[DataSubscriptionBillingCycleConfig] = None - custom_fields: Optional[Dict[str, str]] = None """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" diff --git a/src/metronome/types/v2/contract_edit_params.py b/src/metronome/types/v2/contract_edit_params.py index 19aec2bcc..caa52466e 100644 --- a/src/metronome/types/v2/contract_edit_params.py +++ b/src/metronome/types/v2/contract_edit_params.py @@ -47,16 +47,11 @@ "AddRecurringCommitAccessAmount", "AddRecurringCommitCommitDuration", "AddRecurringCommitInvoiceAmount", - "AddRecurringCommitProrationRounding", - "AddRecurringCommitProrationRoundingAccess", - "AddRecurringCommitProrationRoundingInvoice", "AddRecurringCommitSubscriptionConfig", "AddRecurringCommitSubscriptionConfigApplySeatIncreaseConfig", "AddRecurringCredit", "AddRecurringCreditAccessAmount", "AddRecurringCreditCommitDuration", - "AddRecurringCreditProrationRounding", - "AddRecurringCreditProrationRoundingAccess", "AddRecurringCreditSubscriptionConfig", "AddRecurringCreditSubscriptionConfigApplySeatIncreaseConfig", "AddResellerRoyalty", @@ -73,9 +68,7 @@ "AddSpendTrackerApplicableSpendSpecifier", "AddSubscription", "AddSubscriptionProration", - "AddSubscriptionProrationRounding", "AddSubscriptionSubscriptionRate", - "AddSubscriptionBillingCycleConfig", "AddSubscriptionSeatConfig", "ArchiveCommit", "ArchiveCredit", @@ -105,13 +98,8 @@ "UpdateRecurringCommit", "UpdateRecurringCommitAccessAmount", "UpdateRecurringCommitInvoiceAmount", - "UpdateRecurringCommitProrationRounding", - "UpdateRecurringCommitProrationRoundingAccess", - "UpdateRecurringCommitProrationRoundingInvoice", "UpdateRecurringCredit", "UpdateRecurringCreditAccessAmount", - "UpdateRecurringCreditProrationRounding", - "UpdateRecurringCreditProrationRoundingAccess", "UpdateScheduledCharge", "UpdateScheduledChargeInvoiceSchedule", "UpdateScheduledChargeInvoiceScheduleAddScheduleItem", @@ -121,7 +109,6 @@ "UpdateSpendThresholdConfigurationDiscountConfiguration", "UpdateSpendThresholdConfigurationDiscountConfigurationCap", "UpdateSubscription", - "UpdateSubscriptionProrationRounding", "UpdateSubscriptionQuantityManagementModeUpdate", "UpdateSubscriptionQuantityManagementModeUpdateSeatConfig", "UpdateSubscriptionQuantityUpdate", @@ -956,36 +943,6 @@ class AddRecurringCommitInvoiceAmount(TypedDict, total=False): unit_price: Required[float] -class AddRecurringCommitProrationRoundingAccess(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - -class AddRecurringCommitProrationRoundingInvoice(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - -class AddRecurringCommitProrationRounding(TypedDict, total=False): - """Optional rounding configuration for prorated recurring commit amounts.""" - - access: AddRecurringCommitProrationRoundingAccess - - invoice: AddRecurringCommitProrationRoundingInvoice - - class AddRecurringCommitSubscriptionConfigApplySeatIncreaseConfig(TypedDict, total=False): is_prorated: Required[bool] """Indicates whether a mid-period seat increase should be prorated.""" @@ -1057,9 +1014,6 @@ class AddRecurringCommit(TypedDict, total=False): last commits). """ - proration_rounding: AddRecurringCommitProrationRounding - """Optional rounding configuration for prorated recurring commit amounts.""" - rate_type: Literal["COMMIT_RATE", "LIST_RATE"] """Whether the created commits will use the commit rate or list rate""" @@ -1124,23 +1078,6 @@ class AddRecurringCreditCommitDuration(TypedDict, total=False): unit: Literal["PERIODS"] -class AddRecurringCreditProrationRoundingAccess(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - -class AddRecurringCreditProrationRounding(TypedDict, total=False): - """Optional rounding configuration for prorated recurring credit amounts.""" - - access: AddRecurringCreditProrationRoundingAccess - - class AddRecurringCreditSubscriptionConfigApplySeatIncreaseConfig(TypedDict, total=False): is_prorated: Required[bool] """Indicates whether a mid-period seat increase should be prorated.""" @@ -1209,9 +1146,6 @@ class AddRecurringCredit(TypedDict, total=False): last commits). """ - proration_rounding: AddRecurringCreditProrationRounding - """Optional rounding configuration for prorated recurring credit amounts.""" - rate_type: Literal["COMMIT_RATE", "LIST_RATE"] """Whether the created commits will use the commit rate or list rate""" @@ -1439,17 +1373,6 @@ class AddSpendTracker(TypedDict, total=False): reset_frequency: Required[Literal["BILLING_PERIOD"]] -class AddSubscriptionProrationRounding(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - class AddSubscriptionProration(TypedDict, total=False): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] """ @@ -1463,8 +1386,6 @@ class AddSubscriptionProration(TypedDict, total=False): is_prorated: bool """Indicates if the partial period will be prorated or charged a full amount.""" - rounding: AddSubscriptionProrationRounding - class AddSubscriptionSubscriptionRate(TypedDict, total=False): billing_frequency: Required[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] @@ -1477,20 +1398,6 @@ class AddSubscriptionSubscriptionRate(TypedDict, total=False): """Must be subscription type product""" -class AddSubscriptionBillingCycleConfig(TypedDict, total=False): - anchor_date: Annotated[Union[str, datetime], PropertyInfo(format="iso8601")] - """The date to anchor the billing cycle to. - - If omitted, defaults to the contract's usage invoice billing cycle anchor date. - """ - - invoice_placement: Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"] - """ - Controls whether this subscription consolidates onto usage invoices or gets its - own scheduled invoice. Defaults to ON_USAGE_INVOICE if omitted. - """ - - class AddSubscriptionSeatConfig(TypedDict, total=False): initial_seat_ids: Required[SequenceNotStr[str]] """The initial assigned seats on this subscription.""" @@ -1516,8 +1423,6 @@ class AddSubscription(TypedDict, total=False): subscription_rate: Required[AddSubscriptionSubscriptionRate] - billing_cycle_config: AddSubscriptionBillingCycleConfig - custom_fields: Dict[str, str] """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" @@ -1877,39 +1782,6 @@ class UpdateRecurringCommitInvoiceAmount(TypedDict, total=False): unit_price: float -class UpdateRecurringCommitProrationRoundingAccess(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - -class UpdateRecurringCommitProrationRoundingInvoice(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - -class UpdateRecurringCommitProrationRounding(TypedDict, total=False): - """If provided, updates the rounding config on the recurring commit. - - Set to null to clear rounding. Omit to leave unchanged. - """ - - access: Optional[UpdateRecurringCommitProrationRoundingAccess] - - invoice: Optional[UpdateRecurringCommitProrationRoundingInvoice] - - class UpdateRecurringCommit(TypedDict, total=False): recurring_commit_id: Required[str] @@ -1919,12 +1791,6 @@ class UpdateRecurringCommit(TypedDict, total=False): invoice_amount: UpdateRecurringCommitInvoiceAmount - proration_rounding: Optional[UpdateRecurringCommitProrationRounding] - """If provided, updates the rounding config on the recurring commit. - - Set to null to clear rounding. Omit to leave unchanged. - """ - rate_type: Literal["LIST_RATE", "COMMIT_RATE"] """ If provided, updates the recurring commit to use the specified rate type when @@ -1938,26 +1804,6 @@ class UpdateRecurringCreditAccessAmount(TypedDict, total=False): unit_price: float -class UpdateRecurringCreditProrationRoundingAccess(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - -class UpdateRecurringCreditProrationRounding(TypedDict, total=False): - """If provided, updates the rounding config on the recurring credit. - - Set to null to clear rounding. Omit to leave unchanged. - """ - - access: Optional[UpdateRecurringCreditProrationRoundingAccess] - - class UpdateRecurringCredit(TypedDict, total=False): recurring_credit_id: Required[str] @@ -1965,12 +1811,6 @@ class UpdateRecurringCredit(TypedDict, total=False): ending_before: Annotated[Union[str, datetime, None], PropertyInfo(format="iso8601")] - proration_rounding: Optional[UpdateRecurringCreditProrationRounding] - """If provided, updates the rounding config on the recurring credit. - - Set to null to clear rounding. Omit to leave unchanged. - """ - rate_type: Literal["LIST_RATE", "COMMIT_RATE"] """ If provided, updates the recurring credit to use the specified rate type when @@ -2064,17 +1904,6 @@ class UpdateSpendThresholdConfiguration(TypedDict, total=False): """ -class UpdateSubscriptionProrationRounding(TypedDict, total=False): - decimal_places: Required[float] - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Required[Literal["HALF_UP", "FLOOR", "CEILING"]] - - class UpdateSubscriptionQuantityManagementModeUpdateSeatConfig(TypedDict, total=False): seat_group_key: Required[str] @@ -2178,8 +2007,6 @@ class UpdateSubscription(TypedDict, total=False): ending_before: Annotated[Union[str, datetime, None], PropertyInfo(format="iso8601")] - proration_rounding: Optional[UpdateSubscriptionProrationRounding] - quantity_management_mode_update: UpdateSubscriptionQuantityManagementModeUpdate """ Update the subscription's quantity management mode from QUANTITY_ONLY to diff --git a/src/metronome/types/v2/contract_edit_response.py b/src/metronome/types/v2/contract_edit_response.py index 23918ae30..843ed332f 100644 --- a/src/metronome/types/v2/contract_edit_response.py +++ b/src/metronome/types/v2/contract_edit_response.py @@ -41,16 +41,11 @@ "DataEditAddRecurringCommitProduct", "DataEditAddRecurringCommitContract", "DataEditAddRecurringCommitInvoiceAmount", - "DataEditAddRecurringCommitProrationRounding", - "DataEditAddRecurringCommitProrationRoundingAccess", - "DataEditAddRecurringCommitProrationRoundingInvoice", "DataEditAddRecurringCredit", "DataEditAddRecurringCreditAccessAmount", "DataEditAddRecurringCreditCommitDuration", "DataEditAddRecurringCreditProduct", "DataEditAddRecurringCreditContract", - "DataEditAddRecurringCreditProrationRounding", - "DataEditAddRecurringCreditProrationRoundingAccess", "DataEditAddResellerRoyalty", "DataEditAddScheduledCharge", "DataEditAddScheduledChargeProduct", @@ -60,11 +55,9 @@ "DataEditAddSubscriptionBillingPeriodsNext", "DataEditAddSubscriptionBillingPeriodsPrevious", "DataEditAddSubscriptionProration", - "DataEditAddSubscriptionProrationRounding", "DataEditAddSubscriptionQuantitySchedule", "DataEditAddSubscriptionSubscriptionRate", "DataEditAddSubscriptionSubscriptionRateProduct", - "DataEditAddSubscriptionBillingCycleConfig", "DataEditAddSubscriptionSeatConfig", "DataEditAddUsageFilter", "DataEditArchiveCommit", @@ -99,13 +92,8 @@ "DataEditUpdateRecurringCommit", "DataEditUpdateRecurringCommitAccessAmount", "DataEditUpdateRecurringCommitInvoiceAmount", - "DataEditUpdateRecurringCommitProrationRounding", - "DataEditUpdateRecurringCommitProrationRoundingAccess", - "DataEditUpdateRecurringCommitProrationRoundingInvoice", "DataEditUpdateRecurringCredit", "DataEditUpdateRecurringCreditAccessAmount", - "DataEditUpdateRecurringCreditProrationRounding", - "DataEditUpdateRecurringCreditProrationRoundingAccess", "DataEditUpdateRefundInvoice", "DataEditUpdateScheduledCharge", "DataEditUpdateScheduledChargeInvoiceSchedule", @@ -387,36 +375,6 @@ class DataEditAddRecurringCommitInvoiceAmount(BaseModel): unit_price: float -class DataEditAddRecurringCommitProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataEditAddRecurringCommitProrationRoundingInvoice(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataEditAddRecurringCommitProrationRounding(BaseModel): - """Rounding configuration for prorated recurring commit amounts.""" - - access: Optional[DataEditAddRecurringCommitProrationRoundingAccess] = None - - invoice: Optional[DataEditAddRecurringCommitProrationRoundingInvoice] = None - - class DataEditAddRecurringCommit(BaseModel): id: str @@ -470,9 +428,6 @@ class DataEditAddRecurringCommit(BaseModel): last commits). """ - proration_rounding: Optional[DataEditAddRecurringCommitProrationRounding] = None - """Rounding configuration for prorated recurring commit amounts.""" - recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -528,23 +483,6 @@ class DataEditAddRecurringCreditContract(BaseModel): id: str -class DataEditAddRecurringCreditProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataEditAddRecurringCreditProrationRounding(BaseModel): - """Rounding configuration for prorated recurring credit amounts.""" - - access: Optional[DataEditAddRecurringCreditProrationRoundingAccess] = None - - class DataEditAddRecurringCredit(BaseModel): id: str @@ -595,9 +533,6 @@ class DataEditAddRecurringCredit(BaseModel): last commits). """ - proration_rounding: Optional[DataEditAddRecurringCreditProrationRounding] = None - """Rounding configuration for prorated recurring credit amounts.""" - recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -701,24 +636,11 @@ class DataEditAddSubscriptionBillingPeriods(BaseModel): previous: Optional[DataEditAddSubscriptionBillingPeriodsPrevious] = None -class DataEditAddSubscriptionProrationRounding(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - class DataEditAddSubscriptionProration(BaseModel): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] is_prorated: bool - rounding: Optional[DataEditAddSubscriptionProrationRounding] = None - class DataEditAddSubscriptionQuantitySchedule(BaseModel): quantity: float @@ -740,17 +662,6 @@ class DataEditAddSubscriptionSubscriptionRate(BaseModel): product: DataEditAddSubscriptionSubscriptionRateProduct -class DataEditAddSubscriptionBillingCycleConfig(BaseModel): - anchor_date: datetime - """The date this subscription's billing cycle is anchored to.""" - - invoice_placement: Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"] - """ - Controls whether this subscription consolidates onto usage invoices or gets its - own scheduled invoice. - """ - - class DataEditAddSubscriptionSeatConfig(BaseModel): seat_group_key: str """ @@ -796,8 +707,6 @@ class DataEditAddSubscription(BaseModel): id: Optional[str] = None - billing_cycle_config: Optional[DataEditAddSubscriptionBillingCycleConfig] = None - custom_fields: Optional[Dict[str, str]] = None """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" @@ -1269,36 +1178,6 @@ class DataEditUpdateRecurringCommitInvoiceAmount(BaseModel): unit_price: Optional[float] = None -class DataEditUpdateRecurringCommitProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataEditUpdateRecurringCommitProrationRoundingInvoice(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataEditUpdateRecurringCommitProrationRounding(BaseModel): - """Rounding configuration for prorated recurring commit amounts.""" - - access: Optional[DataEditUpdateRecurringCommitProrationRoundingAccess] = None - - invoice: Optional[DataEditUpdateRecurringCommitProrationRoundingInvoice] = None - - class DataEditUpdateRecurringCommit(BaseModel): id: str @@ -1308,9 +1187,6 @@ class DataEditUpdateRecurringCommit(BaseModel): invoice_amount: Optional[DataEditUpdateRecurringCommitInvoiceAmount] = None - proration_rounding: Optional[DataEditUpdateRecurringCommitProrationRounding] = None - """Rounding configuration for prorated recurring commit amounts.""" - rate_type: Optional[Literal["LIST_RATE", "COMMIT_RATE"]] = None @@ -1320,23 +1196,6 @@ class DataEditUpdateRecurringCreditAccessAmount(BaseModel): unit_price: Optional[float] = None -class DataEditUpdateRecurringCreditProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataEditUpdateRecurringCreditProrationRounding(BaseModel): - """Rounding configuration for prorated recurring credit amounts.""" - - access: Optional[DataEditUpdateRecurringCreditProrationRoundingAccess] = None - - class DataEditUpdateRecurringCredit(BaseModel): id: str @@ -1344,9 +1203,6 @@ class DataEditUpdateRecurringCredit(BaseModel): ending_before: Optional[datetime] = None - proration_rounding: Optional[DataEditUpdateRecurringCreditProrationRounding] = None - """Rounding configuration for prorated recurring credit amounts.""" - rate_type: Optional[Literal["LIST_RATE", "COMMIT_RATE"]] = None diff --git a/src/metronome/types/v2/contract_get_edit_history_response.py b/src/metronome/types/v2/contract_get_edit_history_response.py index 04d4c0481..a2f598079 100644 --- a/src/metronome/types/v2/contract_get_edit_history_response.py +++ b/src/metronome/types/v2/contract_get_edit_history_response.py @@ -40,16 +40,11 @@ "DataAddRecurringCommitProduct", "DataAddRecurringCommitContract", "DataAddRecurringCommitInvoiceAmount", - "DataAddRecurringCommitProrationRounding", - "DataAddRecurringCommitProrationRoundingAccess", - "DataAddRecurringCommitProrationRoundingInvoice", "DataAddRecurringCredit", "DataAddRecurringCreditAccessAmount", "DataAddRecurringCreditCommitDuration", "DataAddRecurringCreditProduct", "DataAddRecurringCreditContract", - "DataAddRecurringCreditProrationRounding", - "DataAddRecurringCreditProrationRoundingAccess", "DataAddResellerRoyalty", "DataAddScheduledCharge", "DataAddScheduledChargeProduct", @@ -59,11 +54,9 @@ "DataAddSubscriptionBillingPeriodsNext", "DataAddSubscriptionBillingPeriodsPrevious", "DataAddSubscriptionProration", - "DataAddSubscriptionProrationRounding", "DataAddSubscriptionQuantitySchedule", "DataAddSubscriptionSubscriptionRate", "DataAddSubscriptionSubscriptionRateProduct", - "DataAddSubscriptionBillingCycleConfig", "DataAddSubscriptionSeatConfig", "DataAddUsageFilter", "DataArchiveCommit", @@ -98,13 +91,8 @@ "DataUpdateRecurringCommit", "DataUpdateRecurringCommitAccessAmount", "DataUpdateRecurringCommitInvoiceAmount", - "DataUpdateRecurringCommitProrationRounding", - "DataUpdateRecurringCommitProrationRoundingAccess", - "DataUpdateRecurringCommitProrationRoundingInvoice", "DataUpdateRecurringCredit", "DataUpdateRecurringCreditAccessAmount", - "DataUpdateRecurringCreditProrationRounding", - "DataUpdateRecurringCreditProrationRoundingAccess", "DataUpdateRefundInvoice", "DataUpdateScheduledCharge", "DataUpdateScheduledChargeInvoiceSchedule", @@ -386,36 +374,6 @@ class DataAddRecurringCommitInvoiceAmount(BaseModel): unit_price: float -class DataAddRecurringCommitProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataAddRecurringCommitProrationRoundingInvoice(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataAddRecurringCommitProrationRounding(BaseModel): - """Rounding configuration for prorated recurring commit amounts.""" - - access: Optional[DataAddRecurringCommitProrationRoundingAccess] = None - - invoice: Optional[DataAddRecurringCommitProrationRoundingInvoice] = None - - class DataAddRecurringCommit(BaseModel): id: str @@ -469,9 +427,6 @@ class DataAddRecurringCommit(BaseModel): last commits). """ - proration_rounding: Optional[DataAddRecurringCommitProrationRounding] = None - """Rounding configuration for prorated recurring commit amounts.""" - recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -527,23 +482,6 @@ class DataAddRecurringCreditContract(BaseModel): id: str -class DataAddRecurringCreditProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataAddRecurringCreditProrationRounding(BaseModel): - """Rounding configuration for prorated recurring credit amounts.""" - - access: Optional[DataAddRecurringCreditProrationRoundingAccess] = None - - class DataAddRecurringCredit(BaseModel): id: str @@ -594,9 +532,6 @@ class DataAddRecurringCredit(BaseModel): last commits). """ - proration_rounding: Optional[DataAddRecurringCreditProrationRounding] = None - """Rounding configuration for prorated recurring credit amounts.""" - recurrence_frequency: Optional[Literal["MONTHLY", "QUARTERLY", "ANNUAL", "WEEKLY"]] = None """The frequency at which the recurring commits will be created. @@ -700,24 +635,11 @@ class DataAddSubscriptionBillingPeriods(BaseModel): previous: Optional[DataAddSubscriptionBillingPeriodsPrevious] = None -class DataAddSubscriptionProrationRounding(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - class DataAddSubscriptionProration(BaseModel): invoice_behavior: Literal["BILL_IMMEDIATELY", "BILL_ON_NEXT_COLLECTION_DATE"] is_prorated: bool - rounding: Optional[DataAddSubscriptionProrationRounding] = None - class DataAddSubscriptionQuantitySchedule(BaseModel): quantity: float @@ -739,17 +661,6 @@ class DataAddSubscriptionSubscriptionRate(BaseModel): product: DataAddSubscriptionSubscriptionRateProduct -class DataAddSubscriptionBillingCycleConfig(BaseModel): - anchor_date: datetime - """The date this subscription's billing cycle is anchored to.""" - - invoice_placement: Literal["ON_SCHEDULED_INVOICE", "ON_USAGE_INVOICE"] - """ - Controls whether this subscription consolidates onto usage invoices or gets its - own scheduled invoice. - """ - - class DataAddSubscriptionSeatConfig(BaseModel): seat_group_key: str """ @@ -795,8 +706,6 @@ class DataAddSubscription(BaseModel): id: Optional[str] = None - billing_cycle_config: Optional[DataAddSubscriptionBillingCycleConfig] = None - custom_fields: Optional[Dict[str, str]] = None """Custom fields to be added eg. { "key1": "value1", "key2": "value2" }""" @@ -1268,36 +1177,6 @@ class DataUpdateRecurringCommitInvoiceAmount(BaseModel): unit_price: Optional[float] = None -class DataUpdateRecurringCommitProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataUpdateRecurringCommitProrationRoundingInvoice(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataUpdateRecurringCommitProrationRounding(BaseModel): - """Rounding configuration for prorated recurring commit amounts.""" - - access: Optional[DataUpdateRecurringCommitProrationRoundingAccess] = None - - invoice: Optional[DataUpdateRecurringCommitProrationRoundingInvoice] = None - - class DataUpdateRecurringCommit(BaseModel): id: str @@ -1307,9 +1186,6 @@ class DataUpdateRecurringCommit(BaseModel): invoice_amount: Optional[DataUpdateRecurringCommitInvoiceAmount] = None - proration_rounding: Optional[DataUpdateRecurringCommitProrationRounding] = None - """Rounding configuration for prorated recurring commit amounts.""" - rate_type: Optional[Literal["LIST_RATE", "COMMIT_RATE"]] = None @@ -1319,23 +1195,6 @@ class DataUpdateRecurringCreditAccessAmount(BaseModel): unit_price: Optional[float] = None -class DataUpdateRecurringCreditProrationRoundingAccess(BaseModel): - decimal_places: float - """Number of decimal places to round to. - - Applied directly to the stored monetary representation. Negative values round to - powers of 10 (e.g., -2 rounds to nearest 100 in the stored unit). - """ - - rounding_method: Literal["HALF_UP", "FLOOR", "CEILING"] - - -class DataUpdateRecurringCreditProrationRounding(BaseModel): - """Rounding configuration for prorated recurring credit amounts.""" - - access: Optional[DataUpdateRecurringCreditProrationRoundingAccess] = None - - class DataUpdateRecurringCredit(BaseModel): id: str @@ -1343,9 +1202,6 @@ class DataUpdateRecurringCredit(BaseModel): ending_before: Optional[datetime] = None - proration_rounding: Optional[DataUpdateRecurringCreditProrationRounding] = None - """Rounding configuration for prorated recurring credit amounts.""" - rate_type: Optional[Literal["LIST_RATE", "COMMIT_RATE"]] = None diff --git a/tests/api_resources/v1/test_contracts.py b/tests/api_resources/v1/test_contracts.py index ed963be63..11ae3f1c5 100644 --- a/tests/api_resources/v1/test_contracts.py +++ b/tests/api_resources/v1/test_contracts.py @@ -329,16 +329,6 @@ def test_method_create_with_all_params(self, client: Metronome) -> None: "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - "invoice": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -380,12 +370,6 @@ def test_method_create_with_all_params(self, client: Metronome) -> None: "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - } - }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -511,19 +495,11 @@ def test_method_create_with_all_params(self, client: Metronome) -> None: "proration": { "invoice_behavior": "BILL_IMMEDIATELY", "is_prorated": True, - "rounding": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, }, "subscription_rate": { "billing_frequency": "MONTHLY", "product_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", }, - "billing_cycle_config": { - "anchor_date": parse_datetime("2019-12-27T18:11:19.117Z"), - "invoice_placement": "ON_SCHEDULED_INVOICE", - }, "custom_fields": {"foo": "string"}, "description": "description", "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), @@ -1823,16 +1799,6 @@ async def test_method_create_with_all_params(self, async_client: AsyncMetronome) "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - "invoice": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -1874,12 +1840,6 @@ async def test_method_create_with_all_params(self, async_client: AsyncMetronome) "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - } - }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -2005,19 +1965,11 @@ async def test_method_create_with_all_params(self, async_client: AsyncMetronome) "proration": { "invoice_behavior": "BILL_IMMEDIATELY", "is_prorated": True, - "rounding": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, }, "subscription_rate": { "billing_frequency": "MONTHLY", "product_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", }, - "billing_cycle_config": { - "anchor_date": parse_datetime("2019-12-27T18:11:19.117Z"), - "invoice_placement": "ON_SCHEDULED_INVOICE", - }, "custom_fields": {"foo": "string"}, "description": "description", "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), diff --git a/tests/api_resources/v1/test_packages.py b/tests/api_resources/v1/test_packages.py index a3959eed4..b78c6ed4d 100644 --- a/tests/api_resources/v1/test_packages.py +++ b/tests/api_resources/v1/test_packages.py @@ -279,16 +279,6 @@ def test_method_create_with_all_params(self, client: Metronome) -> None: }, "name": "x", "proration": "NONE", - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - "invoice": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -334,12 +324,6 @@ def test_method_create_with_all_params(self, client: Metronome) -> None: }, "name": "x", "proration": "NONE", - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - } - }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -429,16 +413,11 @@ def test_method_create_with_all_params(self, client: Metronome) -> None: "proration": { "invoice_behavior": "BILL_IMMEDIATELY", "is_prorated": True, - "rounding": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, }, "subscription_rate": { "billing_frequency": "MONTHLY", "product_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", }, - "billing_cycle_config": {"invoice_placement": "ON_SCHEDULED_INVOICE"}, "custom_fields": {"foo": "string"}, "description": "description", "duration": { @@ -894,16 +873,6 @@ async def test_method_create_with_all_params(self, async_client: AsyncMetronome) }, "name": "x", "proration": "NONE", - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - "invoice": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -949,12 +918,6 @@ async def test_method_create_with_all_params(self, async_client: AsyncMetronome) }, "name": "x", "proration": "NONE", - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - } - }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -1044,16 +1007,11 @@ async def test_method_create_with_all_params(self, async_client: AsyncMetronome) "proration": { "invoice_behavior": "BILL_IMMEDIATELY", "is_prorated": True, - "rounding": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, }, "subscription_rate": { "billing_frequency": "MONTHLY", "product_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", }, - "billing_cycle_config": {"invoice_placement": "ON_SCHEDULED_INVOICE"}, "custom_fields": {"foo": "string"}, "description": "description", "duration": { diff --git a/tests/api_resources/v2/test_contracts.py b/tests/api_resources/v2/test_contracts.py index db9e8d75c..96cc07cdb 100644 --- a/tests/api_resources/v2/test_contracts.py +++ b/tests/api_resources/v2/test_contracts.py @@ -406,16 +406,6 @@ def test_method_edit_with_all_params(self, client: Metronome) -> None: "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - "invoice": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -457,12 +447,6 @@ def test_method_edit_with_all_params(self, client: Metronome) -> None: "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - } - }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -589,19 +573,11 @@ def test_method_edit_with_all_params(self, client: Metronome) -> None: "proration": { "invoice_behavior": "BILL_IMMEDIATELY", "is_prorated": True, - "rounding": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, }, "subscription_rate": { "billing_frequency": "MONTHLY", "product_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", }, - "billing_cycle_config": { - "anchor_date": parse_datetime("2019-12-27T18:11:19.117Z"), - "invoice_placement": "ON_SCHEDULED_INVOICE", - }, "custom_fields": {"foo": "string"}, "description": "description", "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), @@ -781,16 +757,6 @@ def test_method_edit_with_all_params(self, client: Metronome) -> None: "quantity": 0, "unit_price": 0, }, - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - "invoice": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - }, "rate_type": "LIST_RATE", } ], @@ -802,12 +768,6 @@ def test_method_edit_with_all_params(self, client: Metronome) -> None: "unit_price": 0, }, "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - } - }, "rate_type": "LIST_RATE", } ], @@ -870,10 +830,6 @@ def test_method_edit_with_all_params(self, client: Metronome) -> None: { "subscription_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), - "proration_rounding": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, "quantity_management_mode_update": { "quantity_management_mode": "SEAT_BASED", "seat_config": {"seat_group_key": "seat_group_key"}, @@ -1536,16 +1492,6 @@ async def test_method_edit_with_all_params(self, async_client: AsyncMetronome) - "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - "invoice": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -1587,12 +1533,6 @@ async def test_method_edit_with_all_params(self, async_client: AsyncMetronome) - "name": "x", "netsuite_sales_order_id": "netsuite_sales_order_id", "proration": "NONE", - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - } - }, "rate_type": "COMMIT_RATE", "recurrence_frequency": "MONTHLY", "rollover_fraction": 0, @@ -1719,19 +1659,11 @@ async def test_method_edit_with_all_params(self, async_client: AsyncMetronome) - "proration": { "invoice_behavior": "BILL_IMMEDIATELY", "is_prorated": True, - "rounding": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, }, "subscription_rate": { "billing_frequency": "MONTHLY", "product_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", }, - "billing_cycle_config": { - "anchor_date": parse_datetime("2019-12-27T18:11:19.117Z"), - "invoice_placement": "ON_SCHEDULED_INVOICE", - }, "custom_fields": {"foo": "string"}, "description": "description", "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), @@ -1911,16 +1843,6 @@ async def test_method_edit_with_all_params(self, async_client: AsyncMetronome) - "quantity": 0, "unit_price": 0, }, - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - "invoice": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, - }, "rate_type": "LIST_RATE", } ], @@ -1932,12 +1854,6 @@ async def test_method_edit_with_all_params(self, async_client: AsyncMetronome) - "unit_price": 0, }, "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), - "proration_rounding": { - "access": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - } - }, "rate_type": "LIST_RATE", } ], @@ -2000,10 +1916,6 @@ async def test_method_edit_with_all_params(self, async_client: AsyncMetronome) - { "subscription_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "ending_before": parse_datetime("2019-12-27T18:11:19.117Z"), - "proration_rounding": { - "decimal_places": -5, - "rounding_method": "HALF_UP", - }, "quantity_management_mode_update": { "quantity_management_mode": "SEAT_BASED", "seat_config": {"seat_group_key": "seat_group_key"}, From fe41ed90abd5969740daab5f63a19d294cec9b6f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 01:17:12 +0000 Subject: [PATCH 3/3] release: 4.8.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 9 +++++++++ pyproject.toml | 2 +- src/metronome/_version.py | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 1eec10e9f..90eeef65d 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "4.7.0" + ".": "4.8.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index b8f55dd10..fbd71794a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 4.8.0 (2026-06-04) + +Full Changelog: [v4.7.0...v4.8.0](https://github.com/Metronome-Industries/metronome-python/compare/v4.7.0...v4.8.0) + +### Features + +* [🪿] Remove `allow-subscriptions-custom-billing-anchor` feature flag ([6a6aa17](https://github.com/Metronome-Industries/metronome-python/commit/6a6aa17cb52535dcba439c801da5a0d6b40a5eaa)) +* Revert "[pgs] Remove `allow-subscriptions-custom-billing-anchor` and proration rounding feature flags" ([5b5b50c](https://github.com/Metronome-Industries/metronome-python/commit/5b5b50c35e05783bc7ec21cdfc35dc55ef7df98a)) + ## 4.7.0 (2026-05-29) Full Changelog: [v4.6.0...v4.7.0](https://github.com/Metronome-Industries/metronome-python/compare/v4.6.0...v4.7.0) diff --git a/pyproject.toml b/pyproject.toml index 1b6a2d3b0..a6b3ce3c3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "metronome-sdk" -version = "4.7.0" +version = "4.8.0" description = "The official Python library for the metronome API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/metronome/_version.py b/src/metronome/_version.py index befc4d1fa..4ea3f8a9b 100644 --- a/src/metronome/_version.py +++ b/src/metronome/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "metronome" -__version__ = "4.7.0" # x-release-please-version +__version__ = "4.8.0" # x-release-please-version