Você pode usar GoogleAdsFieldService
para solicitar dinamicamente o catálogo de recursos, campos de recursos,
chaves de segmentação e métricas disponíveis nos métodos
GoogleAdsService Search e
SearchStream. O catálogo fornece metadados que podem ser usados pelos clientes da API Google Ads para validação e criação de instruções da linguagem de consulta do Google Ads.
Exemplo de solicitação e resposta HTTP
A solicitação consiste em um HTTP GET para o servidor da API Google Ads no seguinte URL:
https://googleads.googleapis.com/v22/googleAdsFields/{resource_or_field}
O exemplo a seguir mostra uma solicitação seguida da resposta retornada de
GoogleAdsFieldService para o recurso ad_group:
Solicitação
https://googleads.googleapis.com/v22/googleAdsFields/ad_group
Resposta
{
  "resourceName": "googleAdsFields/ad_group",
  "name": "ad_group",
  "category": "RESOURCE",
  "selectable": false,
  "filterable": false,
  "sortable": false,
  "selectableWith": [
    "campaign",
    "customer",
    "metrics.average_cpc",
    "segments.device",
    ...
  ],
  "attributeResources": [
    "customer",
    "campaign"
  ],
  "metrics": [
    "metrics.conversions",
    "metrics.search_budget_lost_impression_share",
    "metrics.average_cost",
    "metrics.clicks",
    ...
  ],
  "segments": [
    "segments.date",
    "segments.ad_network_type",
    "segments.device",
    ...
  ]
}
Neste exemplo, as matrizes importantes são:
attributeResources- Recursos que podem ser unidos implicitamente ao recurso na cláusula 
FROM. metrics- Métricas que podem ser selecionadas com o recurso na cláusula 
FROM. Preenchido apenas para campos em quecategoryéRESOURCE. segments- Chaves de segmento que podem ser selecionadas com o recurso na cláusula 
FROM. Eles segmentam as métricas especificadas na consulta. Preenchido apenas para campos em quecategoryéRESOURCE. selectableWith- 
  
 O atributo
selectableWithem um recurso ou campo de segmento especifica outros recursos, segmentos ou métricas que podem ser selecionados na mesma consulta da GAQL. Esse atributo é crucial quando você quer incluir campos de um recurso ou segmento que não está especificado na cláusulaFROM.Ao criar uma consulta GAQL:
-  O recurso na cláusula 
FROMé a entidade principal. Você sempre pode selecionar campos desse recurso. - Você também pode selecionar métricas e segmentos compatíveis disponíveis com a entidade principal.
 -  Se você incluir campos de qualquer recurso ou segmento fora da cláusula 
FROM, verifique se esse recurso ou segmento nãoFROMé compatível com todos os outros campos, segmentos e métricas selecionados na consulta. 
-  O recurso na cláusula 
 A lista
selectableWithde um recurso específico (vamos chamar de Recurso A) contém todos os outros recursos, segmentos e métricas que podem ser selecionados com os campos do Recurso A quando ele não é a entidade principal.Exemplo:
Considere este exemplo de consulta:
SELECT ad_group.id, segments.date, campaign.name FROM ad_groupA cláusula
FROMespecificaad_group.Essa consulta seleciona
ad_group.id(do recursoFROM),segments.dateecampaign.name.Como
campaign.nameestá selecionado, mascampaignnão está na cláusulaFROM, verifique a compatibilidade dele com outros elementos selecionados.Para garantir que essa consulta seja válida, o recurso
campaignprecisa ser compatível comsegments.date(outro campo selecionado). Portanto, verifique o atributoselectableWithdo recursocampaign. Sesegments.dateestiver presente na listaselectableWithdecampaign, a consulta será válida.
Se você selecionar campos de um recurso que não está na cláusula
FROM, a listaselectableWithdesse recurso precisará incluir todos os outros segmentos e recursos presentes na cláusulaSELECT.
Detalhes dos metadados
É possível solicitar o catálogo usando o GoogleAdsFieldService nestes níveis:
- Recurso
 - Por exemplo, 
googleAdsFields/campaign. - Campo do recurso
 - Por exemplo, 
googleAdsFields/campaign.name. - Campo de segmentação
 - Por exemplo, 
googleAdsFields/segments.ad_network_type. - Métrica
 - Por exemplo, 
googleAdsFields/metrics.clicks.