xref: /aosp_15_r20/external/googleapis/google/cloud/channel/v1/service.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1// Copyright 2023 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.cloud.channel.v1;
18
19import "google/api/annotations.proto";
20import "google/api/client.proto";
21import "google/api/field_behavior.proto";
22import "google/api/resource.proto";
23import "google/cloud/channel/v1/billing_accounts.proto";
24import "google/cloud/channel/v1/channel_partner_links.proto";
25import "google/cloud/channel/v1/common.proto";
26import "google/cloud/channel/v1/customers.proto";
27import "google/cloud/channel/v1/entitlement_changes.proto";
28import "google/cloud/channel/v1/entitlements.proto";
29import "google/cloud/channel/v1/offers.proto";
30import "google/cloud/channel/v1/operations.proto";
31import "google/cloud/channel/v1/products.proto";
32import "google/cloud/channel/v1/repricing.proto";
33import "google/longrunning/operations.proto";
34import "google/protobuf/empty.proto";
35import "google/protobuf/field_mask.proto";
36
37option go_package = "cloud.google.com/go/channel/apiv1/channelpb;channelpb";
38option java_multiple_files = true;
39option java_outer_classname = "ServiceProto";
40option java_package = "com.google.cloud.channel.v1";
41
42// CloudChannelService lets Google cloud resellers and distributors manage
43// their customers, channel partners, entitlements, and reports.
44//
45// Using this service:
46// 1. Resellers and distributors can manage a customer entity.
47// 2. Distributors can register an authorized reseller in their channel and
48//    provide them with delegated admin access.
49// 3. Resellers and distributors can manage customer entitlements.
50//
51// CloudChannelService exposes the following resources:
52// - [Customer][google.cloud.channel.v1.Customer]s: An entity-usually an
53// enterprise-managed by a reseller or distributor.
54//
55// - [Entitlement][google.cloud.channel.v1.Entitlement]s: An entity that
56// provides a customer with the means to use a service. Entitlements are created
57// or updated as a result of a successful fulfillment.
58//
59// - [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink]s: An
60// entity that identifies links between distributors and their indirect
61// resellers in a channel.
62service CloudChannelService {
63  option (google.api.default_host) = "cloudchannel.googleapis.com";
64  option (google.api.oauth_scopes) =
65      "https://www.googleapis.com/auth/apps.order";
66
67  // List [Customer][google.cloud.channel.v1.Customer]s.
68  //
69  // Possible error codes:
70  //
71  // * PERMISSION_DENIED: The reseller account making the request is different
72  // from the reseller account in the API request.
73  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
74  //
75  // Return value:
76  // List of [Customer][google.cloud.channel.v1.Customer]s, or an empty list if
77  // there are no customers.
78  rpc ListCustomers(ListCustomersRequest) returns (ListCustomersResponse) {
79    option (google.api.http) = {
80      get: "/v1/{parent=accounts/*}/customers"
81      additional_bindings {
82        get: "/v1/{parent=accounts/*/channelPartnerLinks/*}/customers"
83      }
84    };
85  }
86
87  // Returns the requested [Customer][google.cloud.channel.v1.Customer]
88  // resource.
89  //
90  // Possible error codes:
91  //
92  // * PERMISSION_DENIED: The reseller account making the request is different
93  // from the reseller account in the API request.
94  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
95  // * NOT_FOUND: The customer resource doesn't exist. Usually the result of an
96  // invalid name parameter.
97  //
98  // Return value:
99  // The [Customer][google.cloud.channel.v1.Customer] resource.
100  rpc GetCustomer(GetCustomerRequest) returns (Customer) {
101    option (google.api.http) = {
102      get: "/v1/{name=accounts/*/customers/*}"
103      additional_bindings {
104        get: "/v1/{name=accounts/*/channelPartnerLinks/*/customers/*}"
105      }
106    };
107    option (google.api.method_signature) = "name";
108  }
109
110  // Confirms the existence of Cloud Identity accounts based on the domain and
111  // if the Cloud Identity accounts are owned by the reseller.
112  //
113  // Possible error codes:
114  //
115  // * PERMISSION_DENIED: The reseller account making the request is different
116  // from the reseller account in the API request.
117  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
118  // * INVALID_VALUE: Invalid domain value in the request.
119  //
120  // Return value:
121  // A list of
122  // [CloudIdentityCustomerAccount][google.cloud.channel.v1.CloudIdentityCustomerAccount]
123  // resources for the domain (may be empty)
124  //
125  // Note: in the v1alpha1 version of the API, a NOT_FOUND error returns if
126  // no
127  // [CloudIdentityCustomerAccount][google.cloud.channel.v1.CloudIdentityCustomerAccount]
128  // resources match the domain.
129  rpc CheckCloudIdentityAccountsExist(CheckCloudIdentityAccountsExistRequest)
130      returns (CheckCloudIdentityAccountsExistResponse) {
131    option (google.api.http) = {
132      post: "/v1/{parent=accounts/*}:checkCloudIdentityAccountsExist"
133      body: "*"
134    };
135  }
136
137  // Creates a new [Customer][google.cloud.channel.v1.Customer] resource under
138  // the reseller or distributor account.
139  //
140  // Possible error codes:
141  //
142  // * PERMISSION_DENIED:
143  //     * The reseller account making the request is different from the
144  //     reseller account in the API request.
145  //     * You are not authorized to create a customer. See
146  //     https://support.google.com/channelservices/answer/9759265
147  // * INVALID_ARGUMENT:
148  //     * Required request parameters are missing or invalid.
149  //     * Domain field value doesn't match the primary email domain.
150  //
151  // Return value:
152  // The newly created [Customer][google.cloud.channel.v1.Customer] resource.
153  rpc CreateCustomer(CreateCustomerRequest) returns (Customer) {
154    option (google.api.http) = {
155      post: "/v1/{parent=accounts/*}/customers"
156      body: "customer"
157      additional_bindings {
158        post: "/v1/{parent=accounts/*/channelPartnerLinks/*}/customers"
159        body: "customer"
160      }
161    };
162  }
163
164  // Updates an existing [Customer][google.cloud.channel.v1.Customer] resource
165  // for the reseller or distributor.
166  //
167  // Possible error codes:
168  //
169  // * PERMISSION_DENIED: The reseller account making the request is different
170  // from the reseller account in the API request.
171  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
172  // * NOT_FOUND: No [Customer][google.cloud.channel.v1.Customer] resource found
173  // for the name in the request.
174  //
175  // Return value:
176  // The updated [Customer][google.cloud.channel.v1.Customer] resource.
177  rpc UpdateCustomer(UpdateCustomerRequest) returns (Customer) {
178    option (google.api.http) = {
179      patch: "/v1/{customer.name=accounts/*/customers/*}"
180      body: "customer"
181      additional_bindings {
182        patch: "/v1/{customer.name=accounts/*/channelPartnerLinks/*/customers/*}"
183        body: "customer"
184      }
185    };
186  }
187
188  // Deletes the given [Customer][google.cloud.channel.v1.Customer] permanently.
189  //
190  // Possible error codes:
191  //
192  // * PERMISSION_DENIED: The account making the request does not own
193  // this customer.
194  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
195  // * FAILED_PRECONDITION: The customer has existing entitlements.
196  // * NOT_FOUND: No [Customer][google.cloud.channel.v1.Customer] resource found
197  // for the name in the request.
198  rpc DeleteCustomer(DeleteCustomerRequest) returns (google.protobuf.Empty) {
199    option (google.api.http) = {
200      delete: "/v1/{name=accounts/*/customers/*}"
201      additional_bindings {
202        delete: "/v1/{name=accounts/*/channelPartnerLinks/*/customers/*}"
203      }
204    };
205    option (google.api.method_signature) = "name";
206  }
207
208  // Imports a [Customer][google.cloud.channel.v1.Customer] from the Cloud
209  // Identity associated with the provided Cloud Identity ID or domain before a
210  // TransferEntitlements call. If a linked Customer already exists and
211  // overwrite_if_exists is true, it will update that Customer's data.
212  //
213  // Possible error codes:
214  //
215  // * PERMISSION_DENIED:
216  //     * The reseller account making the request is different from the
217  //     reseller account in the API request.
218  //     * You are not authorized to import the customer. See
219  //     https://support.google.com/channelservices/answer/9759265
220  // * NOT_FOUND: Cloud Identity doesn't exist or was deleted.
221  // * INVALID_ARGUMENT: Required parameters are missing, or the auth_token is
222  // expired or invalid.
223  // * ALREADY_EXISTS: A customer already exists and has conflicting critical
224  // fields. Requires an overwrite.
225  //
226  // Return value:
227  // The [Customer][google.cloud.channel.v1.Customer].
228  rpc ImportCustomer(ImportCustomerRequest) returns (Customer) {
229    option (google.api.http) = {
230      post: "/v1/{parent=accounts/*}/customers:import"
231      body: "*"
232      additional_bindings {
233        post: "/v1/{parent=accounts/*/channelPartnerLinks/*}/customers:import"
234        body: "*"
235      }
236    };
237  }
238
239  // Creates a Cloud Identity for the given customer using the customer's
240  // information, or the information provided here.
241  //
242  // Possible error codes:
243  //
244  // *  PERMISSION_DENIED:
245  //      * The customer doesn't belong to the reseller.
246  //      * You are not authorized to provision cloud identity id. See
247  //      https://support.google.com/channelservices/answer/9759265
248  // *  INVALID_ARGUMENT: Required request parameters are missing or invalid.
249  // *  NOT_FOUND: The customer was not found.
250  // *  ALREADY_EXISTS: The customer's primary email already exists. Retry
251  //    after changing the customer's primary contact email.
252  // * INTERNAL: Any non-user error related to a technical issue in the
253  // backend. Contact Cloud Channel support.
254  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
255  // Contact Cloud Channel support.
256  //
257  // Return value:
258  // The ID of a long-running operation.
259  //
260  // To get the results of the operation, call the GetOperation method of
261  // CloudChannelOperationsService. The Operation metadata contains an
262  // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata].
263  rpc ProvisionCloudIdentity(ProvisionCloudIdentityRequest)
264      returns (google.longrunning.Operation) {
265    option (google.api.http) = {
266      post: "/v1/{customer=accounts/*/customers/*}:provisionCloudIdentity"
267      body: "*"
268    };
269    option (google.longrunning.operation_info) = {
270      response_type: "Customer"
271      metadata_type: "OperationMetadata"
272    };
273  }
274
275  // Lists [Entitlement][google.cloud.channel.v1.Entitlement]s belonging to a
276  // customer.
277  //
278  // Possible error codes:
279  //
280  // * PERMISSION_DENIED: The customer doesn't belong to the reseller.
281  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
282  //
283  // Return value:
284  // A list of the customer's
285  // [Entitlement][google.cloud.channel.v1.Entitlement]s.
286  rpc ListEntitlements(ListEntitlementsRequest)
287      returns (ListEntitlementsResponse) {
288    option (google.api.http) = {
289      get: "/v1/{parent=accounts/*/customers/*}/entitlements"
290    };
291  }
292
293  // List [TransferableSku][google.cloud.channel.v1.TransferableSku]s of a
294  // customer based on the Cloud Identity ID or Customer Name in the request.
295  //
296  // Use this method to list the entitlements information of an
297  // unowned customer. You should provide the customer's
298  // Cloud Identity ID or Customer Name.
299  //
300  // Possible error codes:
301  //
302  // * PERMISSION_DENIED:
303  //     * The customer doesn't belong to the reseller and has no auth token.
304  //     * The supplied auth token is invalid.
305  //     * The reseller account making the request is different
306  //     from the reseller account in the query.
307  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
308  //
309  // Return value:
310  // A list of the customer's
311  // [TransferableSku][google.cloud.channel.v1.TransferableSku].
312  rpc ListTransferableSkus(ListTransferableSkusRequest)
313      returns (ListTransferableSkusResponse) {
314    option (google.api.http) = {
315      post: "/v1/{parent=accounts/*}:listTransferableSkus"
316      body: "*"
317    };
318  }
319
320  // List [TransferableOffer][google.cloud.channel.v1.TransferableOffer]s of a
321  // customer based on Cloud Identity ID or Customer Name in the request.
322  //
323  // Use this method when a reseller gets the entitlement information of an
324  // unowned customer. The reseller should provide the customer's
325  // Cloud Identity ID or Customer Name.
326  //
327  // Possible error codes:
328  //
329  // * PERMISSION_DENIED:
330  //     * The customer doesn't belong to the reseller and has no auth token.
331  //     * The customer provided incorrect reseller information when generating
332  //     auth token.
333  //     * The reseller account making the request is different
334  //     from the reseller account in the query.
335  //     * The reseller is not authorized to transact on this Product. See
336  //     https://support.google.com/channelservices/answer/9759265
337  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
338  //
339  // Return value:
340  // List of [TransferableOffer][google.cloud.channel.v1.TransferableOffer] for
341  // the given customer and SKU.
342  rpc ListTransferableOffers(ListTransferableOffersRequest)
343      returns (ListTransferableOffersResponse) {
344    option (google.api.http) = {
345      post: "/v1/{parent=accounts/*}:listTransferableOffers"
346      body: "*"
347    };
348  }
349
350  // Returns the requested [Entitlement][google.cloud.channel.v1.Entitlement]
351  // resource.
352  //
353  // Possible error codes:
354  //
355  // * PERMISSION_DENIED: The customer doesn't belong to the reseller.
356  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
357  // * NOT_FOUND: The customer entitlement was not found.
358  //
359  // Return value:
360  // The requested [Entitlement][google.cloud.channel.v1.Entitlement] resource.
361  rpc GetEntitlement(GetEntitlementRequest) returns (Entitlement) {
362    option (google.api.http) = {
363      get: "/v1/{name=accounts/*/customers/*/entitlements/*}"
364    };
365  }
366
367  // Creates an entitlement for a customer.
368  //
369  // Possible error codes:
370  //
371  // * PERMISSION_DENIED:
372  //     * The customer doesn't belong to the reseller.
373  //     * The reseller is not authorized to transact on this Product. See
374  //     https://support.google.com/channelservices/answer/9759265
375  // * INVALID_ARGUMENT:
376  //     * Required request parameters are missing or invalid.
377  //     * There is already a customer entitlement for a SKU from the same
378  //     product family.
379  // * INVALID_VALUE: Make sure the OfferId is valid. If it is, contact
380  // Google Channel support for further troubleshooting.
381  // * NOT_FOUND: The customer or offer resource was not found.
382  // * ALREADY_EXISTS:
383  //     * The SKU was already purchased for the customer.
384  //     * The customer's primary email already exists. Retry
385  //     after changing the customer's primary contact email.
386  // * CONDITION_NOT_MET or FAILED_PRECONDITION:
387  //     * The domain required for purchasing a SKU has not been verified.
388  //     * A pre-requisite SKU required to purchase an Add-On SKU is missing.
389  //     For example, Google Workspace Business Starter is required to purchase
390  //     Vault or Drive.
391  //     * (Developer accounts only) Reseller and resold domain must meet the
392  //     following naming requirements:
393  //         * Domain names must start with goog-test.
394  //         * Domain names must include the reseller domain.
395  // * INTERNAL: Any non-user error related to a technical issue in the
396  // backend. Contact Cloud Channel support.
397  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
398  // Contact Cloud Channel support.
399  //
400  // Return value:
401  // The ID of a long-running operation.
402  //
403  // To get the results of the operation, call the GetOperation method of
404  // CloudChannelOperationsService. The Operation metadata will contain an
405  // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata].
406  rpc CreateEntitlement(CreateEntitlementRequest)
407      returns (google.longrunning.Operation) {
408    option (google.api.http) = {
409      post: "/v1/{parent=accounts/*/customers/*}/entitlements"
410      body: "*"
411    };
412    option (google.longrunning.operation_info) = {
413      response_type: "Entitlement"
414      metadata_type: "OperationMetadata"
415    };
416  }
417
418  // Change parameters of the entitlement.
419  //
420  // An entitlement update is a long-running operation and it updates the
421  // entitlement as a result of fulfillment.
422  //
423  // Possible error codes:
424  //
425  // * PERMISSION_DENIED: The customer doesn't belong to the reseller.
426  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
427  // For example, the number of seats being changed is greater than the allowed
428  // number of max seats, or decreasing seats for a commitment based plan.
429  // * NOT_FOUND: Entitlement resource not found.
430  // * INTERNAL: Any non-user error related to a technical issue in the
431  // backend. Contact Cloud Channel support.
432  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
433  // Contact Cloud Channel support.
434  //
435  // Return value:
436  // The ID of a long-running operation.
437  //
438  // To get the results of the operation, call the GetOperation method of
439  // CloudChannelOperationsService. The Operation metadata will contain an
440  // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata].
441  rpc ChangeParameters(ChangeParametersRequest)
442      returns (google.longrunning.Operation) {
443    option (google.api.http) = {
444      post: "/v1/{name=accounts/*/customers/*/entitlements/*}:changeParameters"
445      body: "*"
446    };
447    option (google.longrunning.operation_info) = {
448      response_type: "Entitlement"
449      metadata_type: "OperationMetadata"
450    };
451  }
452
453  // Updates the renewal settings for an existing customer entitlement.
454  //
455  // An entitlement update is a long-running operation and it updates the
456  // entitlement as a result of fulfillment.
457  //
458  // Possible error codes:
459  //
460  // * PERMISSION_DENIED: The customer doesn't belong to the reseller.
461  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
462  // * NOT_FOUND: Entitlement resource not found.
463  // * NOT_COMMITMENT_PLAN: Renewal Settings are only applicable for a
464  // commitment plan. Can't enable or disable renewals for non-commitment plans.
465  // * INTERNAL: Any non-user error related to a technical issue in the
466  // backend. Contact Cloud Channel support.
467  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
468  //   Contact Cloud Channel support.
469  //
470  // Return value:
471  // The ID of a long-running operation.
472  //
473  // To get the results of the operation, call the GetOperation method of
474  // CloudChannelOperationsService. The Operation metadata will contain an
475  // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata].
476  rpc ChangeRenewalSettings(ChangeRenewalSettingsRequest)
477      returns (google.longrunning.Operation) {
478    option (google.api.http) = {
479      post: "/v1/{name=accounts/*/customers/*/entitlements/*}:changeRenewalSettings"
480      body: "*"
481    };
482    option (google.longrunning.operation_info) = {
483      response_type: "Entitlement"
484      metadata_type: "OperationMetadata"
485    };
486  }
487
488  // Updates the Offer for an existing customer entitlement.
489  //
490  // An entitlement update is a long-running operation and it updates the
491  // entitlement as a result of fulfillment.
492  //
493  // Possible error codes:
494  //
495  // * PERMISSION_DENIED: The customer doesn't belong to the reseller.
496  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
497  // * NOT_FOUND: Offer or Entitlement resource not found.
498  // * INTERNAL: Any non-user error related to a technical issue in the
499  // backend. Contact Cloud Channel support.
500  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
501  // Contact Cloud Channel support.
502  //
503  // Return value:
504  // The ID of a long-running operation.
505  //
506  // To get the results of the operation, call the GetOperation method of
507  // CloudChannelOperationsService. The Operation metadata will contain an
508  // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata].
509  rpc ChangeOffer(ChangeOfferRequest) returns (google.longrunning.Operation) {
510    option (google.api.http) = {
511      post: "/v1/{name=accounts/*/customers/*/entitlements/*}:changeOffer"
512      body: "*"
513    };
514    option (google.longrunning.operation_info) = {
515      response_type: "Entitlement"
516      metadata_type: "OperationMetadata"
517    };
518  }
519
520  // Starts paid service for a trial entitlement.
521  //
522  // Starts paid service for a trial entitlement immediately. This method is
523  // only applicable if a plan is set up for a trial entitlement but has some
524  // trial days remaining.
525  //
526  // Possible error codes:
527  //
528  // * PERMISSION_DENIED: The customer doesn't belong to the reseller.
529  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
530  // * NOT_FOUND: Entitlement resource not found.
531  // * FAILED_PRECONDITION/NOT_IN_TRIAL: This method only works for
532  // entitlement on trial plans.
533  // * INTERNAL: Any non-user error related to a technical issue in the
534  // backend. Contact Cloud Channel support.
535  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
536  // Contact Cloud Channel support.
537  //
538  // Return value:
539  // The ID of a long-running operation.
540  //
541  // To get the results of the operation, call the GetOperation method of
542  // CloudChannelOperationsService. The Operation metadata will contain an
543  // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata].
544  rpc StartPaidService(StartPaidServiceRequest)
545      returns (google.longrunning.Operation) {
546    option (google.api.http) = {
547      post: "/v1/{name=accounts/*/customers/*/entitlements/*}:startPaidService"
548      body: "*"
549    };
550    option (google.longrunning.operation_info) = {
551      response_type: "Entitlement"
552      metadata_type: "OperationMetadata"
553    };
554  }
555
556  // Suspends a previously fulfilled entitlement.
557  //
558  // An entitlement suspension is a long-running operation.
559  //
560  // Possible error codes:
561  //
562  // * PERMISSION_DENIED: The customer doesn't belong to the reseller.
563  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
564  // * NOT_FOUND: Entitlement resource not found.
565  // * NOT_ACTIVE: Entitlement is not active.
566  // * INTERNAL: Any non-user error related to a technical issue in the
567  // backend. Contact Cloud Channel support.
568  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
569  // Contact Cloud Channel support.
570  //
571  // Return value:
572  // The ID of a long-running operation.
573  //
574  // To get the results of the operation, call the GetOperation method of
575  // CloudChannelOperationsService. The Operation metadata will contain an
576  // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata].
577  rpc SuspendEntitlement(SuspendEntitlementRequest)
578      returns (google.longrunning.Operation) {
579    option (google.api.http) = {
580      post: "/v1/{name=accounts/*/customers/*/entitlements/*}:suspend"
581      body: "*"
582    };
583    option (google.longrunning.operation_info) = {
584      response_type: "Entitlement"
585      metadata_type: "OperationMetadata"
586    };
587  }
588
589  // Cancels a previously fulfilled entitlement.
590  //
591  // An entitlement cancellation is a long-running operation.
592  //
593  // Possible error codes:
594  //
595  // * PERMISSION_DENIED: The reseller account making the request is different
596  // from the reseller account in the API request.
597  // * FAILED_PRECONDITION: There are Google Cloud projects linked to the
598  // Google Cloud entitlement's Cloud Billing subaccount.
599  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
600  // * NOT_FOUND: Entitlement resource not found.
601  // * DELETION_TYPE_NOT_ALLOWED: Cancel is only allowed for Google Workspace
602  // add-ons, or entitlements for Google Cloud's development platform.
603  // * INTERNAL: Any non-user error related to a technical issue in the
604  // backend. Contact Cloud Channel support.
605  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
606  // Contact Cloud Channel support.
607  //
608  // Return value:
609  // The ID of a long-running operation.
610  //
611  // To get the results of the operation, call the GetOperation method of
612  // CloudChannelOperationsService. The response will contain
613  // google.protobuf.Empty on success. The Operation metadata will contain an
614  // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata].
615  rpc CancelEntitlement(CancelEntitlementRequest)
616      returns (google.longrunning.Operation) {
617    option (google.api.http) = {
618      post: "/v1/{name=accounts/*/customers/*/entitlements/*}:cancel"
619      body: "*"
620    };
621    option (google.longrunning.operation_info) = {
622      response_type: "google.protobuf.Empty"
623      metadata_type: "OperationMetadata"
624    };
625  }
626
627  // Activates a previously suspended entitlement. Entitlements suspended for
628  // pending ToS acceptance can't be activated using this method.
629  //
630  // An entitlement activation is a long-running operation and it updates
631  // the state of the customer entitlement.
632  //
633  // Possible error codes:
634  //
635  // * PERMISSION_DENIED: The reseller account making the request is different
636  // from the reseller account in the API request.
637  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
638  // * NOT_FOUND: Entitlement resource not found.
639  // * SUSPENSION_NOT_RESELLER_INITIATED: Can only activate reseller-initiated
640  // suspensions and entitlements that have accepted the TOS.
641  // * NOT_SUSPENDED: Can only activate suspended entitlements not in an ACTIVE
642  // state.
643  // * INTERNAL: Any non-user error related to a technical issue in the
644  // backend. Contact Cloud Channel support.
645  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
646  // Contact Cloud Channel support.
647  //
648  // Return value:
649  // The ID of a long-running operation.
650  //
651  // To get the results of the operation, call the GetOperation method of
652  // CloudChannelOperationsService. The Operation metadata will contain an
653  // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata].
654  rpc ActivateEntitlement(ActivateEntitlementRequest)
655      returns (google.longrunning.Operation) {
656    option (google.api.http) = {
657      post: "/v1/{name=accounts/*/customers/*/entitlements/*}:activate"
658      body: "*"
659    };
660    option (google.longrunning.operation_info) = {
661      response_type: "Entitlement"
662      metadata_type: "OperationMetadata"
663    };
664  }
665
666  // Transfers customer entitlements to new reseller.
667  //
668  // Possible error codes:
669  //
670  // * PERMISSION_DENIED:
671  //     * The customer doesn't belong to the reseller.
672  //     * The reseller is not authorized to transact on this Product. See
673  //     https://support.google.com/channelservices/answer/9759265
674  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
675  // * NOT_FOUND: The customer or offer resource was not found.
676  // * ALREADY_EXISTS: The SKU was already transferred for the customer.
677  // * CONDITION_NOT_MET or FAILED_PRECONDITION:
678  //     * The SKU requires domain verification to transfer, but the domain is
679  //     not verified.
680  //     * An Add-On SKU (example, Vault or Drive) is missing the
681  //     pre-requisite SKU (example, G Suite Basic).
682  //     * (Developer accounts only) Reseller and resold domain must meet the
683  //     following naming requirements:
684  //         * Domain names must start with goog-test.
685  //         * Domain names must include the reseller domain.
686  //     * Specify all transferring entitlements.
687  // * INTERNAL: Any non-user error related to a technical issue in the
688  // backend. Contact Cloud Channel support.
689  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
690  // Contact Cloud Channel support.
691  //
692  // Return value:
693  // The ID of a long-running operation.
694  //
695  // To get the results of the operation, call the GetOperation method of
696  // CloudChannelOperationsService. The Operation metadata will contain an
697  // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata].
698  rpc TransferEntitlements(TransferEntitlementsRequest)
699      returns (google.longrunning.Operation) {
700    option (google.api.http) = {
701      post: "/v1/{parent=accounts/*/customers/*}:transferEntitlements"
702      body: "*"
703    };
704    option (google.longrunning.operation_info) = {
705      response_type: "TransferEntitlementsResponse"
706      metadata_type: "OperationMetadata"
707    };
708  }
709
710  // Transfers customer entitlements from their current reseller to Google.
711  //
712  // Possible error codes:
713  //
714  // * PERMISSION_DENIED: The customer doesn't belong to the reseller.
715  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
716  // * NOT_FOUND: The customer or offer resource was not found.
717  // * ALREADY_EXISTS: The SKU was already transferred for the customer.
718  // * CONDITION_NOT_MET or FAILED_PRECONDITION:
719  //     * The SKU requires domain verification to transfer, but the domain is
720  //     not verified.
721  //     * An Add-On SKU (example, Vault or Drive) is missing the
722  //     pre-requisite SKU (example, G Suite Basic).
723  //     * (Developer accounts only) Reseller and resold domain must meet the
724  //     following naming requirements:
725  //         * Domain names must start with goog-test.
726  //         * Domain names must include the reseller domain.
727  // * INTERNAL: Any non-user error related to a technical issue in the
728  // backend. Contact Cloud Channel support.
729  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
730  // Contact Cloud Channel support.
731  //
732  // Return value:
733  // The ID of a long-running operation.
734  //
735  // To get the results of the operation, call the GetOperation method of
736  // CloudChannelOperationsService. The response will contain
737  // google.protobuf.Empty on success. The Operation metadata will contain an
738  // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata].
739  rpc TransferEntitlementsToGoogle(TransferEntitlementsToGoogleRequest)
740      returns (google.longrunning.Operation) {
741    option (google.api.http) = {
742      post: "/v1/{parent=accounts/*/customers/*}:transferEntitlementsToGoogle"
743      body: "*"
744    };
745    option (google.longrunning.operation_info) = {
746      response_type: "google.protobuf.Empty"
747      metadata_type: "OperationMetadata"
748    };
749  }
750
751  // List [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink]s
752  // belonging to a distributor. You must be a distributor to call this method.
753  //
754  // Possible error codes:
755  //
756  // * PERMISSION_DENIED: The reseller account making the request is different
757  // from the reseller account in the API request.
758  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
759  //
760  // Return value:
761  // The list of the distributor account's
762  // [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink] resources.
763  rpc ListChannelPartnerLinks(ListChannelPartnerLinksRequest)
764      returns (ListChannelPartnerLinksResponse) {
765    option (google.api.http) = {
766      get: "/v1/{parent=accounts/*}/channelPartnerLinks"
767    };
768  }
769
770  // Returns the requested
771  // [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink] resource.
772  // You must be a distributor to call this method.
773  //
774  // Possible error codes:
775  //
776  // * PERMISSION_DENIED: The reseller account making the request is different
777  // from the reseller account in the API request.
778  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
779  // * NOT_FOUND: ChannelPartnerLink resource not found because of an
780  // invalid channel partner link name.
781  //
782  // Return value:
783  // The [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink]
784  // resource.
785  rpc GetChannelPartnerLink(GetChannelPartnerLinkRequest)
786      returns (ChannelPartnerLink) {
787    option (google.api.http) = {
788      get: "/v1/{name=accounts/*/channelPartnerLinks/*}"
789    };
790  }
791
792  // Initiates a channel partner link between a distributor and a reseller, or
793  // between resellers in an n-tier reseller channel.
794  // Invited partners need to follow the invite_link_uri provided in the
795  // response to accept. After accepting the invitation, a link is set up
796  // between the two parties.
797  // You must be a distributor to call this method.
798  //
799  // Possible error codes:
800  //
801  // * PERMISSION_DENIED: The reseller account making the request is different
802  // from the reseller account in the API request.
803  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
804  // * ALREADY_EXISTS: The ChannelPartnerLink sent in the request already
805  // exists.
806  // * NOT_FOUND: No Cloud Identity customer exists for provided domain.
807  // * INTERNAL: Any non-user error related to a technical issue in the
808  // backend. Contact Cloud Channel support.
809  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
810  // Contact Cloud Channel support.
811  //
812  // Return value:
813  // The new [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink]
814  // resource.
815  rpc CreateChannelPartnerLink(CreateChannelPartnerLinkRequest)
816      returns (ChannelPartnerLink) {
817    option (google.api.http) = {
818      post: "/v1/{parent=accounts/*}/channelPartnerLinks"
819      body: "channel_partner_link"
820    };
821  }
822
823  // Updates a channel partner link. Distributors call this method to change a
824  // link's status. For example, to suspend a partner link.
825  // You must be a distributor to call this method.
826  //
827  // Possible error codes:
828  //
829  // * PERMISSION_DENIED: The reseller account making the request is different
830  // from the reseller account in the API request.
831  // * INVALID_ARGUMENT:
832  //     * Required request parameters are missing or invalid.
833  //     * Link state cannot change from invited to active or suspended.
834  //     * Cannot send reseller_cloud_identity_id, invite_url, or name in update
835  //     mask.
836  // * NOT_FOUND: ChannelPartnerLink resource not found.
837  // * INTERNAL: Any non-user error related to a technical issue in the
838  // backend. Contact Cloud Channel support.
839  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
840  // Contact Cloud Channel support.
841  //
842  // Return value:
843  // The updated
844  // [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink] resource.
845  rpc UpdateChannelPartnerLink(UpdateChannelPartnerLinkRequest)
846      returns (ChannelPartnerLink) {
847    option (google.api.http) = {
848      patch: "/v1/{name=accounts/*/channelPartnerLinks/*}"
849      body: "*"
850    };
851  }
852
853  // Gets information about how a Reseller modifies their bill before sending
854  // it to a Customer.
855  //
856  // Possible Error Codes:
857  //
858  // * PERMISSION_DENIED: If the account making the request and the account
859  // being queried are different.
860  // * NOT_FOUND: The
861  // [CustomerRepricingConfig][google.cloud.channel.v1.CustomerRepricingConfig]
862  // was not found.
863  // * INTERNAL: Any non-user error related to technical issues in the
864  // backend. In this case, contact Cloud Channel support.
865  //
866  // Return Value:
867  // If successful, the
868  // [CustomerRepricingConfig][google.cloud.channel.v1.CustomerRepricingConfig]
869  // resource, otherwise returns an error.
870  rpc GetCustomerRepricingConfig(GetCustomerRepricingConfigRequest)
871      returns (CustomerRepricingConfig) {
872    option (google.api.http) = {
873      get: "/v1/{name=accounts/*/customers/*/customerRepricingConfigs/*}"
874    };
875    option (google.api.method_signature) = "name";
876  }
877
878  // Lists information about how a Reseller modifies their bill before sending
879  // it to a Customer.
880  //
881  // Possible Error Codes:
882  //
883  // * PERMISSION_DENIED: If the account making the request and the account
884  // being queried are different.
885  // * NOT_FOUND: The
886  // [CustomerRepricingConfig][google.cloud.channel.v1.CustomerRepricingConfig]
887  // specified does not exist or is not associated with the given account.
888  // * INTERNAL: Any non-user error related to technical issues in the
889  // backend. In this case, contact Cloud Channel support.
890  //
891  // Return Value:
892  // If successful, the
893  // [CustomerRepricingConfig][google.cloud.channel.v1.CustomerRepricingConfig]
894  // resources. The data for each resource is displayed in the ascending order
895  // of:
896  //
897  // * Customer ID
898  // * [RepricingConfig.EntitlementGranularity.entitlement][google.cloud.channel.v1.RepricingConfig.EntitlementGranularity.entitlement]
899  // * [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month]
900  // * [CustomerRepricingConfig.update_time][google.cloud.channel.v1.CustomerRepricingConfig.update_time]
901  //
902  // If unsuccessful, returns an error.
903  rpc ListCustomerRepricingConfigs(ListCustomerRepricingConfigsRequest)
904      returns (ListCustomerRepricingConfigsResponse) {
905    option (google.api.http) = {
906      get: "/v1/{parent=accounts/*/customers/*}/customerRepricingConfigs"
907    };
908    option (google.api.method_signature) = "parent";
909  }
910
911  // Creates a CustomerRepricingConfig. Call this method to set modifications
912  // for a specific customer's bill. You can only create configs if the
913  // [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month]
914  // is a future month. If needed, you can create a config for the current
915  // month, with some restrictions.
916  //
917  // When creating a config for a future month, make sure there are no existing
918  // configs for that
919  // [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month].
920  //
921  // The following restrictions are for creating configs in the current month.
922  //
923  // * This functionality is reserved for recovering from an erroneous config,
924  // and should not be used for regular business cases.
925  // * The new config will not modify exports used with other configs.
926  // Changes to the config may be immediate, but may take up to 24 hours.
927  // * There is a limit of ten configs for any
928  // [RepricingConfig.EntitlementGranularity.entitlement][google.cloud.channel.v1.RepricingConfig.EntitlementGranularity.entitlement],
929  // for any
930  // [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month].
931  // * The contained
932  // [CustomerRepricingConfig.repricing_config][google.cloud.channel.v1.CustomerRepricingConfig.repricing_config]
933  // value must be different from the value used in the current config for a
934  // [RepricingConfig.EntitlementGranularity.entitlement][google.cloud.channel.v1.RepricingConfig.EntitlementGranularity.entitlement].
935  //
936  // Possible Error Codes:
937  //
938  // * PERMISSION_DENIED: If the account making the request and the account
939  // being queried are different.
940  // * INVALID_ARGUMENT: Missing or invalid required parameters in the
941  // request. Also displays if the updated config is for the current month or
942  // past months.
943  // * NOT_FOUND: The
944  // [CustomerRepricingConfig][google.cloud.channel.v1.CustomerRepricingConfig]
945  // specified does not exist or is not associated with the given account.
946  // * INTERNAL: Any non-user error related to technical issues in the
947  // backend. In this case, contact Cloud Channel support.
948  //
949  // Return Value:
950  // If successful, the updated
951  // [CustomerRepricingConfig][google.cloud.channel.v1.CustomerRepricingConfig]
952  // resource, otherwise returns an error.
953  rpc CreateCustomerRepricingConfig(CreateCustomerRepricingConfigRequest)
954      returns (CustomerRepricingConfig) {
955    option (google.api.http) = {
956      post: "/v1/{parent=accounts/*/customers/*}/customerRepricingConfigs"
957      body: "customer_repricing_config"
958    };
959    option (google.api.method_signature) = "parent,customer_repricing_config";
960  }
961
962  // Updates a CustomerRepricingConfig. Call this method to set modifications
963  // for a specific customer's bill. This method overwrites the existing
964  // CustomerRepricingConfig.
965  //
966  // You can only update configs if the
967  // [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month]
968  // is a future month. To make changes to configs for the current month, use
969  // [CreateCustomerRepricingConfig][google.cloud.channel.v1.CloudChannelService.CreateCustomerRepricingConfig],
970  // taking note of its restrictions. You cannot update the
971  // [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month].
972  //
973  // When updating a config in the future:
974  //
975  // * This config must already exist.
976  //
977  // Possible Error Codes:
978  //
979  // * PERMISSION_DENIED: If the account making the request and the account
980  // being queried are different.
981  // * INVALID_ARGUMENT: Missing or invalid required parameters in the
982  // request. Also displays if the updated config is for the current month or
983  // past months.
984  // * NOT_FOUND: The
985  // [CustomerRepricingConfig][google.cloud.channel.v1.CustomerRepricingConfig]
986  // specified does not exist or is not associated with the given account.
987  // * INTERNAL: Any non-user error related to technical issues in the
988  // backend. In this case, contact Cloud Channel support.
989  //
990  // Return Value:
991  // If successful, the updated
992  // [CustomerRepricingConfig][google.cloud.channel.v1.CustomerRepricingConfig]
993  // resource, otherwise returns an error.
994  rpc UpdateCustomerRepricingConfig(UpdateCustomerRepricingConfigRequest)
995      returns (CustomerRepricingConfig) {
996    option (google.api.http) = {
997      patch: "/v1/{customer_repricing_config.name=accounts/*/customers/*/customerRepricingConfigs/*}"
998      body: "customer_repricing_config"
999    };
1000    option (google.api.method_signature) = "customer_repricing_config";
1001  }
1002
1003  // Deletes the given
1004  // [CustomerRepricingConfig][google.cloud.channel.v1.CustomerRepricingConfig]
1005  // permanently. You can only delete configs if their
1006  // [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month]
1007  // is set to a date after the current month.
1008  //
1009  // Possible error codes:
1010  //
1011  // * PERMISSION_DENIED: The account making the request does not own
1012  // this customer.
1013  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
1014  // * FAILED_PRECONDITION: The
1015  // [CustomerRepricingConfig][google.cloud.channel.v1.CustomerRepricingConfig]
1016  // is active or in the past.
1017  // * NOT_FOUND: No
1018  // [CustomerRepricingConfig][google.cloud.channel.v1.CustomerRepricingConfig]
1019  // found for the name in the request.
1020  rpc DeleteCustomerRepricingConfig(DeleteCustomerRepricingConfigRequest)
1021      returns (google.protobuf.Empty) {
1022    option (google.api.http) = {
1023      delete: "/v1/{name=accounts/*/customers/*/customerRepricingConfigs/*}"
1024    };
1025    option (google.api.method_signature) = "name";
1026  }
1027
1028  // Gets information about how a Distributor modifies their bill before sending
1029  // it to a ChannelPartner.
1030  //
1031  // Possible Error Codes:
1032  //
1033  // * PERMISSION_DENIED: If the account making the request and the account
1034  // being queried are different.
1035  // * NOT_FOUND: The
1036  // [ChannelPartnerRepricingConfig][google.cloud.channel.v1.ChannelPartnerRepricingConfig]
1037  // was not found.
1038  // * INTERNAL: Any non-user error related to technical issues in the
1039  // backend. In this case, contact Cloud Channel support.
1040  //
1041  // Return Value:
1042  // If successful, the
1043  // [ChannelPartnerRepricingConfig][google.cloud.channel.v1.ChannelPartnerRepricingConfig]
1044  // resource, otherwise returns an error.
1045  rpc GetChannelPartnerRepricingConfig(GetChannelPartnerRepricingConfigRequest)
1046      returns (ChannelPartnerRepricingConfig) {
1047    option (google.api.http) = {
1048      get: "/v1/{name=accounts/*/channelPartnerLinks/*/channelPartnerRepricingConfigs/*}"
1049    };
1050    option (google.api.method_signature) = "name";
1051  }
1052
1053  // Lists information about how a Reseller modifies their bill before sending
1054  // it to a ChannelPartner.
1055  //
1056  // Possible Error Codes:
1057  //
1058  // * PERMISSION_DENIED: If the account making the request and the account
1059  // being queried are different.
1060  // * NOT_FOUND: The
1061  // [ChannelPartnerRepricingConfig][google.cloud.channel.v1.ChannelPartnerRepricingConfig]
1062  // specified does not exist or is not associated with the given account.
1063  // * INTERNAL: Any non-user error related to technical issues in the
1064  // backend. In this case, contact Cloud Channel support.
1065  //
1066  // Return Value:
1067  // If successful, the
1068  // [ChannelPartnerRepricingConfig][google.cloud.channel.v1.ChannelPartnerRepricingConfig]
1069  // resources. The data for each resource is displayed in the ascending order
1070  // of:
1071  //
1072  // * Channel Partner ID
1073  // * [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month]
1074  // * [ChannelPartnerRepricingConfig.update_time][google.cloud.channel.v1.ChannelPartnerRepricingConfig.update_time]
1075  //
1076  // If unsuccessful, returns an error.
1077  rpc ListChannelPartnerRepricingConfigs(
1078      ListChannelPartnerRepricingConfigsRequest)
1079      returns (ListChannelPartnerRepricingConfigsResponse) {
1080    option (google.api.http) = {
1081      get: "/v1/{parent=accounts/*/channelPartnerLinks/*}/channelPartnerRepricingConfigs"
1082    };
1083    option (google.api.method_signature) = "parent";
1084  }
1085
1086  // Creates a ChannelPartnerRepricingConfig. Call this method to set
1087  // modifications for a specific ChannelPartner's bill. You can only create
1088  // configs if the
1089  // [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month]
1090  // is a future month. If needed, you can create a config for the current
1091  // month, with some restrictions.
1092  //
1093  // When creating a config for a future month, make sure there are no existing
1094  // configs for that
1095  // [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month].
1096  //
1097  // The following restrictions are for creating configs in the current month.
1098  //
1099  // * This functionality is reserved for recovering from an erroneous config,
1100  // and should not be used for regular business cases.
1101  // * The new config will not modify exports used with other configs.
1102  // Changes to the config may be immediate, but may take up to 24 hours.
1103  // * There is a limit of ten configs for any ChannelPartner or
1104  // [RepricingConfig.EntitlementGranularity.entitlement][google.cloud.channel.v1.RepricingConfig.EntitlementGranularity.entitlement],
1105  // for any
1106  // [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month].
1107  // * The contained
1108  // [ChannelPartnerRepricingConfig.repricing_config][google.cloud.channel.v1.ChannelPartnerRepricingConfig.repricing_config]
1109  // value must be different from the value used in the current config for a
1110  // ChannelPartner.
1111  //
1112  // Possible Error Codes:
1113  //
1114  // * PERMISSION_DENIED: If the account making the request and the account
1115  // being queried are different.
1116  // * INVALID_ARGUMENT: Missing or invalid required parameters in the
1117  // request. Also displays if the updated config is for the current month or
1118  // past months.
1119  // * NOT_FOUND: The
1120  // [ChannelPartnerRepricingConfig][google.cloud.channel.v1.ChannelPartnerRepricingConfig]
1121  // specified does not exist or is not associated with the given account.
1122  // * INTERNAL: Any non-user error related to technical issues in the
1123  // backend. In this case, contact Cloud Channel support.
1124  //
1125  // Return Value:
1126  // If successful, the updated
1127  // [ChannelPartnerRepricingConfig][google.cloud.channel.v1.ChannelPartnerRepricingConfig]
1128  // resource, otherwise returns an error.
1129  rpc CreateChannelPartnerRepricingConfig(
1130      CreateChannelPartnerRepricingConfigRequest)
1131      returns (ChannelPartnerRepricingConfig) {
1132    option (google.api.http) = {
1133      post: "/v1/{parent=accounts/*/channelPartnerLinks/*}/channelPartnerRepricingConfigs"
1134      body: "channel_partner_repricing_config"
1135    };
1136    option (google.api.method_signature) =
1137        "parent,channel_partner_repricing_config";
1138  }
1139
1140  // Updates a ChannelPartnerRepricingConfig. Call this method to set
1141  // modifications for a specific ChannelPartner's bill. This method overwrites
1142  // the existing CustomerRepricingConfig.
1143  //
1144  // You can only update configs if the
1145  // [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month]
1146  // is a future month. To make changes to configs for the current month, use
1147  // [CreateChannelPartnerRepricingConfig][google.cloud.channel.v1.CloudChannelService.CreateChannelPartnerRepricingConfig],
1148  // taking note of its restrictions. You cannot update the
1149  // [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month].
1150  //
1151  // When updating a config in the future:
1152  //
1153  // * This config must already exist.
1154  //
1155  // Possible Error Codes:
1156  //
1157  // * PERMISSION_DENIED: If the account making the request and the account
1158  // being queried are different.
1159  // * INVALID_ARGUMENT: Missing or invalid required parameters in the
1160  // request. Also displays if the updated config is for the current month or
1161  // past months.
1162  // * NOT_FOUND: The
1163  // [ChannelPartnerRepricingConfig][google.cloud.channel.v1.ChannelPartnerRepricingConfig]
1164  // specified does not exist or is not associated with the given account.
1165  // * INTERNAL: Any non-user error related to technical issues in the
1166  // backend. In this case, contact Cloud Channel support.
1167  //
1168  // Return Value:
1169  // If successful, the updated
1170  // [ChannelPartnerRepricingConfig][google.cloud.channel.v1.ChannelPartnerRepricingConfig]
1171  // resource, otherwise returns an error.
1172  rpc UpdateChannelPartnerRepricingConfig(
1173      UpdateChannelPartnerRepricingConfigRequest)
1174      returns (ChannelPartnerRepricingConfig) {
1175    option (google.api.http) = {
1176      patch: "/v1/{channel_partner_repricing_config.name=accounts/*/channelPartnerLinks/*/channelPartnerRepricingConfigs/*}"
1177      body: "channel_partner_repricing_config"
1178    };
1179    option (google.api.method_signature) = "channel_partner_repricing_config";
1180  }
1181
1182  // Deletes the given
1183  // [ChannelPartnerRepricingConfig][google.cloud.channel.v1.ChannelPartnerRepricingConfig]
1184  // permanently. You can only delete configs if their
1185  // [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month]
1186  // is set to a date after the current month.
1187  //
1188  // Possible error codes:
1189  //
1190  // * PERMISSION_DENIED: The account making the request does not own
1191  // this customer.
1192  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
1193  // * FAILED_PRECONDITION: The
1194  // [ChannelPartnerRepricingConfig][google.cloud.channel.v1.ChannelPartnerRepricingConfig]
1195  // is active or in the past.
1196  // * NOT_FOUND: No
1197  // [ChannelPartnerRepricingConfig][google.cloud.channel.v1.ChannelPartnerRepricingConfig]
1198  // found for the name in the request.
1199  rpc DeleteChannelPartnerRepricingConfig(
1200      DeleteChannelPartnerRepricingConfigRequest)
1201      returns (google.protobuf.Empty) {
1202    option (google.api.http) = {
1203      delete: "/v1/{name=accounts/*/channelPartnerLinks/*/channelPartnerRepricingConfigs/*}"
1204    };
1205    option (google.api.method_signature) = "name";
1206  }
1207
1208  // Lists the Rebilling supported SKU groups the account is authorized to
1209  // sell.
1210  // Reference: https://cloud.google.com/skus/sku-groups
1211  //
1212  // Possible Error Codes:
1213  //
1214  // * PERMISSION_DENIED: If the account making the request and the account
1215  // being queried are different, or the account doesn't exist.
1216  // * INTERNAL: Any non-user error related to technical issues in the
1217  // backend. In this case, contact Cloud Channel support.
1218  //
1219  // Return Value:
1220  // If successful, the [SkuGroup][google.cloud.channel.v1.SkuGroup] resources.
1221  // The data for each resource is displayed in the alphabetical order of SKU
1222  // group display name.
1223  // The data for each resource is displayed in the ascending order of
1224  // [SkuGroup.display_name][google.cloud.channel.v1.SkuGroup.display_name]
1225  //
1226  // If unsuccessful, returns an error.
1227  rpc ListSkuGroups(ListSkuGroupsRequest) returns (ListSkuGroupsResponse) {
1228    option (google.api.http) = {
1229      get: "/v1/{parent=accounts/*}/skuGroups"
1230    };
1231    option (google.api.method_signature) = "parent";
1232  }
1233
1234  // Lists the Billable SKUs in a given SKU group.
1235  //
1236  // Possible error codes:
1237  // PERMISSION_DENIED: If the account making the request and the account
1238  // being queried for are different, or the account doesn't exist.
1239  // INVALID_ARGUMENT: Missing or invalid required parameters in the
1240  // request.
1241  // INTERNAL: Any non-user error related to technical issue in the
1242  // backend. In this case, contact cloud channel support.
1243  //
1244  // Return Value:
1245  // If successful, the [BillableSku][google.cloud.channel.v1.BillableSku]
1246  // resources. The data for each resource is displayed in the ascending order
1247  // of:
1248  //
1249  // * [BillableSku.service_display_name][google.cloud.channel.v1.BillableSku.service_display_name]
1250  // * [BillableSku.sku_display_name][google.cloud.channel.v1.BillableSku.sku_display_name]
1251  //
1252  // If unsuccessful, returns an error.
1253  rpc ListSkuGroupBillableSkus(ListSkuGroupBillableSkusRequest)
1254      returns (ListSkuGroupBillableSkusResponse) {
1255    option (google.api.http) = {
1256      get: "/v1/{parent=accounts/*/skuGroups/*}/billableSkus"
1257    };
1258    option (google.api.method_signature) = "parent";
1259  }
1260
1261  // Returns the requested [Offer][google.cloud.channel.v1.Offer] resource.
1262  //
1263  // Possible error codes:
1264  //
1265  // * PERMISSION_DENIED: The entitlement doesn't belong to the reseller.
1266  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
1267  // * NOT_FOUND: Entitlement or offer was not found.
1268  //
1269  // Return value:
1270  // The [Offer][google.cloud.channel.v1.Offer] resource.
1271  rpc LookupOffer(LookupOfferRequest) returns (Offer) {
1272    option (google.api.http) = {
1273      get: "/v1/{entitlement=accounts/*/customers/*/entitlements/*}:lookupOffer"
1274    };
1275  }
1276
1277  // Lists the Products the reseller is authorized to sell.
1278  //
1279  // Possible error codes:
1280  //
1281  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
1282  rpc ListProducts(ListProductsRequest) returns (ListProductsResponse) {
1283    option (google.api.http) = {
1284      get: "/v1/products"
1285    };
1286  }
1287
1288  // Lists the SKUs for a product the reseller is authorized to sell.
1289  //
1290  // Possible error codes:
1291  //
1292  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
1293  rpc ListSkus(ListSkusRequest) returns (ListSkusResponse) {
1294    option (google.api.http) = {
1295      get: "/v1/{parent=products/*}/skus"
1296    };
1297  }
1298
1299  // Lists the Offers the reseller can sell.
1300  //
1301  // Possible error codes:
1302  //
1303  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
1304  rpc ListOffers(ListOffersRequest) returns (ListOffersResponse) {
1305    option (google.api.http) = {
1306      get: "/v1/{parent=accounts/*}/offers"
1307    };
1308  }
1309
1310  // Lists the following:
1311  //
1312  // * SKUs that you can purchase for a customer
1313  // * SKUs that you can upgrade or downgrade for an entitlement.
1314  //
1315  // Possible error codes:
1316  //
1317  // * PERMISSION_DENIED: The customer doesn't belong to the reseller.
1318  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
1319  rpc ListPurchasableSkus(ListPurchasableSkusRequest)
1320      returns (ListPurchasableSkusResponse) {
1321    option (google.api.http) = {
1322      get: "/v1/{customer=accounts/*/customers/*}:listPurchasableSkus"
1323    };
1324  }
1325
1326  // Lists the following:
1327  //
1328  // * Offers that you can purchase for a customer.
1329  // * Offers that you can change for an entitlement.
1330  //
1331  // Possible error codes:
1332  //
1333  // * PERMISSION_DENIED:
1334  //     * The customer doesn't belong to the reseller
1335  //     * The reseller is not authorized to transact on this Product. See
1336  //     https://support.google.com/channelservices/answer/9759265
1337  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
1338  rpc ListPurchasableOffers(ListPurchasableOffersRequest)
1339      returns (ListPurchasableOffersResponse) {
1340    option (google.api.http) = {
1341      get: "/v1/{customer=accounts/*/customers/*}:listPurchasableOffers"
1342    };
1343  }
1344
1345  // Lists the billing accounts that are eligible to purchase particular SKUs
1346  // for a given customer.
1347  //
1348  // Possible error codes:
1349  //
1350  // * PERMISSION_DENIED: The customer doesn't belong to the reseller.
1351  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
1352  //
1353  // Return value:
1354  // Based on the provided list of SKUs, returns a list of SKU groups that must
1355  // be purchased using the same billing account and the billing accounts
1356  // eligible to purchase each SKU group.
1357  rpc QueryEligibleBillingAccounts(QueryEligibleBillingAccountsRequest)
1358      returns (QueryEligibleBillingAccountsResponse) {
1359    option (google.api.http) = {
1360      get: "/v1/{customer=accounts/*/customers/*}:queryEligibleBillingAccounts"
1361    };
1362  }
1363
1364  // Registers a service account with subscriber privileges on the Cloud Pub/Sub
1365  // topic for this Channel Services account. After you create a
1366  // subscriber, you get the events through
1367  // [SubscriberEvent][google.cloud.channel.v1.SubscriberEvent]
1368  //
1369  // Possible error codes:
1370  //
1371  // * PERMISSION_DENIED: The reseller account making the request and the
1372  // provided reseller account are different, or the impersonated user
1373  // is not a super admin.
1374  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
1375  // * INTERNAL: Any non-user error related to a technical issue in the
1376  // backend. Contact Cloud Channel support.
1377  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
1378  // Contact Cloud Channel support.
1379  //
1380  // Return value:
1381  // The topic name with the registered service email address.
1382  rpc RegisterSubscriber(RegisterSubscriberRequest)
1383      returns (RegisterSubscriberResponse) {
1384    option (google.api.http) = {
1385      post: "/v1/{account=accounts/*}:register"
1386      body: "*"
1387    };
1388  }
1389
1390  // Unregisters a service account with subscriber privileges on the Cloud
1391  // Pub/Sub topic created for this Channel Services account. If there are no
1392  // service accounts left with subscriber privileges, this deletes the topic.
1393  // You can call ListSubscribers to check for these accounts.
1394  //
1395  // Possible error codes:
1396  //
1397  // * PERMISSION_DENIED: The reseller account making the request and the
1398  // provided reseller account are different, or the impersonated user
1399  // is not a super admin.
1400  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
1401  // * NOT_FOUND: The topic resource doesn't exist.
1402  // * INTERNAL: Any non-user error related to a technical issue in the
1403  // backend. Contact Cloud Channel support.
1404  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
1405  // Contact Cloud Channel support.
1406  //
1407  // Return value:
1408  // The topic name that unregistered the service email address.
1409  // Returns a success response if the service email address wasn't registered
1410  // with the topic.
1411  rpc UnregisterSubscriber(UnregisterSubscriberRequest)
1412      returns (UnregisterSubscriberResponse) {
1413    option (google.api.http) = {
1414      post: "/v1/{account=accounts/*}:unregister"
1415      body: "*"
1416    };
1417  }
1418
1419  // Lists service accounts with subscriber privileges on the Cloud Pub/Sub
1420  // topic created for this Channel Services account.
1421  //
1422  // Possible error codes:
1423  //
1424  // * PERMISSION_DENIED: The reseller account making the request and the
1425  // provided reseller account are different, or the impersonated user
1426  // is not a super admin.
1427  // * INVALID_ARGUMENT: Required request parameters are missing or invalid.
1428  // * NOT_FOUND: The topic resource doesn't exist.
1429  // * INTERNAL: Any non-user error related to a technical issue in the
1430  // backend. Contact Cloud Channel support.
1431  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
1432  // Contact Cloud Channel support.
1433  //
1434  // Return value:
1435  // A list of service email addresses.
1436  rpc ListSubscribers(ListSubscribersRequest)
1437      returns (ListSubscribersResponse) {
1438    option (google.api.http) = {
1439      get: "/v1/{account=accounts/*}:listSubscribers"
1440    };
1441  }
1442
1443  // List entitlement history.
1444  //
1445  // Possible error codes:
1446  //
1447  // * PERMISSION_DENIED: The reseller account making the request and the
1448  // provided reseller account are different.
1449  // * INVALID_ARGUMENT: Missing or invalid required fields in the request.
1450  // * NOT_FOUND: The parent resource doesn't exist. Usually the result of an
1451  // invalid name parameter.
1452  // * INTERNAL: Any non-user error related to a technical issue in the backend.
1453  // In this case, contact CloudChannel support.
1454  // * UNKNOWN: Any non-user error related to a technical issue in the backend.
1455  // In this case, contact Cloud Channel support.
1456  //
1457  // Return value:
1458  // List of [EntitlementChange][google.cloud.channel.v1.EntitlementChange]s.
1459  rpc ListEntitlementChanges(ListEntitlementChangesRequest)
1460      returns (ListEntitlementChangesResponse) {
1461    option (google.api.http) = {
1462      get: "/v1/{parent=accounts/*/customers/*/entitlements/*}:listEntitlementChanges"
1463    };
1464    option (google.api.method_signature) = "parent";
1465  }
1466}
1467
1468// Request message for
1469// [CloudChannelService.CheckCloudIdentityAccountsExist][google.cloud.channel.v1.CloudChannelService.CheckCloudIdentityAccountsExist].
1470message CheckCloudIdentityAccountsExistRequest {
1471  // Required. The reseller account's resource name.
1472  // Parent uses the format: accounts/{account_id}
1473  string parent = 1 [(google.api.field_behavior) = REQUIRED];
1474
1475  // Required. Domain to fetch for Cloud Identity account customer.
1476  string domain = 2 [(google.api.field_behavior) = REQUIRED];
1477}
1478
1479// Entity representing a Cloud Identity account that may be
1480// associated with a Channel Services API partner.
1481message CloudIdentityCustomerAccount {
1482  // Returns true if a Cloud Identity account exists for a specific domain.
1483  bool existing = 1;
1484
1485  // Returns true if the Cloud Identity account is associated with a customer
1486  // of the Channel Services partner.
1487  bool owned = 2;
1488
1489  // If owned = true, the name of the customer that owns the Cloud Identity
1490  // account.
1491  // Customer_name uses the format:
1492  // accounts/{account_id}/customers/{customer_id}
1493  string customer_name = 3;
1494
1495  // If existing = true, the Cloud Identity ID of the customer.
1496  string customer_cloud_identity_id = 4;
1497}
1498
1499// Response message for
1500// [CloudChannelService.CheckCloudIdentityAccountsExist][google.cloud.channel.v1.CloudChannelService.CheckCloudIdentityAccountsExist].
1501message CheckCloudIdentityAccountsExistResponse {
1502  // The Cloud Identity accounts associated with the domain.
1503  repeated CloudIdentityCustomerAccount cloud_identity_accounts = 1;
1504}
1505
1506// Request message for
1507// [CloudChannelService.ListCustomers][google.cloud.channel.v1.CloudChannelService.ListCustomers]
1508message ListCustomersRequest {
1509  // Required. The resource name of the reseller account to list customers from.
1510  // Parent uses the format: accounts/{account_id}.
1511  string parent = 1 [(google.api.field_behavior) = REQUIRED];
1512
1513  // Optional. The maximum number of customers to return. The service may return
1514  // fewer than this value. If unspecified, returns at most 10 customers. The
1515  // maximum value is 50.
1516  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
1517
1518  // Optional. A token identifying a page of results other than the first page.
1519  // Obtained through
1520  // [ListCustomersResponse.next_page_token][google.cloud.channel.v1.ListCustomersResponse.next_page_token]
1521  // of the previous
1522  // [CloudChannelService.ListCustomers][google.cloud.channel.v1.CloudChannelService.ListCustomers]
1523  // call.
1524  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
1525
1526  // Optional. Filters applied to the [CloudChannelService.ListCustomers]
1527  // results. See
1528  // https://cloud.google.com/channel/docs/concepts/google-cloud/filter-customers
1529  // for more information.
1530  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
1531}
1532
1533// Response message for
1534// [CloudChannelService.ListCustomers][google.cloud.channel.v1.CloudChannelService.ListCustomers].
1535message ListCustomersResponse {
1536  // The customers belonging to a reseller or distributor.
1537  repeated Customer customers = 1;
1538
1539  // A token to retrieve the next page of results.
1540  // Pass to
1541  // [ListCustomersRequest.page_token][google.cloud.channel.v1.ListCustomersRequest.page_token]
1542  // to obtain that page.
1543  string next_page_token = 2;
1544}
1545
1546// Request message for
1547// [CloudChannelService.GetCustomer][google.cloud.channel.v1.CloudChannelService.GetCustomer].
1548message GetCustomerRequest {
1549  // Required. The resource name of the customer to retrieve.
1550  // Name uses the format: accounts/{account_id}/customers/{customer_id}
1551  string name = 1 [
1552    (google.api.field_behavior) = REQUIRED,
1553    (google.api.resource_reference) = {
1554      type: "cloudchannel.googleapis.com/Customer"
1555    }
1556  ];
1557}
1558
1559// Request message for
1560// [CloudChannelService.CreateCustomer][google.cloud.channel.v1.CloudChannelService.CreateCustomer]
1561message CreateCustomerRequest {
1562  // Required. The resource name of reseller account in which to create the
1563  // customer. Parent uses the format: accounts/{account_id}
1564  string parent = 1 [(google.api.field_behavior) = REQUIRED];
1565
1566  // Required. The customer to create.
1567  Customer customer = 2 [(google.api.field_behavior) = REQUIRED];
1568}
1569
1570// Request message for
1571// [CloudChannelService.UpdateCustomer][google.cloud.channel.v1.CloudChannelService.UpdateCustomer].
1572message UpdateCustomerRequest {
1573  // Required. New contents of the customer.
1574  Customer customer = 2 [(google.api.field_behavior) = REQUIRED];
1575
1576  // The update mask that applies to the resource.
1577  // Optional.
1578  google.protobuf.FieldMask update_mask = 3;
1579}
1580
1581// Request message for
1582// [CloudChannelService.DeleteCustomer][google.cloud.channel.v1.CloudChannelService.DeleteCustomer].
1583message DeleteCustomerRequest {
1584  // Required. The resource name of the customer to delete.
1585  string name = 1 [
1586    (google.api.field_behavior) = REQUIRED,
1587    (google.api.resource_reference) = {
1588      type: "cloudchannel.googleapis.com/Customer"
1589    }
1590  ];
1591}
1592
1593// Request message for
1594// [CloudChannelService.ImportCustomer][google.cloud.channel.v1.CloudChannelService.ImportCustomer]
1595message ImportCustomerRequest {
1596  // Specifies the identity of the transfer customer.
1597  // A customer's cloud_identity_id or domain is required to look up the
1598  // customer's Cloud Identity. For Team customers, only the cloud_identity_id
1599  // option is valid.
1600  oneof customer_identity {
1601    // Required. Customer domain.
1602    string domain = 2 [(google.api.field_behavior) = REQUIRED];
1603
1604    // Required. Customer's Cloud Identity ID
1605    string cloud_identity_id = 3 [(google.api.field_behavior) = REQUIRED];
1606  }
1607
1608  // Required. The resource name of the reseller's account.
1609  // Parent takes the format: accounts/{account_id} or
1610  // accounts/{account_id}/channelPartnerLinks/{channel_partner_id}
1611  string parent = 1 [(google.api.field_behavior) = REQUIRED];
1612
1613  // Optional. The super admin of the resold customer generates this token to
1614  // authorize a reseller to access their Cloud Identity and purchase
1615  // entitlements on their behalf. You can omit this token after authorization.
1616  // See https://support.google.com/a/answer/7643790 for more details.
1617  string auth_token = 4 [(google.api.field_behavior) = OPTIONAL];
1618
1619  // Required. Choose to overwrite an existing customer if found.
1620  // This must be set to true if there is an existing customer with a
1621  // conflicting region code or domain.
1622  bool overwrite_if_exists = 5 [(google.api.field_behavior) = REQUIRED];
1623
1624  // Optional. Cloud Identity ID of a channel partner who will be the direct
1625  // reseller for the customer's order. This field is required for 2-tier
1626  // transfer scenarios and can be provided via the request Parent binding as
1627  // well.
1628  string channel_partner_id = 6 [(google.api.field_behavior) = OPTIONAL];
1629
1630  // Optional. Specifies the customer that will receive imported Cloud Identity
1631  // information.
1632  // Format: accounts/{account_id}/customers/{customer_id}
1633  string customer = 7 [
1634    (google.api.field_behavior) = OPTIONAL,
1635    (google.api.resource_reference) = {
1636      type: "cloudchannel.googleapis.com/Customer"
1637    }
1638  ];
1639}
1640
1641// Request message for
1642// [CloudChannelService.ProvisionCloudIdentity][google.cloud.channel.v1.CloudChannelService.ProvisionCloudIdentity]
1643message ProvisionCloudIdentityRequest {
1644  // Required. Resource name of the customer.
1645  // Format: accounts/{account_id}/customers/{customer_id}
1646  string customer = 1 [
1647    (google.api.field_behavior) = REQUIRED,
1648    (google.api.resource_reference) = {
1649      type: "cloudchannel.googleapis.com/Customer"
1650    }
1651  ];
1652
1653  // CloudIdentity-specific customer information.
1654  CloudIdentityInfo cloud_identity_info = 2;
1655
1656  // Admin user information.
1657  AdminUser user = 3;
1658
1659  // Validate the request and preview the review, but do not post it.
1660  bool validate_only = 4;
1661}
1662
1663// Request message for
1664// [CloudChannelService.ListEntitlements][google.cloud.channel.v1.CloudChannelService.ListEntitlements]
1665message ListEntitlementsRequest {
1666  // Required. The resource name of the reseller's customer account to list
1667  // entitlements for.
1668  // Parent uses the format: accounts/{account_id}/customers/{customer_id}
1669  string parent = 1 [
1670    (google.api.field_behavior) = REQUIRED,
1671    (google.api.resource_reference) = {
1672      type: "cloudchannel.googleapis.com/Customer"
1673    }
1674  ];
1675
1676  // Optional. Requested page size. Server might return fewer results than
1677  // requested. If unspecified, return at most 50 entitlements. The maximum
1678  // value is 100; the server will coerce values above 100.
1679  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
1680
1681  // Optional. A token for a page of results other than the first page.
1682  // Obtained using
1683  // [ListEntitlementsResponse.next_page_token][google.cloud.channel.v1.ListEntitlementsResponse.next_page_token]
1684  // of the previous
1685  // [CloudChannelService.ListEntitlements][google.cloud.channel.v1.CloudChannelService.ListEntitlements]
1686  // call.
1687  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
1688}
1689
1690// Response message for
1691// [CloudChannelService.ListEntitlements][google.cloud.channel.v1.CloudChannelService.ListEntitlements].
1692message ListEntitlementsResponse {
1693  // The reseller customer's entitlements.
1694  repeated Entitlement entitlements = 1;
1695
1696  // A token to list the next page of results.
1697  // Pass to
1698  // [ListEntitlementsRequest.page_token][google.cloud.channel.v1.ListEntitlementsRequest.page_token]
1699  // to obtain that page.
1700  string next_page_token = 2;
1701}
1702
1703// Request message for
1704// [CloudChannelService.ListTransferableSkus][google.cloud.channel.v1.CloudChannelService.ListTransferableSkus]
1705message ListTransferableSkusRequest {
1706  // Specifies the identity of transferred customer.
1707  // Either a cloud_identity_id of the customer or the customer name is
1708  // required to look up transferable SKUs.
1709  oneof transferred_customer_identity {
1710    // Customer's Cloud Identity ID
1711    string cloud_identity_id = 4;
1712
1713    // A reseller is required to create a customer and use the resource name of
1714    // the created customer here.
1715    // Customer_name uses the format:
1716    // accounts/{account_id}/customers/{customer_id}
1717    string customer_name = 7;
1718  }
1719
1720  // Required. The reseller account's resource name.
1721  // Parent uses the format: accounts/{account_id}
1722  string parent = 1 [(google.api.field_behavior) = REQUIRED];
1723
1724  // The requested page size. Server might return fewer results than requested.
1725  // If unspecified, returns at most 100 SKUs.
1726  // The maximum value is 1000; the server will coerce values above 1000.
1727  // Optional.
1728  int32 page_size = 2;
1729
1730  // A token for a page of results other than the first page.
1731  // Obtained using
1732  // [ListTransferableSkusResponse.next_page_token][google.cloud.channel.v1.ListTransferableSkusResponse.next_page_token]
1733  // of the previous
1734  // [CloudChannelService.ListTransferableSkus][google.cloud.channel.v1.CloudChannelService.ListTransferableSkus]
1735  // call. Optional.
1736  string page_token = 3;
1737
1738  // Optional. The super admin of the resold customer generates this token to
1739  // authorize a reseller to access their Cloud Identity and purchase
1740  // entitlements on their behalf. You can omit this token after authorization.
1741  // See https://support.google.com/a/answer/7643790 for more details.
1742  string auth_token = 5 [(google.api.field_behavior) = OPTIONAL];
1743
1744  // The BCP-47 language code. For example, "en-US". The
1745  // response will localize in the corresponding language code, if specified.
1746  // The default value is "en-US".
1747  // Optional.
1748  string language_code = 6;
1749}
1750
1751// Response message for
1752// [CloudChannelService.ListTransferableSkus][google.cloud.channel.v1.CloudChannelService.ListTransferableSkus].
1753message ListTransferableSkusResponse {
1754  // Information about existing SKUs for a customer that needs a transfer.
1755  repeated TransferableSku transferable_skus = 1;
1756
1757  // A token to retrieve the next page of results.
1758  // Pass to
1759  // [ListTransferableSkusRequest.page_token][google.cloud.channel.v1.ListTransferableSkusRequest.page_token]
1760  // to obtain that page.
1761  string next_page_token = 2;
1762}
1763
1764// Request message for
1765// [CloudChannelService.ListTransferableOffers][google.cloud.channel.v1.CloudChannelService.ListTransferableOffers]
1766message ListTransferableOffersRequest {
1767  // Specifies the identity of transferred customer.
1768  // Either a cloud_identity_id of the customer or the customer name is
1769  // required to look up transferrable Offers.
1770  oneof transferred_customer_identity {
1771    // Customer's Cloud Identity ID
1772    string cloud_identity_id = 4;
1773
1774    // A reseller should create a customer and use the resource name of
1775    // that customer here.
1776    string customer_name = 5;
1777  }
1778
1779  // Required. The resource name of the reseller's account.
1780  string parent = 1 [(google.api.field_behavior) = REQUIRED];
1781
1782  // Requested page size. Server might return fewer results than requested.
1783  // If unspecified, returns at most 100 offers.
1784  // The maximum value is 1000; the server will coerce values above 1000.
1785  int32 page_size = 2;
1786
1787  // A token for a page of results other than the first page.
1788  // Obtained using
1789  // [ListTransferableOffersResponse.next_page_token][google.cloud.channel.v1.ListTransferableOffersResponse.next_page_token]
1790  // of the previous
1791  // [CloudChannelService.ListTransferableOffers][google.cloud.channel.v1.CloudChannelService.ListTransferableOffers]
1792  // call.
1793  string page_token = 3;
1794
1795  // Required. The SKU to look up Offers for.
1796  string sku = 6 [(google.api.field_behavior) = REQUIRED];
1797
1798  // Optional. The BCP-47 language code. For example, "en-US". The
1799  // response will localize in the corresponding language code, if specified.
1800  // The default value is "en-US".
1801  string language_code = 7 [(google.api.field_behavior) = OPTIONAL];
1802
1803  // Optional. The Billing Account to look up Offers for. Format:
1804  // accounts/{account_id}/billingAccounts/{billing_account_id}.
1805  //
1806  // This field is only relevant for multi-currency accounts. It should be left
1807  // empty for single currency accounts.
1808  string billing_account = 8 [(google.api.field_behavior) = OPTIONAL];
1809}
1810
1811// Response message for
1812// [CloudChannelService.ListTransferableOffers][google.cloud.channel.v1.CloudChannelService.ListTransferableOffers].
1813message ListTransferableOffersResponse {
1814  // Information about Offers for a customer that can be used for
1815  // transfer.
1816  repeated TransferableOffer transferable_offers = 1;
1817
1818  // A token to retrieve the next page of results.
1819  // Pass to
1820  // [ListTransferableOffersRequest.page_token][google.cloud.channel.v1.ListTransferableOffersRequest.page_token]
1821  // to obtain that page.
1822  string next_page_token = 2;
1823}
1824
1825// TransferableOffer represents an Offer that can be used in Transfer.
1826// Read-only.
1827message TransferableOffer {
1828  // Offer with parameter constraints updated to allow the Transfer.
1829  Offer offer = 1;
1830}
1831
1832// Request message for
1833// [CloudChannelService.GetEntitlement][google.cloud.channel.v1.CloudChannelService.GetEntitlement].
1834message GetEntitlementRequest {
1835  // Required. The resource name of the entitlement to retrieve.
1836  // Name uses the format:
1837  // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
1838  string name = 1 [
1839    (google.api.field_behavior) = REQUIRED,
1840    (google.api.resource_reference) = {
1841      type: "cloudchannel.googleapis.com/Entitlement"
1842    }
1843  ];
1844}
1845
1846// Request message for
1847// [CloudChannelService.ListChannelPartnerLinks][google.cloud.channel.v1.CloudChannelService.ListChannelPartnerLinks]
1848message ListChannelPartnerLinksRequest {
1849  // Required. The resource name of the reseller account for listing channel
1850  // partner links. Parent uses the format: accounts/{account_id}
1851  string parent = 1 [(google.api.field_behavior) = REQUIRED];
1852
1853  // Optional. Requested page size. Server might return fewer results than
1854  // requested. If unspecified, server will pick a default size (25). The
1855  // maximum value is 200; the server will coerce values above 200.
1856  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
1857
1858  // Optional. A token for a page of results other than the first page.
1859  // Obtained using
1860  // [ListChannelPartnerLinksResponse.next_page_token][google.cloud.channel.v1.ListChannelPartnerLinksResponse.next_page_token]
1861  // of the previous
1862  // [CloudChannelService.ListChannelPartnerLinks][google.cloud.channel.v1.CloudChannelService.ListChannelPartnerLinks]
1863  // call.
1864  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
1865
1866  // Optional. The level of granularity the ChannelPartnerLink will display.
1867  ChannelPartnerLinkView view = 4 [(google.api.field_behavior) = OPTIONAL];
1868}
1869
1870// Response message for
1871// [CloudChannelService.ListChannelPartnerLinks][google.cloud.channel.v1.CloudChannelService.ListChannelPartnerLinks].
1872message ListChannelPartnerLinksResponse {
1873  // The Channel partner links for a reseller.
1874  repeated ChannelPartnerLink channel_partner_links = 1;
1875
1876  // A token to retrieve the next page of results.
1877  // Pass to
1878  // [ListChannelPartnerLinksRequest.page_token][google.cloud.channel.v1.ListChannelPartnerLinksRequest.page_token]
1879  // to obtain that page.
1880  string next_page_token = 2;
1881}
1882
1883// Request message for
1884// [CloudChannelService.GetChannelPartnerLink][google.cloud.channel.v1.CloudChannelService.GetChannelPartnerLink].
1885message GetChannelPartnerLinkRequest {
1886  // Required. The resource name of the channel partner link to retrieve.
1887  // Name uses the format: accounts/{account_id}/channelPartnerLinks/{id}
1888  // where {id} is the Cloud Identity ID of the partner.
1889  string name = 1 [(google.api.field_behavior) = REQUIRED];
1890
1891  // Optional. The level of granularity the ChannelPartnerLink will display.
1892  ChannelPartnerLinkView view = 2 [(google.api.field_behavior) = OPTIONAL];
1893}
1894
1895// Request message for
1896// [CloudChannelService.CreateChannelPartnerLink][google.cloud.channel.v1.CloudChannelService.CreateChannelPartnerLink]
1897message CreateChannelPartnerLinkRequest {
1898  // Required. Create a channel partner link for the provided reseller account's
1899  // resource name.
1900  // Parent uses the format: accounts/{account_id}
1901  string parent = 1 [(google.api.field_behavior) = REQUIRED];
1902
1903  // Required. The channel partner link to create.
1904  // Either channel_partner_link.reseller_cloud_identity_id or domain can be
1905  // used to create a link.
1906  ChannelPartnerLink channel_partner_link = 2
1907      [(google.api.field_behavior) = REQUIRED];
1908}
1909
1910// Request message for
1911// [CloudChannelService.UpdateChannelPartnerLink][google.cloud.channel.v1.CloudChannelService.UpdateChannelPartnerLink]
1912message UpdateChannelPartnerLinkRequest {
1913  // Required. The resource name of the channel partner link to cancel.
1914  // Name uses the format: accounts/{account_id}/channelPartnerLinks/{id}
1915  // where {id} is the Cloud Identity ID of the partner.
1916  string name = 1 [(google.api.field_behavior) = REQUIRED];
1917
1918  // Required. The channel partner link to update. Only
1919  // channel_partner_link.link_state is allowed for updates.
1920  ChannelPartnerLink channel_partner_link = 2
1921      [(google.api.field_behavior) = REQUIRED];
1922
1923  // Required. The update mask that applies to the resource.
1924  // The only allowable value for an update mask is
1925  // channel_partner_link.link_state.
1926  google.protobuf.FieldMask update_mask = 3
1927      [(google.api.field_behavior) = REQUIRED];
1928}
1929
1930// Request message for
1931// [CloudChannelService.GetCustomerRepricingConfig][google.cloud.channel.v1.CloudChannelService.GetCustomerRepricingConfig].
1932message GetCustomerRepricingConfigRequest {
1933  // Required. The resource name of the CustomerRepricingConfig.
1934  // Format:
1935  // accounts/{account_id}/customers/{customer_id}/customerRepricingConfigs/{id}.
1936  string name = 1 [
1937    (google.api.field_behavior) = REQUIRED,
1938    (google.api.resource_reference) = {
1939      type: "cloudchannel.googleapis.com/CustomerRepricingConfig"
1940    }
1941  ];
1942}
1943
1944// Request message for
1945// [CloudChannelService.ListCustomerRepricingConfigs][google.cloud.channel.v1.CloudChannelService.ListCustomerRepricingConfigs].
1946message ListCustomerRepricingConfigsRequest {
1947  // Required. The resource name of the customer.
1948  // Parent uses the format: accounts/{account_id}/customers/{customer_id}.
1949  // Supports accounts/{account_id}/customers/- to retrieve configs for all
1950  // customers.
1951  string parent = 1 [
1952    (google.api.field_behavior) = REQUIRED,
1953    (google.api.resource_reference) = {
1954      type: "cloudchannel.googleapis.com/Customer"
1955    }
1956  ];
1957
1958  // Optional. The maximum number of repricing configs to return. The service
1959  // may return fewer than this value. If unspecified, returns a maximum of 50
1960  // rules. The maximum value is 100; values above 100 will be coerced to 100.
1961  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
1962
1963  // Optional. A token identifying a page of results beyond the first page.
1964  // Obtained through
1965  // [ListCustomerRepricingConfigsResponse.next_page_token][google.cloud.channel.v1.ListCustomerRepricingConfigsResponse.next_page_token]
1966  // of the previous
1967  // [CloudChannelService.ListCustomerRepricingConfigs][google.cloud.channel.v1.CloudChannelService.ListCustomerRepricingConfigs]
1968  // call.
1969  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
1970
1971  // Optional. A filter for [CloudChannelService.ListCustomerRepricingConfigs]
1972  // results (customer only). You can use this filter when you support
1973  // a BatchGet-like query.
1974  // To use the filter, you must set `parent=accounts/{account_id}/customers/-`.
1975  //
1976  // Example: customer = accounts/account_id/customers/c1 OR
1977  // customer = accounts/account_id/customers/c2.
1978  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
1979}
1980
1981// Response message for
1982// [CloudChannelService.ListCustomerRepricingConfigs][google.cloud.channel.v1.CloudChannelService.ListCustomerRepricingConfigs].
1983message ListCustomerRepricingConfigsResponse {
1984  // The repricing configs for this channel partner.
1985  repeated CustomerRepricingConfig customer_repricing_configs = 1;
1986
1987  // A token to retrieve the next page of results.
1988  // Pass to
1989  // [ListCustomerRepricingConfigsRequest.page_token][google.cloud.channel.v1.ListCustomerRepricingConfigsRequest.page_token]
1990  // to obtain that page.
1991  string next_page_token = 2;
1992}
1993
1994// Request message for
1995// [CloudChannelService.CreateCustomerRepricingConfig][google.cloud.channel.v1.CloudChannelService.CreateCustomerRepricingConfig].
1996message CreateCustomerRepricingConfigRequest {
1997  // Required. The resource name of the customer that will receive this
1998  // repricing config. Parent uses the format:
1999  // accounts/{account_id}/customers/{customer_id}
2000  string parent = 1 [
2001    (google.api.field_behavior) = REQUIRED,
2002    (google.api.resource_reference) = {
2003      type: "cloudchannel.googleapis.com/Customer"
2004    }
2005  ];
2006
2007  // Required. The CustomerRepricingConfig object to update.
2008  CustomerRepricingConfig customer_repricing_config = 2
2009      [(google.api.field_behavior) = REQUIRED];
2010}
2011
2012// Request message for
2013// [CloudChannelService.UpdateCustomerRepricingConfig][google.cloud.channel.v1.CloudChannelService.UpdateCustomerRepricingConfig].
2014message UpdateCustomerRepricingConfigRequest {
2015  // Required. The CustomerRepricingConfig object to update.
2016  CustomerRepricingConfig customer_repricing_config = 1
2017      [(google.api.field_behavior) = REQUIRED];
2018}
2019
2020// Request message for
2021// [CloudChannelService.DeleteCustomerRepricingConfig][google.cloud.channel.v1.CloudChannelService.DeleteCustomerRepricingConfig].
2022message DeleteCustomerRepricingConfigRequest {
2023  // Required. The resource name of the customer repricing config rule to
2024  // delete. Format:
2025  // accounts/{account_id}/customers/{customer_id}/customerRepricingConfigs/{id}.
2026  string name = 1 [
2027    (google.api.field_behavior) = REQUIRED,
2028    (google.api.resource_reference) = {
2029      type: "cloudchannel.googleapis.com/CustomerRepricingConfig"
2030    }
2031  ];
2032}
2033
2034// Request message for
2035// [CloudChannelService.GetChannelPartnerRepricingConfig][google.cloud.channel.v1.CloudChannelService.GetChannelPartnerRepricingConfig]
2036message GetChannelPartnerRepricingConfigRequest {
2037  // Required. The resource name of the ChannelPartnerRepricingConfig
2038  // Format:
2039  // accounts/{account_id}/channelPartnerLinks/{channel_partner_id}/channelPartnerRepricingConfigs/{id}.
2040  string name = 1 [
2041    (google.api.field_behavior) = REQUIRED,
2042    (google.api.resource_reference) = {
2043      type: "cloudchannel.googleapis.com/ChannelPartnerRepricingConfig"
2044    }
2045  ];
2046}
2047
2048// Request message for
2049// [CloudChannelService.ListChannelPartnerRepricingConfigs][google.cloud.channel.v1.CloudChannelService.ListChannelPartnerRepricingConfigs].
2050message ListChannelPartnerRepricingConfigsRequest {
2051  // Required. The resource name of the account's
2052  // [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink]. Parent
2053  // uses the format:
2054  // accounts/{account_id}/channelPartnerLinks/{channel_partner_id}.
2055  // Supports accounts/{account_id}/channelPartnerLinks/- to retrieve configs
2056  // for all channel partners.
2057  string parent = 1 [
2058    (google.api.field_behavior) = REQUIRED,
2059    (google.api.resource_reference) = {
2060      type: "cloudchannel.googleapis.com/ChannelPartnerLink"
2061    }
2062  ];
2063
2064  // Optional. The maximum number of repricing configs to return. The service
2065  // may return fewer than this value. If unspecified, returns a maximum of 50
2066  // rules. The maximum value is 100; values above 100 will be coerced to 100.
2067  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
2068
2069  // Optional. A token identifying a page of results beyond the first page.
2070  // Obtained through
2071  // [ListChannelPartnerRepricingConfigsResponse.next_page_token][google.cloud.channel.v1.ListChannelPartnerRepricingConfigsResponse.next_page_token]
2072  // of the previous
2073  // [CloudChannelService.ListChannelPartnerRepricingConfigs][google.cloud.channel.v1.CloudChannelService.ListChannelPartnerRepricingConfigs]
2074  // call.
2075  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
2076
2077  // Optional. A filter for
2078  // [CloudChannelService.ListChannelPartnerRepricingConfigs] results
2079  // (channel_partner_link only). You can use this filter when you support a
2080  // BatchGet-like query. To use the filter, you must set
2081  // `parent=accounts/{account_id}/channelPartnerLinks/-`.
2082  //
2083  // Example: `channel_partner_link =
2084  // accounts/account_id/channelPartnerLinks/c1` OR `channel_partner_link =
2085  // accounts/account_id/channelPartnerLinks/c2`.
2086  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
2087}
2088
2089// Response message for
2090// [CloudChannelService.ListChannelPartnerRepricingConfigs][google.cloud.channel.v1.CloudChannelService.ListChannelPartnerRepricingConfigs].
2091message ListChannelPartnerRepricingConfigsResponse {
2092  // The repricing configs for this channel partner.
2093  repeated ChannelPartnerRepricingConfig channel_partner_repricing_configs = 1;
2094
2095  // A token to retrieve the next page of results.
2096  // Pass to
2097  // [ListChannelPartnerRepricingConfigsRequest.page_token][google.cloud.channel.v1.ListChannelPartnerRepricingConfigsRequest.page_token]
2098  // to obtain that page.
2099  string next_page_token = 2;
2100}
2101
2102// Request message for
2103// [CloudChannelService.CreateChannelPartnerRepricingConfig][google.cloud.channel.v1.CloudChannelService.CreateChannelPartnerRepricingConfig].
2104message CreateChannelPartnerRepricingConfigRequest {
2105  // Required. The resource name of the ChannelPartner that will receive the
2106  // repricing config. Parent uses the format:
2107  // accounts/{account_id}/channelPartnerLinks/{channel_partner_id}
2108  string parent = 1 [
2109    (google.api.field_behavior) = REQUIRED,
2110    (google.api.resource_reference) = {
2111      type: "cloudchannel.googleapis.com/ChannelPartnerLink"
2112    }
2113  ];
2114
2115  // Required. The ChannelPartnerRepricingConfig object to update.
2116  ChannelPartnerRepricingConfig channel_partner_repricing_config = 2
2117      [(google.api.field_behavior) = REQUIRED];
2118}
2119
2120// Request message for
2121// [CloudChannelService.UpdateChannelPartnerRepricingConfig][google.cloud.channel.v1.CloudChannelService.UpdateChannelPartnerRepricingConfig].
2122message UpdateChannelPartnerRepricingConfigRequest {
2123  // Required. The ChannelPartnerRepricingConfig object to update.
2124  ChannelPartnerRepricingConfig channel_partner_repricing_config = 1
2125      [(google.api.field_behavior) = REQUIRED];
2126}
2127
2128// Request message for DeleteChannelPartnerRepricingConfig.
2129message DeleteChannelPartnerRepricingConfigRequest {
2130  // Required. The resource name of the channel partner repricing config rule to
2131  // delete.
2132  string name = 1 [
2133    (google.api.field_behavior) = REQUIRED,
2134    (google.api.resource_reference) = {
2135      type: "cloudchannel.googleapis.com/ChannelPartnerRepricingConfig"
2136    }
2137  ];
2138}
2139
2140// Request message for ListSkuGroups.
2141message ListSkuGroupsRequest {
2142  // Required. The resource name of the account from which to list SKU groups.
2143  // Parent uses the format: accounts/{account}.
2144  string parent = 1 [(google.api.field_behavior) = REQUIRED];
2145
2146  // Optional. The maximum number of SKU groups to return. The service may
2147  // return fewer than this value. If unspecified, returns a maximum of 1000 SKU
2148  // groups. The maximum value is 1000; values above 1000 will be coerced to
2149  // 1000.
2150  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
2151
2152  // Optional. A token identifying a page of results beyond the first page.
2153  // Obtained through
2154  // [ListSkuGroups.next_page_token][] of the previous
2155  // [CloudChannelService.ListSkuGroups][google.cloud.channel.v1.CloudChannelService.ListSkuGroups]
2156  // call.
2157  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
2158}
2159
2160// Request message for ListSkuGroupBillableSkus.
2161message ListSkuGroupBillableSkusRequest {
2162  // Required. Resource name of the SKU group.
2163  // Format: accounts/{account}/skuGroups/{sku_group}.
2164  string parent = 1 [
2165    (google.api.field_behavior) = REQUIRED,
2166    (google.api.resource_reference) = {
2167      type: "cloudchannel.googleapis.com/SkuGroup"
2168    }
2169  ];
2170
2171  // Optional. The maximum number of SKUs to return. The service may return
2172  // fewer than this value. If unspecified, returns a maximum of 100000 SKUs.
2173  // The maximum value is 100000; values above 100000 will be coerced to 100000.
2174  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
2175
2176  // Optional. A token identifying a page of results beyond the first page.
2177  // Obtained through
2178  // [ListSkuGroupBillableSkus.next_page_token][] of the previous
2179  // [CloudChannelService.ListSkuGroupBillableSkus][google.cloud.channel.v1.CloudChannelService.ListSkuGroupBillableSkus]
2180  // call.
2181  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
2182}
2183
2184// Response message for ListSkuGroups.
2185message ListSkuGroupsResponse {
2186  // The list of SKU groups requested.
2187  repeated SkuGroup sku_groups = 1;
2188
2189  // A token to retrieve the next page of results.
2190  // Pass to [ListSkuGroups.page_token][] to obtain that
2191  // page.
2192  string next_page_token = 2;
2193}
2194
2195// Response message for ListSkuGroupBillableSkus.
2196message ListSkuGroupBillableSkusResponse {
2197  // The list of billable SKUs in the requested SKU group.
2198  repeated BillableSku billable_skus = 1;
2199
2200  // A token to retrieve the next page of results.
2201  // Pass to [ListSkuGroupBillableSkus.page_token][] to obtain that
2202  // page.
2203  string next_page_token = 2;
2204}
2205
2206// Represents the SKU group information.
2207message SkuGroup {
2208  option (google.api.resource) = {
2209    type: "cloudchannel.googleapis.com/SkuGroup"
2210    pattern: "accounts/{account}/skuGroups/{sku_group}"
2211  };
2212
2213  // Resource name of SKU group. Format:
2214  // accounts/{account}/skuGroups/{sku_group}.
2215  // Example:
2216  // "accounts/C01234/skuGroups/3d50fd57-3157-4577-a5a9-a219b8490041".
2217  string name = 1;
2218
2219  // Unique human readable identifier for the SKU group.
2220  string display_name = 2;
2221}
2222
2223// Represents the Billable SKU information.
2224message BillableSku {
2225  // Resource name of Billable SKU. Format:
2226  // billableSkus/{sku}.
2227  // Example:
2228  // billableSkus/6E1B-6634-470F".
2229  string sku = 1;
2230
2231  // Unique human readable name for the SKU.
2232  string sku_display_name = 2;
2233
2234  // Resource name of Service which contains Repricing SKU. Format:
2235  // services/{service}.
2236  // Example:
2237  // "services/B7D9-FDCB-15D8".
2238  string service = 3;
2239
2240  // Unique human readable name for the Service.
2241  string service_display_name = 4;
2242}
2243
2244// Request message for
2245// [CloudChannelService.CreateEntitlement][google.cloud.channel.v1.CloudChannelService.CreateEntitlement]
2246message CreateEntitlementRequest {
2247  // Required. The resource name of the reseller's customer account in which to
2248  // create the entitlement. Parent uses the format:
2249  // accounts/{account_id}/customers/{customer_id}
2250  string parent = 1 [
2251    (google.api.field_behavior) = REQUIRED,
2252    (google.api.resource_reference) = {
2253      type: "cloudchannel.googleapis.com/Customer"
2254    }
2255  ];
2256
2257  // Required. The entitlement to create.
2258  Entitlement entitlement = 2 [(google.api.field_behavior) = REQUIRED];
2259
2260  // Optional. You can specify an optional unique request ID, and if you need to
2261  // retry your request, the server will know to ignore the request if it's
2262  // complete.
2263  //
2264  // For example, you make an initial request and the request times out. If you
2265  // make the request again with the same request ID, the server can check if
2266  // it received the original operation with the same request ID. If it did, it
2267  // will ignore the second request.
2268  //
2269  // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122)
2270  // with the exception that zero UUID is not supported
2271  // (`00000000-0000-0000-0000-000000000000`).
2272  string request_id = 5 [(google.api.field_behavior) = OPTIONAL];
2273}
2274
2275// Request message for
2276// [CloudChannelService.TransferEntitlements][google.cloud.channel.v1.CloudChannelService.TransferEntitlements].
2277message TransferEntitlementsRequest {
2278  // Required. The resource name of the reseller's customer account that will
2279  // receive transferred entitlements. Parent uses the format:
2280  // accounts/{account_id}/customers/{customer_id}
2281  string parent = 1 [(google.api.field_behavior) = REQUIRED];
2282
2283  // Required. The new entitlements to create or transfer.
2284  repeated Entitlement entitlements = 2
2285      [(google.api.field_behavior) = REQUIRED];
2286
2287  // The super admin of the resold customer generates this token to
2288  // authorize a reseller to access their Cloud Identity and purchase
2289  // entitlements on their behalf. You can omit this token after authorization.
2290  // See https://support.google.com/a/answer/7643790 for more details.
2291  string auth_token = 4;
2292
2293  // Optional. You can specify an optional unique request ID, and if you need to
2294  // retry your request, the server will know to ignore the request if it's
2295  // complete.
2296  //
2297  // For example, you make an initial request and the request times out. If you
2298  // make the request again with the same request ID, the server can check if
2299  // it received the original operation with the same request ID. If it did, it
2300  // will ignore the second request.
2301  //
2302  // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122)
2303  // with the exception that zero UUID is not supported
2304  // (`00000000-0000-0000-0000-000000000000`).
2305  string request_id = 6 [(google.api.field_behavior) = OPTIONAL];
2306}
2307
2308// Response message for
2309// [CloudChannelService.TransferEntitlements][google.cloud.channel.v1.CloudChannelService.TransferEntitlements].
2310// This is put in the response field of google.longrunning.Operation.
2311message TransferEntitlementsResponse {
2312  // The transferred entitlements.
2313  repeated Entitlement entitlements = 1;
2314}
2315
2316// Request message for
2317// [CloudChannelService.TransferEntitlementsToGoogle][google.cloud.channel.v1.CloudChannelService.TransferEntitlementsToGoogle].
2318message TransferEntitlementsToGoogleRequest {
2319  // Required. The resource name of the reseller's customer account where the
2320  // entitlements transfer from. Parent uses the format:
2321  // accounts/{account_id}/customers/{customer_id}
2322  string parent = 1 [(google.api.field_behavior) = REQUIRED];
2323
2324  // Required. The entitlements to transfer to Google.
2325  repeated Entitlement entitlements = 2
2326      [(google.api.field_behavior) = REQUIRED];
2327
2328  // Optional. You can specify an optional unique request ID, and if you need to
2329  // retry your request, the server will know to ignore the request if it's
2330  // complete.
2331  //
2332  // For example, you make an initial request and the request times out. If you
2333  // make the request again with the same request ID, the server can check if
2334  // it received the original operation with the same request ID. If it did, it
2335  // will ignore the second request.
2336  //
2337  // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122)
2338  // with the exception that zero UUID is not supported
2339  // (`00000000-0000-0000-0000-000000000000`).
2340  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
2341}
2342
2343// Request message for [CloudChannelService.ChangeParametersRequest][].
2344message ChangeParametersRequest {
2345  // Required. The name of the entitlement to update.
2346  // Name uses the format:
2347  // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
2348  string name = 1 [(google.api.field_behavior) = REQUIRED];
2349
2350  // Required. Entitlement parameters to update. You can only change editable
2351  // parameters.
2352  //
2353  // To view the available Parameters for a request, refer to the
2354  // [Offer.parameter_definitions][google.cloud.channel.v1.Offer.parameter_definitions]
2355  // from the desired offer.
2356  repeated Parameter parameters = 2 [(google.api.field_behavior) = REQUIRED];
2357
2358  // Optional. You can specify an optional unique request ID, and if you need to
2359  // retry your request, the server will know to ignore the request if it's
2360  // complete.
2361  //
2362  // For example, you make an initial request and the request times out. If you
2363  // make the request again with the same request ID, the server can check if
2364  // it received the original operation with the same request ID. If it did, it
2365  // will ignore the second request.
2366  //
2367  // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122)
2368  // with the exception that zero UUID is not supported
2369  // (`00000000-0000-0000-0000-000000000000`).
2370  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
2371
2372  // Optional. Purchase order ID provided by the reseller.
2373  string purchase_order_id = 5 [(google.api.field_behavior) = OPTIONAL];
2374}
2375
2376// Request message for
2377// [CloudChannelService.ChangeRenewalSettings][google.cloud.channel.v1.CloudChannelService.ChangeRenewalSettings].
2378message ChangeRenewalSettingsRequest {
2379  // Required. The name of the entitlement to update.
2380  // Name uses the format:
2381  // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
2382  string name = 1 [(google.api.field_behavior) = REQUIRED];
2383
2384  // Required. New renewal settings.
2385  RenewalSettings renewal_settings = 4 [(google.api.field_behavior) = REQUIRED];
2386
2387  // Optional. You can specify an optional unique request ID, and if you need to
2388  // retry your request, the server will know to ignore the request if it's
2389  // complete.
2390  //
2391  // For example, you make an initial request and the request times out. If you
2392  // make the request again with the same request ID, the server can check if
2393  // it received the original operation with the same request ID. If it did, it
2394  // will ignore the second request.
2395  //
2396  // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122)
2397  // with the exception that zero UUID is not supported
2398  // (`00000000-0000-0000-0000-000000000000`).
2399  string request_id = 5 [(google.api.field_behavior) = OPTIONAL];
2400}
2401
2402// Request message for
2403// [CloudChannelService.ChangeOffer][google.cloud.channel.v1.CloudChannelService.ChangeOffer].
2404message ChangeOfferRequest {
2405  // Required. The resource name of the entitlement to update.
2406  // Name uses the format:
2407  // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
2408  string name = 1 [(google.api.field_behavior) = REQUIRED];
2409
2410  // Required. New Offer.
2411  // Format: accounts/{account_id}/offers/{offer_id}.
2412  string offer = 2 [
2413    (google.api.field_behavior) = REQUIRED,
2414    (google.api.resource_reference) = {
2415      type: "cloudchannel.googleapis.com/Offer"
2416    }
2417  ];
2418
2419  // Optional. Parameters needed to purchase the Offer. To view the available
2420  // Parameters refer to the
2421  // [Offer.parameter_definitions][google.cloud.channel.v1.Offer.parameter_definitions]
2422  // from the desired offer.
2423  repeated Parameter parameters = 3 [(google.api.field_behavior) = OPTIONAL];
2424
2425  // Optional. Purchase order id provided by the reseller.
2426  string purchase_order_id = 5 [(google.api.field_behavior) = OPTIONAL];
2427
2428  // Optional. You can specify an optional unique request ID, and if you need to
2429  // retry your request, the server will know to ignore the request if it's
2430  // complete.
2431  //
2432  // For example, you make an initial request and the request times out. If you
2433  // make the request again with the same request ID, the server can check if
2434  // it received the original operation with the same request ID. If it did, it
2435  // will ignore the second request.
2436  //
2437  // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122)
2438  // with the exception that zero UUID is not supported
2439  // (`00000000-0000-0000-0000-000000000000`).
2440  string request_id = 6 [(google.api.field_behavior) = OPTIONAL];
2441
2442  // Optional. The billing account resource name that is used to pay for this
2443  // entitlement when setting up billing on a trial subscription.
2444  //
2445  // This field is only relevant for multi-currency accounts. It should be
2446  // left empty for single currency accounts.
2447  string billing_account = 7 [(google.api.field_behavior) = OPTIONAL];
2448}
2449
2450// Request message for
2451// [CloudChannelService.StartPaidService][google.cloud.channel.v1.CloudChannelService.StartPaidService].
2452message StartPaidServiceRequest {
2453  // Required. The name of the entitlement to start a paid service for.
2454  // Name uses the format:
2455  // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
2456  string name = 1 [(google.api.field_behavior) = REQUIRED];
2457
2458  // Optional. You can specify an optional unique request ID, and if you need to
2459  // retry your request, the server will know to ignore the request if it's
2460  // complete.
2461  //
2462  // For example, you make an initial request and the request times out. If you
2463  // make the request again with the same request ID, the server can check if
2464  // it received the original operation with the same request ID. If it did, it
2465  // will ignore the second request.
2466  //
2467  // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122)
2468  // with the exception that zero UUID is not supported
2469  // (`00000000-0000-0000-0000-000000000000`).
2470  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
2471}
2472
2473// Request message for
2474// [CloudChannelService.CancelEntitlement][google.cloud.channel.v1.CloudChannelService.CancelEntitlement].
2475message CancelEntitlementRequest {
2476  // Required. The resource name of the entitlement to cancel.
2477  // Name uses the format:
2478  // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
2479  string name = 1 [(google.api.field_behavior) = REQUIRED];
2480
2481  // Optional. You can specify an optional unique request ID, and if you need to
2482  // retry your request, the server will know to ignore the request if it's
2483  // complete.
2484  //
2485  // For example, you make an initial request and the request times out. If you
2486  // make the request again with the same request ID, the server can check if
2487  // it received the original operation with the same request ID. If it did, it
2488  // will ignore the second request.
2489  //
2490  // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122)
2491  // with the exception that zero UUID is not supported
2492  // (`00000000-0000-0000-0000-000000000000`).
2493  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
2494}
2495
2496// Request message for
2497// [CloudChannelService.SuspendEntitlement][google.cloud.channel.v1.CloudChannelService.SuspendEntitlement].
2498message SuspendEntitlementRequest {
2499  // Required. The resource name of the entitlement to suspend.
2500  // Name uses the format:
2501  // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
2502  string name = 1 [(google.api.field_behavior) = REQUIRED];
2503
2504  // Optional. You can specify an optional unique request ID, and if you need to
2505  // retry your request, the server will know to ignore the request if it's
2506  // complete.
2507  //
2508  // For example, you make an initial request and the request times out. If you
2509  // make the request again with the same request ID, the server can check if
2510  // it received the original operation with the same request ID. If it did, it
2511  // will ignore the second request.
2512  //
2513  // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122)
2514  // with the exception that zero UUID is not supported
2515  // (`00000000-0000-0000-0000-000000000000`).
2516  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
2517}
2518
2519// Request message for
2520// [CloudChannelService.ActivateEntitlement][google.cloud.channel.v1.CloudChannelService.ActivateEntitlement].
2521message ActivateEntitlementRequest {
2522  // Required. The resource name of the entitlement to activate.
2523  // Name uses the format:
2524  // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
2525  string name = 1 [(google.api.field_behavior) = REQUIRED];
2526
2527  // Optional. You can specify an optional unique request ID, and if you need to
2528  // retry your request, the server will know to ignore the request if it's
2529  // complete.
2530  //
2531  // For example, you make an initial request and the request times out. If you
2532  // make the request again with the same request ID, the server can check if
2533  // it received the original operation with the same request ID. If it did, it
2534  // will ignore the second request.
2535  //
2536  // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122)
2537  // with the exception that zero UUID is not supported
2538  // (`00000000-0000-0000-0000-000000000000`).
2539  string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
2540}
2541
2542// Request message for LookupOffer.
2543message LookupOfferRequest {
2544  // Required. The resource name of the entitlement to retrieve the Offer.
2545  // Entitlement uses the format:
2546  // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
2547  string entitlement = 1 [
2548    (google.api.field_behavior) = REQUIRED,
2549    (google.api.resource_reference) = {
2550      type: "cloudchannel.googleapis.com/Entitlement"
2551    }
2552  ];
2553}
2554
2555// Request message for ListProducts.
2556message ListProductsRequest {
2557  // Required. The resource name of the reseller account.
2558  // Format: accounts/{account_id}.
2559  string account = 1 [(google.api.field_behavior) = REQUIRED];
2560
2561  // Optional. Requested page size. Server might return fewer results than
2562  // requested. If unspecified, returns at most 100 Products. The maximum value
2563  // is 1000; the server will coerce values above 1000.
2564  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
2565
2566  // Optional. A token for a page of results other than the first page.
2567  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
2568
2569  // Optional. The BCP-47 language code. For example, "en-US". The
2570  // response will localize in the corresponding language code, if specified.
2571  // The default value is "en-US".
2572  string language_code = 4 [(google.api.field_behavior) = OPTIONAL];
2573}
2574
2575// Response message for ListProducts.
2576message ListProductsResponse {
2577  // List of Products requested.
2578  repeated Product products = 1;
2579
2580  // A token to retrieve the next page of results.
2581  string next_page_token = 2;
2582}
2583
2584// Request message for ListSkus.
2585message ListSkusRequest {
2586  // Required. The resource name of the Product to list SKUs for.
2587  // Parent uses the format: products/{product_id}.
2588  // Supports products/- to retrieve SKUs for all products.
2589  string parent = 1 [
2590    (google.api.field_behavior) = REQUIRED,
2591    (google.api.resource_reference) = {
2592      type: "cloudchannel.googleapis.com/Product"
2593    }
2594  ];
2595
2596  // Required. Resource name of the reseller.
2597  // Format: accounts/{account_id}.
2598  string account = 2 [(google.api.field_behavior) = REQUIRED];
2599
2600  // Optional. Requested page size. Server might return fewer results than
2601  // requested. If unspecified, returns at most 100 SKUs. The maximum value is
2602  // 1000; the server will coerce values above 1000.
2603  int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
2604
2605  // Optional. A token for a page of results other than the first page.
2606  // Optional.
2607  string page_token = 4 [(google.api.field_behavior) = OPTIONAL];
2608
2609  // Optional. The BCP-47 language code. For example, "en-US". The
2610  // response will localize in the corresponding language code, if specified.
2611  // The default value is "en-US".
2612  string language_code = 5 [(google.api.field_behavior) = OPTIONAL];
2613}
2614
2615// Response message for ListSkus.
2616message ListSkusResponse {
2617  // The list of SKUs requested.
2618  repeated Sku skus = 1;
2619
2620  // A token to retrieve the next page of results.
2621  string next_page_token = 2;
2622}
2623
2624// Request message for ListOffers.
2625message ListOffersRequest {
2626  // Required. The resource name of the reseller account from which to list
2627  // Offers. Parent uses the format: accounts/{account_id}.
2628  string parent = 1 [(google.api.field_behavior) = REQUIRED];
2629
2630  // Optional. Requested page size. Server might return fewer results than
2631  // requested. If unspecified, returns at most 500 Offers. The maximum value is
2632  // 1000; the server will coerce values above 1000.
2633  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
2634
2635  // Optional. A token for a page of results other than the first page.
2636  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
2637
2638  // Optional. The expression to filter results by name (name of
2639  // the Offer), sku.name (name of the SKU), or sku.product.name (name of the
2640  // Product).
2641  // Example 1: sku.product.name=products/p1 AND sku.name!=products/p1/skus/s1
2642  // Example 2: name=accounts/a1/offers/o1
2643  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
2644
2645  // Optional. The BCP-47 language code. For example, "en-US". The
2646  // response will localize in the corresponding language code, if specified.
2647  // The default value is "en-US".
2648  string language_code = 5 [(google.api.field_behavior) = OPTIONAL];
2649
2650  // Optional. A boolean flag that determines if a response returns future
2651  // offers 30 days from now. If the show_future_offers is true, the response
2652  // will only contain offers that are scheduled to be available 30 days from
2653  // now.
2654  bool show_future_offers = 7 [(google.api.field_behavior) = OPTIONAL];
2655}
2656
2657// Response message for ListOffers.
2658message ListOffersResponse {
2659  // The list of Offers requested.
2660  repeated Offer offers = 1;
2661
2662  // A token to retrieve the next page of results.
2663  string next_page_token = 2;
2664}
2665
2666// Request message for ListPurchasableSkus.
2667message ListPurchasableSkusRequest {
2668  // List SKUs for a new entitlement. Make the purchase using
2669  // [CloudChannelService.CreateEntitlement][google.cloud.channel.v1.CloudChannelService.CreateEntitlement].
2670  message CreateEntitlementPurchase {
2671    // Required. List SKUs belonging to this Product.
2672    // Format: products/{product_id}.
2673    // Supports products/- to retrieve SKUs for all products.
2674    string product = 1 [(google.api.field_behavior) = REQUIRED];
2675  }
2676
2677  // List SKUs for upgrading or downgrading an entitlement. Make the purchase
2678  // using
2679  // [CloudChannelService.ChangeOffer][google.cloud.channel.v1.CloudChannelService.ChangeOffer].
2680  message ChangeOfferPurchase {
2681    // Change Type enum.
2682    enum ChangeType {
2683      // Not used.
2684      CHANGE_TYPE_UNSPECIFIED = 0;
2685
2686      // SKU is an upgrade on the current entitlement.
2687      UPGRADE = 1;
2688
2689      // SKU is a downgrade on the current entitlement.
2690      DOWNGRADE = 2;
2691    }
2692
2693    // Required. Resource name of the entitlement.
2694    // Format:
2695    // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
2696    string entitlement = 1 [(google.api.field_behavior) = REQUIRED];
2697
2698    // Required. Change Type for the entitlement.
2699    ChangeType change_type = 2 [(google.api.field_behavior) = REQUIRED];
2700  }
2701
2702  // Defines the intended purchase.
2703  oneof purchase_option {
2704    // List SKUs for CreateEntitlement purchase.
2705    CreateEntitlementPurchase create_entitlement_purchase = 2;
2706
2707    // List SKUs for ChangeOffer purchase with a new SKU.
2708    ChangeOfferPurchase change_offer_purchase = 3;
2709  }
2710
2711  // Required. The resource name of the customer to list SKUs for.
2712  // Format: accounts/{account_id}/customers/{customer_id}.
2713  string customer = 1 [
2714    (google.api.field_behavior) = REQUIRED,
2715    (google.api.resource_reference) = {
2716      type: "cloudchannel.googleapis.com/Customer"
2717    }
2718  ];
2719
2720  // Optional. Requested page size. Server might return fewer results than
2721  // requested. If unspecified, returns at most 100 SKUs. The maximum value is
2722  // 1000; the server will coerce values above 1000.
2723  int32 page_size = 4 [(google.api.field_behavior) = OPTIONAL];
2724
2725  // Optional. A token for a page of results other than the first page.
2726  string page_token = 5 [(google.api.field_behavior) = OPTIONAL];
2727
2728  // Optional. The BCP-47 language code. For example, "en-US". The
2729  // response will localize in the corresponding language code, if specified.
2730  // The default value is "en-US".
2731  string language_code = 6 [(google.api.field_behavior) = OPTIONAL];
2732}
2733
2734// Response message for ListPurchasableSkus.
2735message ListPurchasableSkusResponse {
2736  // The list of SKUs requested.
2737  repeated PurchasableSku purchasable_skus = 1;
2738
2739  // A token to retrieve the next page of results.
2740  string next_page_token = 2;
2741}
2742
2743// SKU that you can purchase. This is used in ListPurchasableSku API
2744// response.
2745message PurchasableSku {
2746  // SKU
2747  Sku sku = 1;
2748}
2749
2750// Request message for ListPurchasableOffers.
2751message ListPurchasableOffersRequest {
2752  // List Offers for CreateEntitlement purchase.
2753  message CreateEntitlementPurchase {
2754    // Required. SKU that the result should be restricted to.
2755    // Format: products/{product_id}/skus/{sku_id}.
2756    string sku = 1 [(google.api.field_behavior) = REQUIRED];
2757
2758    // Optional. Billing account that the result should be restricted to.
2759    // Format: accounts/{account_id}/billingAccounts/{billing_account_id}.
2760    string billing_account = 2 [(google.api.field_behavior) = OPTIONAL];
2761  }
2762
2763  // List Offers for ChangeOffer purchase.
2764  message ChangeOfferPurchase {
2765    // Required. Resource name of the entitlement.
2766    // Format:
2767    // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
2768    string entitlement = 1 [(google.api.field_behavior) = REQUIRED];
2769
2770    // Optional. Resource name of the new target SKU. Provide this SKU when
2771    // upgrading or downgrading an entitlement. Format:
2772    // products/{product_id}/skus/{sku_id}
2773    string new_sku = 2 [(google.api.field_behavior) = OPTIONAL];
2774
2775    // Optional. Resource name of the new target Billing Account. Provide this
2776    // Billing Account when setting up billing for a trial subscription. Format:
2777    // accounts/{account_id}/billingAccounts/{billing_account_id}.
2778    //
2779    // This field is only relevant for multi-currency accounts. It should be
2780    // left empty for single currency accounts.
2781    string billing_account = 3 [(google.api.field_behavior) = OPTIONAL];
2782  }
2783
2784  // Defines the intended purchase.
2785  oneof purchase_option {
2786    // List Offers for CreateEntitlement purchase.
2787    CreateEntitlementPurchase create_entitlement_purchase = 2;
2788
2789    // List Offers for ChangeOffer purchase.
2790    ChangeOfferPurchase change_offer_purchase = 3;
2791  }
2792
2793  // Required. The resource name of the customer to list Offers for.
2794  // Format: accounts/{account_id}/customers/{customer_id}.
2795  string customer = 1 [
2796    (google.api.field_behavior) = REQUIRED,
2797    (google.api.resource_reference) = {
2798      type: "cloudchannel.googleapis.com/Customer"
2799    }
2800  ];
2801
2802  // Optional. Requested page size. Server might return fewer results than
2803  // requested. If unspecified, returns at most 100 Offers. The maximum value is
2804  // 1000; the server will coerce values above 1000.
2805  int32 page_size = 4 [(google.api.field_behavior) = OPTIONAL];
2806
2807  // Optional. A token for a page of results other than the first page.
2808  string page_token = 5 [(google.api.field_behavior) = OPTIONAL];
2809
2810  // Optional. The BCP-47 language code. For example, "en-US". The
2811  // response will localize in the corresponding language code, if specified.
2812  // The default value is "en-US".
2813  string language_code = 6 [(google.api.field_behavior) = OPTIONAL];
2814}
2815
2816// Response message for ListPurchasableOffers.
2817message ListPurchasableOffersResponse {
2818  // The list of Offers requested.
2819  repeated PurchasableOffer purchasable_offers = 1;
2820
2821  // A token to retrieve the next page of results.
2822  string next_page_token = 2;
2823}
2824
2825// Offer that you can purchase for a customer. This is used in the
2826// ListPurchasableOffer API response.
2827message PurchasableOffer {
2828  // Offer.
2829  Offer offer = 1;
2830}
2831
2832// Request message for QueryEligibleBillingAccounts.
2833message QueryEligibleBillingAccountsRequest {
2834  // Required. The resource name of the customer to list eligible billing
2835  // accounts for. Format: accounts/{account_id}/customers/{customer_id}.
2836  string customer = 1 [
2837    (google.api.field_behavior) = REQUIRED,
2838    (google.api.resource_reference) = {
2839      type: "cloudchannel.googleapis.com/Customer"
2840    }
2841  ];
2842
2843  // Required. List of SKUs to list eligible billing accounts for. At least one
2844  // SKU is required. Format: products/{product_id}/skus/{sku_id}.
2845  repeated string skus = 2 [(google.api.field_behavior) = REQUIRED];
2846}
2847
2848// Response message for QueryEligibleBillingAccounts.
2849message QueryEligibleBillingAccountsResponse {
2850  // List of SKU purchase groups where each group represents a set of SKUs that
2851  // must be purchased using the same billing account. Each SKU from
2852  // [QueryEligibleBillingAccountsRequest.skus] will appear in exactly one SKU
2853  // group.
2854  repeated SkuPurchaseGroup sku_purchase_groups = 1;
2855}
2856
2857// Represents a set of SKUs that must be purchased using the same billing
2858// account.
2859message SkuPurchaseGroup {
2860  // Resource names of the SKUs included in this group.
2861  // Format: products/{product_id}/skus/{sku_id}.
2862  repeated string skus = 1;
2863
2864  // List of billing accounts that are eligible to purhcase these SKUs.
2865  repeated BillingAccountPurchaseInfo billing_account_purchase_infos = 2;
2866}
2867
2868// Represents a billing account that can be used to make a purchase.
2869message BillingAccountPurchaseInfo {
2870  // The billing account resource.
2871  BillingAccount billing_account = 1;
2872}
2873
2874// Request Message for RegisterSubscriber.
2875message RegisterSubscriberRequest {
2876  // Required. Resource name of the account.
2877  string account = 1 [(google.api.field_behavior) = REQUIRED];
2878
2879  // Required. Service account that provides subscriber access to the registered
2880  // topic.
2881  string service_account = 2 [(google.api.field_behavior) = REQUIRED];
2882}
2883
2884// Response Message for RegisterSubscriber.
2885message RegisterSubscriberResponse {
2886  // Name of the topic the subscriber will listen to.
2887  string topic = 1;
2888}
2889
2890// Request Message for UnregisterSubscriber.
2891message UnregisterSubscriberRequest {
2892  // Required. Resource name of the account.
2893  string account = 1 [(google.api.field_behavior) = REQUIRED];
2894
2895  // Required. Service account to unregister from subscriber access to the
2896  // topic.
2897  string service_account = 2 [(google.api.field_behavior) = REQUIRED];
2898}
2899
2900// Response Message for UnregisterSubscriber.
2901message UnregisterSubscriberResponse {
2902  // Name of the topic the service account subscriber access was removed from.
2903  string topic = 1;
2904}
2905
2906// Request Message for ListSubscribers.
2907message ListSubscribersRequest {
2908  // Required. Resource name of the account.
2909  string account = 1 [(google.api.field_behavior) = REQUIRED];
2910
2911  // Optional. The maximum number of service accounts to return. The service may
2912  // return fewer than this value. If unspecified, returns at most 100 service
2913  // accounts. The maximum value is 1000; the server will coerce values above
2914  // 1000.
2915  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
2916
2917  // Optional. A page token, received from a previous `ListSubscribers` call.
2918  // Provide this to retrieve the subsequent page.
2919  //
2920  // When paginating, all other parameters provided to `ListSubscribers` must
2921  // match the call that provided the page token.
2922  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
2923}
2924
2925// Response Message for ListSubscribers.
2926message ListSubscribersResponse {
2927  // Name of the topic registered with the reseller.
2928  string topic = 1;
2929
2930  // List of service accounts which have subscriber access to the topic.
2931  repeated string service_accounts = 2;
2932
2933  // A token that can be sent as `page_token` to retrieve the next page.
2934  // If this field is omitted, there are no subsequent pages.
2935  string next_page_token = 3;
2936}
2937
2938// Request message for
2939// [CloudChannelService.ListEntitlementChanges][google.cloud.channel.v1.CloudChannelService.ListEntitlementChanges]
2940message ListEntitlementChangesRequest {
2941  // Required. The resource name of the entitlement for which to list
2942  // entitlement changes. The `-` wildcard may be used to match entitlements
2943  // across a customer. Formats:
2944  //
2945  //   * accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
2946  //   * accounts/{account_id}/customers/{customer_id}/entitlements/-
2947  string parent = 1 [
2948    (google.api.field_behavior) = REQUIRED,
2949    (google.api.resource_reference) = {
2950      type: "cloudchannel.googleapis.com/Entitlement"
2951    }
2952  ];
2953
2954  // Optional. The maximum number of entitlement changes to return. The service
2955  // may return fewer than this value. If unspecified, returns at most 10
2956  // entitlement changes. The maximum value is 50; the server will coerce values
2957  // above 50.
2958  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
2959
2960  // Optional. A page token, received from a previous
2961  // [CloudChannelService.ListEntitlementChanges][google.cloud.channel.v1.CloudChannelService.ListEntitlementChanges]
2962  // call. Provide this to retrieve the subsequent page.
2963  //
2964  // When paginating, all other parameters provided to
2965  // [CloudChannelService.ListEntitlementChanges][google.cloud.channel.v1.CloudChannelService.ListEntitlementChanges]
2966  // must match the call that provided the page token.
2967  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
2968
2969  // Optional. Filters applied to the list results.
2970  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
2971}
2972
2973// Response message for
2974// [CloudChannelService.ListEntitlementChanges][google.cloud.channel.v1.CloudChannelService.ListEntitlementChanges]
2975message ListEntitlementChangesResponse {
2976  // The list of entitlement changes.
2977  repeated EntitlementChange entitlement_changes = 1;
2978
2979  // A token to list the next page of results.
2980  string next_page_token = 2;
2981}
2982