From 5127642b3db3f6a843c78fb4201414a2bad4303a Mon Sep 17 00:00:00 2001 From: Noah Martin Date: Mon, 11 May 2026 09:28:13 -0700 Subject: [PATCH 1/2] ref: Add max usage ts --- .../billing/v1/services/usage/v1/endpoint_usage.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/proto/sentry_protos/billing/v1/services/usage/v1/endpoint_usage.proto b/proto/sentry_protos/billing/v1/services/usage/v1/endpoint_usage.proto index 73babbfe..2a3c4673 100644 --- a/proto/sentry_protos/billing/v1/services/usage/v1/endpoint_usage.proto +++ b/proto/sentry_protos/billing/v1/services/usage/v1/endpoint_usage.proto @@ -36,6 +36,12 @@ message GetUsageResponse { repeated DailySeatUsage seat_days = 3; repeated CategorySeatUsage seats = 2 [deprecated = true]; // DEPRECATED: use seat_days + + // The latest timestamp of usage data included in this response (inclusive + // — there is at least one row at exactly this timestamp). Callers persist + // this as the contract's watermark; subsequent queries should resume + // strictly after this timestamp to avoid double-counting the boundary. + optional google.protobuf.Timestamp last_usage_ts = 4; } message GetUsageRequest { From d37f4304fd7240f2f5f0177c1af7c5aec8e1aeb5 Mon Sep 17 00:00:00 2001 From: "getsantry[bot]" <66042841+getsantry[bot]@users.noreply.github.com> Date: Mon, 11 May 2026 16:32:03 +0000 Subject: [PATCH 2/2] chore: Regenerate Rust bindings --- Cargo.lock | 2 +- rust/src/sentry_protos.billing.v1.services.usage.v1.rs | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index ba5c3c8e..ad90a3fa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -717,7 +717,7 @@ checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "sentry_protos" -version = "0.8.29" +version = "0.8.30" dependencies = [ "prost", "prost-types", diff --git a/rust/src/sentry_protos.billing.v1.services.usage.v1.rs b/rust/src/sentry_protos.billing.v1.services.usage.v1.rs index a170e385..8611ba68 100644 --- a/rust/src/sentry_protos.billing.v1.services.usage.v1.rs +++ b/rust/src/sentry_protos.billing.v1.services.usage.v1.rs @@ -78,6 +78,12 @@ pub struct GetUsageResponse { #[deprecated] #[prost(message, repeated, tag = "2")] pub seats: ::prost::alloc::vec::Vec, + /// The latest timestamp of usage data included in this response (inclusive + /// — there is at least one row at exactly this timestamp). Callers persist + /// this as the contract's watermark; subsequent queries should resume + /// strictly after this timestamp to avoid double-counting the boundary. + #[prost(message, optional, tag = "4")] + pub last_usage_ts: ::core::option::Option<::prost_types::Timestamp>, } #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct GetUsageRequest {