From 552b557fb147bf7d6278115a1ad466e64e104063 Mon Sep 17 00:00:00 2001 From: Brendan Hy Date: Tue, 21 Apr 2026 11:55:03 -0700 Subject: [PATCH 1/3] fix(billing-platform): Replace reserved_rate with reserved_pricing --- .../billing/v1/common/v1/pricing_tier.proto | 9 +++++++++ .../billing/v1/services/package/v1/package.proto | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/proto/sentry_protos/billing/v1/common/v1/pricing_tier.proto b/proto/sentry_protos/billing/v1/common/v1/pricing_tier.proto index ba6e60ac..ca997288 100644 --- a/proto/sentry_protos/billing/v1/common/v1/pricing_tier.proto +++ b/proto/sentry_protos/billing/v1/common/v1/pricing_tier.proto @@ -11,3 +11,12 @@ message PricingTier { message TieredPricingRate { repeated PricingTier tiers = 1; } + +message FixedPricingTier { + int64 value = 1; + uint64 base_price_cents = 2; +} + +message FixedTierList { + repeated FixedPricingTier tiers = 1; +} diff --git a/proto/sentry_protos/billing/v1/services/package/v1/package.proto b/proto/sentry_protos/billing/v1/services/package/v1/package.proto index 9a2a7701..9f911249 100644 --- a/proto/sentry_protos/billing/v1/services/package/v1/package.proto +++ b/proto/sentry_protos/billing/v1/services/package/v1/package.proto @@ -10,6 +10,7 @@ message LineItemConfig { // Base price for the line item (upgraded reserved volumes or add-on activation fees) uint64 base_price_cents = 1; sentry_protos.billing.v1.common.v1.TieredPricingRate payg_rate = 3; + //DEPRECATED: use reserved_pricing instead sentry_protos.billing.v1.common.v1.TieredPricingRate reserved_rate = 4; // for reserved budget line items // how many of this lineitem are included in the package, the customer can reserve more on their contract @@ -19,6 +20,11 @@ message LineItemConfig { } sentry_protos.billing.v1.common.v1.LineItemDetails line_item = 7; + + oneof reserved_pricing { + sentry_protos.billing.v1.common.v1.TieredPricingRate reserved_pricing_rate = 8; + sentry_protos.billing.v1.common.v1.FixedTierList reserved_tiers = 8; + } } // Represents a budget included in a package that is collectively used by one or more line items, From 6b31eef3bbf617c0d78bd7ff6555d5b078137eeb Mon Sep 17 00:00:00 2001 From: Brendan Hy Date: Tue, 21 Apr 2026 12:03:47 -0700 Subject: [PATCH 2/3] fix --- .../billing/v1/services/package/v1/package.proto | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/proto/sentry_protos/billing/v1/services/package/v1/package.proto b/proto/sentry_protos/billing/v1/services/package/v1/package.proto index 9f911249..b8d8d61b 100644 --- a/proto/sentry_protos/billing/v1/services/package/v1/package.proto +++ b/proto/sentry_protos/billing/v1/services/package/v1/package.proto @@ -22,8 +22,10 @@ message LineItemConfig { sentry_protos.billing.v1.common.v1.LineItemDetails line_item = 7; oneof reserved_pricing { + // Used to calculate spend against reserved_pool_cents for shared line items sentry_protos.billing.v1.common.v1.TieredPricingRate reserved_pricing_rate = 8; - sentry_protos.billing.v1.common.v1.FixedTierList reserved_tiers = 8; + // Used to determine prices for distinct reserved tiers (ie 100K errors is $X / month) + sentry_protos.billing.v1.common.v1.FixedTierList reserved_tiers = 9; } } From aa376200f0d7fc38fe4769e114da902c22a88bc4 Mon Sep 17 00:00:00 2001 From: "getsantry[bot]" <66042841+getsantry[bot]@users.noreply.github.com> Date: Tue, 21 Apr 2026 19:04:35 +0000 Subject: [PATCH 3/3] chore: Regenerate Rust bindings --- Cargo.lock | 2 +- rust/src/sentry_protos.billing.v1.common.v1.rs | 12 ++++++++++++ .../sentry_protos.billing.v1.services.package.v1.rs | 13 +++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 978eca4d..73df81d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -717,7 +717,7 @@ checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "sentry_protos" -version = "0.8.13" +version = "0.8.14" dependencies = [ "prost", "prost-types", diff --git a/rust/src/sentry_protos.billing.v1.common.v1.rs b/rust/src/sentry_protos.billing.v1.common.v1.rs index 98ca588b..0a3ed10d 100644 --- a/rust/src/sentry_protos.billing.v1.common.v1.rs +++ b/rust/src/sentry_protos.billing.v1.common.v1.rs @@ -216,3 +216,15 @@ pub struct TieredPricingRate { #[prost(message, repeated, tag = "1")] pub tiers: ::prost::alloc::vec::Vec, } +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct FixedPricingTier { + #[prost(int64, tag = "1")] + pub value: i64, + #[prost(uint64, tag = "2")] + pub base_price_cents: u64, +} +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct FixedTierList { + #[prost(message, repeated, tag = "1")] + pub tiers: ::prost::alloc::vec::Vec, +} diff --git a/rust/src/sentry_protos.billing.v1.services.package.v1.rs b/rust/src/sentry_protos.billing.v1.services.package.v1.rs index e83941a9..79264d3c 100644 --- a/rust/src/sentry_protos.billing.v1.services.package.v1.rs +++ b/rust/src/sentry_protos.billing.v1.services.package.v1.rs @@ -8,6 +8,8 @@ pub struct LineItemConfig { pub payg_rate: ::core::option::Option< super::super::super::common::v1::TieredPricingRate, >, + /// DEPRECATED: use reserved_pricing instead + /// /// for reserved budget line items #[prost(message, optional, tag = "4")] pub reserved_rate: ::core::option::Option< @@ -22,6 +24,8 @@ pub struct LineItemConfig { pub included_reserved_units: ::core::option::Option< line_item_config::IncludedReservedUnits, >, + #[prost(oneof = "line_item_config::ReservedPricing", tags = "8, 9")] + pub reserved_pricing: ::core::option::Option, } /// Nested message and enum types in `LineItemConfig`. pub mod line_item_config { @@ -34,6 +38,15 @@ pub mod line_item_config { #[prost(uint64, tag = "6")] NumReservedUnits(u64), } + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum ReservedPricing { + /// Used to calculate spend against reserved_pool_cents for shared line items + #[prost(message, tag = "8")] + ReservedPricingRate(super::super::super::super::common::v1::TieredPricingRate), + /// Used to determine prices for distinct reserved tiers (ie 100K errors is $X / month) + #[prost(message, tag = "9")] + ReservedTiers(super::super::super::super::common::v1::FixedTierList), + } } /// Represents a budget included in a package that is collectively used by one or more line items, /// allowing multiple line items to draw from the same reserved budget.