Guide de l'utilisateur de l'API Cloud Support

Cette page explique comment débuter avec la version 1 de l'API cloudsupport.googleapis.com. La version 2 de cette API n'est actuellement disponible qu'en version préliminaire. Pour plus d'informations, consultez les descriptions des étapes de lancement.

Présentation du processus

Cette section décrit la procédure détaillée pour commencer à utiliser l'API.

  1. Le service client crée un compte d'assistance pour le client. Il s'agit d'une condition préalable à toutes les opérations suivantes.
  2. Le client indique à l'équipe du Service client qu'il souhaite utiliser pour accéder à l'API. Ce projet sera le projet client désigné pour l'API.

    Ce projet sera la ressource sur laquelle l'API est activée, mais les identifiants permettant d'appeler cette API peuvent être utilisés à partir de n'importe quel projet Google Cloud.

  3. Le client génère une clé API pour le projet destiné au consommateur. Le client utilisera cette clé API pour effectuer des appels vers l'API. Pour générer une clé API, consultez la page Utiliser des clés API.

  4. L'équipe du service client permet d'établir l'accès à l'API d'équipe du client (en appliquant les bonnes étiquettes de visibilité).

  5. L'équipe du service client permet d'afficher le compte de service client pour accéder au compte de service.

  6. Le client active l'API Cloud Support en accédant à la page API Cloud Support de Google Cloud Console, puis en cliquant sur ENABLE (ACTIVER).

    Accéder à la page de l'API Cloud Support

Si vous souhaitez procéder à l'intégration du compte de service:

  1. Le client provisionne un ou plusieurs comptes de service en suivant les instructions de la page Comprendre les comptes de service.

  2. Le client attribue au compte de service le rôle Organization Viewer dans l'onglet IAM dans Cloud Console ou tout autre rôle accordant l'autorisation resourcemanager.organizations.get.

    Vous pouvez également réaliser cette opération par programmation:

      gcloud organizations add-iam-policy-binding
      organizations/ord-id
      --role roles/resourcemanager.organizationViewer
      --member service-account
     

  3. Le client ajoute un ou plusieurs de ces comptes de service en tant qu'utilisateur de l'assistance via la page Assistance > Paramètres de Cloud Console.

  4. Le client permet à son connecteur JIRA ou à d'autres applications d'accéder au compte de service en partageant les identifiants. Pour connaître la procédure à suivre, consultez la page Présentation de l'authentification.

  5. Si le client possède déjà un outil de gestion des identifiants, il est judicieux de tirer parti du même outil pour les comptes de service Google Cloud.

  6. Les applications du client effectuent des appels d'API standards (comme le ferait un utilisateur final), en utilisant les identifiants du compte de service au lieu des identifiants de l'utilisateur final.

Si vous souhaitez activer l'authentification OAuth 2.0:

  1. Si l'authentification avec Google n'est pas déjà activée via OAuth2, configurez-la en
    en suivant les guides pourOAuth 2.0 pour accéder aux API Google s'affiche en haut de l'écran. Portez une attention particulière à la section sur les autorisations incrémentielles.
  2. Assurez-vous que les deux champs d'application suivants sont ajoutés aux ID client OAuth2 utilisés par votre application :
    • Pour un accès général à Google Cloud: https://www.googleapis.com/auth/cloud-platform ou https://www.googleapis.com/auth/cloud-platform.read-only
    • Pour récupérer ou créer des demandes d'assistance et d'autres données associées, procédez comme suit: https://www.googleapis.com/auth/cloudsupport.

Récupérer la définition de l'API

La définition de l'API est utilisée comme document de découverte Google Cloud.

Voici un exemple : Remplacez <API_KEY> par une clé API générée à partir du projet client lors d'une étape précédente.

curl 'https://cloudsupport.googleapis.com/$discovery/rest?key=<API_KEY>&labels=TRUSTED_TESTER&version=v1alpha2' > /tmp/cloudsupport.v1alpha2.json

Client REST

API REST

Pour tous les points de terminaison répertoriés ci-dessous, la valeur de <host> doit être remplacée par cloudsupport.googleapis.com.

Comptes d'assistance

Répertoriez les comptes d'assistance auxquels un utilisateur a accès et gérez les détails du compte d'assistance.

Rôles requis
Type Rôle
IAM Lecteur de compte de support (organisation)
IAM Lecteur d'organisation (organisation)
Assistance Développement, Production ou Prioritaire

ListSupportAccounts

Répertorie tous les comptes Supports auxquels l'utilisateur actuellement authentifié a accès.

Format REST
GET <host>/v1/supportAccounts
Paramètres
Nom Type Description
filter string

Filtre à forme libre à appliquer aux résultats de recherche. Exemples d'utilisations:

filter="name=gcp-sa-1234"

filter="cloud_resource=organizations/my-org-1234"

page_size int64 Nombre maximal de comptes d'assistance à renvoyer dans la réponse. Pour la plupart des utilisateurs, cela ne sera pas très pertinent, car le nombre de comptes d'assistance sera très faible.
page_token string Jeton identifiant la page de résultats à renvoyer. Si aucune valeur n'est spécifiée, la première page de résultats est renvoyée.
Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json'  http://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234?filter=cloud_resource:organizations/8675309

Obtenir l'assistance

Récupérez le compte d'assistance spécifié.

Format REST
GET <host>/v1/{name=supportAccounts/*}
Paramètres

Compte d'assistance indiqué dans l'URL de la requête.

Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type: application/json'  https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234

Gestion des utilisateurs

Permet à l'administrateur d'ajouter ou de supprimer des utilisateurs de manière automatisée dans les rôles d'assistance.

Rôles requis
Type Rôle
IAM Lecteur de compte de support (organisation)
IAM Lecteur d'organisation (organisation)
Support Développement, Production ou Prioritaire

GetUserRole

Récupérez le supportRole de l'utilisateur donné. L'utilisateur à récupérer est déterminé à partir du champ email du message de la requête ou des identifiants de l'utilisateur authentifié si l'ancien n'est pas spécifié.

Format REST
GET <host>/v1/{name=supportAccounts/*}:getUserRole
Paramètres
Nom Type Description
email string Adresse e-mail de l'utilisateur dont le rôle doit être récupéré.
Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type: application/json'  https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234:getUserRole?email=john@example.com

Obtenir une version d'assistance

Récupérez la liste de tous les objets SuppRole associés au compte d'assistance spécifié.

Format REST
GET <host>/v1/{name=supportAccounts/*}:getRoles
Paramètres

Compte d'assistance indiqué dans l'URL.

Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json' https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234:getRoles

Définir les rôles d'assistance

Mettre à jour la liste des Rôles d'assistance associés au compte d'assistance indiqué.

Format REST
POST <host>/v1/{name=supportAccounts/*}:setRoles
Paramètres
Nom Type Description
roles SupportRole[] Liste complète des rôles à associer au compte d'assistance.
Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json' -X POST -d '{
  "roles": [
    {
      "email": "john@example.com",
      "role": "SITE_RELIABILITY",
    },
    {
      "email": "alex@example.com",
      "role": "OPERATION",
    },
    {
      "email": "tiger@example.com",
      "role": "ROLE_UNSPECIFIED",
    },
],
  "etag": "ZrTGhhB"
}' https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234:setRoles

L'attribut role peut prendre les valeurs suivantes:

Type de rôle Description
ROLE_UNSPECIFIED Supprimer ce rôle d'assistance utilisateur
BASIC Rôle d'assistance "Basic"
DEVELOPER Rôle d'assistance "Développement".
OPERATION Rôle d'assistance "Production".
SITE_RELIABILITY Rôle d'assistance "Stratégique".

La méthode SetSupportRoles renvoie une instance de google.longrunning.Operation. Pour récupérer l'état de SetSupportRoles, vous devez interroger le point de terminaison GetOperation à l'aide de l'ID d'opération. L'ID d'opération est une combinaison de caractères alphanumériques et a le format suivant: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Demandes

Récupérer, créer et mettre à jour les demandes d'assistance

Rôles requis
Type Rôle
IAM Lecteur de compte de support (organisation)
IAM Lecteur d'organisation (organisation)
Support Role Développement, Production ou Prioritaire

Répertorier les demandes

Récupérez la liste des demandes d'assistance associées au compte d'assistance.

Format REST
GET <host>/v1/{parent=supportAccounts/*}/cases
Paramètres
Nom Type Description
filter string Actuellement, seules les valeurs "OPEN" ou "CLOSED" sont acceptées.
page_size int64 Nombre maximal de cas à récupérer avec chaque requête.
page_token string Jeton identifiant la page de résultats à renvoyer. Si aucune valeur n'est spécifiée, la première page de résultats est renvoyée.
Exemple
curl -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json'  https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234/cases

Obtenir la demande

Récupérez la demande d'assistance spécifiée.

Format REST
GET <host>/v1/{name=supportAccounts/*/cases/*}
Paramètres

Compte d'assistance et numéro de demande spécifiés dans l'URL de la requête.

Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json' https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234/cases/5678

Créer une demande

Crée une demande et l'associe au compte d'assistance indiqué.

Format REST
POST <host>/v1/{parent=supportAccounts/*}/cases
Paramètres
Nom Type Description
case Case

Objet de cas.

Exemple :


     { \
        display_name: "My test case for Istio", \
        description: "Istio network latency spike", \
        category: "Compute", \
        component: "Istio", \
        subcomponent: "Networking", \
        time_zone: "-07:00", \
        cc_addresses: ["foo@domain.com", "bar@domain.com"], \
        project_id: "my-gcp-test-project-1234", \
        priority: 3 \
      }
      

Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json' -X POST -d '{ display_name: "My app is down", description: "Datastore appears to be down so my app is broken.", component: "Cloud Datastore", subcomponent: "Availability / Latency", time_zone: "-07:00", project_id: "my-super-project", category: "Storage & Databases", priority: 3 }' https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234/cases

Mettre à jour la demande

Mettre à jour une demande d'assistance Pour l'instant, seul le champ d'objet et la valeur "cc_address" peuvent être mis à jour.

Format REST
PATCH <host>/v1/{case.name=supportAccounts/*/cases/*}
Paramètres
Nom Type Description
case Case La demande d'assistance a été mise à jour.
update_mask String[]

Liste des champs "Case" à mettre à jour.

Exemple :

["case.priority"]

Exemple: Mettre à jour la casse
curl v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json' -X PATCH -d '{ display_name: "My app is down", priority: 2, cc_addresses: ["james@example.com", "susan@example.com"]}' https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234/cases/5678?update_mask=case.cc_addresses,case.priority,case.display_name
Exemple: Fermer le dossier
curl v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json' -X PATCH -d '{ state: "CLOSED" }' https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234/cases/5678?update_mask=case.state

Transmettre la demande

Faire remonter une demande d'assistance Faire remonter une demande d'assistance déclenche le processus de gestion du signalement du service client. Seuls les utilisateurs détenant les rôles Prioritaire et Production sont limités.

Format REST
POST <host>/v1/{name=supportAccounts/*/cases/*}:escalate
Paramètres
Nom Type Description
reason Enum

Raison pour laquelle le dossier est transmis

Valeurs correctes :

  • REASON_UNSPECIFIED: l'état du signalement est inconnu ou n'a pas été spécifié.
  • RESOLUTION_TIME: la résolution du problème est trop longue.
  • TECHNICAL_EXPERTISE: l'agent d'assistance ne dispose pas de l'expertise requise pour résoudre le problème.
  • BUSINESS_IMPACT: le problème a un impact significatif sur l'entreprise.
justification String Description libre pour accompagner le champ reason et expliquer plus précisément pourquoi la demande a été transmise.
Exemple
curl v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json' -X POST -d '{ reason: "TECHNICAL_EXPERTISE", justification: "There is no technical expertise."}' https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234/cases/5678:escalate

GetIssueTaxonomy

Récupérez la classification des catégories de problèmes et des composants du produit utilisés lors de la création d'une demande d'assistance.

Format REST
GET <host>/v1:getIssueTaxonomy
Paramètres
Nom Type Description
product_type string Doit toujours être définie sur "CLOUD_PLATFORM".
Exemple
curl -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json'  https://cloudsupport.googleapis.com/v1:getIssueTaxonomy

Pièces jointes

Récupérer, créer ou télécharger des fichiers joints à une demande d'assistance L'ajout d'un fichier à une demande d'assistance est un nouveau processus en trois étapes:

  1. POST au point de terminaison :startAttachment pour générer un nouveau nom de rattachement.
  2. POST sur le point de terminaison Bytestream.Write pour importer les octets bruts du rattachement.
  3. POST à /attachments pour créer complètement le rattachement et l'associer à une demande d'assistance. La création du rattachement inclut toutes les métadonnées de fichiers, telles que le type MIME (tel que image/jpeg), la taille (en octets) et le nom du fichier (r2_d2.jpg).
Rôles requis
Type Rôle
IAM Lecteur de compte de support Cloud (organisation)
IAM Lecteur d'organisation (organisation)
Assistance Développement, Production ou Prioritaire.

Répertorier les pièces jointes

Récupère les métadonnées de tous les rattachements associés à la demande d'assistance donnée.

Format REST
GET <host>/v1/{parent=supportAccounts/*/cases/*}/attachments
Paramètres

Compte d'assistance et numéro de demande dans l'URL de la requête.

Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json' https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234/cases/5678/attachments
Bytestream.Read

Vous pouvez télécharger les octets bruts du rattachement à l'aide du point de terminaison Bytestream.Read en émettant l'appel d'API REST suivant comme suit:

curl -v -H 'Authorization: Bearer <TOKEN>' -H "Content-Type: application/json" -X GET https://cloudsupport.googleapis.com/v1/media/supportAccounts/gcp-sa-1234/cases/5678/attachments/9012?alt=media

StartAttachment

Lancez le processus de création d'un rattachement. La méthode renvoie une chaîne représentant le nom de ressource du rattachement. Le nom de ressource est utilisé dans les appels aux points de terminaison ByteStream.Write et CreateAttachment qui suivent.

Format REST
POST <host>/v1/{parent=supportAccounts/*/cases/*}:startAttachment
Paramètres

Compte d'assistance et numéro de demande dans l'URL de la requête.

Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type: application/json' -X POST -d {} https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234/cases/5678:startAttachment
Bytestream.Write

Vous pouvez importer les octets de pièces jointes brutes en appelant Bytestream.Write comme suit:

curl -v -H 'Authorization: Bearer <TOKEN>' -H "Content-Type: application/json" -X POST -T {"r2-d2.jpg"} https://cloudsupport.googleapis.com/upload/v1/media/supportAccounts/gcp-sa-1234/cases/5678/attachments/9012?upload_type=media

Créer un rattachement

Créez les métadonnées du rattachement et associez-le à la demande d'assistance spécifiée. Le nom du rattachement doit d'abord être généré par un appel à :startAttachment, et la taille maximale du rattachement est de 32 Mo.

Requête REST
POST <host>/v1/{name=supportAccounts/*/cases/*}/attachments
Paramètres
Nom Type Description
attachment Attachment

Objet de pièce jointe.

Exemple :


{
  name: "supportAccounts/gcp-sa-1234/cases/998877/attachments/55115511", \
  file_name: "giraffe.jpg", \
  mime_type: "image/jpeg", \
  size: 986712, // in bytes \
}
Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json' -X POST -d '{ name: "supportAccounts/gcp-sa-1234/cases/5678/attachments/9012", mime_type: "image/jpeg", file_name: "R2-D2.jpg", size: 4458 }' https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234/cases/5678/attachments

Commentaires

Créer ou répertorier des commentaires sur une demande d'assistance

Rôles requis
Type Rôle
IAM Lecteur de compte de support Cloud (organisation)
IAM Lecteur d'organisation (organisation)
Assistance Développement, Production ou Prioritaire

Répertorier les commentaires

Répertorier tous les commentaires associés à la demande d'assistance spécifiée

REST
GET <host>/v1/{name=supportAccounts/*/cases/*}/comments
Paramètres

Compte d'assistance et numéro de demande dans l'URL de la requête.

Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json'  https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234/cases/5678/comments

Créer un commentaire

Ajoute un nouveau commentaire à une demande.

Format REST
POST <host>/v1/{name=supportAccounts/*/cases/*}/comments
Paramètres
Nom Type Description
comment Comment (Commentaire)

Objet commentaire.

Exemple :


{
text: "This is my comment", \
}
           

Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json' -X POST -d '{ name:"supportAccounts/gcp-sa-1234/cases/5678",text:"I am commenting on this case."}' https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234/cases/5678/comments

Assistance téléphonique

Récupérez une liste de numéros internationaux pour le service client et générez un code d'accès pour appeler l'assistance téléphonique.

Autorisations requises
Type Autorisation
IAM Lecteur de compte de support Cloud (organisation)
IAM Lecteur d'organisation (organisation)
Support Role Développement, Production ou Prioritaire

Répertorier les contacts

Répertoriez les numéros de téléphone utilisés dans le monde entier pour contacter le service client.

REST
GET <host>/v1/phoneContacts
Paramètres

Aucun

Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json'  https://cloudsupport.googleapis.com/v1/phoneContacts

Génération Epin

Génère un code unique qui peut être utilisé pour l'authentification auprès du système de téléphonie pour l'assistance Google Cloud.

Format REST
POST <host>/v1/{name=supportAccounts/*}:generateEpin
Paramètres
Nom Type Description
project_id string ID de projet Google Cloud associé à ce code. La définition de ce champ aide un agent d'assistance à récupérer les détails du projet avant l'appel téléphonique.
Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json' -X POST -d '{project_id: "my-app-project"}' https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234:generateEpin

Notifications

Répertorier toutes les notifications émises par le service client

Rôles requis
Type Rôle
IAM Lecteur de compte de support Cloud (organisation)
IAM Lecteur d'organisation (organisation)
Assistance Développement, Production ou Prioritaire

Répertorier les notifications

Répertorier tous les incidents ouverts de Google Cloud connus pour avoir un impact actif sur les clients. La réponse inclura les problèmes affectant tous les produits, et non ceux spécifiques à l'utilisateur qui a appelé le point de terminaison.

Format REST
GET <host>/v1/{parent=supportAccounts/*}/notifications
Paramètres
Nom Type Description
page_size int32 Nombre maximal de notifications à renvoyer dans la réponse.
page_token string Jeton permettant de récupérer la page de résultats suivante. Actuellement, le point de terminaison ListNotifications n'est pas compatible avec la pagination.
Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json'  https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234/notifications

IAM

Endpoints pour interagir avec les services de gestion de l'authentification et des accès.

TestIamPermissions

Vérifiez si l'utilisateur actuellement authentifié dispose des autorisations définies pour la ressource de service client concernée. Seuls les comptes d'assistance, les demandes, les opérations et les commentaires sont considérés comme des ressources du service client valides.

Par exemple, pour vérifier que l'utilisateur a accès à la récupération des détails d'un compte d'assistance, le champ TestIamPermissionsRequest doit être renseigné avec:

resource: "supportAccounts/{support_account_id}"
permission: "cloudsupport.accounts.get"
Format REST
POST <host>/v1/{resource=**}:testIamPermissions
Paramètres
Nom Type Description
permissions string[]

Liste des autorisations à tester.

Exemple :

`["cloudsupport.comments.list", "cloudsupport.cases.list"]`

Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type: application/json' -X POST -d '{permissions: "cloudsupport.accounts.get"}' https://cloudsupport.googleapis.com/v1/supportAccounts/gcp-sa-1234:testIamPermissions

Opérations

Endpoints pour récupérer l'état des opérations de longue durée.

GetOperation

Récupérez l'état d'une opération existante.

Format REST
GET <host>/v1/operations/{name=supportAccounts/*/operations/*}
Paramètres

Identifiant de compte d'assistance et d'opération spécifié dans l'URL de la requête.

Exemple
curl -v -H 'Authorization: Bearer <TOKEN>' -H 'Content-Type:  application/json' https://cloudsupport.googleapis.com/v1/operations/supportAccounts/gcp-sa-1234/operations/5678-0912

Générer des bibliothèques clientes

Clonez le générateur de clients des API Google:

cd /tmp/; git clone https://github.com/google/apis-client-generator.git;

Assurez-vous que Python 2.7 est installé:

sudo apt-get install python

Assurez-vous que PIP est installé:

sudo apt-get install python-pip

Installez les dépendances :

pip install google-apis-client-generator

Générez des bibliothèques clientes:

Cette commande génère un ou deux avertissements commençant par WARNING:root:object without properties. Vous pouvez les ignorer. La bibliothèque cliente sera tout de même générée.

./generate.sh --input=/tmp/cloudsupport.v1alpha2.json --output_dir=/tmp/cloudsupport_generated --language=java

Utiliser l'API

Avant de commencer

  • Ajouter une dépendance sur les bibliothèques clientes des API Java
  • Ajoutez une dépendance au code généré à l'étape ci-dessus
  • Vérifier que votre code a bien été compilé

    // Shared constants
    String CLOUD_SUPPORT_SCOPE = "https://www.googleapis.com/auth/cloudsupport";
    
    // Customer specific config
    String SERVICE_ACCOUNT_ID = "<... service account id ...>";
    File SERVICE_ACCOUNT_PRIVATE_KEY = new File("<... p12 key file ...>");
    String SUPPORT_ACCOUNT_ID = "supportAccounts/gcp-sa-<......>";
    
    // Service setup
    JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
    HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
    
    // This section is for service account authentication
    // If you are using OAuth2 instead, follow guide at
    // https://developers.google.com/api-client-library/java/google-oauth-java-client/oauth2
    GoogleCredential credential = new GoogleCredential.Builder()
      .setTransport(httpTransport)
      .setJsonFactory(jsonFactory)
      .setServiceAccountId(SERVICE_ACCOUNT_ID)
      .setServiceAccountPrivateKeyFromP12File(SERVICE_ACCOUNT_PRIVATE_KEY)
      .setServiceAccountScopes(Collections.singleton(CLOUD_SUPPORT_SCOPE))
      .build();
    
    // Main API service is ready to use!
    CloudSupport supportService = new CloudSupport.Builder(httpTransport, jsonFactory, credential).build();
    
    // Each call will look something like this:
    SupportAccount account = supportService.supportAccounts().get(SUPPORT_ACCOUNT_ID).execute();