// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.cloud.channel.v1; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/cloud/channel/v1/channel_partner_links.proto"; import "google/cloud/channel/v1/common.proto"; import "google/cloud/channel/v1/customers.proto"; import "google/cloud/channel/v1/entitlements.proto"; import "google/cloud/channel/v1/offers.proto"; import "google/cloud/channel/v1/products.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; option go_package = "google.golang.org/genproto/googleapis/cloud/channel/v1;channel"; option java_multiple_files = true; option java_outer_classname = "ServiceProto"; option java_package = "com.google.cloud.channel.v1"; // CloudChannelService enables Google cloud resellers and distributors to manage // their customers, channel partners, entitlements and reports. // // Using this service: // 1. Resellers or distributors can manage a customer entity. // 2. Distributors can register an authorized reseller in their channel and then // enable delegated admin access for the reseller. // 3. Resellers or distributors can manage entitlements for their customers. // // The service primarily exposes the following resources: // - [Customer][google.cloud.channel.v1.Customer]s: A Customer represents an entity managed by a reseller or // distributor. A customer typically represents an enterprise. In an n-tier // resale channel hierarchy, customers are generally represented as leaf nodes. // Customers primarily have an Entitlement sub-resource discussed below. // // - [Entitlement][google.cloud.channel.v1.Entitlement]s: An Entitlement represents an entity which provides a // customer means to start using a service. Entitlements are created or updated // as a result of a successful fulfillment. // // - [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink]s: A ChannelPartnerLink is an entity that identifies // links between distributors and their indirect resellers in a channel. service CloudChannelService { option (google.api.default_host) = "cloudchannel.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/apps.order"; // List downstream [Customer][google.cloud.channel.v1.Customer]s. // // Possible Error Codes: // // * PERMISSION_DENIED: If the reseller account making the request and the // reseller account being queried for are different. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // // Return Value: // List of [Customer][google.cloud.channel.v1.Customer]s pertaining to the reseller or empty list if // there are none. rpc ListCustomers(ListCustomersRequest) returns (ListCustomersResponse) { option (google.api.http) = { get: "/v1/{parent=accounts/*}/customers" }; } // Returns a requested [Customer][google.cloud.channel.v1.Customer] resource. // // Possible Error Codes: // // * PERMISSION_DENIED: If the reseller account making the request and the // reseller account being queried for are different. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * NOT_FOUND: If the customer resource doesn't exist. Usually // the result of an invalid name parameter. // // Return Value: // [Customer][google.cloud.channel.v1.Customer] resource if found, error otherwise. rpc GetCustomer(GetCustomerRequest) returns (Customer) { option (google.api.http) = { get: "/v1/{name=accounts/*/customers/*}" }; option (google.api.method_signature) = "name"; } // Confirms the existence of Cloud Identity accounts, based on the domain and // whether the Cloud Identity accounts are owned by the reseller. // // Possible Error Codes: // // * PERMISSION_DENIED: If the reseller account making the request and the // reseller account being queried for are different. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * INVALID_VALUE: Invalid domain value in the request. // // Return Value: // List of [CloudIdentityCustomerAccount][google.cloud.channel.v1.CloudIdentityCustomerAccount] resources for the domain. // List may be empty. // // Note: in the v1alpha1 version of the API, a NOT_FOUND error is returned if // no [CloudIdentityCustomerAccount][google.cloud.channel.v1.CloudIdentityCustomerAccount] resources match the domain. rpc CheckCloudIdentityAccountsExist(CheckCloudIdentityAccountsExistRequest) returns (CheckCloudIdentityAccountsExistResponse) { option (google.api.http) = { post: "/v1/{parent=accounts/*}:checkCloudIdentityAccountsExist" body: "*" }; } // Creates a new [Customer][google.cloud.channel.v1.Customer] resource under the reseller or distributor // account. // // Possible Error Codes: // // * PERMISSION_DENIED: If the reseller account making the request and the // reseller account being queried for are different. // * INVALID_ARGUMENT: It can happen in following scenarios - // * Missing or invalid required parameters in the request. // * Domain field value doesn't match the domain specified in primary // email. // // Return Value: // If successful, the newly created [Customer][google.cloud.channel.v1.Customer] resource, otherwise // returns an error. rpc CreateCustomer(CreateCustomerRequest) returns (Customer) { option (google.api.http) = { post: "/v1/{parent=accounts/*}/customers" body: "customer" }; } // Updates an existing [Customer][google.cloud.channel.v1.Customer] resource belonging to the reseller or // distributor. // // Possible Error Codes: // // * PERMISSION_DENIED: If the reseller account making the request and the // reseller account being queried for are different. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * NOT_FOUND: No [Customer][google.cloud.channel.v1.Customer] resource found for the name // specified in the request. // // Return Value: // If successful, the updated [Customer][google.cloud.channel.v1.Customer] resource, otherwise returns // an error. rpc UpdateCustomer(UpdateCustomerRequest) returns (Customer) { option (google.api.http) = { patch: "/v1/{customer.name=accounts/*/customers/*}" body: "customer" }; } // Deletes the given [Customer][google.cloud.channel.v1.Customer] permanently and irreversibly. // // Possible Error Codes: // // * PERMISSION_DENIED: If the account making the request does not own // this customer. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * FAILED_PRECONDITION: If the customer has existing entitlements. // * NOT_FOUND: No [Customer][google.cloud.channel.v1.Customer] resource found for the name // specified in the request. rpc DeleteCustomer(DeleteCustomerRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1/{name=accounts/*/customers/*}" }; option (google.api.method_signature) = "name"; } // Creates a Cloud Identity for the given customer using the customer's // information or the information provided here, if present. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller. // * INVALID_ARGUMENT: Missing or invalid required parameters in the request. // * NOT_FOUND: If the customer is not found for the reseller. // * ALREADY_EXISTS: If the customer's primary email already exists. In this // case, retry after changing the customer's primary contact email. // * INTERNAL: Any non-user error related to a technical issue in the // backend. Contact Cloud Channel support in this case. // * UNKNOWN: Any non-user error related to a technical issue in the backend. // Contact Cloud Channel support in this case. // // Return Value: // Long Running Operation ID. // // To get the results of the operation, call the GetOperation method of // CloudChannelOperationsService. The Operation metadata will contain an // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata]. rpc ProvisionCloudIdentity(ProvisionCloudIdentityRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{customer=accounts/*/customers/*}:provisionCloudIdentity" body: "*" }; option (google.longrunning.operation_info) = { response_type: "Customer" metadata_type: "OperationMetadata" }; } // List [Entitlement][google.cloud.channel.v1.Entitlement]s belonging to a customer. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller. // * INVALID_ARGUMENT: Missing or invalid required parameters in the request. // // Return Value: // List of [Entitlement][google.cloud.channel.v1.Entitlement]s belonging to the customer, or empty list if // there are none. rpc ListEntitlements(ListEntitlementsRequest) returns (ListEntitlementsResponse) { option (google.api.http) = { get: "/v1/{parent=accounts/*/customers/*}/entitlements" }; } // List [TransferableSku][google.cloud.channel.v1.TransferableSku]s of a customer based on Cloud Identity ID or // Customer Name in the request. // // This method is used when a reseller lists the entitlements // information of a customer that is not owned. The reseller should provide // the customer's Cloud Identity ID or Customer Name. // // Possible Error Codes: // // * PERMISSION_DENIED: Appears because of one of the following - // * The customer doesn't belong to the reseller and no auth token. // * The supplied auth token is invalid. // * The reseller account making the request and the queries reseller // account are different. // * INVALID_ARGUMENT: Missing or invalid required parameters in the request. // // Return Value: // List of [TransferableSku][google.cloud.channel.v1.TransferableSku] for the given customer. rpc ListTransferableSkus(ListTransferableSkusRequest) returns (ListTransferableSkusResponse) { option (google.api.http) = { post: "/v1/{parent=accounts/*}:listTransferableSkus" body: "*" }; } // List [TransferableOffer][google.cloud.channel.v1.TransferableOffer]s of a customer based on Cloud Identity ID or // Customer Name in the request. // // This method is used when a reseller gets the entitlement // information of a customer that is not owned. The reseller should provide // the customer's Cloud Identity ID or Customer Name. // // Possible Error Codes: // // * PERMISSION_DENIED: Appears because of one of the following: // * If the customer doesn't belong to the reseller and no auth token or // invalid auth token is supplied. // * If the reseller account making the request and the reseller account // being queried for are different. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // // Return Value: // List of [TransferableOffer][google.cloud.channel.v1.TransferableOffer] for the given customer and SKU. rpc ListTransferableOffers(ListTransferableOffersRequest) returns (ListTransferableOffersResponse) { option (google.api.http) = { post: "/v1/{parent=accounts/*}:listTransferableOffers" body: "*" }; } // Returns a requested [Entitlement][google.cloud.channel.v1.Entitlement] resource. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * NOT_FOUND: If the entitlement is not found for the customer. // // Return Value: // If found, the requested [Entitlement][google.cloud.channel.v1.Entitlement] resource, otherwise returns // an error. rpc GetEntitlement(GetEntitlementRequest) returns (Entitlement) { option (google.api.http) = { get: "/v1/{name=accounts/*/customers/*/entitlements/*}" }; } // Creates an entitlement for a customer. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller. // * INVALID_ARGUMENT: It can happen in below scenarios - // * Missing or invalid required parameters in the request. // * Cannot purchase an entitlement if there is already an entitlement for // customer, for a SKU from the same product family. // * INVALID_VALUE: Offer passed in isn't valid. Make sure OfferId is // valid. If it is valid, then contact Google Channel support for further // troubleshooting. // * NOT_FOUND: If the customer or offer resource is not found for the // reseller. // * ALREADY_EXISTS: This failure can happen in the following cases: // * If the SKU has been already purchased for the customer. // * If the customer's primary email already exists. In this case retry // after changing the customer's primary contact email. // * CONDITION_NOT_MET or FAILED_PRECONDITION: This failure can happen in the // following cases: // * Purchasing a SKU that requires domain verification and the domain has // not been verified. // * Purchasing an Add-On SKU like Vault or Drive without purchasing the // pre-requisite SKU, such as Google Workspace Business Starter. // * Applicable only for developer accounts: reseller and resold domain. // Must meet the following domain naming requirements: // * Domain names must start with goog-test. // * Resold domain names must include the reseller domain. // * INTERNAL: Any non-user error related to a technical issue in the // backend. Contact Cloud Channel Support in this case. // * UNKNOWN: Any non-user error related to a technical issue in the // backend. Contact Cloud Channel Support in this case. // // Return Value: // Long Running Operation ID. // // To get the results of the operation, call the GetOperation method of // CloudChannelOperationsService. The Operation metadata will contain an // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata]. rpc CreateEntitlement(CreateEntitlementRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=accounts/*/customers/*}/entitlements" body: "*" }; option (google.longrunning.operation_info) = { response_type: "Entitlement" metadata_type: "OperationMetadata" }; } // Change parameters of the entitlement // // An entitlement parameters update is a long-running operation and results in // updates to the entitlement as a result of fulfillment. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. For example, if the number of seats being changed to is greater // than the allowed number of max seats for the resource. Or decreasing seats // for a commitment based plan. // * NOT_FOUND: Entitlement resource not found. // * INTERNAL: Any non-user error related to a technical issue // in the backend. In this case, contact Cloud Channel support. // * UNKNOWN: Any non-user error related to a technical issue in the backend. // In this case, contact Cloud Channel support. // // Return Value: // Long Running Operation ID. // // To get the results of the operation, call the GetOperation method of // CloudChannelOperationsService. The Operation metadata will contain an // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata]. rpc ChangeParameters(ChangeParametersRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=accounts/*/customers/*/entitlements/*}:changeParameters" body: "*" }; option (google.longrunning.operation_info) = { response_type: "Entitlement" metadata_type: "OperationMetadata" }; } // Updates the renewal settings for an existing customer entitlement. // // An entitlement update is a long-running operation and results in updates to // the entitlement as a result of fulfillment. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * NOT_FOUND: Entitlement resource not found. // * NOT_COMMITMENT_PLAN: Renewal Settings are only applicable for a // commitment plan. Can't enable or disable renewal for non-commitment plans. // * INTERNAL: Any non user error related to a technical issue in the // backend. In this case, contact Cloud Channel support. // * UNKNOWN: Any non user error related to a technical issue in the backend. // In this case, contact Cloud Channel support. // // Return Value: // Long Running Operation ID. // // To get the results of the operation, call the GetOperation method of // CloudChannelOperationsService. The Operation metadata will contain an // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata]. rpc ChangeRenewalSettings(ChangeRenewalSettingsRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=accounts/*/customers/*/entitlements/*}:changeRenewalSettings" body: "*" }; option (google.longrunning.operation_info) = { response_type: "Entitlement" metadata_type: "OperationMetadata" }; } // Updates the Offer for an existing customer entitlement. // // An entitlement update is a long-running operation and results in updates to // the entitlement as a result of fulfillment. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * NOT_FOUND: Offer or Entitlement resource not found. // * INTERNAL: Any non-user error related to a technical issue in the backend. // In this case, contact Cloud Channel support. // * UNKNOWN: Any non-user error related to a technical issue in the backend. // In this case, contact Cloud Channel support. // // Return Value: // Long Running Operation ID. // // To get the results of the operation, call the GetOperation method of // CloudChannelOperationsService. The Operation metadata will contain an // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata]. rpc ChangeOffer(ChangeOfferRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=accounts/*/customers/*/entitlements/*}:changeOffer" body: "*" }; option (google.longrunning.operation_info) = { response_type: "Entitlement" metadata_type: "OperationMetadata" }; } // Starts paid service for a trial entitlement. // // Starts paid service for a trial entitlement immediately. This method is // only applicable if a plan has already been set up for a trial entitlement // but has some trial days remaining. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * NOT_FOUND: Entitlement resource not found. // * FAILED_PRECONDITION/NOT_IN_TRIAL: This method only works for // entitlement on trial plans. // * INTERNAL: Any non-user error related to a technical issue in the backend. // In this case, contact Cloud Channel support. // * UNKNOWN: Any non-user error related to a technical issue // in the backend. In this case, contact Cloud Channel support. // // Return Value: // Long Running Operation ID. // // To get the results of the operation, call the GetOperation method of // CloudChannelOperationsService. The Operation metadata will contain an // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata]. rpc StartPaidService(StartPaidServiceRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=accounts/*/customers/*/entitlements/*}:startPaidService" body: "*" }; option (google.longrunning.operation_info) = { response_type: "Entitlement" metadata_type: "OperationMetadata" }; } // Suspends a previously fulfilled entitlement. // An entitlement suspension is a long-running operation. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * NOT_FOUND: Entitlement resource not found. // * NOT_ACTIVE: Entitlement is not active. // * INTERNAL: Any non-user error related to a technical issue in the backend. // In this case, contact Cloud Channel support. // * UNKNOWN: Any non-user error related to a technical issue in the backend. // In this case, contact Cloud Channel support. // // Return Value: // Long Running Operation ID. // // To get the results of the operation, call the GetOperation method of // CloudChannelOperationsService. The Operation metadata will contain an // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata]. rpc SuspendEntitlement(SuspendEntitlementRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=accounts/*/customers/*/entitlements/*}:suspend" body: "*" }; option (google.longrunning.operation_info) = { response_type: "Entitlement" metadata_type: "OperationMetadata" }; } // Cancels a previously fulfilled entitlement. // An entitlement cancellation is a long-running operation. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller or // if the reseller account making the request and reseller account being // queried for are different. // * FAILED_PRECONDITION: If there are any Google Cloud projects linked to the // Google Cloud entitlement's Cloud Billing subaccount. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * NOT_FOUND: Entitlement resource not found. // * DELETION_TYPE_NOT_ALLOWED: Cancel is only allowed for Google Workspace // add-ons or entitlements for Google Cloud's development platform. // * INTERNAL: Any non-user error related to a technical issue in the // backend. In this case, contact Cloud Channel support. // * UNKNOWN: Any non-user error related to a technical issue in the backend. // In this case, contact Cloud Channel support. // // Return Value: // Long Running Operation ID. // // To get the results of the operation, call the GetOperation method of // CloudChannelOperationsService. The response will contain // google.protobuf.Empty on success. The Operation metadata will contain an // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata]. rpc CancelEntitlement(CancelEntitlementRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=accounts/*/customers/*/entitlements/*}:cancel" body: "*" }; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "OperationMetadata" }; } // Activates a previously suspended entitlement. The entitlement must be in a // suspended state for it to be activated. Entitlements suspended for pending // ToS acceptance can't be activated using this method. An entitlement // activation is a long-running operation and can result in updates to // the state of the customer entitlement. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller or // if the reseller account making the request and reseller account being // queried for are different. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * NOT_FOUND: Entitlement resource not found. // * SUSPENSION_NOT_RESELLER_INITIATED: Can't activate an // entitlement that is pending TOS acceptance. Only reseller initiated // suspensions can be activated. // * NOT_SUSPENDED: Can't activate entitlements that are already in ACTIVE // state. Can only activate suspended entitlements. // * INTERNAL: Any non-user error related to a technical issue // in the backend. In this case, contact Cloud Channel support. // * UNKNOWN: Any non-user error related to a technical issue in the backend. // In this case, contact Cloud Channel support. // // Return Value: // Long Running Operation ID. // // To get the results of the operation, call the GetOperation method of // CloudChannelOperationsService. The Operation metadata will contain an // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata]. rpc ActivateEntitlement(ActivateEntitlementRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=accounts/*/customers/*/entitlements/*}:activate" body: "*" }; option (google.longrunning.operation_info) = { response_type: "Entitlement" metadata_type: "OperationMetadata" }; } // Transfers customer entitlements to new reseller. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller. // * INVALID_ARGUMENT: Missing or invalid required parameters in the request. // * NOT_FOUND: If the customer or offer resource is not found for the // reseller. // * ALREADY_EXISTS: If the SKU has been already transferred for the customer. // * CONDITION_NOT_MET or FAILED_PRECONDITION: This failure can happen in the // following cases: // * Transferring a SKU that requires domain verification and the domain // has not been verified. // * Transferring an Add-On SKU like Vault or Drive without transferring // the pre-requisite SKU, such as G Suite Basic. // * Applicable only for developer accounts: reseller and resold domain // must follow the domain naming convention as follows: // * Domain names must start with goog-test. // * Resold domain names must include the reseller domain. // * All transferring entitlements must be specified. // * INTERNAL: Any non-user error related to a technical issue in the backend. // Please contact Cloud Channel Support in this case. // * UNKNOWN: Any non-user error related to a technical issue in the backend. // Please contact Cloud Channel Support in this case. // // Return Value: // Long Running Operation ID. // // To get the results of the operation, call the GetOperation method of // CloudChannelOperationsService. The Operation metadata will contain an // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata]. rpc TransferEntitlements(TransferEntitlementsRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=accounts/*/customers/*}:transferEntitlements" body: "*" }; option (google.longrunning.operation_info) = { response_type: "TransferEntitlementsResponse" metadata_type: "OperationMetadata" }; } // Transfers customer entitlements from current reseller to Google. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller. // * INVALID_ARGUMENT: Missing or invalid required parameters in the request. // * NOT_FOUND: If the customer or offer resource is not found for the // reseller. // * ALREADY_EXISTS: If the SKU has been already transferred for the customer. // * CONDITION_NOT_MET or FAILED_PRECONDITION: This failure can happen in // the following cases: // * Transferring a SKU that requires domain verification and the domain // has not been verified. // * Transferring an Add-On SKU like Vault or Drive without purchasing the // pre-requisite SKU, such as G Suite Basic. // * Applicable only for developer accounts: reseller and resold domain // must follow the domain naming convention as follows: // * Domain names must start with goog-test. // * Resold domain names must include the reseller domain. // * INTERNAL: Any non-user error related to a technical issue in the backend. // Please contact Cloud Channel Support in this case. // * UNKNOWN: Any non-user error related to a technical issue in the backend. // Please contact Cloud Channel Support in this case. // // Return Value: // Long Running Operation ID. // // To get the results of the operation, call the GetOperation method of // CloudChannelOperationsService. The response will contain // google.protobuf.Empty on success. The Operation metadata will contain an // instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata]. rpc TransferEntitlementsToGoogle(TransferEntitlementsToGoogleRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=accounts/*/customers/*}:transferEntitlementsToGoogle" body: "*" }; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "OperationMetadata" }; } // List [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink]s belonging to a distributor. // To call this method, you must be a distributor. // // Possible Error Codes: // // * PERMISSION_DENIED: If the reseller account making the request and the // reseller account being queried for are different. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // // Return Value: // If successful, returns the list of [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink] resources // for the distributor account, otherwise returns an error. rpc ListChannelPartnerLinks(ListChannelPartnerLinksRequest) returns (ListChannelPartnerLinksResponse) { option (google.api.http) = { get: "/v1/{parent=accounts/*}/channelPartnerLinks" }; } // Returns a requested [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink] resource. // To call this method, you must be a distributor. // // Possible Error Codes: // // * PERMISSION_DENIED: If the reseller account making the request and the // reseller account being queried for are different. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * NOT_FOUND: ChannelPartnerLink resource not found. Results // due invalid channel partner link name. // // Return Value: // [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink] resource if found, otherwise returns an error. rpc GetChannelPartnerLink(GetChannelPartnerLinkRequest) returns (ChannelPartnerLink) { option (google.api.http) = { get: "/v1/{name=accounts/*/channelPartnerLinks/*}" }; } // Initiates a channel partner link between a distributor and a reseller or // between resellers in an n-tier reseller channel. // To accept the invite, the invited partner should follow the invite_link_uri // provided in the response. If the link creation is accepted, a valid link is // set up between the two involved parties. // To call this method, you must be a distributor. // // Possible Error Codes: // // * PERMISSION_DENIED: If the reseller account making the request and the // reseller account being queried for are different. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * ALREADY_EXISTS: If the ChannelPartnerLink sent in the request already // exists. // * NOT_FOUND: If no Cloud Identity customer exists for domain provided. // * INTERNAL: Any non-user error related to a technical issue in the // backend. In this case, contact Cloud Channel support. // * UNKNOWN: Any non-user error related to a technical issue in // the backend. In this case, contact Cloud Channel support. // // Return Value: // Newly created [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink] resource if successful, // otherwise error is returned. rpc CreateChannelPartnerLink(CreateChannelPartnerLinkRequest) returns (ChannelPartnerLink) { option (google.api.http) = { post: "/v1/{parent=accounts/*}/channelPartnerLinks" body: "channel_partner_link" }; } // Updates a channel partner link. A distributor calls this method to change a // link's status. For example, suspend a partner link. // To call this method, you must be a distributor. // // Possible Error Codes: // // * PERMISSION_DENIED: If the reseller account making the request and the // reseller account being queried for are different. // * INVALID_ARGUMENT: It can happen in following scenarios - // * Missing or invalid required parameters in the request. // * Updating link state from invited to active or suspended. // * Sending reseller_cloud_identity_id, invite_url or name in update // mask. // * NOT_FOUND: ChannelPartnerLink resource not found. // * INTERNAL: Any non-user error related to a technical issue in the backend. // In this case, contact Cloud Channel support. // * UNKNOWN: Any non-user error related to a technical issue in the backend. // In this case, contact Cloud Channel support. // // Return Value: // If successful, the updated [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink] resource, otherwise // returns an error. rpc UpdateChannelPartnerLink(UpdateChannelPartnerLinkRequest) returns (ChannelPartnerLink) { option (google.api.http) = { patch: "/v1/{name=accounts/*/channelPartnerLinks/*}" body: "*" }; } // Lists the Products the reseller is authorized to sell. // // Possible Error Codes: // // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. rpc ListProducts(ListProductsRequest) returns (ListProductsResponse) { option (google.api.http) = { get: "/v1/products" }; } // Lists the SKUs for a product the reseller is authorized to sell. // // Possible Error Codes: // // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. rpc ListSkus(ListSkusRequest) returns (ListSkusResponse) { option (google.api.http) = { get: "/v1/{parent=products/*}/skus" }; } // Lists the Offers the reseller can sell. // // Possible Error Codes: // // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. rpc ListOffers(ListOffersRequest) returns (ListOffersResponse) { option (google.api.http) = { get: "/v1/{parent=accounts/*}/offers" }; } // Lists the Purchasable SKUs for following cases: // // * SKUs that can be newly purchased for a customer // * SKUs that can be upgraded/downgraded to, for an entitlement. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. rpc ListPurchasableSkus(ListPurchasableSkusRequest) returns (ListPurchasableSkusResponse) { option (google.api.http) = { get: "/v1/{customer=accounts/*/customers/*}:listPurchasableSkus" }; } // Lists the Purchasable Offers for the following cases: // // * Offers that can be newly purchased for a customer // * Offers that can be changed to, for an entitlement. // // Possible Error Codes: // // * PERMISSION_DENIED: If the customer doesn't belong to the reseller // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. rpc ListPurchasableOffers(ListPurchasableOffersRequest) returns (ListPurchasableOffersResponse) { option (google.api.http) = { get: "/v1/{customer=accounts/*/customers/*}:listPurchasableOffers" }; } // Registers a service account with subscriber privileges on the Cloud Pub/Sub // topic created for this Channel Services account. Once you create a // subscriber, you will get the events as per [SubscriberEvent][google.cloud.channel.v1.SubscriberEvent] // // Possible Error Codes: // // * PERMISSION_DENIED: If the reseller account making the request and the // reseller account being provided are different, or if the impersonated user // is not a super admin. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * INTERNAL: Any non-user error related to a technical issue in the // backend. In this case, contact Cloud Channel support. // * UNKNOWN: Any non-user error related to a technical issue in // the backend. In this case, contact Cloud Channel support. // // Return Value: // Topic name with service email address registered if successful, // otherwise error is returned. rpc RegisterSubscriber(RegisterSubscriberRequest) returns (RegisterSubscriberResponse) { option (google.api.http) = { post: "/v1/{account=accounts/*}:register" body: "*" }; } // Unregisters a service account with subscriber privileges on the Cloud // Pub/Sub topic created for this Channel Services account. If there are no // more service account left with sunbscriber privileges, the topic will be // deleted. You can check this by calling ListSubscribers api. // // Possible Error Codes: // // * PERMISSION_DENIED: If the reseller account making the request and the // reseller account being provided are different, or if the impersonated user // is not a super admin. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * NOT_FOUND: If the topic resource doesn't exist. // * INTERNAL: Any non-user error related to a technical issue in the // backend. In this case, contact Cloud Channel support. // * UNKNOWN: Any non-user error related to a technical issue in // the backend. In this case, contact Cloud Channel support. // // Return Value: // Topic name from which service email address has been unregistered if // successful, otherwise error is returned. If the service email was already // not associated with the topic, the success response will be returned. rpc UnregisterSubscriber(UnregisterSubscriberRequest) returns (UnregisterSubscriberResponse) { option (google.api.http) = { post: "/v1/{account=accounts/*}:unregister" body: "*" }; } // Lists service accounts with subscriber privileges on the Cloud Pub/Sub // topic created for this Channel Services account. // // Possible Error Codes: // // * PERMISSION_DENIED: If the reseller account making the request and the // reseller account being provided are different, or if the account is not // a super admin. // * INVALID_ARGUMENT: Missing or invalid required parameters in the // request. // * NOT_FOUND: If the topic resource doesn't exist. // * INTERNAL: Any non-user error related to a technical issue in the // backend. In this case, contact Cloud Channel support. // * UNKNOWN: Any non-user error related to a technical issue in // the backend. In this case, contact Cloud Channel support. // // Return Value: // List of service email addresses if successful, otherwise error is // returned. rpc ListSubscribers(ListSubscribersRequest) returns (ListSubscribersResponse) { option (google.api.http) = { get: "/v1/{account=accounts/*}:listSubscribers" }; } } // Request message for [CloudChannelService.CheckCloudIdentityAccountsExist][google.cloud.channel.v1.CloudChannelService.CheckCloudIdentityAccountsExist]. message CheckCloudIdentityAccountsExistRequest { // Required. The resource name of the reseller account. // The parent takes the format: accounts/{account_id} string parent = 1 [(google.api.field_behavior) = REQUIRED]; // Required. Domain for which the Cloud Identity account customer is fetched. string domain = 2 [(google.api.field_behavior) = REQUIRED]; } // Entity representing a Cloud Identity account which may or may not be // associated with a Channel Services API partner. message CloudIdentityCustomerAccount { // True if a Cloud Identity account exists for a specific domain. bool existing = 1; // True if the Cloud Identity account is associated with a customer // belonging to the Channel Services partner making the API call. bool owned = 2; // Name of the customer that owns the Cloud Identity account. This field is // populated ONLY if owned = true. // The customer_name takes the format: // accounts/{account_id}/customers/{customer_id} string customer_name = 3; // Cloud Identity ID of the customer. This field is populated ONLY if // existing = true. string customer_cloud_identity_id = 4; } // Response message for // [CloudChannelService.CheckCloudIdentityAccountsExist][google.cloud.channel.v1.CloudChannelService.CheckCloudIdentityAccountsExist]. message CheckCloudIdentityAccountsExistResponse { // The Cloud Identity accounts associated with the domain. repeated CloudIdentityCustomerAccount cloud_identity_accounts = 1; } // Request message for [CloudChannelService.ListCustomers][google.cloud.channel.v1.CloudChannelService.ListCustomers] message ListCustomersRequest { // Required. The resource name of the reseller account from which to list customers. // The parent takes the format: accounts/{account_id}. string parent = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. The maximum number of customers to return. The service may return fewer // than this value. If unspecified, at most 10 customers will be returned. The // maximum value is 50; values about 50 will be coerced to 50. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A token identifying a page of results, if other than the first one. // Typically obtained via // [ListCustomersResponse.next_page_token][google.cloud.channel.v1.ListCustomersResponse.next_page_token] of the previous // [CloudChannelService.ListCustomers][google.cloud.channel.v1.CloudChannelService.ListCustomers] call. string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; } // Response message for [CloudChannelService.ListCustomers][google.cloud.channel.v1.CloudChannelService.ListCustomers]. message ListCustomersResponse { // The customers belonging to the reseller or distributor. repeated Customer customers = 1; // A token to retrieve the next page of results. // Pass to [ListCustomersRequest.page_token][google.cloud.channel.v1.ListCustomersRequest.page_token] to obtain that page. string next_page_token = 2; } // Request message for [CloudChannelService.GetCustomer][google.cloud.channel.v1.CloudChannelService.GetCustomer]. message GetCustomerRequest { // Required. The resource name of the customer to retrieve. // The name takes the format: accounts/{account_id}/customers/{customer_id} string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "cloudchannel.googleapis.com/Customer" } ]; } // Request message for [CloudChannelService.CreateCustomer][google.cloud.channel.v1.CloudChannelService.CreateCustomer] message CreateCustomerRequest { // Required. The resource name of reseller account in which to create the customer. // The parent takes the format: accounts/{account_id} string parent = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The customer to create. Customer customer = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for [CloudChannelService.UpdateCustomer][google.cloud.channel.v1.CloudChannelService.UpdateCustomer]. message UpdateCustomerRequest { // Required. New contents of the customer. Customer customer = 2 [(google.api.field_behavior) = REQUIRED]; // The update mask that applies to the resource. // Optional. google.protobuf.FieldMask update_mask = 3; } // Request message for [CloudChannelService.DeleteCustomer][google.cloud.channel.v1.CloudChannelService.DeleteCustomer]. message DeleteCustomerRequest { // Required. The resource name of the customer to delete. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "cloudchannel.googleapis.com/Customer" } ]; } // Request message for [CloudChannelService.ProvisionCloudIdentity][google.cloud.channel.v1.CloudChannelService.ProvisionCloudIdentity] message ProvisionCloudIdentityRequest { // Required. Resource name of the customer. // Format: accounts/{account_id}/customers/{customer_id} string customer = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "cloudchannel.googleapis.com/Customer" } ]; // CloudIdentity-specific customer information. CloudIdentityInfo cloud_identity_info = 2; // Admin user information. AdminUser user = 3; // If set, validate the request and preview the review, but do not actually // post it. bool validate_only = 4; } // Request message for [CloudChannelService.ListEntitlements][google.cloud.channel.v1.CloudChannelService.ListEntitlements] message ListEntitlementsRequest { // Required. The resource name of the reseller's customer account for which to list // entitlements. // The parent takes the format: accounts/{account_id}/customers/{customer_id} string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "cloudchannel.googleapis.com/Customer" } ]; // Optional. Requested page size. Server might return fewer results than requested. // If unspecified, at most 50 entitlements will be returned. // The maximum value is 100; values above 100 will be coerced to 100. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A token identifying a page of results, if other than the first one. // Typically obtained via // [ListEntitlementsResponse.next_page_token][google.cloud.channel.v1.ListEntitlementsResponse.next_page_token] of the previous // [CloudChannelService.ListEntitlements][google.cloud.channel.v1.CloudChannelService.ListEntitlements] call. string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; } // Response message for [CloudChannelService.ListEntitlements][google.cloud.channel.v1.CloudChannelService.ListEntitlements]. message ListEntitlementsResponse { // The entitlements belonging to the reseller's customer. repeated Entitlement entitlements = 1; // A token to List next page of results. // Pass to [ListEntitlementsRequest.page_token][google.cloud.channel.v1.ListEntitlementsRequest.page_token] to obtain that page. string next_page_token = 2; } // Request message for [CloudChannelService.ListTransferableSkus][google.cloud.channel.v1.CloudChannelService.ListTransferableSkus] message ListTransferableSkusRequest { // Specifies the identity of transferred customer. // Either a cloud_identity_id of the customer OR the customer name is // required to look up transferable SKUs. oneof transferred_customer_identity { // Customer's Cloud Identity ID string cloud_identity_id = 4; // A reseller is required to create a customer and use the resource name of // the created customer here. // The customer_name takes the format: // accounts/{account_id}/customers/{customer_id} string customer_name = 7; } // Required. The resource name of the reseller's account. // The parent takes the format: accounts/{account_id} string parent = 1 [(google.api.field_behavior) = REQUIRED]; // Requested page size. Server might return fewer results than requested. // If unspecified, at most 100 SKUs will be returned. // The maximum value is 1000; values above 1000 will be coerced to 1000. // Optional. int32 page_size = 2; // A token identifying a page of results, if other than the first one. // Typically obtained via // [ListTransferableSkusResponse.next_page_token][google.cloud.channel.v1.ListTransferableSkusResponse.next_page_token] of the previous // [CloudChannelService.ListTransferableSkus][google.cloud.channel.v1.CloudChannelService.ListTransferableSkus] call. // Optional. string page_token = 3; // This token is generated by the Super Admin of the resold customer to // authorize a reseller to access their Cloud Identity and purchase // entitlements on their behalf. This token can be omitted once the // authorization is generated. See https://support.google.com/a/answer/7643790 // for more details. string auth_token = 5; // The BCP-47 language code, such as "en-US". If specified, the // response will be localized to the corresponding language code. Default is // "en-US". // Optional. string language_code = 6; } // Response message for [CloudChannelService.ListTransferableSkus][google.cloud.channel.v1.CloudChannelService.ListTransferableSkus]. message ListTransferableSkusResponse { // Information about existing SKUs for a customer that would need to be // transferred. repeated TransferableSku transferable_skus = 1; // A token to retrieve the next page of results. // Pass to [ListTransferableSkusRequest.page_token][google.cloud.channel.v1.ListTransferableSkusRequest.page_token] to obtain // that page. string next_page_token = 2; } // Request message for [CloudChannelService.ListTransferableOffers][google.cloud.channel.v1.CloudChannelService.ListTransferableOffers] message ListTransferableOffersRequest { // Specifies the identity of transferred customer. // Either a cloud_identity_id of the customer OR the customer name is // required to look up transferrable Offers. oneof transferred_customer_identity { // Customer's Cloud Identity ID string cloud_identity_id = 4; // A reseller should create a customer and use the resource name of // the created customer here. string customer_name = 5; } // Required. The resource name of the reseller's account. string parent = 1 [(google.api.field_behavior) = REQUIRED]; // Requested page size. Server might return fewer results than requested. // If unspecified, at most 100 Offers will be returned. // The maximum value is 1000; values above 1000 will be coerced to 1000. int32 page_size = 2; // A token identifying a page of results, if other than the first one. // Typically obtained via // [ListTransferableOffersResponse.next_page_token][google.cloud.channel.v1.ListTransferableOffersResponse.next_page_token] of the previous // [CloudChannelService.ListTransferableOffers][google.cloud.channel.v1.CloudChannelService.ListTransferableOffers] call. string page_token = 3; // Required. SKU for which the Offers are being looked up. string sku = 6 [(google.api.field_behavior) = REQUIRED]; // The BCP-47 language code, such as "en-US". If specified, the // response will be localized to the corresponding language code. Default is // "en-US". string language_code = 7; } // Response message for [CloudChannelService.ListTransferableOffers][google.cloud.channel.v1.CloudChannelService.ListTransferableOffers]. message ListTransferableOffersResponse { // Information about Offers for a customer that can be used for // transfer. repeated TransferableOffer transferable_offers = 1; // A token to retrieve the next page of results. // Pass to [ListTransferableOffersRequest.page_token][google.cloud.channel.v1.ListTransferableOffersRequest.page_token] to obtain // that page. string next_page_token = 2; } // TransferableOffer represents an Offer that can be used in Transfer. // Read-only. message TransferableOffer { // Offer with parameter constraints updated to allow the Transfer. Offer offer = 1; } // Request message for [CloudChannelService.GetEntitlement][google.cloud.channel.v1.CloudChannelService.GetEntitlement]. message GetEntitlementRequest { // Required. The resource name of the entitlement to retrieve. // The name takes the format: // accounts/{account_id}/customers/{customer_id}/entitlements/{id} string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "cloudchannel.googleapis.com/Entitlement" } ]; } // Request message for [CloudChannelService.ListChannelPartnerLinks][google.cloud.channel.v1.CloudChannelService.ListChannelPartnerLinks] message ListChannelPartnerLinksRequest { // Required. The resource name of the reseller account for listing channel partner // links. // The parent takes the format: accounts/{account_id} string parent = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. Requested page size. Server might return fewer results than requested. // If unspecified, server will pick a default size (25). // The maximum value is 200, values above 200 will be coerced to 200. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A token identifying a page of results, if other than the first one. // Typically obtained via // [ListChannelPartnerLinksResponse.next_page_token][google.cloud.channel.v1.ListChannelPartnerLinksResponse.next_page_token] of the previous // [CloudChannelService.ListChannelPartnerLinks][google.cloud.channel.v1.CloudChannelService.ListChannelPartnerLinks] call. string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. The level of granularity the ChannelPartnerLink will display. ChannelPartnerLinkView view = 4 [(google.api.field_behavior) = OPTIONAL]; } // Response message for [CloudChannelService.ListChannelPartnerLinks][google.cloud.channel.v1.CloudChannelService.ListChannelPartnerLinks]. message ListChannelPartnerLinksResponse { // The Channel partner links for a reseller. repeated ChannelPartnerLink channel_partner_links = 1; // A token to retrieve the next page of results. // Pass to [ListChannelPartnerLinksRequest.page_token][google.cloud.channel.v1.ListChannelPartnerLinksRequest.page_token] to obtain that page. string next_page_token = 2; } // Request message for [CloudChannelService.GetChannelPartnerLink][google.cloud.channel.v1.CloudChannelService.GetChannelPartnerLink]. message GetChannelPartnerLinkRequest { // Required. The resource name of the channel partner link to retrieve. // The name takes the format: accounts/{account_id}/channelPartnerLinks/{id} // where {id} is the Cloud Identity ID of the partner. string name = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. The level of granularity the ChannelPartnerLink will display. ChannelPartnerLinkView view = 2 [(google.api.field_behavior) = OPTIONAL]; } // Request message for [CloudChannelService.CreateChannelPartnerLink][google.cloud.channel.v1.CloudChannelService.CreateChannelPartnerLink] message CreateChannelPartnerLinkRequest { // Required. The resource name of reseller's account for which to create a channel // partner link. // The parent takes the format: accounts/{account_id} string parent = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The channel partner link to create. // Either channel_partner_link.reseller_cloud_identity_id or domain can be // used to create a link. ChannelPartnerLink channel_partner_link = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for [CloudChannelService.UpdateChannelPartnerLink][google.cloud.channel.v1.CloudChannelService.UpdateChannelPartnerLink] message UpdateChannelPartnerLinkRequest { // Required. The resource name of the channel partner link to cancel. // The name takes the format: accounts/{account_id}/channelPartnerLinks/{id} // where {id} is the Cloud Identity ID of the partner. string name = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The channel partner link to update. Only field // channel_partner_link.link_state is allowed to be updated. ChannelPartnerLink channel_partner_link = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The update mask that applies to the resource. // The only allowable value for update mask is // channel_partner_link.link_state. google.protobuf.FieldMask update_mask = 3 [(google.api.field_behavior) = REQUIRED]; } // Request message for [CloudChannelService.CreateEntitlement][google.cloud.channel.v1.CloudChannelService.CreateEntitlement] message CreateEntitlementRequest { // Required. The resource name of reseller's customer account in which to create the // entitlement. // The parent takes the format: accounts/{account_id}/customers/{customer_id} string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "cloudchannel.googleapis.com/Customer" } ]; // Required. The entitlement to create. Entitlement entitlement = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique request ID so // that if you must retry your request, the server will know to ignore the // request if it has already been completed. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same // request ID, the server can check if the original operation with the same // request ID was received, and if so, will ignore the second request. // // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122) // with the exception that zero UUID is not supported // (`00000000-0000-0000-0000-000000000000`). string request_id = 5 [(google.api.field_behavior) = OPTIONAL]; } // Request message for [CloudChannelService.TransferEntitlements][google.cloud.channel.v1.CloudChannelService.TransferEntitlements]. message TransferEntitlementsRequest { // Required. The resource name of reseller's customer account where the entitlements // transfer to. // The parent takes the format: accounts/{account_id}/customers/{customer_id} string parent = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The new entitlements to be created or transferred. repeated Entitlement entitlements = 2 [(google.api.field_behavior) = REQUIRED]; // This token is generated by the Super Admin of the resold customer to // authorize a reseller to access their Cloud Identity and purchase // entitlements on their behalf. This token can be omitted once the // authorization is generated. See https://support.google.com/a/answer/7643790 // for more details. string auth_token = 4; // Optional. An optional request ID to identify requests. Specify a unique request ID so // that if you must retry your request, the server will know to ignore the // request if it has already been completed. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same // request ID, the server can check if the original operation with the same // request ID was received, and if so, will ignore the second request. // // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122) // with the exception that zero UUID is not supported // (`00000000-0000-0000-0000-000000000000`). string request_id = 6 [(google.api.field_behavior) = OPTIONAL]; } // Response message for [CloudChannelService.TransferEntitlements][google.cloud.channel.v1.CloudChannelService.TransferEntitlements]. // This will be put into the response field of google.longrunning.Operation. message TransferEntitlementsResponse { // The entitlements that have been transferred. repeated Entitlement entitlements = 1; } // Request message for [CloudChannelService.TransferEntitlementsToGoogle][google.cloud.channel.v1.CloudChannelService.TransferEntitlementsToGoogle]. message TransferEntitlementsToGoogleRequest { // Required. The resource name of reseller's customer account where the entitlements // transfer from. // The parent takes the format: accounts/{account_id}/customers/{customer_id} string parent = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The entitlements to be transferred to Google. repeated Entitlement entitlements = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique request ID so // that if you must retry your request, the server will know to ignore the // request if it has already been completed. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same // request ID, the server can check if the original operation with the same // request ID was received, and if so, will ignore the second request. // // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122) // with the exception that zero UUID is not supported // (`00000000-0000-0000-0000-000000000000`). string request_id = 3 [(google.api.field_behavior) = OPTIONAL]; } // Request message for [CloudChannelService.ChangeParametersRequest][]. message ChangeParametersRequest { // Required. The name of the entitlement to update. // The name takes the format: // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id} string name = 1 [(google.api.field_behavior) = REQUIRED]; // Required. Entitlement parameters to update. Only editable parameters are allowed to // be changed. repeated Parameter parameters = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique request ID so // that if you must retry your request, the server will know to ignore the // request if it has already been completed. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same // request ID, the server can check if the original operation with the same // request ID was received, and if so, will ignore the second request. // // The request ID must be // a valid [UUID](https://tools.ietf.org/html/rfc4122) with the exception that // zero UUID is not supported // (`00000000-0000-0000-0000-000000000000`). string request_id = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. Purchase order ID provided by the reseller. string purchase_order_id = 5 [(google.api.field_behavior) = OPTIONAL]; } // Request message for [CloudChannelService.ChangeRenewalSettings][google.cloud.channel.v1.CloudChannelService.ChangeRenewalSettings]. message ChangeRenewalSettingsRequest { // Required. The name of the entitlement to update. // The name takes the format: // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id} string name = 1 [(google.api.field_behavior) = REQUIRED]; // Required. New renewal settings. RenewalSettings renewal_settings = 4 [(google.api.field_behavior) = REQUIRED]; // Optional. A request ID to identify requests. Specify a unique request ID so // that if you must retry your request, the server will know to ignore the // request if it has already been completed. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same // request ID, the server can check if the original operation with the same // request ID was received, and if so, will ignore the second request. // // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122) // with the exception that zero UUID is not supported // (`00000000-0000-0000-0000-000000000000`). string request_id = 5 [(google.api.field_behavior) = OPTIONAL]; } // Request message for [CloudChannelService.ChangeOffer][google.cloud.channel.v1.CloudChannelService.ChangeOffer]. message ChangeOfferRequest { // Required. The name of the entitlement to update. // Format: // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id} string name = 1 [(google.api.field_behavior) = REQUIRED]; // Required. New Offer. // Format: accounts/{account_id}/offers/{offer_id}. string offer = 2 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "cloudchannel.googleapis.com/Offer" } ]; // Optional. Parameters needed to purchase the Offer. repeated Parameter parameters = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. Purchase order id provided by the reseller. string purchase_order_id = 5 [(google.api.field_behavior) = OPTIONAL]; // Optional. An optional request ID to identify requests. Specify a unique request ID so // that if you must retry your request, the server will know to ignore the // request if it has already been completed. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same // request ID, the server can check if the original operation with the same // request ID was received, and if so, will ignore the second request. // // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122) // with the exception that zero UUID is not supported // (`00000000-0000-0000-0000-000000000000`). string request_id = 6 [(google.api.field_behavior) = OPTIONAL]; } // Request message for [CloudChannelService.StartPaidService][google.cloud.channel.v1.CloudChannelService.StartPaidService]. message StartPaidServiceRequest { // Required. The name of the entitlement for which paid service is being started. // The name takes the format: // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id} string name = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique request ID so // that if you must retry your request, the server will know to ignore the // request if it has already been completed. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same // request ID, the server can check if the original operation with the same // request ID was received, and if so, will ignore the second request. // // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122) // with the exception that zero UUID is not supported // (`00000000-0000-0000-0000-000000000000`). string request_id = 3 [(google.api.field_behavior) = OPTIONAL]; } // Request message for [CloudChannelService.CancelEntitlement][google.cloud.channel.v1.CloudChannelService.CancelEntitlement]. message CancelEntitlementRequest { // Required. The resource name of the entitlement to cancel. // The name takes the format: // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id} string name = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique request ID so // that if you must retry your request, the server will know to ignore the // request if it has already been completed. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same // request ID, the server can check if the original operation with the same // request ID was received, and if so, will ignore the second request. // // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122) // with the exception that zero UUID is not supported // (`00000000-0000-0000-0000-000000000000`). string request_id = 3 [(google.api.field_behavior) = OPTIONAL]; } // Request message for [CloudChannelService.SuspendEntitlement][google.cloud.channel.v1.CloudChannelService.SuspendEntitlement]. message SuspendEntitlementRequest { // Required. The resource name of the entitlement to suspend. // The name takes the format: // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id} string name = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique request ID so // that if you must retry your request, the server will know to ignore the // request if it has already been completed. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same // request ID, the server can check if the original operation with the same // request ID was received, and if so, will ignore the second request. // // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122) // with the exception that zero UUID is not supported // (`00000000-0000-0000-0000-000000000000`). string request_id = 3 [(google.api.field_behavior) = OPTIONAL]; } // Request message for [CloudChannelService.ActivateEntitlement][google.cloud.channel.v1.CloudChannelService.ActivateEntitlement]. message ActivateEntitlementRequest { // Required. The resource name of the entitlement to activate. // The name takes the format: // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id} string name = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique request ID so // that if you must retry your request, the server will know to ignore the // request if it has already been completed. // // For example, consider a situation where you make an initial request and // the request times out. If you make the request again with the same // request ID, the server can check if the original operation with the same // request ID was received, and if so, will ignore the second request. // // The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122) // with the exception that zero UUID is not supported // (`00000000-0000-0000-0000-000000000000`). string request_id = 3 [(google.api.field_behavior) = OPTIONAL]; } // Request message for ListProducts. message ListProductsRequest { // Required. The resource name of the reseller account. // Format: accounts/{account_id}. string account = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. Requested page size. Server might return fewer results than requested. // If unspecified, at most 100 Products will be returned. // The maximum value is 1000; values above 1000 will be coerced to 1000. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A token identifying a page of results, if other than the first one. string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. The BCP-47 language code, such as "en-US". If specified, the // response will be localized to the corresponding language code. Default is // "en-US". string language_code = 4 [(google.api.field_behavior) = OPTIONAL]; } // Response message for ListProducts. message ListProductsResponse { // List of Products requested. repeated Product products = 1; // A token to retrieve the next page of results. string next_page_token = 2; } // Request message for ListSkus. message ListSkusRequest { // Required. The resource name of the Product for which to list SKUs. // The parent takes the format: products/{product_id}. // Supports products/- to retrieve SKUs for all products. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "cloudchannel.googleapis.com/Product" } ]; // Required. Resource name of the reseller. // Format: accounts/{account_id}. string account = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. Requested page size. Server might return fewer results than requested. // If unspecified, at most 100 SKUs will be returned. // The maximum value is 1000; values above 1000 will be coerced to 1000. int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. A token identifying a page of results, if other than the first one. // Optional. string page_token = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. The BCP-47 language code, such as "en-US". If specified, the // response will be localized to the corresponding language code. Default is // "en-US". string language_code = 5 [(google.api.field_behavior) = OPTIONAL]; } // Response message for ListSkus. message ListSkusResponse { // The list of SKUs requested. repeated Sku skus = 1; // A token to retrieve the next page of results. string next_page_token = 2; } // Request message for ListOffers. message ListOffersRequest { // Required. The resource name of the reseller account from which to list Offers. // The parent takes the format: accounts/{account_id}. string parent = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. Requested page size. Server might return fewer results than requested. // If unspecified, at most 500 Offers will be returned. // The maximum value is 1000; values above 1000 will be coerced to 1000. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A token identifying a page of results, if other than the first one. string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. The expression to filter results by name (name of // the Offer), sku.name (name of the SKU) or sku.product.name (name of the // Product). // Example 1: sku.product.name=products/p1 AND sku.name!=products/p1/skus/s1 // Example 2: name=accounts/a1/offers/o1 string filter = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. The BCP-47 language code, such as "en-US". If specified, the // response will be localized to the corresponding language code. Default is // "en-US". string language_code = 5 [(google.api.field_behavior) = OPTIONAL]; } // Response message for ListOffers. message ListOffersResponse { // The list of Offers requested. repeated Offer offers = 1; // A token to retrieve the next page of results. string next_page_token = 2; } // Request message for ListPurchasableSkus. message ListPurchasableSkusRequest { // List SKUs for a new entitlement. Make the purchase using // [CloudChannelService.CreateEntitlement][google.cloud.channel.v1.CloudChannelService.CreateEntitlement]. message CreateEntitlementPurchase { // Required. List SKUs belonging to this Product. // Format: products/{product_id}. // Supports products/- to retrieve SKUs for all products. string product = 1 [(google.api.field_behavior) = REQUIRED]; } // List SKUs for upgrading or downgrading an entitlement. Make the purchase // using [CloudChannelService.ChangeOffer][google.cloud.channel.v1.CloudChannelService.ChangeOffer]. message ChangeOfferPurchase { // Change Type enum. enum ChangeType { // Not used. CHANGE_TYPE_UNSPECIFIED = 0; // SKU is an upgrade on the current entitlement. UPGRADE = 1; // SKU is a downgrade on the current entitlement. DOWNGRADE = 2; } // Required. Resource name of the entitlement. // Format: // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id} string entitlement = 1 [(google.api.field_behavior) = REQUIRED]; // Required. Change Type for the entitlement. ChangeType change_type = 2 [(google.api.field_behavior) = REQUIRED]; } // Purchase option for the request. Defines the purchase for which the SKUs // are being listed. oneof purchase_option { // List SKUs for CreateEntitlement purchase. CreateEntitlementPurchase create_entitlement_purchase = 2; // List SKUs for ChangeOffer purchase with a new SKU. ChangeOfferPurchase change_offer_purchase = 3; } // Required. The resource name of the customer for which to list SKUs. // Format: accounts/{account_id}/customers/{customer_id}. string customer = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "cloudchannel.googleapis.com/Customer" } ]; // Optional. Requested page size. Server might return fewer results than requested. // If unspecified, at most 100 SKUs will be returned. // The maximum value is 1000; values above 1000 will be coerced to 1000. int32 page_size = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. A token identifying a page of results, if other than the first one. string page_token = 5 [(google.api.field_behavior) = OPTIONAL]; // Optional. The BCP-47 language code, such as "en-US". If specified, the // response will be localized to the corresponding language code. Default is // "en-US". string language_code = 6 [(google.api.field_behavior) = OPTIONAL]; } // Response message for ListPurchasableSkus. message ListPurchasableSkusResponse { // The list of SKUs requested. repeated PurchasableSku purchasable_skus = 1; // A token to retrieve the next page of results. string next_page_token = 2; } // SKU that can be used for a puchase. This is used in ListPurchasableSku API // response. message PurchasableSku { // SKU Sku sku = 1; } // Request message for ListPurchasableOffers. message ListPurchasableOffersRequest { // List Offers for CreateEntitlement purchase. message CreateEntitlementPurchase { // Required. SKU that the result should be restricted to. // Format: products/{product_id}/skus/{sku_id}. string sku = 1 [(google.api.field_behavior) = REQUIRED]; } // List Offers for ChangeOffer purchase. message ChangeOfferPurchase { // Required. Resource name of the entitlement. // Format: // accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id} string entitlement = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. Resource name of the SKU that is being changed to. Should be provided if // upgrading or downgrading an entitlement. Format: // products/{product_id}/skus/{sku_id} string new_sku = 2 [(google.api.field_behavior) = OPTIONAL]; } // Purchase option for the request. Defines the purchase for which the Offers // are being listed. oneof purchase_option { // List Offers for CreateEntitlement purchase. CreateEntitlementPurchase create_entitlement_purchase = 2; // List Offers for ChangeOffer purchase. ChangeOfferPurchase change_offer_purchase = 3; } // Required. The resource name of the customer for which to list Offers. // Format: accounts/{account_id}/customers/{customer_id}. string customer = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "cloudchannel.googleapis.com/Customer" } ]; // Optional. Requested page size. Server might return fewer results than requested. // If unspecified, at most 100 Offers will be returned. // The maximum value is 1000; values above 1000 will be coerced to 1000. int32 page_size = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. A token identifying a page of results, if other than the first one. string page_token = 5 [(google.api.field_behavior) = OPTIONAL]; // Optional. The BCP-47 language code, such as "en-US". If specified, the // response will be localized to the corresponding language code. Default is // "en-US". string language_code = 6 [(google.api.field_behavior) = OPTIONAL]; } // Response message for ListPurchasableOffers. message ListPurchasableOffersResponse { // The list of Offers requested. repeated PurchasableOffer purchasable_offers = 1; // A token to retrieve the next page of results. string next_page_token = 2; } // Offer that can be puchased for a customer. This is used in // ListPurchasableOffer API response. message PurchasableOffer { // Offer. Offer offer = 1; } // Request Message for RegisterSubscriber. message RegisterSubscriberRequest { // Required. Resource name of the account. string account = 1 [(google.api.field_behavior) = REQUIRED]; // Required. Service account which will provide subscriber access to the // registered topic. string service_account = 2 [(google.api.field_behavior) = REQUIRED]; } // Response Message for RegisterSubscriber. message RegisterSubscriberResponse { // Name of the topic to which the subscriber will listen to. string topic = 1; } // Request Message for UnregisterSubscriber. message UnregisterSubscriberRequest { // Required. Resource name of the account. string account = 1 [(google.api.field_behavior) = REQUIRED]; // Required. Service account which will be unregistered from getting subscriber access // to the topic. string service_account = 2 [(google.api.field_behavior) = REQUIRED]; } // Response Message for UnregisterSubscriber. message UnregisterSubscriberResponse { // Name of the topic from which the service account subscriber access has been // removed. string topic = 1; } // Request Message for ListSubscribers. message ListSubscribersRequest { // Required. Resource name of the account. string account = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. The maximum number of service accounts to return. The service may return // fewer than this value. // If unspecified, at most 100 service accounts will be returned. // The maximum value is 1000; values above 1000 will be coerced to 1000. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A page token, received from a previous `ListSubscribers` call. // Provide this to retrieve the subsequent page. // // When paginating, all other parameters provided to `ListSubscribers` must // match the call that provided the page token. string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; } // Response Message for ListSubscribers. message ListSubscribersResponse { // Name of the topic registered with the reseller. string topic = 1; // List of service accounts which have subscriber access to the topic. repeated string service_accounts = 2; // A token that can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. string next_page_token = 3; }