xref: /aosp_15_r20/external/googleapis/google/cloud/channel/v1/entitlements.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/offers.proto";
23*d5c09012SAndroid Build Coastguard Workerimport "google/cloud/channel/v1/products.proto";
24*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.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 = "EntitlementsProto";
29*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.channel.v1";
30*d5c09012SAndroid Build Coastguard Worker
31*d5c09012SAndroid Build Coastguard Worker// An entitlement is a representation of a customer's ability to use a service.
32*d5c09012SAndroid Build Coastguard Workermessage Entitlement {
33*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
34*d5c09012SAndroid Build Coastguard Worker    type: "cloudchannel.googleapis.com/Entitlement"
35*d5c09012SAndroid Build Coastguard Worker    pattern: "accounts/{account}/customers/{customer}/entitlements/{entitlement}"
36*d5c09012SAndroid Build Coastguard Worker  };
37*d5c09012SAndroid Build Coastguard Worker
38*d5c09012SAndroid Build Coastguard Worker  // Indicates the current provisioning state of the entitlement.
39*d5c09012SAndroid Build Coastguard Worker  enum ProvisioningState {
40*d5c09012SAndroid Build Coastguard Worker    // Not used.
41*d5c09012SAndroid Build Coastguard Worker    PROVISIONING_STATE_UNSPECIFIED = 0;
42*d5c09012SAndroid Build Coastguard Worker
43*d5c09012SAndroid Build Coastguard Worker    // The entitlement is currently active.
44*d5c09012SAndroid Build Coastguard Worker    ACTIVE = 1;
45*d5c09012SAndroid Build Coastguard Worker
46*d5c09012SAndroid Build Coastguard Worker    // The entitlement is currently suspended.
47*d5c09012SAndroid Build Coastguard Worker    SUSPENDED = 5;
48*d5c09012SAndroid Build Coastguard Worker  }
49*d5c09012SAndroid Build Coastguard Worker
50*d5c09012SAndroid Build Coastguard Worker  // Suspension reason for an entitlement if
51*d5c09012SAndroid Build Coastguard Worker  // [provisioning_state][google.cloud.channel.v1.Entitlement.provisioning_state]
52*d5c09012SAndroid Build Coastguard Worker  // = SUSPENDED.
53*d5c09012SAndroid Build Coastguard Worker  enum SuspensionReason {
54*d5c09012SAndroid Build Coastguard Worker    // Not used.
55*d5c09012SAndroid Build Coastguard Worker    SUSPENSION_REASON_UNSPECIFIED = 0;
56*d5c09012SAndroid Build Coastguard Worker
57*d5c09012SAndroid Build Coastguard Worker    // Entitlement was manually suspended by the Reseller.
58*d5c09012SAndroid Build Coastguard Worker    RESELLER_INITIATED = 1;
59*d5c09012SAndroid Build Coastguard Worker
60*d5c09012SAndroid Build Coastguard Worker    // Trial ended.
61*d5c09012SAndroid Build Coastguard Worker    TRIAL_ENDED = 2;
62*d5c09012SAndroid Build Coastguard Worker
63*d5c09012SAndroid Build Coastguard Worker    // Entitlement renewal was canceled.
64*d5c09012SAndroid Build Coastguard Worker    RENEWAL_WITH_TYPE_CANCEL = 3;
65*d5c09012SAndroid Build Coastguard Worker
66*d5c09012SAndroid Build Coastguard Worker    // Entitlement was automatically suspended on creation for pending ToS
67*d5c09012SAndroid Build Coastguard Worker    // acceptance on customer.
68*d5c09012SAndroid Build Coastguard Worker    PENDING_TOS_ACCEPTANCE = 4;
69*d5c09012SAndroid Build Coastguard Worker
70*d5c09012SAndroid Build Coastguard Worker    // Other reasons (internal reasons, abuse, etc.).
71*d5c09012SAndroid Build Coastguard Worker    OTHER = 100;
72*d5c09012SAndroid Build Coastguard Worker  }
73*d5c09012SAndroid Build Coastguard Worker
74*d5c09012SAndroid Build Coastguard Worker  // Output only. Resource name of an entitlement in the form:
75*d5c09012SAndroid Build Coastguard Worker  // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}.
76*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
77*d5c09012SAndroid Build Coastguard Worker
78*d5c09012SAndroid Build Coastguard Worker  // Output only. The time at which the entitlement is created.
79*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp create_time = 5
80*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
81*d5c09012SAndroid Build Coastguard Worker
82*d5c09012SAndroid Build Coastguard Worker  // Output only. The time at which the entitlement is updated.
83*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp update_time = 6
84*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
85*d5c09012SAndroid Build Coastguard Worker
86*d5c09012SAndroid Build Coastguard Worker  // Required. The offer resource name for which the entitlement is to be
87*d5c09012SAndroid Build Coastguard Worker  // created. Takes the form: accounts/{account_id}/offers/{offer_id}.
88*d5c09012SAndroid Build Coastguard Worker  string offer = 8 [
89*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
90*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = {
91*d5c09012SAndroid Build Coastguard Worker      type: "cloudchannel.googleapis.com/Offer"
92*d5c09012SAndroid Build Coastguard Worker    }
93*d5c09012SAndroid Build Coastguard Worker  ];
94*d5c09012SAndroid Build Coastguard Worker
95*d5c09012SAndroid Build Coastguard Worker  // Commitment settings for a commitment-based Offer.
96*d5c09012SAndroid Build Coastguard Worker  // Required for commitment based offers.
97*d5c09012SAndroid Build Coastguard Worker  CommitmentSettings commitment_settings = 12;
98*d5c09012SAndroid Build Coastguard Worker
99*d5c09012SAndroid Build Coastguard Worker  // Output only. Current provisioning state of the entitlement.
100*d5c09012SAndroid Build Coastguard Worker  ProvisioningState provisioning_state = 13
101*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
102*d5c09012SAndroid Build Coastguard Worker
103*d5c09012SAndroid Build Coastguard Worker  // Output only. Service provisioning details for the entitlement.
104*d5c09012SAndroid Build Coastguard Worker  ProvisionedService provisioned_service = 16
105*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
106*d5c09012SAndroid Build Coastguard Worker
107*d5c09012SAndroid Build Coastguard Worker  // Output only. Enumerable of all current suspension reasons for an
108*d5c09012SAndroid Build Coastguard Worker  // entitlement.
109*d5c09012SAndroid Build Coastguard Worker  repeated SuspensionReason suspension_reasons = 18
110*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
111*d5c09012SAndroid Build Coastguard Worker
112*d5c09012SAndroid Build Coastguard Worker  // Optional. This purchase order (PO) information is for resellers to use for
113*d5c09012SAndroid Build Coastguard Worker  // their company tracking usage. If a purchaseOrderId value is given, it
114*d5c09012SAndroid Build Coastguard Worker  // appears in the API responses and shows up in the invoice. The property
115*d5c09012SAndroid Build Coastguard Worker  // accepts up to 80 plain text characters. This is only supported for Google
116*d5c09012SAndroid Build Coastguard Worker  // Workspace entitlements.
117*d5c09012SAndroid Build Coastguard Worker  string purchase_order_id = 19 [(google.api.field_behavior) = OPTIONAL];
118*d5c09012SAndroid Build Coastguard Worker
119*d5c09012SAndroid Build Coastguard Worker  // Output only. Settings for trial offers.
120*d5c09012SAndroid Build Coastguard Worker  TrialSettings trial_settings = 21 [(google.api.field_behavior) = OUTPUT_ONLY];
121*d5c09012SAndroid Build Coastguard Worker
122*d5c09012SAndroid Build Coastguard Worker  // Association information to other entitlements.
123*d5c09012SAndroid Build Coastguard Worker  AssociationInfo association_info = 23;
124*d5c09012SAndroid Build Coastguard Worker
125*d5c09012SAndroid Build Coastguard Worker  // Extended entitlement parameters. When creating an entitlement, valid
126*d5c09012SAndroid Build Coastguard Worker  // parameter names and values are defined in the
127*d5c09012SAndroid Build Coastguard Worker  // [Offer.parameter_definitions][google.cloud.channel.v1.Offer.parameter_definitions].
128*d5c09012SAndroid Build Coastguard Worker  //
129*d5c09012SAndroid Build Coastguard Worker  // For Google Workspace, the following Parameters may be accepted as input:
130*d5c09012SAndroid Build Coastguard Worker  //
131*d5c09012SAndroid Build Coastguard Worker  // - max_units: The maximum assignable units for a flexible offer
132*d5c09012SAndroid Build Coastguard Worker  //
133*d5c09012SAndroid Build Coastguard Worker  // OR
134*d5c09012SAndroid Build Coastguard Worker  //
135*d5c09012SAndroid Build Coastguard Worker  // - num_units: The total commitment for commitment-based offers
136*d5c09012SAndroid Build Coastguard Worker  //
137*d5c09012SAndroid Build Coastguard Worker  // The response may additionally include the following output-only Parameters:
138*d5c09012SAndroid Build Coastguard Worker  //
139*d5c09012SAndroid Build Coastguard Worker  // - assigned_units: The number of licenses assigned to users.
140*d5c09012SAndroid Build Coastguard Worker  //
141*d5c09012SAndroid Build Coastguard Worker  // For Google Cloud billing subaccounts, the following Parameter may be
142*d5c09012SAndroid Build Coastguard Worker  // accepted as input:
143*d5c09012SAndroid Build Coastguard Worker  //
144*d5c09012SAndroid Build Coastguard Worker  // - display_name: The display name of the billing subaccount.
145*d5c09012SAndroid Build Coastguard Worker  repeated Parameter parameters = 26;
146*d5c09012SAndroid Build Coastguard Worker
147*d5c09012SAndroid Build Coastguard Worker  // Optional. The billing account resource name that is used to pay for this
148*d5c09012SAndroid Build Coastguard Worker  // entitlement.
149*d5c09012SAndroid Build Coastguard Worker  string billing_account = 28 [(google.api.field_behavior) = OPTIONAL];
150*d5c09012SAndroid Build Coastguard Worker}
151*d5c09012SAndroid Build Coastguard Worker
152*d5c09012SAndroid Build Coastguard Worker// Definition for extended entitlement parameters.
153*d5c09012SAndroid Build Coastguard Workermessage Parameter {
154*d5c09012SAndroid Build Coastguard Worker  // Name of the parameter.
155*d5c09012SAndroid Build Coastguard Worker  string name = 1;
156*d5c09012SAndroid Build Coastguard Worker
157*d5c09012SAndroid Build Coastguard Worker  // Value of the parameter.
158*d5c09012SAndroid Build Coastguard Worker  Value value = 2;
159*d5c09012SAndroid Build Coastguard Worker
160*d5c09012SAndroid Build Coastguard Worker  // Output only. Specifies whether this parameter is allowed to be changed. For
161*d5c09012SAndroid Build Coastguard Worker  // example, for a Google Workspace Business Starter entitlement in commitment
162*d5c09012SAndroid Build Coastguard Worker  // plan, num_units is editable when entitlement is active.
163*d5c09012SAndroid Build Coastguard Worker  bool editable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
164*d5c09012SAndroid Build Coastguard Worker}
165*d5c09012SAndroid Build Coastguard Worker
166*d5c09012SAndroid Build Coastguard Worker// Association links that an entitlement has to other entitlements.
167*d5c09012SAndroid Build Coastguard Workermessage AssociationInfo {
168*d5c09012SAndroid Build Coastguard Worker  // The name of the base entitlement, for which this entitlement is an add-on.
169*d5c09012SAndroid Build Coastguard Worker  string base_entitlement = 1 [(google.api.resource_reference) = {
170*d5c09012SAndroid Build Coastguard Worker    type: "cloudchannel.googleapis.com/Entitlement"
171*d5c09012SAndroid Build Coastguard Worker  }];
172*d5c09012SAndroid Build Coastguard Worker}
173*d5c09012SAndroid Build Coastguard Worker
174*d5c09012SAndroid Build Coastguard Worker// Service provisioned for an entitlement.
175*d5c09012SAndroid Build Coastguard Workermessage ProvisionedService {
176*d5c09012SAndroid Build Coastguard Worker  // Output only. Provisioning ID of the entitlement. For Google Workspace, this
177*d5c09012SAndroid Build Coastguard Worker  // is the underlying Subscription ID. For Google Cloud, this is the Billing
178*d5c09012SAndroid Build Coastguard Worker  // Account ID of the billing subaccount.
179*d5c09012SAndroid Build Coastguard Worker  string provisioning_id = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
180*d5c09012SAndroid Build Coastguard Worker
181*d5c09012SAndroid Build Coastguard Worker  // Output only. The product pertaining to the provisioning resource as
182*d5c09012SAndroid Build Coastguard Worker  // specified in the Offer.
183*d5c09012SAndroid Build Coastguard Worker  string product_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
184*d5c09012SAndroid Build Coastguard Worker
185*d5c09012SAndroid Build Coastguard Worker  // Output only. The SKU pertaining to the provisioning resource as specified
186*d5c09012SAndroid Build Coastguard Worker  // in the Offer.
187*d5c09012SAndroid Build Coastguard Worker  string sku_id = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
188*d5c09012SAndroid Build Coastguard Worker}
189*d5c09012SAndroid Build Coastguard Worker
190*d5c09012SAndroid Build Coastguard Worker// Commitment settings for commitment-based offers.
191*d5c09012SAndroid Build Coastguard Workermessage CommitmentSettings {
192*d5c09012SAndroid Build Coastguard Worker  // Output only. Commitment start timestamp.
193*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp start_time = 1
194*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
195*d5c09012SAndroid Build Coastguard Worker
196*d5c09012SAndroid Build Coastguard Worker  // Output only. Commitment end timestamp.
197*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp end_time = 2
198*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
199*d5c09012SAndroid Build Coastguard Worker
200*d5c09012SAndroid Build Coastguard Worker  // Optional. Renewal settings applicable for a commitment-based Offer.
201*d5c09012SAndroid Build Coastguard Worker  RenewalSettings renewal_settings = 4 [(google.api.field_behavior) = OPTIONAL];
202*d5c09012SAndroid Build Coastguard Worker}
203*d5c09012SAndroid Build Coastguard Worker
204*d5c09012SAndroid Build Coastguard Worker// Renewal settings for renewable Offers.
205*d5c09012SAndroid Build Coastguard Workermessage RenewalSettings {
206*d5c09012SAndroid Build Coastguard Worker  // If false, the plan will be completed at the end date.
207*d5c09012SAndroid Build Coastguard Worker  bool enable_renewal = 1;
208*d5c09012SAndroid Build Coastguard Worker
209*d5c09012SAndroid Build Coastguard Worker  // If true and enable_renewal = true, the unit (for example seats or licenses)
210*d5c09012SAndroid Build Coastguard Worker  // will be set to the number of active units at renewal time.
211*d5c09012SAndroid Build Coastguard Worker  bool resize_unit_count = 2;
212*d5c09012SAndroid Build Coastguard Worker
213*d5c09012SAndroid Build Coastguard Worker  // Describes how a reseller will be billed.
214*d5c09012SAndroid Build Coastguard Worker  PaymentPlan payment_plan = 5;
215*d5c09012SAndroid Build Coastguard Worker
216*d5c09012SAndroid Build Coastguard Worker  // Describes how frequently the reseller will be billed, such as
217*d5c09012SAndroid Build Coastguard Worker  // once per month.
218*d5c09012SAndroid Build Coastguard Worker  Period payment_cycle = 6;
219*d5c09012SAndroid Build Coastguard Worker}
220*d5c09012SAndroid Build Coastguard Worker
221*d5c09012SAndroid Build Coastguard Worker// Settings for trial offers.
222*d5c09012SAndroid Build Coastguard Workermessage TrialSettings {
223*d5c09012SAndroid Build Coastguard Worker  // Determines if the entitlement is in a trial or not:
224*d5c09012SAndroid Build Coastguard Worker  //
225*d5c09012SAndroid Build Coastguard Worker  // * `true` - The entitlement is in trial.
226*d5c09012SAndroid Build Coastguard Worker  // * `false` - The entitlement is not in trial.
227*d5c09012SAndroid Build Coastguard Worker  bool trial = 1;
228*d5c09012SAndroid Build Coastguard Worker
229*d5c09012SAndroid Build Coastguard Worker  // Date when the trial ends. The value is in milliseconds
230*d5c09012SAndroid Build Coastguard Worker  // using the UNIX Epoch format. See an example [Epoch
231*d5c09012SAndroid Build Coastguard Worker  // converter](https://www.epochconverter.com).
232*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp end_time = 2;
233*d5c09012SAndroid Build Coastguard Worker}
234*d5c09012SAndroid Build Coastguard Worker
235*d5c09012SAndroid Build Coastguard Worker// TransferableSku represents information a reseller needs to view existing
236*d5c09012SAndroid Build Coastguard Worker// provisioned services for a customer that they do not own.
237*d5c09012SAndroid Build Coastguard Worker// Read-only.
238*d5c09012SAndroid Build Coastguard Workermessage TransferableSku {
239*d5c09012SAndroid Build Coastguard Worker  // Describes the transfer eligibility of a SKU.
240*d5c09012SAndroid Build Coastguard Worker  TransferEligibility transfer_eligibility = 9;
241*d5c09012SAndroid Build Coastguard Worker
242*d5c09012SAndroid Build Coastguard Worker  // The SKU pertaining to the provisioning resource as specified in the Offer.
243*d5c09012SAndroid Build Coastguard Worker  Sku sku = 11;
244*d5c09012SAndroid Build Coastguard Worker
245*d5c09012SAndroid Build Coastguard Worker  // Optional. The customer to transfer has an entitlement with the populated
246*d5c09012SAndroid Build Coastguard Worker  // legacy SKU.
247*d5c09012SAndroid Build Coastguard Worker  Sku legacy_sku = 12 [(google.api.field_behavior) = OPTIONAL];
248*d5c09012SAndroid Build Coastguard Worker}
249*d5c09012SAndroid Build Coastguard Worker
250*d5c09012SAndroid Build Coastguard Worker// Specifies transfer eligibility of a SKU.
251*d5c09012SAndroid Build Coastguard Workermessage TransferEligibility {
252*d5c09012SAndroid Build Coastguard Worker  // Reason of ineligibility.
253*d5c09012SAndroid Build Coastguard Worker  enum Reason {
254*d5c09012SAndroid Build Coastguard Worker    // Not used.
255*d5c09012SAndroid Build Coastguard Worker    REASON_UNSPECIFIED = 0;
256*d5c09012SAndroid Build Coastguard Worker
257*d5c09012SAndroid Build Coastguard Worker    // Reseller needs to accept TOS before transferring the SKU.
258*d5c09012SAndroid Build Coastguard Worker    PENDING_TOS_ACCEPTANCE = 1;
259*d5c09012SAndroid Build Coastguard Worker
260*d5c09012SAndroid Build Coastguard Worker    // Reseller not eligible to sell the SKU.
261*d5c09012SAndroid Build Coastguard Worker    SKU_NOT_ELIGIBLE = 2;
262*d5c09012SAndroid Build Coastguard Worker
263*d5c09012SAndroid Build Coastguard Worker    // SKU subscription is suspended
264*d5c09012SAndroid Build Coastguard Worker    SKU_SUSPENDED = 3;
265*d5c09012SAndroid Build Coastguard Worker
266*d5c09012SAndroid Build Coastguard Worker    // The reseller is not authorized to transact on this Product. See
267*d5c09012SAndroid Build Coastguard Worker    // https://support.google.com/channelservices/answer/9759265
268*d5c09012SAndroid Build Coastguard Worker    CHANNEL_PARTNER_NOT_AUTHORIZED_FOR_SKU = 4;
269*d5c09012SAndroid Build Coastguard Worker  }
270*d5c09012SAndroid Build Coastguard Worker
271*d5c09012SAndroid Build Coastguard Worker  // Whether reseller is eligible to transfer the SKU.
272*d5c09012SAndroid Build Coastguard Worker  bool is_eligible = 1;
273*d5c09012SAndroid Build Coastguard Worker
274*d5c09012SAndroid Build Coastguard Worker  // Localized description if reseller is not eligible to transfer the SKU.
275*d5c09012SAndroid Build Coastguard Worker  string description = 2;
276*d5c09012SAndroid Build Coastguard Worker
277*d5c09012SAndroid Build Coastguard Worker  // Specified the reason for ineligibility.
278*d5c09012SAndroid Build Coastguard Worker  Reason ineligibility_reason = 3;
279*d5c09012SAndroid Build Coastguard Worker}
280