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áusula- FROM.
- 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_group- A cláusula - FROMespecifica- ad_group.
- Essa consulta seleciona - ad_group.id(do recurso- FROM),- segments.datee- campaign.name.
- Como - campaign.nameestá selecionado, mas- campaignnão está na cláusula- FROM, verifique a compatibilidade dele com outros elementos selecionados.
- Para garantir que essa consulta seja válida, o recurso - campaignprecisa ser compatível com- segments.date(outro campo selecionado). Portanto, verifique o atributo- selectableWithdo recurso- campaign. Se- segments.dateestiver presente na lista- selectableWithde- campaign, a consulta será válida.
 - Se você selecionar campos de um recurso que não está na cláusula - FROM, a lista- selectableWithdesse recurso precisará incluir todos os outros segmentos e recursos presentes na cláusula- SELECT.
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.