When using the Search Ads 360 Reporting API's REST interface, you're working with JSON
representations of the same resources and types defined in the Search Ads 360 Reporting API's
[.proto descriptor](https://github.com/googleapis/googleapis/tree/13301267d983903e0eb8e3713cf6d3127ea0ca47/google/ads/searchads360/v0/) files. The JSON encoding scheme follows the
canonical encoding scheme described in the
[JSON Mapping](https://developers.google.com/protocol-buffers/docs/proto3#json) section of the protocol
buffers *Language Guide*.

In general, all top-level messages to and from
[services](https://github.com/googleapis/googleapis/tree/13301267d983903e0eb8e3713cf6d3127ea0ca47/google/ads/searchads360/v0/services) are single JSON objects. `search` responses are JSON objects containing a `results` array with your query's result set.

Identifiers are transformed from *snake_case* (in protocol buffers) to
*lowerCamelCase* in JSON. One notable caveat to this rule is when using
`search` or `searchStream` to send [Search Ads 360 Query Language](https://developers.google.com/search-ads/reporting/query/query-language) queries. The query language itself uses snake case, regardless of which
interface you're using. However, the results of a query in REST are returned as
normal JSON objects and have their identifiers in lowerCamelCase.

For example, a query to fetch a list of active keywords in an account uses
snake case inside the query itself (`ad_group_criterion`, not `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'"
}
```

However, the response is a JSON representation of the objects (wrapped in a JSON
array since this request uses `searchStream`) and uses the camelCase identifier
`adGroupCriterion` instead:

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