123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 |
- // Copyright 2022 Google LLC
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- syntax = "proto3";
- package google.cloud.channel.v1;
- import "google/api/field_behavior.proto";
- import "google/api/resource.proto";
- import "google/cloud/channel/v1/common.proto";
- import "google/cloud/channel/v1/products.proto";
- import "google/protobuf/timestamp.proto";
- import "google/type/money.proto";
- option go_package = "google.golang.org/genproto/googleapis/cloud/channel/v1;channel";
- option java_multiple_files = true;
- option java_outer_classname = "OffersProto";
- option java_package = "com.google.cloud.channel.v1";
- // Constraints type for Promotional offers.
- enum PromotionalOrderType {
- // Not used.
- PROMOTIONAL_TYPE_UNSPECIFIED = 0;
- // Order used for new customers, trial conversions and upgrades.
- NEW_UPGRADE = 1;
- // All orders for transferring an existing customer.
- TRANSFER = 2;
- // Orders for modifying an existing customer's promotion on the same SKU.
- PROMOTION_SWITCH = 3;
- }
- // Describes how the reseller will be billed.
- enum PaymentPlan {
- // Not used.
- PAYMENT_PLAN_UNSPECIFIED = 0;
- // Commitment.
- COMMITMENT = 1;
- // No commitment.
- FLEXIBLE = 2;
- // Free.
- FREE = 3;
- // Trial.
- TRIAL = 4;
- // Price and ordering not available through API.
- OFFLINE = 5;
- }
- // Specifies when the payment needs to happen.
- enum PaymentType {
- // Not used.
- PAYMENT_TYPE_UNSPECIFIED = 0;
- // Prepay. Amount has to be paid before service is rendered.
- PREPAY = 1;
- // Postpay. Reseller is charged at the end of the Payment cycle.
- POSTPAY = 2;
- }
- // Represents the type for a monetizable resource(any entity on which billing
- // happens). For example, this could be MINUTES for Google Voice and GB for
- // Google Drive. One SKU can map to multiple monetizable resources.
- enum ResourceType {
- // Not used.
- RESOURCE_TYPE_UNSPECIFIED = 0;
- // Seat.
- SEAT = 1;
- // Monthly active user.
- MAU = 2;
- // GB (used for storage SKUs).
- GB = 3;
- // Active licensed users(for Voice SKUs).
- LICENSED_USER = 4;
- // Voice usage.
- MINUTES = 5;
- // For IaaS SKUs like Google Cloud Platform, monetization is based on usage
- // accrued on your billing account irrespective of the type of monetizable
- // resource. This enum represents an aggregated resource/container for all
- // usage SKUs on a billing account. Currently, only applicable to Google Cloud
- // Platform.
- IAAS_USAGE = 6;
- // For Google Cloud Platform subscriptions like Anthos or SAP.
- SUBSCRIPTION = 7;
- }
- // Period Type.
- enum PeriodType {
- // Not used.
- PERIOD_TYPE_UNSPECIFIED = 0;
- // Day.
- DAY = 1;
- // Month.
- MONTH = 2;
- // Year.
- YEAR = 3;
- }
- // Represents an offer made to resellers for purchase.
- // An offer is associated with a [Sku][google.cloud.channel.v1.Sku], has a plan for payment, a price, and
- // defines the constraints for buying.
- message Offer {
- option (google.api.resource) = {
- type: "cloudchannel.googleapis.com/Offer"
- pattern: "accounts/{account}/offers/{offer}"
- };
- // Resource Name of the Offer.
- // Format: accounts/{account_id}/offers/{offer_id}
- string name = 1;
- // Marketing information for the Offer.
- MarketingInfo marketing_info = 2;
- // SKU the offer is associated with.
- Sku sku = 3;
- // Describes the payment plan for the Offer.
- Plan plan = 4;
- // Constraints on transacting the Offer.
- Constraints constraints = 5;
- // Price for each monetizable resource type.
- repeated PriceByResource price_by_resources = 6;
- // Start of the Offer validity time.
- google.protobuf.Timestamp start_time = 7;
- // Output only. End of the Offer validity time.
- google.protobuf.Timestamp end_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
- // Parameters required to use current Offer to purchase.
- repeated ParameterDefinition parameter_definitions = 9;
- // The deal code of the offer to get a special promotion or discount.
- string deal_code = 12;
- }
- // Parameter's definition. Specifies what parameter is required to use the
- // current Offer to purchase.
- message ParameterDefinition {
- // Data type of the parameter.
- enum ParameterType {
- // Not used.
- PARAMETER_TYPE_UNSPECIFIED = 0;
- // Int64 type.
- INT64 = 1;
- // String type.
- STRING = 2;
- // Double type.
- DOUBLE = 3;
- }
- // Name of the parameter.
- string name = 1;
- // Data type of the parameter. Minimal value, Maximum value and allowed values
- // will use specified data type here.
- ParameterType parameter_type = 2;
- // Minimal value of the parameter, if applicable. Inclusive. For example,
- // minimal commitment when purchasing Anthos is 0.01.
- // Applicable to INT64 and DOUBLE parameter types.
- Value min_value = 3;
- // Maximum value of the parameter, if applicable. Inclusive. For example,
- // maximum seats when purchasing Google Workspace Business Standard.
- // Applicable to INT64 and DOUBLE parameter types.
- Value max_value = 4;
- // If not empty, parameter values must be drawn from this list.
- // For example, [us-west1, us-west2, ...]
- // Applicable to STRING parameter type.
- repeated Value allowed_values = 5;
- // If set to true, parameter is optional to purchase this Offer.
- bool optional = 6;
- }
- // Represents the constraints for buying the Offer.
- message Constraints {
- // Represents constraints required to purchase the Offer for a customer.
- CustomerConstraints customer_constraints = 1;
- }
- // Represents constraints required to purchase the Offer for a customer.
- message CustomerConstraints {
- // Allowed geographical regions of the customer.
- repeated string allowed_regions = 1;
- // Allowed Customer Type.
- repeated CloudIdentityInfo.CustomerType allowed_customer_types = 2;
- // Allowed Promotional Order Type. Present for Promotional offers.
- repeated PromotionalOrderType promotional_order_types = 3;
- }
- // The payment plan for the Offer. Describes how to make a payment.
- message Plan {
- // Describes how a reseller will be billed.
- PaymentPlan payment_plan = 1;
- // Specifies when the payment needs to happen.
- PaymentType payment_type = 2;
- // Describes how frequently the reseller will be billed, such as
- // once per month.
- Period payment_cycle = 3;
- // Present for Offers with a trial period.
- // For trial-only Offers, a paid service needs to start before the trial
- // period ends for continued service.
- // For Regular Offers with a trial period, the regular pricing goes into
- // effect when trial period ends, or if paid service is started before the end
- // of the trial period.
- Period trial_period = 4;
- // Reseller Billing account to charge after an offer transaction.
- // Only present for Google Cloud Platform offers.
- string billing_account = 5;
- }
- // Represents price by resource type.
- message PriceByResource {
- // Resource Type. Example: SEAT
- ResourceType resource_type = 1;
- // Price of the Offer. Present if there are no price phases.
- Price price = 2;
- // Specifies the price by time range.
- repeated PricePhase price_phases = 3;
- }
- // Represents the price of the Offer.
- message Price {
- // Base price.
- google.type.Money base_price = 1;
- // Discount percentage, represented as decimal.
- // For example, a 20% discount will be represent as 0.2.
- double discount = 2;
- // Effective Price after applying the discounts.
- google.type.Money effective_price = 3;
- // Link to external price list, such as link to Google Voice rate card.
- string external_price_uri = 4;
- }
- // Specifies the price by the duration of months.
- // For example, a 20% discount for the first six months, then a 10% discount
- // starting on the seventh month.
- message PricePhase {
- // Defines the phase period type.
- PeriodType period_type = 1;
- // Defines first period for the phase.
- int32 first_period = 2;
- // Defines first period for the phase.
- int32 last_period = 3;
- // Price of the phase. Present if there are no price tiers.
- Price price = 4;
- // Price by the resource tiers.
- repeated PriceTier price_tiers = 5;
- }
- // Defines price at resource tier level.
- // For example, an offer with following definition :
- //
- // * Tier 1: Provide 25% discount for all seats between 1 and 25.
- // * Tier 2: Provide 10% discount for all seats between 26 and 100.
- // * Tier 3: Provide flat 15% discount for all seats above 100.
- //
- // Each of these tiers is represented as a PriceTier.
- message PriceTier {
- // First resource for which the tier price applies.
- int32 first_resource = 1;
- // Last resource for which the tier price applies.
- int32 last_resource = 2;
- // Price of the tier.
- Price price = 3;
- }
- // Represents period in days/months/years.
- message Period {
- // Total duration of Period Type defined.
- int32 duration = 1;
- // Period Type.
- PeriodType period_type = 2;
- }
|