This page shows how to get started with the Cloud Client Libraries for the Cloud Channel API.
Installing the client library
We recommend using a Google client library for your integration. These libraries provide a natural and language-specific interface, offer better performance by using RPC instead of HTTP, and set default values for fields.
To install the library:
C++
To install the C++ client library, see Setting up a C++ development environment.
C#
If you are using Visual Studio 2017 or higher, open nuget package manager window and type the following:
Install-Package Google.Cloud.Channel.V1 If you are using .NET Core command-line interface tools to install your dependencies, run the following command:
dotnet add package Google.Cloud.Channel.V1 Go
go mod init YOUR_MODULE_NAME go get cloud.google.com/go/channel/apiv1 Java
If use use Maven, add the following to your pom.xml file. For more information about BOMs, see The Google Cloud Platform Libraries BOM.
<dependencyManagement> <dependencies> <dependency> <groupId>com.google.cloud</groupId> <artifactId>libraries-bom</artifactId> <version>20.9.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-channel</artifactId> <version>2.3.0</version> </dependency> If you are using Gradle, add the following to your dependencies:
implementation group: 'com.google.cloud', name: 'google-cloud-channel', version: '2.3.0' If you're using VS Code, IntelliJ, or Eclipse, you can add client libraries to your project using the following IDE plugins:
The plugins provide additional functionality, such as key management for service accounts. Refer to each plugin's documentation for details.
Node.js
npm install @google-cloud/channel PHP
composer require google/cloud-channel Python
pip install google-cloud-channel Ruby
gem install google-cloud-channel If you choose not to use a client library, we recommend checking for a smaller client library to handle authentication. We do not recommend rewriting the authentication layer from scratch.
Setting up authentication
The Cloud Channel API uses a type of authentication that requires:
- A service account and its corresponding JSON key file.
- A reseller domain super admin to impersonate using domain-wide delegation on the service account's client.
Follow the API setup codelab if you're missing any prerequisites. For more information, see OAuth 2.0 for service accounts.
Provide authentication credentials to your application code by setting the environment variable GOOGLE_APPLICATION_CREDENTIALS. This variable applies only to your current shell session. If you want the variable to apply to future shell sessions, set the variable in your shell startup file, for example in the ~/.bashrc or ~/.profile file.
Linux or macOS
export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"Replace KEY_PATH with the path of the JSON file that contains your credentials.
For example:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
For PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"Replace KEY_PATH with the path of the JSON file that contains your credentials.
For example:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
For command prompt:
set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATHReplace KEY_PATH with the path of the JSON file that contains your credentials.
Provide the email address of a reseller domain super admin using an environment variable. Replace [RESELLER_ADMIN_USER] with the correct value. You can also provide the [ACCOUNT_ID] from the Settings page of your Partner Sales Console.
Linux or macOS
export GOOGLE_RESELLER_ADMIN_USER="[RESELLER_ADMIN_USER]" export GOOGLE_RESELLER_ACCOUNT_ID="[ACCOUNT_ID]" Windows
With PowerShell:
$env:GOOGLE_RESELLER_ADMIN_USER="[RESELLER_ADMIN_USER]" $env:GOOGLE_RESELLER_ACCOUNT_ID="[ACCOUNT_ID]" With command prompt:
set GOOGLE_RESELLER_ADMIN_USER=[RESELLER_ADMIN_USER set GOOGLE_RESELLER_ACCOUNT_ID=[ACCOUNT_ID] Using the client library
C++
C#
using Google.Apis.Auth.OAuth2; using Google.Api.Gax; using Google.Cloud.Channel.V1; using System; public class Program { static void Main(string[] args) { // Set up credentials with user impersonation var jsonKeyFile = Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS"); var resellerAdminUser = Environment.GetEnvironmentVariable("GOOGLE_RESELLER_ADMIN_USER"); ICredential credential = GoogleCredential.FromFile(jsonKeyFile) .CreateScoped(CloudChannelServiceClient.DefaultScopes) .CreateWithUser(resellerAdminUser); // Create the API client var client = new CloudChannelServiceClientBuilder { TokenAccessMethod = credential.GetAccessTokenForRequestAsync }.Build(); // Test the client var accountId = Environment.GetEnvironmentVariable("GOOGLE_RESELLER_ACCOUNT_ID"); var request = new CheckCloudIdentityAccountsExistRequest { Parent = "accounts/" + accountId, Domain = "example.com" }; client.CheckCloudIdentityAccountsExist(request); Console.WriteLine("The API call worked!); } } Go
package main import ( "context" "fmt" "os" channel "cloud.google.com/go/channel/apiv1" "golang.org/x/oauth2/google" "google.golang.org/api/option" channelpb "google.golang.org/genproto/googleapis/cloud/channel/v1" ) func main() { ctx := context.Background() // Set up credentials with user impersonation jsonKeyFile := os.Getenv("GOOGLE_APPLICATION_CREDENTIALS") resellerAdminUser := os.Getenv("GOOGLE_RESELLER_ADMIN_USER") jsonKey, _ := os.ReadFile(jsonKeyFile) jwt, _ := google.JWTConfigFromJSON(jsonKey, "https://www.googleapis.com/auth/apps.order") jwt.Subject = resellerAdminUser tokenSource := jwt.TokenSource(ctx) // Create the API client client, _ := channel.NewCloudChannelClient(ctx, option.WithTokenSource(tokenSource)) // Test the client accountID := os.Getenv("GOOGLE_RESELLER_ACCOUNT_ID") req := &channelpb.CheckCloudIdentityAccountsExistRequest{ Parent: "accounts/" + accountID, Domain: "example.com", } response, _ := client.CheckCloudIdentityAccountsExist(ctx, req) if response != nil { fmt.Println("The API call worked!") } } Java
import com.google.api.gax.core.FixedCredentialsProvider; import com.google.api.gax.longrunning.OperationFuture; import com.google.auth.oauth2.GoogleCredentials; import com.google.auth.oauth2.ServiceAccountCredentials; import com.google.cloud.channel.v1.CheckCloudIdentityAccountsExistRequest; import com.google.cloud.channel.v1.CheckCloudIdentityAccountsExistResponse; import com.google.cloud.channel.v1.CloudChannelServiceClient; import com.google.cloud.channel.v1.CloudChannelServiceSettings; import java.io.FileInputStream; import java.io.IOException; import java.util.Iterator; public class Codelab { public static void main(String[] args) throws IOException { // Set up credentials with user impersonation String jsonKeyFile = System.getenv("GOOGLE_APPLICATION_CREDENTIALS"); String resellerAdminUser = System.getenv("GOOGLE_RESELLER_ADMIN_USER"); FileInputStream jsonKeyFileSteam = new FileInputStream(jsonKeyFile); GoogleCredentials credentials = ServiceAccountCredentials.fromStream(jsonKeyFileSteam) .createScoped("https://www.googleapis.com/auth/apps.order") .createDelegated(resellerAdminUser); CloudChannelServiceSettings serviceSettings = CloudChannelServiceSettings.newBuilder() .setCredentialsProvider(FixedCredentialsProvider.create(credentials)) .build(); // Create the API client CloudChannelServiceClient client = CloudChannelServiceClient.create(serviceSettings); // Test the client String accountId = System.getenv("GOOGLE_RESELLER_ACCOUNT_ID"); CheckCloudIdentityAccountsExistRequest request = CheckCloudIdentityAccountsExistRequest.newBuilder() .setParent("accounts/" + accountId) .setDomain("example.com") .build(); CheckCloudIdentityAccountsExistResponse response = client.checkCloudIdentityAccountsExist(request); System.out.println("The API call worked!"); } } Node.js
const {JWT} = require('google-auth-library'); const {grpc} = require('google-gax'); const {CloudChannelServiceClient} = require('@google-cloud/channel'); async function main() { // Set up credentials with user impersonation const jsonKeyFile = process.env.GOOGLE_APPLICATION_CREDENTIALS; const resellerAdminUser = process.env.GOOGLE_RESELLER_ADMIN_USER; const authClient = new JWT({ keyFile: jsonKeyFile, scopes: ['https://www.googleapis.com/auth/apps.order'], subject: resellerAdminUser, }); const sslCreds = grpc.credentials.combineChannelCredentials( grpc.credentials.createSsl(), grpc.credentials.createFromGoogleCredential(authClient) ); // Create the API client const client = new CloudChannelServiceClient({sslCreds}); // Test the client const accountId = process.env.GOOGLE_RESELLER_ACCOUNT_ID; const [ cloudIdentityAccounts ] = await client.checkCloudIdentityAccountsExist({ parent: `accounts/${accountId}`, domain: 'example.com', }); console.log('The API call worked!'); } main().catch(err => { console.error(err.message); process.exitCode = 1; }); process.on('unhandledRejection', err => { console.error(err.message); process.exitCode = 1; }); PHP
<?php require 'vendor/autoload.php'; use Google\Auth\Credentials\ServiceAccountCredentials; use Google\Cloud\Channel; // Set up credentials with user impersonation $credentials = new ServiceAccountCredentials( 'https://www.googleapis.com/auth/apps.order', /* $scope */ getenv('GOOGLE_APPLICATION_CREDENTIALS'), /* $keyFile */ getenv('GOOGLE_RESELLER_ADMIN_USER') /* $sub */ ); // Create the API client $client = new Channel\V1\CloudChannelServiceClient([ 'credentials' => $credentials ]); // Test the client $accountId = getenv('GOOGLE_RESELLER_ACCOUNT_ID'); $client->checkCloudIdentityAccountsExist( 'accounts/' . $accountId /* parent */, 'example.com' /* domain */ ); print 'The API call worked!' . PHP_EOL; Python
from google.cloud import channel from google.oauth2 import service_account import os def main(): # Set up credentials with user impersonation json_key_file = os.environ['GOOGLE_APPLICATION_CREDENTIALS'] reseller_admin_user = os.environ['GOOGLE_RESELLER_ADMIN_USER'] credentials = service_account.Credentials.from_service_account_file( json_key_file, scopes=["https://www.googleapis.com/auth/apps.order"]) credentials_delegated = credentials.with_subject(reseller_admin_user) # Create the API client client = channel.CloudChannelServiceClient(credentials=credentials_delegated) # Test the client account_id = os.environ['GOOGLE_RESELLER_ACCOUNT_ID'] request = channel.CheckCloudIdentityAccountsExistRequest( parent="accounts/" + account_id, domain="example.com") response = client.check_cloud_identity_accounts_exist(request) print("The API call worked!") if __name__ == "__main__": main()