---
title: "Resolve a validation issue"
method: PATCH
path: "/raw_data/{raw_data_id}/issues/{issue_id}"
tags: ["Raw Data"]
---

# Resolve a validation issue

`PATCH /raw_data/{raw_data_id}/issues/{issue_id}`

Accept or reject one finding.

Accepting stops the finding blocking ingestion (re-parsing unchanged data
re-reports it, so it is not suppressed); rejecting abandons the file.
Blocking findings cannot be resolved — the file could not be parsed, so no
decision makes it usable.

## Path parameters

- `raw_data_id` string, required
- `issue_id` string, required

## Request body

- ResolveIssueRequest — Body for resolving a single validation issue. The valid values for a given finding are exactly the ``id``s of the ``options`` that finding reports; sending anything else is rejected with the allowed set listed.
  - `resolution` 'accept' | 'reject' | 'change_cell', required — The chosen option's id.

## Response `200`

Successful Response

- RawDataIssue — A single validation finding for a raw-data file. Emitted by the parse engine (with no id/timestamps) and persisted to ``raw_data_issues``, where it gains identity and resolution fields.
  - `id` string, nullable — Row id once persisted; None for freshly parsed issues.
  - `code` string, required — Stable machine-readable code — an ionworks IssueCode value or an engine-specific code. Branch on this, never on title/detail.
  - `severity` 'auto_fixed' | 'warning' | 'needs_input' | 'blocking', required — Whether this blocks ingestion and how it is displayed.
  - `title` string, required — Plain-English title, no error codes.
  - `detail` string — One-paragraph explanation.
  - `payload` object — Structured details: columns, observed values, row ranges.
  - `fix_summary` string, nullable — For auto_fixed issues: short description of what changed.
  - `resolution` 'accept' | 'reject' | 'change_cell', nullable — Reviewer decision; None while unresolved.
  - `resolved_by` string, nullable — User who resolved it.
  - `resolved_at` string, date-time, nullable — Resolution timestamp.
  - `options` FixOption[], required — Choices available for this finding. Derived from ``code`` and ``severity`` rather than stored, so the catalogue can grow without a migration and can never drift from what :meth:`resolve` actually accepts.
    - `id` 'accept' | 'reject' | 'change_cell', required — Value to send back as the resolution.
    - `label` string, required — Plain-English button label.
    - `detail` string — What choosing this will do.
    - `recommended` boolean — Whether this is the engine's suggested choice.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/ionworks/apis/fastapi.md) · [All operations](https://skmtc.dev/ionworks/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ionworks/fastapi/revisions/7337a3cbdaf2/schema)
