summaryrefslogtreecommitdiff
path: root/third_party/googleapis/google/cloud/channel/v1/offers.proto
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/googleapis/google/cloud/channel/v1/offers.proto')
-rw-r--r--third_party/googleapis/google/cloud/channel/v1/offers.proto326
1 files changed, 326 insertions, 0 deletions
diff --git a/third_party/googleapis/google/cloud/channel/v1/offers.proto b/third_party/googleapis/google/cloud/channel/v1/offers.proto
new file mode 100644
index 0000000..615e3d9
--- /dev/null
+++ b/third_party/googleapis/google/cloud/channel/v1/offers.proto
@@ -0,0 +1,326 @@
+// 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;
+}
+
+// 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;
+}