---
title: "Every correction made to this client-year's prior figures"
method: GET
path: "/internal/api/clients/{client_identifier}/year-over-year/overrides"
tags: ["CLIENT"]
---

# Every correction made to this client-year's prior figures

`GET /internal/api/clients/{client_identifier}/year-over-year/overrides`

## Request

- Base URL: `https://api.signalshq.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.signalshq.io/internal/api/clients/{client_identifier}/year-over-year/overrides`
- Auth: OAuth 2
  - Password
  - Token URL: `/auth/login`

Newest first, superseded and withdrawn rows included — 'somebody corrected this twice, and here is what they said the first time' is what a reviewer asks, and a live-only read cannot answer it.

## Path parameters

- `client_identifier` string, required

## Query parameters

- `tax_year` integer, required: The engagement year being prepared

## Response `200`

Successful Response

- FigureOverrideListResponse: Everything ever done to this client-year's prior figures.
  - `tax_year` integer, required
  - `prior_year` integer, required
  - `overrides` FigureOverrideOut[], required
    - `override_id` string, uuid, required
    - `line_key` string, required
    - `value_text` string, required: The corrected figure, as TEXT. Money never becomes a float here for the same reason it does not in the basis: these numbers exist to agree with a filed return line by line.
    - `extracted_value_text` string, nullable: What the MACHINE read, kept beside the correction for ever and carried unchanged across a re-correction. None where it read nothing at all — a figure supplied for a line the extractor never found is an ORIGINAL entry, not a correction of one, and a reviewer in year three needs to tell those apart.
    - `reason` string, nullable: Why, from a closed list. Required only where the extraction was CONFIDENT and still wrong; a line already hedged, or never read, needs none — the run has already said it was unsure.
    - `observed_source_page` integer, nullable
    - `corrected_by` string, required
    - `corrected_at` string, date-time, required
    - `superseded_at` string, date-time, nullable: This correction was replaced by a later one on the same line. Null on a live correction. Present only on the history read. Superseded rows stay on the record because 'somebody corrected this twice, and here is what they said the first time' is what a reviewer asks in year three, and a live-only view cannot answer it.
    - `revoked_at` string, date-time, nullable: This correction was withdrawn and the line fell back to what the extraction read. The row is kept rather than deleted: that it was made and then undone is part of the account.
    - `revoked_by` string, nullable: WHO withdrew it, which is not always who made it. The history drawer pairs a name with the timestamp of the LATEST event on the row, so without this it printed the original corrector beside the moment somebody else withdrew their correction — a change attributed to the wrong person on the one screen that exists to attribute changes. Recorded on the row since the withdrawal statement was written; never read back until now.
    - `superseded_by` string, nullable: WHO replaced it. Same reasoning as `revoked_by`. Taken from `updated_by`, and only on a row that was actually superseded — on a live row that column is just the creator, and reporting it as a replacement would invent an event.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/signalshq/apis/signals-api.md) - [All operations](https://skmtc.dev/signalshq/apis/signals-api/llms.txt) - [OpenAPI document](https://skmtc.dev/signalshq/apis/signals-api/revisions/2c22af3b5576?raw)
