## Name hierarchy

Resource names used in the Search Ads 360 Reporting API are hierarchical, mirroring the
organization of entities within Search Ads 360. Almost all resources are sub-resources
of the [`Customer`](https://developers.google.com/search-ads/reporting/api/reference/rest/v0/customers.searchAds360)
resource, which reflects the fact that almost every API call has to target a
specific Search Ads 360 account. For example, campaigns, ad groups, ads, and keywords
are all sub-resources of a root customer resource.

| Resource | Resource Name |
|---|---|
| Customer | `customers/1234567890` |
| Campaign | `customers/1234567890/campaigns/8765432109` |
| AdGroup | `customers/1234567890/adGroups/54321098765` |
| AdGroupAd | `customers/1234567890/adGroupAds/54321098765~2109876543210` |

> [!IMPORTANT]
> **Key Point:** The Search Ads 360 Reporting API uses [*relative* resource names](https://cloud.google.com/apis/design/resource_names#relative_resource_name) (and not [*full* resource names](https://cloud.google.com/apis/design/resource_names#full_resource_name) like some other Google APIs).

## Resource IDs

Search Ads 360 Reporting API entities (customers, campaigns, etc.) are referred to by their resource
names throughout the API. However, it's important to note that the resource
names themselves may have unique numerical [resource
IDs](https://cloud.google.com/apis/design/resource_names#resource_id) that identify
each object in the hierarchy. In these cases, it may be useful to parse the
resource name to extract these resource IDs and assemble a new one.

For example, examine the `AdGroupAd` resource name from the previous table:

    customers/1234567890/adGroupAds/54321098765~2109876543210

This can be broken down into its individual resource IDs (separated by
[collection IDs](https://cloud.google.com/apis/design/resource_names#collection_id))
as follows:
Resource name components **Resource IDs** customer ID: `"1234567890"` ad group ID: `"54321098765"` ad group ad ID: `"2109876543210"` **Collection IDs** `"customers"` `"adGroupAds"`

Parsing the individual IDs lets you derive new resource names to reference
the ad group ad's customer (`customers/1234567890`) or its ad group
(`customers/1234567890/adGroupAds/54321098765`).

> [!IMPORTANT]
> **Key Point:** Resource names in JSON request and response bodies are referred to by the `resourceName` field, not the [`name`](https://cloud.google.com/apis/design/resource_names#q_why_is_the_special_field_called_name_instead_of_id) field like in some other Google Cloud APIs. Many Search Ads 360 entities have name attributes themselves (`campaign.Name`, `adGroup.Name`, etc.), so `resourceName` is used to avoid collision with existing object names.