Mappages JSON

Lorsque vous utilisez l'interface REST de l'API Search Ads 360 Reporting, vous travaillez avec des représentations JSON des mêmes ressources et types que ceux définis dans les fichiers de descripteur.proto de l'API Search Ads 360 Reporting. Le schéma d'encodage JSON suit le schéma d'encodage canonique décrit dans la section Mappage JSON du guide du langage sur les tampons de protocole.

En général, tous les messages de premier niveau vers et depuis des services sont des objets JSON uniques. Les réponses search sont des objets JSON contenant un tableau results avec l'ensemble de résultats de votre requête.

Les identifiants sont transformés de snake_case (dans des tampons de protocole) en lowerCamelCase en JSON. Une mise en garde notable à cette règle concerne l'utilisation de search ou searchStream pour envoyer des requêtes en langage de requête Search Ads 360. Le langage de requête lui-même utilise snake case, quelle que soit l'interface que vous utilisez. Cependant, les résultats d'une requête dans REST sont renvoyés sous la forme d'objets JSON normaux et ont leurs identifiants en lowerCamelCase.

Par exemple, une requête destinée à récupérer une liste de mots clés actifs dans un compte utilise la casse "snake" dans la requête elle-même (ad_group_criterion, et non adGroupCriterion):

POST /v0/customers/CUSTOMER_ID/searchAds360:searchStream HTTP/1.1
Host: searchads360.googleapis.com
Content-Type: application/json
Authorization: Bearer ACCESS_TOKEN

{
  "query": "SELECT ad_group_criterion.keyword.text
            FROM ad_group_criterion
            WHERE ad_group_criterion.type = 'KEYWORD'
            AND ad_group_criterion.status = 'ENABLED'"
}

Cependant, la réponse est une représentation JSON des objets (encapsulée dans un tableau JSON puisque cette requête utilise searchStream) et utilise l'identifiant camelCase adGroupCriterion:

[
  {
    "results": [
      {
        "adGroupCriterion": {
          "resourceName": "customers/1842689525/adGroupCriteria/55771861891~10003060",
          "keyword": {
            "text": "pay per click"
          }
        }
      },
      ...
    ]
  }
]