diff --git a/Cargo.lock b/Cargo.lock index 11fd409c..11f1749f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -717,7 +717,7 @@ checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "sentry_protos" -version = "0.37.0" +version = "0.37.1" dependencies = [ "prost", "prost-types", diff --git a/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_assign_balance_contract.proto b/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_assign_balance_contract.proto new file mode 100644 index 00000000..21eee7ee --- /dev/null +++ b/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_assign_balance_contract.proto @@ -0,0 +1,12 @@ +syntax = "proto3"; + +package sentry_protos.billing.v1.services.engagement.v1; + +message AssignBalanceContractRequest { + optional uint64 previous_contract_id = 1; + uint64 contract_id = 2; +} + +message AssignBalanceContractResponse { + bool assigned = 1; +} diff --git a/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_get_contract_balance.proto b/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_get_contract_balance.proto new file mode 100644 index 00000000..0bba80dd --- /dev/null +++ b/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_get_contract_balance.proto @@ -0,0 +1,11 @@ +syntax = "proto3"; + +package sentry_protos.billing.v1.services.engagement.v1; + +message GetContractBalanceRequest { + uint64 contract_id = 1; +} + +message GetContractBalanceResponse { + uint64 balance_cents = 1; +} diff --git a/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_get_unassigned_balances.proto b/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_get_unassigned_balances.proto new file mode 100644 index 00000000..34b059c1 --- /dev/null +++ b/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_get_unassigned_balances.proto @@ -0,0 +1,9 @@ +syntax = "proto3"; + +package sentry_protos.billing.v1.services.engagement.v1; + +message GetUnassignedBalancesRequest {} + +message GetUnassignedBalancesResponse { + repeated uint64 previous_contract_ids = 1; +} diff --git a/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_rollover_monetary_grants.proto b/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_rollover_monetary_grants.proto new file mode 100644 index 00000000..de4b7005 --- /dev/null +++ b/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_rollover_monetary_grants.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +package sentry_protos.billing.v1.services.engagement.v1; + +message RolloverMonetaryGrantsRequest { + uint64 previous_contract_id = 1; + uint64 next_contract_id = 2; +} + +message RolloverMonetaryGrantsResponse {} diff --git a/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_stage_rollover_balance.proto b/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_stage_rollover_balance.proto new file mode 100644 index 00000000..fb2ec668 --- /dev/null +++ b/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_stage_rollover_balance.proto @@ -0,0 +1,11 @@ +syntax = "proto3"; + +package sentry_protos.billing.v1.services.engagement.v1; + +message StageRolloverBalanceRequest { + uint64 contract_id = 1; + // Amount used in the previous contract that will be subtracted when carrying over the balance. + uint64 amount_used_cents = 2; +} + +message StageRolloverBalanceResponse {} diff --git a/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_stage_rollover_monetary_grants.proto b/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_stage_rollover_monetary_grants.proto new file mode 100644 index 00000000..d27bf975 --- /dev/null +++ b/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_stage_rollover_monetary_grants.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +package sentry_protos.billing.v1.services.engagement.v1; + +message StageRolloverMonetaryGrantsRequest { + uint64 previous_contract_id = 1; + optional uint64 balance_cents_used = 2; +} + +message StageRolloverMonetaryGrantsResponse {} diff --git a/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_upsert_contract_balance.proto b/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_upsert_contract_balance.proto new file mode 100644 index 00000000..11bcdb65 --- /dev/null +++ b/proto/sentry_protos/billing/v1/services/engagement/v1/endpoint_upsert_contract_balance.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; + +package sentry_protos.billing.v1.services.engagement.v1; + +message UpsertContractBalanceRequest { + uint64 contract_id = 1; + int64 amount_cents = 2; + // There may not be a previous contract if this is the first contract for the organization. + optional uint64 previous_contract_id = 3; +} + +message UpsertContractBalanceResponse { + uint64 new_balance_cents = 1; +} diff --git a/rust/src/sentry_protos.billing.v1.services.engagement.v1.rs b/rust/src/sentry_protos.billing.v1.services.engagement.v1.rs index 1abc56d1..1c81b7e4 100644 --- a/rust/src/sentry_protos.billing.v1.services.engagement.v1.rs +++ b/rust/src/sentry_protos.billing.v1.services.engagement.v1.rs @@ -1,4 +1,16 @@ // This file is @generated by prost-build. +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct AssignBalanceContractRequest { + #[prost(uint64, optional, tag = "1")] + pub previous_contract_id: ::core::option::Option, + #[prost(uint64, tag = "2")] + pub contract_id: u64, +} +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct AssignBalanceContractResponse { + #[prost(bool, tag = "1")] + pub assigned: bool, +} /// How a Grant was created. #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] @@ -308,6 +320,16 @@ pub struct GetActiveTrialsResponse { #[prost(message, repeated, tag = "1")] pub trials: ::prost::alloc::vec::Vec, } +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct GetContractBalanceRequest { + #[prost(uint64, tag = "1")] + pub contract_id: u64, +} +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct GetContractBalanceResponse { + #[prost(uint64, tag = "1")] + pub balance_cents: u64, +} /// A grant with counter-grant chains collapsed into a single effective amount. /// Returned in drain priority order (end_date ASC, effective_amount ASC, grant_id ASC). #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] @@ -432,6 +454,13 @@ impl EffectiveMonetarySource { } } } +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct GetUnassignedBalancesRequest {} +#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] +pub struct GetUnassignedBalancesResponse { + #[prost(uint64, repeated, tag = "1")] + pub previous_contract_ids: ::prost::alloc::vec::Vec, +} #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct EffectiveUnitGrant { #[prost(string, tag = "1")] @@ -467,6 +496,34 @@ pub struct GetUnitGrantsResponse { #[prost(message, repeated, tag = "1")] pub grants: ::prost::alloc::vec::Vec, } +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct RolloverMonetaryGrantsRequest { + #[prost(uint64, tag = "1")] + pub previous_contract_id: u64, + #[prost(uint64, tag = "2")] + pub next_contract_id: u64, +} +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct RolloverMonetaryGrantsResponse {} +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct StageRolloverBalanceRequest { + #[prost(uint64, tag = "1")] + pub contract_id: u64, + /// Amount used in the previous contract that will be subtracted when carrying over the balance. + #[prost(uint64, tag = "2")] + pub amount_used_cents: u64, +} +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct StageRolloverBalanceResponse {} +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct StageRolloverMonetaryGrantsRequest { + #[prost(uint64, tag = "1")] + pub previous_contract_id: u64, + #[prost(uint64, optional, tag = "2")] + pub balance_cents_used: ::core::option::Option, +} +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct StageRolloverMonetaryGrantsResponse {} #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct StartTrialRequest { #[prost(uint64, tag = "1")] @@ -494,3 +551,18 @@ pub mod start_trial_request { } #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] pub struct StartTrialResponse {} +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct UpsertContractBalanceRequest { + #[prost(uint64, tag = "1")] + pub contract_id: u64, + #[prost(int64, tag = "2")] + pub amount_cents: i64, + /// There may not be a previous contract if this is the first contract for the organization. + #[prost(uint64, optional, tag = "3")] + pub previous_contract_id: ::core::option::Option, +} +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct UpsertContractBalanceResponse { + #[prost(uint64, tag = "1")] + pub new_balance_cents: u64, +}