list method
Lists an organization or source's findings.
To list across all sources provide a -
as the source id. Example:
/v1/organizations/{organization_id}/sources/-/findings
Request parameters:
parent
- Required. Name of the source the findings belong to. Its format
is "organizations/[organization_id]/sources/[source_id],
folders/[folder_id]/sources/[source_id], or
projects/[project_id]/sources/[source_id]". To list across all sources
provide a source_id of -
. For example:
organizations/{organization_id}/sources/-, folders/{folder_id}/sources/-
or projects/{projects_id}/sources/-
Value must have pattern ^projects/\[^/\]+/sources/\[^/\]+$
.
compareDuration
- When compare_duration is set, the ListFindingsResult's
"state_change" attribute is updated to indicate whether the finding had
its state changed, the finding's state remained unchanged, or if the
finding was added in any state during the compare_duration period of time
that precedes the read_time. This is the time between (read_time -
compare_duration) and read_time. The state_change value is derived based
on the presence and state of the finding at the two points in time.
Intermediate state changes between the two times don't affect the result.
For example, the results aren't affected if the finding is made inactive
and then active again. Possible "state_change" values when
compare_duration is specified: * "CHANGED": indicates that the finding was
present and matched the given filter at the start of compare_duration, but
changed its state at read_time. * "UNCHANGED": indicates that the finding
was present and matched the given filter at the start of compare_duration
and did not change state at read_time. * "ADDED": indicates that the
finding did not match the given filter or was not present at the start of
compare_duration, but was present at read_time. * "REMOVED": indicates
that the finding was present and matched the filter at the start of
compare_duration, but did not match the filter at read_time. If
compare_duration is not specified, then the only possible state_change is
"UNUSED", which will be the state_change set for all findings present at
read_time.
fieldMask
- A field mask to specify the Finding fields to be listed in
the response. An empty field mask will list all fields.
filter
- Expression that defines the filter to apply across findings.
The expression is a list of one or more restrictions combined via logical
operators AND
and OR
. Parentheses are supported, and OR
has higher
precedence than AND
. Restrictions have the form
and may have a -
character in front of them to indicate negation. Examples include: * name
- source_properties.a_property * security_marks.marks.marka The supported
operators are: *
=
for all value types. *>
,<
,>=
,<=
for integer values. *:
, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literalstrue
andfalse
without quotes. The following field and operator combinations are supported: * name:=
* parent:=
,:
* resource_name:=
,:
* state:=
,:
* category:=
,:
* external_uri:=
,:
* event_time:=
,>
,<
,>=
,<=
Usage: This should be milliseconds since epoch or an RFC3339 string. Examples:event_time = "2019-06-10T16:07:18-07:00"
event_time = 1560208038000
* severity:=
,:
* workflow_state:=
,:
* security_marks.marks:=
,:
* source_properties:=
,:
,>
,<
,>=
,<=
For example,source_properties.size = 100
is a valid filter string. Use a partial match on the empty string to filter based on a property existing:source_properties.my_property : ""
Use a negated partial match on the empty string to filter based on a property not existing:-source_properties.my_property : ""
* resource: * resource.name:=
,:
* resource.parent_name:=
,:
* resource.parent_display_name:=
,:
* resource.project_name:=
,:
* resource.project_display_name:=
,:
* resource.type:=
,:
* resource.folders.resource_folder:=
,:
* resource.display_name:=
,:
orderBy
- Expression that defines what fields and order to use for
sorting. The string value should follow SQL syntax: comma separated list
of fields. For example: "name,resource_properties.a_property". The default
sorting order is ascending. To specify descending order for a field, a
suffix " desc" should be appended to the field name. For example: "name
desc,source_properties.a_property". Redundant space characters in the
syntax are insignificant. "name desc,source_properties.a_property" and "
name desc , source_properties.a_property " are equivalent. The following
fields are supported: name parent state category resource_name event_time
source_properties security_marks.marks
pageSize
- The maximum number of results to return in a single response.
Default is 10, minimum is 1, maximum is 1000.
pageToken
- The value returned by the last ListFindingsResponse
;
indicates that this is a continuation of a prior ListFindings
call, and
that the system should return the next page of data.
readTime
- Time used as a reference point when filtering findings. The
filter is limited to findings existing at the supplied time and their
values are those at that specific time. Absence of this field will default
to the API's version of NOW.
$fields
- Selector specifying which fields to include in a partial
response.
Completes with a ListFindingsResponse.
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<ListFindingsResponse> list(
core.String parent, {
core.String? compareDuration,
core.String? fieldMask,
core.String? filter,
core.String? orderBy,
core.int? pageSize,
core.String? pageToken,
core.String? readTime,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (compareDuration != null) 'compareDuration': [compareDuration],
if (fieldMask != null) 'fieldMask': [fieldMask],
if (filter != null) 'filter': [filter],
if (orderBy != null) 'orderBy': [orderBy],
if (pageSize != null) 'pageSize': ['${pageSize}'],
if (pageToken != null) 'pageToken': [pageToken],
if (readTime != null) 'readTime': [readTime],
if ($fields != null) 'fields': [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$parent') + '/findings';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return ListFindingsResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>);
}