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