List this tenant's outbound Dataprev rail throughput transitions
Walks this tenant’s append-only outbound-rail throughput chain, newest transition first: every rate the tenant has held, when it changed, and who changed it.
It is the SIBLING of GET /v1/consignado/throughput and never a replacement for it: that read answers what the tenant is paced at right now, and this one answers how it got there.
‘sequence’ is the chain’s own authority on order and is the ONLY column this read sorts by. ‘changed_at’ is reported and never ordered by, because a wall clock stamped by whichever replica served the change would let two links swap places under clock skew.
‘previous_requests_per_second’ is null on sequence 1 and on no other link. A stored ZERO is a real predecessor and means the tenant was coming off a pause, so absent and zero never share a spelling here.
‘requests_per_second’ of zero is a deliberate self-service pause, not an absent value. ‘changed_by’ names the actor: the gateway’s own reserved system actor marks the automatic first grant, which is how a rate somebody chose is told apart from the floor the gateway opened the chain at.
The rows are reported AS STORED, and this read asserts nothing about the sequence advancing by exactly one. The plus-one step lives in the write path under an advisory lock and the table enforces only uniqueness and the first-link rule, so a reader that refused a jump would be claiming a guarantee nothing makes. A consumer that cares about continuity verifies what it received.
A tenant that never changed its rate reads as an EMPTY page and never as a not-found: never having changed the rate is an ordinary state.
There is deliberately no time window. A window would hide exactly the old transition an operator is looking for when they ask why a client is paced the way it is.
Paging is keyset over the sequence. Send the previous page’s page.next_after as after. has_more is true exactly when another page exists, and next_after is null exactly when it is false, so a client loop may terminate on either. The cursor never expires; a cursor this service did not mint is refused with 422 rather than silently restarting the walk from the head.
It answers from a LOCAL table and never reaches the Dataprev rail, so it cannot answer 501. The tenant is derived from the validated identity and is never read from the request.
Authorizations
JWT bearer token issued by the identity provider.
Query Parameters
The previous page's page.next_after. Omitted starts at the head of the chain, the rate the tenant holds right now. A cursor this service did not mint is refused, never restarted from the top.
"eyJ2IjoxLCJyIjoiYm9hcmQiLCJ0IjoiMjAyNi0wOC0xNFQwOToxMjozM1oiLCJrIjpbImMwMDEyIl19"
Maximum number of transitions to return. Omitted means the ceiling of 200.
1 <= x <= 20050

