---
title: "List a raw-data record's validation findings"
method: GET
path: "/raw_data/{raw_data_id}/issues"
tags: ["Raw Data"]
---

# List a raw-data record's validation findings

`GET /raw_data/{raw_data_id}/issues`

List every validation finding recorded for this record.

Each finding reports the choices it supports in ``options``, so a client
renders the reviewer's buttons without a per-code table of its own.

The record's ingestion state — ``processing_status``, ``reader``,
``processed_at``, ``processing_error`` — is on the record itself and comes
back from ``GET /raw_data/{raw_data_id}``; it is not duplicated here.

## Path parameters

- `raw_data_id` string, required

## Query parameters

- `limit` integer
- `offset` integer

## Response `200`

Successful Response

- PaginatedResponseRawDataIssue
  - `items` RawDataIssue[], required
    - `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.
  - `count` integer, required
  - `total` integer, required

## 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)
