1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
// This file is @generated by prost-build.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LineItemConfig {
/// Base price for the line item (upgraded reserved volumes or add-on activation fees)
#[deprecated]
#[prost(uint64, tag = "1")]
pub base_price_cents: u64,
#[prost(message, optional, tag = "3")]
pub payg_rate: ::core::option::Option<
super::super::super::common::v1::TieredPricingRate,
>,
/// for reserved budget line items
#[prost(message, optional, tag = "4")]
pub reserved_rate: ::core::option::Option<
super::super::super::common::v1::TieredPricingRate,
>,
#[prost(message, optional, tag = "7")]
pub line_item: ::core::option::Option<
super::super::super::common::v1::LineItemDetails,
>,
/// Whether this LineItem is included in the base package or not (ie Seer)
#[prost(bool, tag = "8")]
pub is_optional_add_on: bool,
/// Used for calculating spend that should not apply towards an organization's PAYG budget (ie Seer seats)
#[prost(message, optional, tag = "9")]
pub uncapped_rate: ::core::option::Option<
super::super::super::common::v1::TieredPricingRate,
>,
/// how many of this lineitem are included in the package, the customer can reserve more on their contract
#[prost(oneof = "line_item_config::IncludedReservedUnits", tags = "5, 6")]
pub included_reserved_units: ::core::option::Option<
line_item_config::IncludedReservedUnits,
>,
/// How many units are available for a PackageConfig during a subscription trial? For packages that are not eligible for trials,
/// this field will be unset for all line items.
#[prost(oneof = "line_item_config::TrialUnits", tags = "10, 11")]
pub trial_units: ::core::option::Option<line_item_config::TrialUnits>,
}
/// Nested message and enum types in `LineItemConfig`.
pub mod line_item_config {
/// how many of this lineitem are included in the package, the customer can reserve more on their contract
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
pub enum IncludedReservedUnits {
#[prost(bool, tag = "5")]
IsUnlimited(bool),
/// the type communicates whether the line item is unlimited or not, additionally reserved budget line items have a non-zero reserved_rate in addition to 0 reserved_units
#[prost(uint64, tag = "6")]
NumReservedUnits(u64),
}
/// How many units are available for a PackageConfig during a subscription trial? For packages that are not eligible for trials,
/// this field will be unset for all line items.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
pub enum TrialUnits {
#[prost(bool, tag = "10")]
IsUnlimitedTrial(bool),
#[prost(uint64, tag = "11")]
NumTrialUnits(u64),
}
}
/// 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.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SharedLineItemPool {
/// how much money this shared pool has. For example, if logs costs $1.00 per GB and metrics
/// costs $1.00 per GB and we wanted to give metrics and logs a shared 5GB pool, the reserved_pool_cents
/// would be 500 ($5)
///
/// DEPRECATED: Use reserved_tier
#[deprecated]
#[prost(uint64, tag = "1")]
pub reserved_pool_cents: u64,
#[prost(message, repeated, tag = "3")]
pub line_items: ::prost::alloc::vec::Vec<
super::super::super::common::v1::LineItemDetails,
>,
/// Whether this LineItem is included in the base package or not (ie Seer)
#[prost(bool, tag = "4")]
pub is_optional_add_on: bool,
/// The unique line item details used when invoicing this shared pool.
#[prost(message, optional, tag = "5")]
pub shared_line_item: ::core::option::Option<
super::super::super::common::v1::LineItemDetails,
>,
/// Cost of the shared line item pool, in cents(a customer can pay $X and get $Y of credit, where X!=Y).
///
/// DEPRECATED: Use reserved_tier
#[deprecated]
#[prost(uint64, tag = "6")]
pub base_price_cents: u64,
/// DEPRECATED: Use reserved_tier
#[deprecated]
#[prost(message, optional, tag = "7")]
pub flexible_base_price_cents: ::core::option::Option<
super::super::super::common::v1::FlexiblePrice,
>,
/// Similar to LineItemConfig.reserved_rate, this field will hold the list of available reserved tiers for this line item
/// as well as the prices for each respective tier.
#[prost(message, optional, tag = "8")]
pub reserved_tier: ::core::option::Option<
super::super::super::common::v1::TieredPricingRate,
>,
/// How many units are available for a PackageConfig during a subscription trial? For packages that are not eligible for trials,
/// this field will be unset for all line items.
#[prost(oneof = "shared_line_item_pool::TrialUnits", tags = "9, 10")]
pub trial_units: ::core::option::Option<shared_line_item_pool::TrialUnits>,
}
/// Nested message and enum types in `SharedLineItemPool`.
pub mod shared_line_item_pool {
/// How many units are available for a PackageConfig during a subscription trial? For packages that are not eligible for trials,
/// this field will be unset for all line items.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
pub enum TrialUnits {
#[prost(bool, tag = "9")]
IsUnlimitedTrial(bool),
#[prost(uint64, tag = "10")]
NumTrialUnits(u64),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PackageConfig {
#[prost(string, tag = "1")]
pub uid: ::prost::alloc::string::String,
#[prost(message, repeated, tag = "2")]
pub line_item_configs: ::prost::alloc::vec::Vec<LineItemConfig>,
#[prost(message, repeated, tag = "3")]
pub shared_line_item_pools: ::prost::alloc::vec::Vec<SharedLineItemPool>,
/// Base price for the package.
#[deprecated]
#[prost(uint64, tag = "4")]
pub base_price_cents: u64,
#[prost(message, optional, tag = "8")]
pub flexible_base_price_cents: ::core::option::Option<
super::super::super::common::v1::FlexiblePrice,
>,
/// Deprecated. Use supported_month_intervals.
#[deprecated]
#[prost(enumeration = "super::super::super::common::v1::BillingInterval", tag = "5")]
pub billing_interval: i32,
#[prost(string, tag = "6")]
pub title: ::prost::alloc::string::String,
/// Number-of-months billing intervals this package offers.
/// \[1\] = monthly only, \[1, 12\] = monthly or annual, \[12\] = annual only.
#[prost(uint32, repeated, tag = "7")]
pub supported_month_intervals: ::prost::alloc::vec::Vec<u32>,
/// Title shown in admin interfaces, not customer-facing.
#[prost(string, tag = "9")]
pub admin_title: ::prost::alloc::string::String,
/// Whether the package is treated as enterprise in the UI (display name,
/// upsell suppression).
#[prost(bool, tag = "10")]
pub is_enterprise: bool,
/// Whether the package can be chosen in the self-serve checkout flow.
#[prost(bool, tag = "11")]
pub user_selectable: bool,
/// Whether the package has pay-as-you-go (PAYG) modes.
#[prost(bool, tag = "12")]
pub has_payg_modes: bool,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetPackageRequest {
#[prost(string, tag = "1")]
pub package_uid: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetPackageResponse {
#[prost(message, optional, tag = "1")]
pub package_config: ::core::option::Option<PackageConfig>,
}