# Removed lines and positions

### Removed lines and positions
By default a tender contains only what is currently on it: a line removed after
you imported the tender simply stops appearing, which leaves you unable to tell
it apart from one that never existed. Pass **`include_deleted=true`** on
`GET /tenders` or `GET /tenders/{tender_id}` and removed lines come back
**flagged** instead of omitted, so you can delete the corresponding record in
your own system:
- **`is_deleted`** is `true` on the removed line and **`deleted_at`** carries the
UTC time *that line* was removed (`null` on a legacy row removed before those
times were recorded).
- Removals are reported per **line**. Take one article off a position and that
article comes back flagged next to the position's live lines — which is what
you need if you keep one record per matched article. The `id` tells you which
record to drop. Replacing a line's article via `PATCH` counts as removing the
old article: the line keeps its `id` with the new article, and the old
article comes back as a flagged line of its own.
- **A whole position (Ordnungszahl) is gone exactly when *all* lines sharing its
`position_number` come back flagged.** If you key your records on the ordinal
number rather than per article, that is your signal; a position with at least
one unflagged line still exists.
- Removed lines never count toward `totals`, and the `ETag` covers the live
content only. A document fetched with `include_deleted=true` therefore
round-trips through `PATCH /tenders/{tender_id}` unchanged: echoed removed
lines are ignored.
- A position that Mercura merely flags as *not relevant* is not a removal and
stays hidden either way.
- Line `id`s are stable across a removal — the live primary line keeps its
handle. They do change when a source document is **reprocessed**, which
recreates the tender's positions and lines (and changes the `ETag`).

Version: 1.79.2

## Description:

  - `Removed lines and positions` ()
    By default a tender contains only what is currently on it: a line removed after
you imported the tender simply stops appearing, which leaves you unable to tell
it apart from one that never existed. Pass **`include_deleted=true`** on
`GET /tenders` or `GET /tenders/{tender_id}` and removed lines come back
**flagged** instead of omitted, so you can delete the corresponding record in
your own system: - **`is_deleted`** is `true` on the removed line and **`deleted_at`** carries the
UTC time *that line* was removed (`null` on a legacy row removed before those
times were recorded).
- Removals are reported per **line**. Take one article off a position and that
article comes back flagged next to the position's live lines — which is what
you need if you keep one record per matched article. The `id` tells you which
record to drop. Replacing a line's article via `PATCH` counts as removing the
old article: the line keeps its `id` with the new article, and the old
article comes back as a flagged line of its own.
- **A whole position (Ordnungszahl) is gone exactly when *all* lines sharing its
`position_number` come back flagged.** If you key your records on the ordinal
number rather than per article, that is your signal; a position with at least
one unflagged line still exists.
- Removed lines never count toward `totals`, and the `ETag` covers the live
content only. A document fetched with `include_deleted=true` therefore
round-trips through `PATCH /tenders/{tender_id}` unchanged: echoed removed
lines are ignored.
- A position that Mercura merely flags as *not relevant* is not a removal and
stays hidden either way.
- Line `id`s are stable across a removal — the live primary line keeps its
handle. They do change when a source document is **reprocessed**, which
recreates the tender's positions and lines (and changes the `ETag`).

