---
title: "Acknowledge, mark a fix applied, or dismiss"
method: POST
path: "/findings/{findingId}/transition"
tags: ["findings"]
---

# Acknowledge, mark a fix applied, or dismiss

`POST /findings/{findingId}/transition`

## Request

- Base URL: `https://shruwd.io/api/v1`
- URL: `https://shruwd.io/api/v1/findings/{findingId}/transition`
- Auth: HTTP bearer

The human half of the lifecycle. `fix_applied` captures a baseline of
the affected prompts server-side and starts the recheck clock: fourteen
days later a recheck cycle measures again, and the finding becomes
`resolved` **only** if the movement gates pass — a significant change
whose 95% interval excludes zero, and at least five points of change —
else `not_moved`, with the verdict's `outcome` saying which kind.
Neither `resolved` nor `not_moved` can be set by a request.

Structural findings — a refused AI crawler, content that needs
JavaScript, a page never crawled — are confirmed from first-party data
instead: they need no prompt baseline, `recheck` is `null`, and the
finding becomes `resolved` as soon as the fix shows up in the logs or
on the page.

## Request body

- TransitionRequest
  - `to` 'acknowledged' | 'fix_applied' | 'dismissed', required: `fix_applied` starts the recheck clock. `resolved`/`not_moved` are decided by the recheck.
  - `note` string

## Response `200`

Moved.

- TransitionResult
  - `findingId` string, required
  - `number` integer, required
  - `from` string, required
  - `to` string, required
  - `baselineCaptured` boolean, required
  - `recheck` object, nullable, required
    - `promptGroups` integer, required: Prompts whose metrics the recheck will compare.
    - `inDays` integer, required: Days until the recheck cycle runs.

## Other responses

- `400`: `invalid_target_state`.
- `403`: `not_entitled`: the plan does not show this finding in full, and a locked finding is neither shown nor moved. `details` carries `plan`, `resource` and `limit`.
- `404`: `not_found`: no such resource in this workspace.
- `409`: `invalid_transition` (not allowed from the current state) or `no_baseline_available` (no tracked question has cited the finding's subject, so there is nothing to measure a fix against; structural findings never get this).
- `default`: Every failure has this body.

---

[API](https://skmtc.dev/shruwd/apis/shruwd-api.md) · [All operations](https://skmtc.dev/shruwd/apis/shruwd-api/llms.txt) · [OpenAPI document](https://skmtc.dev/shruwd/apis/shruwd-api/revisions/64a5da079928?raw)
