Skip to content

List a project's advisor findings.

GET
/v1/projects/{projectId}/advisor/findings
Code sample: Shell / cURL
curl --request GET \
--url 'https://stratum.example.com/v1/projects/example/advisor/findings?state=open&severity=low&limit=100' \
--header 'Authorization: Bearer <token>'

(the advisor). Resources in the project that exist but cannot do their job: a load balancer with no listeners, a listener that forwards to a target group that does not exist (or sits in another VPC), a target group behind a listener with no enabled targets. Each finding names its check (GET /v1/advisor/checks explains it and gives the fix).

Findings are derived and read-only. A finding is open while its condition holds and is resolved on the first advisor pass (every 5 minutes) after it stops; nobody acknowledges one. A resource younger than the check’s grace period (15 minutes for the load balancer checks) is never flagged. Keyset-paginated on id. Cedar-gated on advisor:ListFindings (project-viewer and up).

projectId
required
string
/^p-[a-z0-9-]+$/
state
string
default: open
Allowed values: open resolved all

open (the default), resolved, or all.

severity
string
Allowed values: low medium high
service
string

Only findings of this service’s checks (for example lb).

resource_type
string

Only findings about this kind of resource (for example listener).

limit
integer
default: 100 >= 1 <= 1000
page_token
string

Opaque cursor from a previous response’s nextPageToken. Omit for the first page.

Findings.

Media typeapplication/json
object
items
required
Array<object>

. A resource that exists but cannot do its job, as one advisor check sees it. Open while the condition holds (resolvedAt absent); resolved on the first pass after it stops.

object
id
required
string
/^adv-[a-z0-9]+$/
projectId
required
string
checkId
required

The check that raised it (GET /v1/advisor/checks).

string
service
required
string
resourceType
required
string
resourceId
required
string
severity
required
string
Allowed values: low medium high
summary
required

One line about this resource.

string
detail

What the check saw (the missing id, the related resources).

string
firstSeen
required
string format: date-time
updatedAt
required

When the text or severity last changed (a pass that sees the same condition writes nothing).

string format: date-time
resolvedAt
string format: date-time
nextPageToken

Present when more findings follow; pass it as page_token.

string

Example

{
"items": [
{
"checkId": "lb.listener-target-group-missing",
"service": "lb",
"resourceType": "listener",
"severity": "low"
}
]
}

Bad request.

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
>= 400 <= 599
detail
string
instance
string format: uri-reference
requestId
required
string
code
required
string
issues

The findings of a rejected IAM policy document (custom and resource policies).

Array<object>

One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.

object
code
required

The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.

string
statement
required

Index of the statement at fault; -1 for the document as a whole.

integer
>= -1
detail
required
string
action

The offending action, where one is at fault (ACTION_NOT_APPLICABLE).

string
errors

Field errors, for codes that carry them: each problem at its field (see FieldError). Documented on the responses that set it, e.g. approveNodeJoin’s INVALID_INPUT and JOIN_APPROVAL_REFUSED. Absent otherwise.

Array<object>

One field’s problem, the stage-2 installer API’s shape. field is the field’s path, message what is wrong with it.

object
field
required

The field’s path, e.g. links[0].interface, disks[1].confirm, mgmt.address or role; empty for the whole request.

string
message
required
string
details

Structured facts about the refusal, for codes that carry them. The shape is fixed per code and documented on the response that answers it, e.g. IMAGE_POOL_MISMATCH (see ImagePoolMismatchDetails) and IMAGE_IN_USE. Absent for codes that carry none.

object
key
additional properties
any

Example

{
"issues": [
{
"code": "ACTION_NOT_APPLICABLE",
"action": "compute:CreateVpc"
}
]
}

Authenticated but not authorized.

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
>= 400 <= 599
detail
string
instance
string format: uri-reference
requestId
required
string
code
required
string
issues

The findings of a rejected IAM policy document (custom and resource policies).

Array<object>

One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.

object
code
required

The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.

string
statement
required

Index of the statement at fault; -1 for the document as a whole.

integer
>= -1
detail
required
string
action

The offending action, where one is at fault (ACTION_NOT_APPLICABLE).

string
errors

Field errors, for codes that carry them: each problem at its field (see FieldError). Documented on the responses that set it, e.g. approveNodeJoin’s INVALID_INPUT and JOIN_APPROVAL_REFUSED. Absent otherwise.

Array<object>

One field’s problem, the stage-2 installer API’s shape. field is the field’s path, message what is wrong with it.

object
field
required

The field’s path, e.g. links[0].interface, disks[1].confirm, mgmt.address or role; empty for the whole request.

string
message
required
string
details

Structured facts about the refusal, for codes that carry them. The shape is fixed per code and documented on the response that answers it, e.g. IMAGE_POOL_MISMATCH (see ImagePoolMismatchDetails) and IMAGE_IN_USE. Absent for codes that carry none.

object
key
additional properties
any

Example

{
"issues": [
{
"code": "ACTION_NOT_APPLICABLE",
"action": "compute:CreateVpc"
}
]
}