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