trace_id, the core version that
produced it and the app version that asked for it. This route is the only path
that puts a thumb on it.
Why a separate route rather than one more field on /v2/retrieve: the vote
arrives after the answer, sometimes long after — the user reads, then judges
— and sometimes never. It is a different gesture, with its own lifetime.
vote: 0 exists so that taking it back is a written gesture like any other.
Without it, removing a thumb would mean deleting the row — losing the traced
answer along with the opinion.
Idempotent
Re-posting overwrites the previous vote. That is what lets a user change their mind, and a client retry a lost send without counting twice.Synchronous write
Unlike the trace itself, the write is synchronous: acknowledging a vote you have not written would be lying to the user who just clicked.Errors
When
trace_id comes back empty in an answer, logging is off: do not offer
feedback in the UI then, rather than posting into the void.