Preview — pending review
This reference is generated from the platform API contract and is still under review. Operations, fields, and descriptions can change before publication.
Mark an access finding as resolved
Marks an Access Analyzer finding as resolved after the operator has removed the offending grant
("Resolve" / "Mark resolved" in the UI). The finding's status transitions to Resolved and the new state
is visible to subsequent list and detail reads. The command records the triage outcome only; the analyzer
will re-open a new finding on its next scan if the external access in fact still exists.
Validation: the finding must exist and be visible in the active scope (NOT_FOUND otherwise); the
current status must permit resolution — Resolved or Archived findings are rejected with CONFLICT
(409); the caller must hold a triage-capable role (owner/admin/contributor) or the request fails with
FORBIDDEN.
Async & state: Synchronous command returning 200 with the updated finding (Active → Resolved).
A resource.updated SSE frame is emitted for the finding with kind: iam.access_finding and a patch
containing the new status.
Errors: 401 unauthenticated; 403 caller lacks triage permission; 404 unknown or out-of-scope finding;
409 current status does not permit resolve; 500 on backend failure.
Idempotency/Concurrency: This operation does not use Idempotency-Key; it may be omitted
and a sent one is ignored. Resolving a finding that is already Resolved (including a retry of
a request that succeeded) is refused with 409 CONFLICT; the transition is never applied twice.
This operation does not check If-Match; a sent one is ignored.
bearerTokenAuthorizationBearer <token>An API token (pc_live_…) or a service-account key (sak_live_…), created in Identity & Access Management and sent as Authorization: Bearer <token>. Requests are rate limited per credential and per tenant: every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, and a refused request gets 429 RATE_LIMITED with Retry-After.
scopeId*stringOpaque ownership+authorization scope resolving to tenant + subscription + project.
accessFindingId*stringIdentifier of the access finding to resolve.
Finding resolved; the updated resource is returned.
application/json- response
An Access Analyzer finding — a resource reachable by an external principal.
id*stringFinding identifier.
resource*stringDisplay name of the exposed resource.
resourceArn*stringFull ARN of the exposed resource.
resourceType*AccessFindingResourceTypeType of resource covered by an Access Analyzer finding.
"Object bucket""KMS key""IAM role""Secret""Snapshot""Machine image""File share""Database"resourceHref*|Deep-link target within the console (scoped path suffix), or null when no console page exists.
exposure*AccessFindingExposureHow the resource is exposed to external principals.
"Public""Cross-account""Cross-organization"externalPrincipal*stringExternal principal / account that gained access.
accessLevel*AccessFindingAccessLevelAccess level an external principal gained on the resource.
"Read""Write""Full""List"actions*array<string>Concrete actions the external principal can perform.
status*AccessFindingStatusLifecycle status of an Access Analyzer finding.
"Active""Archived""Resolved"grantStatement*The policy statement that grants the external access reported by the finding.
recommendation*stringAnalyzer remediation recommendation.
analyzedAt*stringWhen the analyzer last evaluated this finding.
date-timefirstObservedAt*stringWhen the external access was first observed.
date-timecurl -X POST "https://example.com/scopes/string/iam/access-findings/string/actions/resolve"{ "id": "string", "resource": "string", "resourceArn": "string", "resourceType": "Object bucket", "resourceHref": "string", "exposure": "Public", "externalPrincipal": "string", "accessLevel": "Read", "actions": [ "string" ], "status": "Active", "grantStatement": { "sid": "string", "effect": "Allow", "service": "string", "actions": [ "string" ], "resources": [ "string" ], "conditions": [ { "operator": "string", "key": "string", "value": "string" } ] }, "recommendation": "string", "analyzedAt": "2019-08-24T14:15:22Z", "firstObservedAt": "2019-08-24T14:15:22Z"}