searchAllResources method
Searches all Google Cloud resources within the specified scope, such as a project, folder, or organization.
The caller must be granted the cloudasset.assets.searchAllResources
permission on the desired scope, otherwise the request will be rejected.
Request parameters:
scope - Required. A scope can be a project, a folder, or an
organization. The search is limited to the resources within the scope.
The caller must be granted the
[cloudasset.assets.searchAllResources](https://cloud.google.com/asset-inventory/docs/access-control#required_permissions)
permission on the desired scope. The allowed values are: *
projects/{PROJECT_ID} (e.g., "projects/foo-bar") *
projects/{PROJECT_NUMBER} (e.g., "projects/12345678") *
folders/{FOLDER_NUMBER} (e.g., "folders/1234567") *
organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
Value must have pattern ^\[^/\]+/\[^/\]+$.
assetTypes - Optional. A list of asset types that this request searches
for. If empty, it will search all the asset types
supported by search APIs.
Regular expressions are also supported. For example: *
"compute.googleapis.com.*" snapshots resources whose asset type starts
with "compute.googleapis.com". * ".*Instance" snapshots resources whose
asset type ends with "Instance". * ".Instance." snapshots resources
whose asset type contains "Instance". See
RE2 for all supported regular
expression syntax. If the regular expression does not match any supported
asset type, an INVALID_ARGUMENT error will be returned.
orderBy - Optional. A comma-separated list of fields specifying the
sorting order of the results. The default order is ascending. Add " DESC"
after the field name to indicate descending order. Redundant space
characters are ignored. Example: "location DESC, name". Only the following
fields in the response are sortable: * name * assetType * project *
displayName * description * location * createTime * updateTime * state *
parentFullResourceName * parentAssetType
pageSize - Optional. The page size for search result pagination. Page
size is capped at 500 even if a larger value is given. If set to zero or a
negative value, server will pick an appropriate default. Returned results
may be fewer than requested. When this happens, there could be more
results as long as next_page_token is returned.
pageToken - Optional. If present, then retrieve the next batch of
results from the preceding call to this method. page_token must be the
value of next_page_token from the previous response. The values of all
other method parameters, must be identical to those in the previous call.
query - Optional. The query statement. See
how to construct a query
for more information. If not specified or empty, it will search all the
resources within the specified scope. Examples: * name:Important to
find Google Cloud resources whose name contains Important as a word. *
name=Important to find the Google Cloud resource whose name is exactly
Important. * displayName:Impor* to find Google Cloud resources whose
display name contains Impor as a prefix of any word in the field. *
location:us-west* to find Google Cloud resources whose location contains
both us and west as prefixes. * labels:prod to find Google Cloud
resources whose labels contain prod as a key or value. *
labels.env:prod to find Google Cloud resources that have a label env
and its value is prod. * labels.env:* to find Google Cloud resources
that have a label env. * tagKeys:env to find Google Cloud resources
that have directly attached tags where the
[TagKey.namespacedName](https://cloud.google.com/resource-manager/reference/rest/v3/tagKeys#resource:-tagkey)
contains env. * tagValues:prod* to find Google Cloud resources that
have directly attached tags where the
[TagValue.namespacedName](https://cloud.google.com/resource-manager/reference/rest/v3/tagValues#resource:-tagvalue)
contains a word prefixed by prod. * tagValueIds=tagValues/123 to find
Google Cloud resources that have directly attached tags where the
[TagValue.name](https://cloud.google.com/resource-manager/reference/rest/v3/tagValues#resource:-tagvalue)
is exactly tagValues/123. * effectiveTagKeys:env to find Google Cloud
resources that have directly attached or inherited tags where the
[TagKey.namespacedName](https://cloud.google.com/resource-manager/reference/rest/v3/tagKeys#resource:-tagkey)
contains env. * effectiveTagValues:prod* to find Google Cloud
resources that have directly attached or inherited tags where the
[TagValue.namespacedName](https://cloud.google.com/resource-manager/reference/rest/v3/tagValues#resource:-tagvalue)
contains a word prefixed by prod. * effectiveTagValueIds=tagValues/123
to find Google Cloud resources that have directly attached or inherited
tags where the
[TagValue.name](https://cloud.google.com/resource-manager/reference/rest/v3/tagValues#resource:-tagvalue)
is exactly tagValues/123. * kmsKey:key to find Google Cloud resources
encrypted with a customer-managed encryption key whose name contains key
as a word. This field is deprecated. Use the kmsKeys field to retrieve
Cloud KMS key information. * kmsKeys:key to find Google Cloud resources
encrypted with customer-managed encryption keys whose name contains the
word key. * relationships:instance-group-1 to find Google Cloud
resources that have relationships with instance-group-1 in the related
resource name. * relationships:INSTANCE_TO_INSTANCEGROUP to find Compute
Engine instances that have relationships of type
INSTANCE_TO_INSTANCEGROUP. *
relationships.INSTANCE_TO_INSTANCEGROUP:instance-group-1 to find Compute
Engine instances that have relationships with instance-group-1 in the
Compute Engine instance group resource name, for relationship type
INSTANCE_TO_INSTANCEGROUP. * sccSecurityMarks.key=value to find Cloud
resources that are attached with security marks whose key is key and
value is value. * sccSecurityMarks.key:* to find Cloud resources that
are attached with security marks whose key is key. * state:ACTIVE to
find Google Cloud resources whose state contains ACTIVE as a word. *
NOT state:ACTIVE to find Google Cloud resources whose state doesn't
contain ACTIVE as a word. * createTime<1609459200 to find Google Cloud
resources that were created before 2021-01-01 00:00:00 UTC. 1609459200
is the epoch timestamp of 2021-01-01 00:00:00 UTC in seconds. *
updateTime>1609459200 to find Google Cloud resources that were updated
after 2021-01-01 00:00:00 UTC. 1609459200 is the epoch timestamp of
2021-01-01 00:00:00 UTC in seconds. * Important to find Google Cloud
resources that contain Important as a word in any of the searchable
fields. * Impor* to find Google Cloud resources that contain Impor as
a prefix of any word in any of the searchable fields. * Important location:(us-west1 OR global) to find Google Cloud resources that contain
Important as a word in any of the searchable fields and are also located
in the us-west1 region or the global location.
readMask - Optional. A comma-separated list of fields that you want
returned in the results. The following fields are returned by default if
not specified: * name * assetType * project * folders *
organization * displayName * description * location * labels *
tags * effectiveTags * networkTags * kmsKeys * createTime *
updateTime * state * additionalAttributes * parentFullResourceName
parentAssetTypeSome fields of large size, such asversionedResources,attachedResources,effectiveTagsetc., are not returned by default, but you can specify them in theread_maskparameter if you want to include them. If"*"is specified, all available fields are returned. Examples:"name,location","name,versionedResources","*". Any invalid field path will trigger INVALID_ARGUMENT error.
$fields - Selector specifying which fields to include in a partial
response.
Completes with a SearchAllResourcesResponse.
Completes with a commons.ApiRequestError if the API endpoint returned an error.
If the used http.Client completes with an error when making a REST call,
this method will complete with the same error.
Implementation
async.Future<SearchAllResourcesResponse> searchAllResources(
core.String scope, {
core.List<core.String>? assetTypes,
core.String? orderBy,
core.int? pageSize,
core.String? pageToken,
core.String? query,
core.String? readMask,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (assetTypes != null) 'assetTypes': assetTypes,
if (orderBy != null) 'orderBy': [orderBy],
if (pageSize != null) 'pageSize': ['${pageSize}'],
if (pageToken != null) 'pageToken': [pageToken],
if (query != null) 'query': [query],
if (readMask != null) 'readMask': [readMask],
if ($fields != null) 'fields': [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$scope') + ':searchAllResources';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return SearchAllResourcesResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>);
}