Skip to content

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.
  • 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 ids 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).