Stay organized with collections
Save and categorize content based on your preferences.
Follow the steps in this quickstart guide, and in about 10 minutes you'll have
a simple Java command-line app that makes requests to the zero-touch
enrollment reseller API.
Prerequisites
To run this quickstart, you'll need:
A Google account, that's a member of your zero-touch enrollment reseller
account. If you haven't onboarded yet, follow the steps in Get started in
the Reseller portal guide.
Use this
wizard to create or select a project in the Google Developers Console and
automatically turn on the API. Click Continue, then Go to credentials
.
Set What data will you be accessing? to Application data.
Click Next. You should be prompted to create a service
account.
Give a descriptive name for Service account name.
Note the Service account ID (it looks like an email address) because you'll
use it later.
Set Role to Service Accounts > Service Account User.
Click Done to finish creating the service account.
Click the email address for the service account that you created.
Click **Keys**.
Click **Add key**, then click **Create new key**.
For **Key type**, select **JSON**.
Click Create and the private key downloads to your computer.
Click **Close**.
Move the file to your working directory and rename it service_account_key.json.
Step 2: Link the service account
Open the zero-touch enrollment portal. You might need to sign in.
Click settings_ethernetService
accounts.
Click addLink service account.
Set Email address to the address of the service account you created.
Click Link service account to use the service account with your zero-touch
enrollment account.
Step 3: Prepare the project
Follow the steps below to set up your Gradle project:
Run the following command to create a new project in the working directory:
Create a file named src/main/java/ResellerQuickstart.java and copy in the
following code and save the file. Insert your own reseller partner
ID as the value for PARTNER_ID (the app's first line).
importcom.google.api.client.auth.oauth2.Credential;importcom.google.api.client.googleapis.auth.oauth2.GoogleCredential;importcom.google.api.client.googleapis.javanet.GoogleNetHttpTransport;importcom.google.api.client.http.HttpTransport;importcom.google.api.client.json.JsonFactory;importcom.google.api.client.json.jackson2.JacksonFactory;importcom.google.api.services.androiddeviceprovisioning.v1.AndroidProvisioningPartner;importcom.google.api.services.androiddeviceprovisioning.v1.model.Company;importcom.google.api.services.androiddeviceprovisioning.v1.model.ListCustomersResponse;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.util.Arrays;importjava.util.List;/** * This class forms the quickstart introduction to the zero-touch enrollemnt * reseller API. */publicclassResellerQuickstart{// TODO: replace this with your partner reseller ID.privatestaticlongPARTNER_ID=11036885;// Use a single scope for the all methods in the reseller API.privatestaticfinalList<String>SCOPES=Arrays.asList("https://www.googleapis.com/auth/androidworkprovisioning");privatestaticfinalStringAPP_NAME="Zero-touch Reseller Java Quickstart";// Global shared instances.privatestaticfinalJsonFactoryJSON_FACTORY=JacksonFactory.getDefaultInstance();privatestaticHttpTransportHTTP_TRANSPORT;static{try{HTTP_TRANSPORT=GoogleNetHttpTransport.newTrustedTransport();}catch(Throwablet){t.printStackTrace();System.exit(1);}}/** * Creates a Credential object with the correct OAuth2 authorization * for the service account that calls the reseller API. The service * endpoint invokes this method when setting up a new service instance. * @return an authorized Credential object. * @throws IOException */publicstaticCredentialauthorize()throwsIOException{// Load the service account key from the JSON file.InputStreamin=ResellerQuickstart.class.getResourceAsStream("/service_account_key.json");// Create the credential scoped to the zero-touch enrollemnt// reseller APIs.GoogleCredentialcredential=GoogleCredential.fromStream(in).createScoped(SCOPES);returncredential;}/** * Builds and returns an authorized zero-touch enrollment API client service. * Use the service endpoint to call the API methods. * @return an authorized client service endpoint * @throws IOException */publicstaticAndroidProvisioningPartnergetService()throwsIOException{Credentialcredential=authorize();returnnewAndroidProvisioningPartner.Builder(HTTP_TRANSPORT,JSON_FACTORY,credential).setApplicationName(APP_NAME).build();}/** * Runs the zero-touch enrollment quickstart app. * @throws IOException */publicstaticvoidmain(String[]args)throwsIOException{// Create a zero-touch enrollment API service endpoint.AndroidProvisioningPartnerservice=getService();// Send an API request to list all our customers.AndroidProvisioningPartner.Partners.Customers.Listrequest=service.partners().customers().list(PARTNER_ID);ListCustomersResponseresponse=request.execute();// Print out the details of each customer.if(response.getCustomers()!=null){java.util.List<Company>customers=response.getCustomers();for(Companycustomer:customers){System.out.format("Name:%s ID:%d\n",customer.getCompanyName(),customer.getCompanyId());}}else{System.out.println("No customers found");}}}
Partner ID
API calls typically need your reseller partner ID as an argument. To find your
partner ID from the zero-touch enrollment portal, follow the steps below:
Copy your partner ID number from the Your reseller ID line.
Step 5: Run the sample
Use your operating system's help to run the script in the file. On UNIX and Mac
computers, run the command below in your terminal:
gradle-qrun
Troubleshooting
Tell us what went wrong with the quickstart and we'll work to
fix it. To learn how zero-touch uses service accounts to authorize API calls, read
Authorization.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-05-07 UTC."],[[["\u003cp\u003eThis guide walks you through setting up a simple Java command-line application that interacts with the zero-touch enrollment reseller API in approximately 10 minutes.\u003c/p\u003e\n"],["\u003cp\u003eTo begin, you'll need a Google account within your zero-touch enrollment reseller account, Java 1.7 or later, Gradle 2.3 or later, and internet access.\u003c/p\u003e\n"],["\u003cp\u003eThe process involves turning on the zero-touch enrollment API, creating and linking a service account within the portal, and downloading a JSON key for authentication.\u003c/p\u003e\n"],["\u003cp\u003eYou'll then prepare a Gradle project, copy the service account key, set up the sample Java code with your reseller partner ID, and finally run the application using a simple command.\u003c/p\u003e\n"],["\u003cp\u003eThe code when run will list all customers associated with your reseller partner id.\u003c/p\u003e\n"]]],["First, enable the zero-touch enrollment API and create a service account, noting its ID and downloading its JSON key. Link this service account in the zero-touch portal. Next, set up a Gradle project, placing the downloaded key in the `src/main/resources/` directory and modify the `build.gradle` file. Then create `ResellerQuickstart.java`, replacing the placeholder `PARTNER_ID` with your actual reseller partner ID. Finally, execute the project using the `gradle -q run` command.\n"],null,["Follow the steps in this quickstart guide, and in about 10 minutes you'll have\na simple Java command-line app that makes requests to the zero-touch\nenrollment reseller API.\n\nPrerequisites\n\nTo run this quickstart, you'll need:\n\n- A Google account, that's a member of your zero-touch enrollment reseller account. If you haven't onboarded yet, follow the steps in *Get started* in the [Reseller portal guide](/zero-touch/guides/portal).\n- Java 1.7 or greater.\n- [Gradle 2.3 or greater](http://gradle.org/downloads).\n- Access to the internet and a web browser.\n\nStep 1: Turn on the zero-touch enrollment API\n\n1. Use [this\n wizard](https://console.developers.google.com/start/api?id=androiddeviceprovisioning.googleapis.com) to create or select a project in the Google Developers Console and automatically turn on the API. Click **Continue** , then **Go to credentials**.\n2. Set **What data will you be accessing?** to *Application data*.\n3. Click **Next**. You should be prompted to create a service account.\n4. Give a descriptive name for **Service account name**.\n5. Note the **Service account ID** (it looks like an email address) because you'll use it later.\n6. Set **Role** to *Service Accounts \\\u003e Service Account User*.\n7. Click **Done** to finish creating the service account.\n8. Click the email address for the service account that you created.\n9. Click \\*\\*Keys\\*\\*.\n10. Click \\*\\*Add key\\*\\*, then click \\*\\*Create new key\\*\\*.\n11. For \\*\\*Key type\\*\\*, select \\*\\*JSON\\*\\*.\n12. Click **Create** and the private key downloads to your computer.\n13. Click \\*\\*Close\\*\\*.\n14. Move the file to your working directory and rename it `service_account_key.json`.\n\n| **Warning:** Service account keys can become a security risk if not managed carefully. For advice see [best practices for managing API keys](https://cloud.google.com/iam/docs/best-practices-for-managing-service-account-keys).\n\nStep 2: Link the service account\n\n1. Open the zero-touch enrollment [portal](https://enterprise.google.com/android/zero-touch/resellers). You might need to sign in.\n2. Click settings_ethernet **Service\n accounts**.\n3. Click add **Link service account**.\n4. Set **Email address** to the address of the service account you created.\n5. Click **Link service account** to use the service account with your zero-touch enrollment account.\n\nStep 3: Prepare the project\n\nFollow the steps below to set up your Gradle project:\n\n1. Run the following command to create a new project in the working directory:\n\n gradle init --type basic\n mkdir -p src/main/java src/main/resources\n\n2. Copy the `service_account_key.json` file you downloaded in Step 1 into the\n `src/main/resources/` directory you created above.\n\n3. Open the default `build.gradle` file and replace its contents with the\n following code:\n\n apply plugin: 'java'\n apply plugin: 'application'\n\n mainClassName = 'ResellerQuickstart'\n sourceCompatibility = 1.7\n targetCompatibility = 1.7\n version = '1.0'\n\n repositories {\n mavenCentral()\n }\n\n dependencies {\n compile 'com.google.api-client:google-api-client:1.30.11'\n compile 'com.google.apis:google-api-services-androiddeviceprovisioning:+'\n compile 'com.google.oauth-client:google-oauth-client-jetty:+'\n }\n\nStep 4: Set up the sample\n\nCreate a file named `src/main/java/ResellerQuickstart.java` and copy in the\nfollowing code and save the file. Insert your own [reseller partner\nID](#partner-id) as the value for `PARTNER_ID` (the app's first line). \n\n```java\nimport com.google.api.client.auth.oauth2.Credential;\nimport com.google.api.client.googleapis.auth.oauth2.GoogleCredential;\nimport com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;\nimport com.google.api.client.http.HttpTransport;\nimport com.google.api.client.json.JsonFactory;\nimport com.google.api.client.json.jackson2.JacksonFactory;\nimport com.google.api.services.androiddeviceprovisioning.v1.AndroidProvisioningPartner;\nimport com.google.api.services.androiddeviceprovisioning.v1.model.Company;\nimport com.google.api.services.androiddeviceprovisioning.v1.model.ListCustomersResponse;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\nimport java.util.Arrays;\nimport java.util.List;\n\n/**\n * This class forms the quickstart introduction to the zero-touch enrollemnt\n * reseller API.\n */\npublic class ResellerQuickstart {\n\n // TODO: replace this with your partner reseller ID.\n private static long PARTNER_ID = 11036885;\n\n // Use a single scope for the all methods in the reseller API.\n private static final List\u003cString\u003e SCOPES =\n Arrays.asList(\"https://www.googleapis.com/auth/androidworkprovisioning\");\n private static final String APP_NAME = \"Zero-touch Reseller Java Quickstart\";\n\n // Global shared instances.\n private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();\n private static HttpTransport HTTP_TRANSPORT;\n\n static {\n try {\n HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();\n } catch (Throwable t) {\n t.printStackTrace();\n System.exit(1);\n }\n }\n\n /**\n * Creates a Credential object with the correct OAuth2 authorization\n * for the service account that calls the reseller API. The service\n * endpoint invokes this method when setting up a new service instance.\n * @return an authorized Credential object.\n * @throws IOException\n */\n public static Credential authorize() throws IOException {\n // Load the service account key from the JSON file.\n InputStream in =\n ResellerQuickstart.class.getResourceAsStream(\"/service_account_key.json\");\n\n // Create the credential scoped to the zero-touch enrollemnt\n // reseller APIs.\n GoogleCredential credential = GoogleCredential\n .fromStream(in)\n .createScoped(SCOPES);\n return credential;\n }\n\n /**\n * Builds and returns an authorized zero-touch enrollment API client service.\n * Use the service endpoint to call the API methods.\n * @return an authorized client service endpoint\n * @throws IOException\n */\n public static AndroidProvisioningPartner getService() throws IOException {\n Credential credential = authorize();\n return new AndroidProvisioningPartner.Builder(\n HTTP_TRANSPORT, JSON_FACTORY, credential)\n .setApplicationName(APP_NAME)\n .build();\n }\n\n /**\n * Runs the zero-touch enrollment quickstart app.\n * @throws IOException\n */\n public static void main(String[] args) throws IOException {\n\n // Create a zero-touch enrollment API service endpoint.\n AndroidProvisioningPartner service = getService();\n\n // Send an API request to list all our customers.\n AndroidProvisioningPartner.Partners.Customers.List request =\n service.partners().customers().list(PARTNER_ID);\n ListCustomersResponse response = request.execute();\n\n // Print out the details of each customer.\n if (response.getCustomers() != null) {\n java.util.List\u003cCompany\u003e customers = response.getCustomers();\n for (Company customer : customers) {\n System.out.format(\"Name:%s ID:%d\\n\",\n customer.getCompanyName(),\n customer.getCompanyId());\n }\n } else {\n System.out.println(\"No customers found\");\n }\n }\n}\n```\n\nPartner ID\n\nAPI calls typically need your reseller partner ID as an argument. To find your\npartner ID from the zero-touch enrollment portal, follow the steps below:\n\n1. Open the [portal](https://enterprise.google.com/android/zero-touch/resellers). You might need to sign in.\n2. Click settings_ethernet **Service\n accounts**.\n3. Copy your partner ID number from the **Your reseller ID** line.\n\nStep 5: Run the sample\n\nUse your operating system's help to run the script in the file. On UNIX and Mac\ncomputers, run the command below in your terminal: \n\n gradle -q run\n\nTroubleshooting\n\n\n[Tell us what went wrong]() with the quickstart and we'll work to\nfix it. To learn how zero-touch uses service accounts to authorize API calls, read\n[Authorization](/zero-touch/guides/auth).\n\nLearn more\n\n- [Google Developers Console help documentation](/console/help/new)\n- [Google APIs Client for Java documentation](/api-client-library/java)\n- [Google APIs Client Javadocs](/api-client-library/java/google-api-java-client/reference)"]]