xref: /aosp_15_r20/external/googleapis/google/cloud/channel/v1/offers.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC
2*d5c09012SAndroid Build Coastguard Worker//
3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*d5c09012SAndroid Build Coastguard Worker//
7*d5c09012SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*d5c09012SAndroid Build Coastguard Worker//
9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*d5c09012SAndroid Build Coastguard Worker// limitations under the License.
14*d5c09012SAndroid Build Coastguard Worker
15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3";
16*d5c09012SAndroid Build Coastguard Worker
17*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.channel.v1;
18*d5c09012SAndroid Build Coastguard Worker
19*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto";
20*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto";
21*d5c09012SAndroid Build Coastguard Workerimport "google/cloud/channel/v1/common.proto";
22*d5c09012SAndroid Build Coastguard Workerimport "google/cloud/channel/v1/products.proto";
23*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto";
24*d5c09012SAndroid Build Coastguard Workerimport "google/type/money.proto";
25*d5c09012SAndroid Build Coastguard Worker
26*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/channel/apiv1/channelpb;channelpb";
27*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
28*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "OffersProto";
29*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.channel.v1";
30*d5c09012SAndroid Build Coastguard Worker
31*d5c09012SAndroid Build Coastguard Worker// Constraints type for Promotional offers.
32*d5c09012SAndroid Build Coastguard Workerenum PromotionalOrderType {
33*d5c09012SAndroid Build Coastguard Worker  // Not used.
34*d5c09012SAndroid Build Coastguard Worker  PROMOTIONAL_TYPE_UNSPECIFIED = 0;
35*d5c09012SAndroid Build Coastguard Worker
36*d5c09012SAndroid Build Coastguard Worker  // Order used for new customers, trial conversions and upgrades.
37*d5c09012SAndroid Build Coastguard Worker  NEW_UPGRADE = 1;
38*d5c09012SAndroid Build Coastguard Worker
39*d5c09012SAndroid Build Coastguard Worker  // All orders for transferring an existing customer.
40*d5c09012SAndroid Build Coastguard Worker  TRANSFER = 2;
41*d5c09012SAndroid Build Coastguard Worker
42*d5c09012SAndroid Build Coastguard Worker  // Orders for modifying an existing customer's promotion on the same SKU.
43*d5c09012SAndroid Build Coastguard Worker  PROMOTION_SWITCH = 3;
44*d5c09012SAndroid Build Coastguard Worker}
45*d5c09012SAndroid Build Coastguard Worker
46*d5c09012SAndroid Build Coastguard Worker// Describes how the reseller will be billed.
47*d5c09012SAndroid Build Coastguard Workerenum PaymentPlan {
48*d5c09012SAndroid Build Coastguard Worker  // Not used.
49*d5c09012SAndroid Build Coastguard Worker  PAYMENT_PLAN_UNSPECIFIED = 0;
50*d5c09012SAndroid Build Coastguard Worker
51*d5c09012SAndroid Build Coastguard Worker  // Commitment.
52*d5c09012SAndroid Build Coastguard Worker  COMMITMENT = 1;
53*d5c09012SAndroid Build Coastguard Worker
54*d5c09012SAndroid Build Coastguard Worker  // No commitment.
55*d5c09012SAndroid Build Coastguard Worker  FLEXIBLE = 2;
56*d5c09012SAndroid Build Coastguard Worker
57*d5c09012SAndroid Build Coastguard Worker  // Free.
58*d5c09012SAndroid Build Coastguard Worker  FREE = 3;
59*d5c09012SAndroid Build Coastguard Worker
60*d5c09012SAndroid Build Coastguard Worker  // Trial.
61*d5c09012SAndroid Build Coastguard Worker  TRIAL = 4;
62*d5c09012SAndroid Build Coastguard Worker
63*d5c09012SAndroid Build Coastguard Worker  // Price and ordering not available through API.
64*d5c09012SAndroid Build Coastguard Worker  OFFLINE = 5;
65*d5c09012SAndroid Build Coastguard Worker}
66*d5c09012SAndroid Build Coastguard Worker
67*d5c09012SAndroid Build Coastguard Worker// Specifies when the payment needs to happen.
68*d5c09012SAndroid Build Coastguard Workerenum PaymentType {
69*d5c09012SAndroid Build Coastguard Worker  // Not used.
70*d5c09012SAndroid Build Coastguard Worker  PAYMENT_TYPE_UNSPECIFIED = 0;
71*d5c09012SAndroid Build Coastguard Worker
72*d5c09012SAndroid Build Coastguard Worker  // Prepay. Amount has to be paid before service is rendered.
73*d5c09012SAndroid Build Coastguard Worker  PREPAY = 1;
74*d5c09012SAndroid Build Coastguard Worker
75*d5c09012SAndroid Build Coastguard Worker  // Postpay. Reseller is charged at the end of the Payment cycle.
76*d5c09012SAndroid Build Coastguard Worker  POSTPAY = 2;
77*d5c09012SAndroid Build Coastguard Worker}
78*d5c09012SAndroid Build Coastguard Worker
79*d5c09012SAndroid Build Coastguard Worker// Represents the type for a monetizable resource(any entity on which billing
80*d5c09012SAndroid Build Coastguard Worker// happens). For example, this could be MINUTES for Google Voice and GB for
81*d5c09012SAndroid Build Coastguard Worker// Google Drive. One SKU can map to multiple monetizable resources.
82*d5c09012SAndroid Build Coastguard Workerenum ResourceType {
83*d5c09012SAndroid Build Coastguard Worker  // Not used.
84*d5c09012SAndroid Build Coastguard Worker  RESOURCE_TYPE_UNSPECIFIED = 0;
85*d5c09012SAndroid Build Coastguard Worker
86*d5c09012SAndroid Build Coastguard Worker  // Seat.
87*d5c09012SAndroid Build Coastguard Worker  SEAT = 1;
88*d5c09012SAndroid Build Coastguard Worker
89*d5c09012SAndroid Build Coastguard Worker  // Monthly active user.
90*d5c09012SAndroid Build Coastguard Worker  MAU = 2;
91*d5c09012SAndroid Build Coastguard Worker
92*d5c09012SAndroid Build Coastguard Worker  // GB (used for storage SKUs).
93*d5c09012SAndroid Build Coastguard Worker  GB = 3;
94*d5c09012SAndroid Build Coastguard Worker
95*d5c09012SAndroid Build Coastguard Worker  // Active licensed users(for Voice SKUs).
96*d5c09012SAndroid Build Coastguard Worker  LICENSED_USER = 4;
97*d5c09012SAndroid Build Coastguard Worker
98*d5c09012SAndroid Build Coastguard Worker  // Voice usage.
99*d5c09012SAndroid Build Coastguard Worker  MINUTES = 5;
100*d5c09012SAndroid Build Coastguard Worker
101*d5c09012SAndroid Build Coastguard Worker  // For IaaS SKUs like Google Cloud, monetization is based on usage accrued on
102*d5c09012SAndroid Build Coastguard Worker  // your billing account irrespective of the type of monetizable resource. This
103*d5c09012SAndroid Build Coastguard Worker  // enum represents an aggregated resource/container for all usage SKUs on a
104*d5c09012SAndroid Build Coastguard Worker  // billing account. Currently, only applicable to Google Cloud.
105*d5c09012SAndroid Build Coastguard Worker  IAAS_USAGE = 6;
106*d5c09012SAndroid Build Coastguard Worker
107*d5c09012SAndroid Build Coastguard Worker  // For Google Cloud subscriptions like Anthos or SAP.
108*d5c09012SAndroid Build Coastguard Worker  SUBSCRIPTION = 7;
109*d5c09012SAndroid Build Coastguard Worker}
110*d5c09012SAndroid Build Coastguard Worker
111*d5c09012SAndroid Build Coastguard Worker// Period Type.
112*d5c09012SAndroid Build Coastguard Workerenum PeriodType {
113*d5c09012SAndroid Build Coastguard Worker  // Not used.
114*d5c09012SAndroid Build Coastguard Worker  PERIOD_TYPE_UNSPECIFIED = 0;
115*d5c09012SAndroid Build Coastguard Worker
116*d5c09012SAndroid Build Coastguard Worker  // Day.
117*d5c09012SAndroid Build Coastguard Worker  DAY = 1;
118*d5c09012SAndroid Build Coastguard Worker
119*d5c09012SAndroid Build Coastguard Worker  // Month.
120*d5c09012SAndroid Build Coastguard Worker  MONTH = 2;
121*d5c09012SAndroid Build Coastguard Worker
122*d5c09012SAndroid Build Coastguard Worker  // Year.
123*d5c09012SAndroid Build Coastguard Worker  YEAR = 3;
124*d5c09012SAndroid Build Coastguard Worker}
125*d5c09012SAndroid Build Coastguard Worker
126*d5c09012SAndroid Build Coastguard Worker// Represents an offer made to resellers for purchase.
127*d5c09012SAndroid Build Coastguard Worker// An offer is associated with a [Sku][google.cloud.channel.v1.Sku], has a plan
128*d5c09012SAndroid Build Coastguard Worker// for payment, a price, and defines the constraints for buying.
129*d5c09012SAndroid Build Coastguard Workermessage Offer {
130*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
131*d5c09012SAndroid Build Coastguard Worker    type: "cloudchannel.googleapis.com/Offer"
132*d5c09012SAndroid Build Coastguard Worker    pattern: "accounts/{account}/offers/{offer}"
133*d5c09012SAndroid Build Coastguard Worker  };
134*d5c09012SAndroid Build Coastguard Worker
135*d5c09012SAndroid Build Coastguard Worker  // Resource Name of the Offer.
136*d5c09012SAndroid Build Coastguard Worker  // Format: accounts/{account_id}/offers/{offer_id}
137*d5c09012SAndroid Build Coastguard Worker  string name = 1;
138*d5c09012SAndroid Build Coastguard Worker
139*d5c09012SAndroid Build Coastguard Worker  // Marketing information for the Offer.
140*d5c09012SAndroid Build Coastguard Worker  MarketingInfo marketing_info = 2;
141*d5c09012SAndroid Build Coastguard Worker
142*d5c09012SAndroid Build Coastguard Worker  // SKU the offer is associated with.
143*d5c09012SAndroid Build Coastguard Worker  Sku sku = 3;
144*d5c09012SAndroid Build Coastguard Worker
145*d5c09012SAndroid Build Coastguard Worker  // Describes the payment plan for the Offer.
146*d5c09012SAndroid Build Coastguard Worker  Plan plan = 4;
147*d5c09012SAndroid Build Coastguard Worker
148*d5c09012SAndroid Build Coastguard Worker  // Constraints on transacting the Offer.
149*d5c09012SAndroid Build Coastguard Worker  Constraints constraints = 5;
150*d5c09012SAndroid Build Coastguard Worker
151*d5c09012SAndroid Build Coastguard Worker  // Price for each monetizable resource type.
152*d5c09012SAndroid Build Coastguard Worker  repeated PriceByResource price_by_resources = 6;
153*d5c09012SAndroid Build Coastguard Worker
154*d5c09012SAndroid Build Coastguard Worker  // Start of the Offer validity time.
155*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp start_time = 7;
156*d5c09012SAndroid Build Coastguard Worker
157*d5c09012SAndroid Build Coastguard Worker  // Output only. End of the Offer validity time.
158*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp end_time = 8
159*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
160*d5c09012SAndroid Build Coastguard Worker
161*d5c09012SAndroid Build Coastguard Worker  // Parameters required to use current Offer to purchase.
162*d5c09012SAndroid Build Coastguard Worker  repeated ParameterDefinition parameter_definitions = 9;
163*d5c09012SAndroid Build Coastguard Worker
164*d5c09012SAndroid Build Coastguard Worker  // The deal code of the offer to get a special promotion or discount.
165*d5c09012SAndroid Build Coastguard Worker  string deal_code = 12;
166*d5c09012SAndroid Build Coastguard Worker}
167*d5c09012SAndroid Build Coastguard Worker
168*d5c09012SAndroid Build Coastguard Worker// Parameter's definition. Specifies what parameter is required to use the
169*d5c09012SAndroid Build Coastguard Worker// current Offer to purchase.
170*d5c09012SAndroid Build Coastguard Workermessage ParameterDefinition {
171*d5c09012SAndroid Build Coastguard Worker  // Data type of the parameter.
172*d5c09012SAndroid Build Coastguard Worker  enum ParameterType {
173*d5c09012SAndroid Build Coastguard Worker    // Not used.
174*d5c09012SAndroid Build Coastguard Worker    PARAMETER_TYPE_UNSPECIFIED = 0;
175*d5c09012SAndroid Build Coastguard Worker
176*d5c09012SAndroid Build Coastguard Worker    // Int64 type.
177*d5c09012SAndroid Build Coastguard Worker    INT64 = 1;
178*d5c09012SAndroid Build Coastguard Worker
179*d5c09012SAndroid Build Coastguard Worker    // String type.
180*d5c09012SAndroid Build Coastguard Worker    STRING = 2;
181*d5c09012SAndroid Build Coastguard Worker
182*d5c09012SAndroid Build Coastguard Worker    // Double type.
183*d5c09012SAndroid Build Coastguard Worker    DOUBLE = 3;
184*d5c09012SAndroid Build Coastguard Worker
185*d5c09012SAndroid Build Coastguard Worker    // Boolean type.
186*d5c09012SAndroid Build Coastguard Worker    BOOLEAN = 4;
187*d5c09012SAndroid Build Coastguard Worker  }
188*d5c09012SAndroid Build Coastguard Worker
189*d5c09012SAndroid Build Coastguard Worker  // Name of the parameter.
190*d5c09012SAndroid Build Coastguard Worker  string name = 1;
191*d5c09012SAndroid Build Coastguard Worker
192*d5c09012SAndroid Build Coastguard Worker  // Data type of the parameter. Minimal value, Maximum value and allowed values
193*d5c09012SAndroid Build Coastguard Worker  // will use specified data type here.
194*d5c09012SAndroid Build Coastguard Worker  ParameterType parameter_type = 2;
195*d5c09012SAndroid Build Coastguard Worker
196*d5c09012SAndroid Build Coastguard Worker  // Minimal value of the parameter, if applicable. Inclusive. For example,
197*d5c09012SAndroid Build Coastguard Worker  // minimal commitment when purchasing Anthos is 0.01.
198*d5c09012SAndroid Build Coastguard Worker  // Applicable to INT64 and DOUBLE parameter types.
199*d5c09012SAndroid Build Coastguard Worker  Value min_value = 3;
200*d5c09012SAndroid Build Coastguard Worker
201*d5c09012SAndroid Build Coastguard Worker  // Maximum value of the parameter, if applicable. Inclusive. For example,
202*d5c09012SAndroid Build Coastguard Worker  // maximum seats when purchasing Google Workspace Business Standard.
203*d5c09012SAndroid Build Coastguard Worker  // Applicable to INT64 and DOUBLE parameter types.
204*d5c09012SAndroid Build Coastguard Worker  Value max_value = 4;
205*d5c09012SAndroid Build Coastguard Worker
206*d5c09012SAndroid Build Coastguard Worker  // If not empty, parameter values must be drawn from this list.
207*d5c09012SAndroid Build Coastguard Worker  // For example, [us-west1, us-west2, ...]
208*d5c09012SAndroid Build Coastguard Worker  // Applicable to STRING parameter type.
209*d5c09012SAndroid Build Coastguard Worker  repeated Value allowed_values = 5;
210*d5c09012SAndroid Build Coastguard Worker
211*d5c09012SAndroid Build Coastguard Worker  // If set to true, parameter is optional to purchase this Offer.
212*d5c09012SAndroid Build Coastguard Worker  bool optional = 6;
213*d5c09012SAndroid Build Coastguard Worker}
214*d5c09012SAndroid Build Coastguard Worker
215*d5c09012SAndroid Build Coastguard Worker// Represents the constraints for buying the Offer.
216*d5c09012SAndroid Build Coastguard Workermessage Constraints {
217*d5c09012SAndroid Build Coastguard Worker  // Represents constraints required to purchase the Offer for a customer.
218*d5c09012SAndroid Build Coastguard Worker  CustomerConstraints customer_constraints = 1;
219*d5c09012SAndroid Build Coastguard Worker}
220*d5c09012SAndroid Build Coastguard Worker
221*d5c09012SAndroid Build Coastguard Worker// Represents constraints required to purchase the Offer for a customer.
222*d5c09012SAndroid Build Coastguard Workermessage CustomerConstraints {
223*d5c09012SAndroid Build Coastguard Worker  // Allowed geographical regions of the customer.
224*d5c09012SAndroid Build Coastguard Worker  repeated string allowed_regions = 1;
225*d5c09012SAndroid Build Coastguard Worker
226*d5c09012SAndroid Build Coastguard Worker  // Allowed Customer Type.
227*d5c09012SAndroid Build Coastguard Worker  repeated CloudIdentityInfo.CustomerType allowed_customer_types = 2;
228*d5c09012SAndroid Build Coastguard Worker
229*d5c09012SAndroid Build Coastguard Worker  // Allowed Promotional Order Type. Present for Promotional offers.
230*d5c09012SAndroid Build Coastguard Worker  repeated PromotionalOrderType promotional_order_types = 3;
231*d5c09012SAndroid Build Coastguard Worker}
232*d5c09012SAndroid Build Coastguard Worker
233*d5c09012SAndroid Build Coastguard Worker// The payment plan for the Offer. Describes how to make a payment.
234*d5c09012SAndroid Build Coastguard Workermessage Plan {
235*d5c09012SAndroid Build Coastguard Worker  // Describes how a reseller will be billed.
236*d5c09012SAndroid Build Coastguard Worker  PaymentPlan payment_plan = 1;
237*d5c09012SAndroid Build Coastguard Worker
238*d5c09012SAndroid Build Coastguard Worker  // Specifies when the payment needs to happen.
239*d5c09012SAndroid Build Coastguard Worker  PaymentType payment_type = 2;
240*d5c09012SAndroid Build Coastguard Worker
241*d5c09012SAndroid Build Coastguard Worker  // Describes how frequently the reseller will be billed, such as
242*d5c09012SAndroid Build Coastguard Worker  // once per month.
243*d5c09012SAndroid Build Coastguard Worker  Period payment_cycle = 3;
244*d5c09012SAndroid Build Coastguard Worker
245*d5c09012SAndroid Build Coastguard Worker  // Present for Offers with a trial period.
246*d5c09012SAndroid Build Coastguard Worker  // For trial-only Offers, a paid service needs to start before the trial
247*d5c09012SAndroid Build Coastguard Worker  // period ends for continued service.
248*d5c09012SAndroid Build Coastguard Worker  // For Regular Offers with a trial period, the regular pricing goes into
249*d5c09012SAndroid Build Coastguard Worker  // effect when trial period ends, or if paid service is started before the end
250*d5c09012SAndroid Build Coastguard Worker  // of the trial period.
251*d5c09012SAndroid Build Coastguard Worker  Period trial_period = 4;
252*d5c09012SAndroid Build Coastguard Worker
253*d5c09012SAndroid Build Coastguard Worker  // Reseller Billing account to charge after an offer transaction.
254*d5c09012SAndroid Build Coastguard Worker  // Only present for Google Cloud offers.
255*d5c09012SAndroid Build Coastguard Worker  string billing_account = 5;
256*d5c09012SAndroid Build Coastguard Worker}
257*d5c09012SAndroid Build Coastguard Worker
258*d5c09012SAndroid Build Coastguard Worker// Represents price by resource type.
259*d5c09012SAndroid Build Coastguard Workermessage PriceByResource {
260*d5c09012SAndroid Build Coastguard Worker  // Resource Type. Example: SEAT
261*d5c09012SAndroid Build Coastguard Worker  ResourceType resource_type = 1;
262*d5c09012SAndroid Build Coastguard Worker
263*d5c09012SAndroid Build Coastguard Worker  // Price of the Offer. Present if there are no price phases.
264*d5c09012SAndroid Build Coastguard Worker  Price price = 2;
265*d5c09012SAndroid Build Coastguard Worker
266*d5c09012SAndroid Build Coastguard Worker  // Specifies the price by time range.
267*d5c09012SAndroid Build Coastguard Worker  repeated PricePhase price_phases = 3;
268*d5c09012SAndroid Build Coastguard Worker}
269*d5c09012SAndroid Build Coastguard Worker
270*d5c09012SAndroid Build Coastguard Worker// Represents the price of the Offer.
271*d5c09012SAndroid Build Coastguard Workermessage Price {
272*d5c09012SAndroid Build Coastguard Worker  // Base price.
273*d5c09012SAndroid Build Coastguard Worker  google.type.Money base_price = 1;
274*d5c09012SAndroid Build Coastguard Worker
275*d5c09012SAndroid Build Coastguard Worker  // Discount percentage, represented as decimal.
276*d5c09012SAndroid Build Coastguard Worker  // For example, a 20% discount will be represent as 0.2.
277*d5c09012SAndroid Build Coastguard Worker  double discount = 2;
278*d5c09012SAndroid Build Coastguard Worker
279*d5c09012SAndroid Build Coastguard Worker  // Effective Price after applying the discounts.
280*d5c09012SAndroid Build Coastguard Worker  google.type.Money effective_price = 3;
281*d5c09012SAndroid Build Coastguard Worker
282*d5c09012SAndroid Build Coastguard Worker  // Link to external price list, such as link to Google Voice rate card.
283*d5c09012SAndroid Build Coastguard Worker  string external_price_uri = 4;
284*d5c09012SAndroid Build Coastguard Worker}
285*d5c09012SAndroid Build Coastguard Worker
286*d5c09012SAndroid Build Coastguard Worker// Specifies the price by the duration of months.
287*d5c09012SAndroid Build Coastguard Worker// For example, a 20% discount for the first six months, then a 10% discount
288*d5c09012SAndroid Build Coastguard Worker// starting on the seventh month.
289*d5c09012SAndroid Build Coastguard Workermessage PricePhase {
290*d5c09012SAndroid Build Coastguard Worker  // Defines the phase period type.
291*d5c09012SAndroid Build Coastguard Worker  PeriodType period_type = 1;
292*d5c09012SAndroid Build Coastguard Worker
293*d5c09012SAndroid Build Coastguard Worker  // Defines first period for the phase.
294*d5c09012SAndroid Build Coastguard Worker  int32 first_period = 2;
295*d5c09012SAndroid Build Coastguard Worker
296*d5c09012SAndroid Build Coastguard Worker  // Defines first period for the phase.
297*d5c09012SAndroid Build Coastguard Worker  int32 last_period = 3;
298*d5c09012SAndroid Build Coastguard Worker
299*d5c09012SAndroid Build Coastguard Worker  // Price of the phase. Present if there are no price tiers.
300*d5c09012SAndroid Build Coastguard Worker  Price price = 4;
301*d5c09012SAndroid Build Coastguard Worker
302*d5c09012SAndroid Build Coastguard Worker  // Price by the resource tiers.
303*d5c09012SAndroid Build Coastguard Worker  repeated PriceTier price_tiers = 5;
304*d5c09012SAndroid Build Coastguard Worker}
305*d5c09012SAndroid Build Coastguard Worker
306*d5c09012SAndroid Build Coastguard Worker// Defines price at resource tier level.
307*d5c09012SAndroid Build Coastguard Worker// For example, an offer with following definition :
308*d5c09012SAndroid Build Coastguard Worker//
309*d5c09012SAndroid Build Coastguard Worker// * Tier 1: Provide 25% discount for all seats between 1 and 25.
310*d5c09012SAndroid Build Coastguard Worker// * Tier 2: Provide 10% discount for all seats between 26 and 100.
311*d5c09012SAndroid Build Coastguard Worker// * Tier 3: Provide flat 15% discount for all seats above 100.
312*d5c09012SAndroid Build Coastguard Worker//
313*d5c09012SAndroid Build Coastguard Worker// Each of these tiers is represented as a PriceTier.
314*d5c09012SAndroid Build Coastguard Workermessage PriceTier {
315*d5c09012SAndroid Build Coastguard Worker  // First resource for which the tier price applies.
316*d5c09012SAndroid Build Coastguard Worker  int32 first_resource = 1;
317*d5c09012SAndroid Build Coastguard Worker
318*d5c09012SAndroid Build Coastguard Worker  // Last resource for which the tier price applies.
319*d5c09012SAndroid Build Coastguard Worker  int32 last_resource = 2;
320*d5c09012SAndroid Build Coastguard Worker
321*d5c09012SAndroid Build Coastguard Worker  // Price of the tier.
322*d5c09012SAndroid Build Coastguard Worker  Price price = 3;
323*d5c09012SAndroid Build Coastguard Worker}
324*d5c09012SAndroid Build Coastguard Worker
325*d5c09012SAndroid Build Coastguard Worker// Represents period in days/months/years.
326*d5c09012SAndroid Build Coastguard Workermessage Period {
327*d5c09012SAndroid Build Coastguard Worker  // Total duration of Period Type defined.
328*d5c09012SAndroid Build Coastguard Worker  int32 duration = 1;
329*d5c09012SAndroid Build Coastguard Worker
330*d5c09012SAndroid Build Coastguard Worker  // Period Type.
331*d5c09012SAndroid Build Coastguard Worker  PeriodType period_type = 2;
332*d5c09012SAndroid Build Coastguard Worker}
333