List a roster job's upload attempts
GET/roster/:id/attempts
Returns one summary per finished upload attempt of a roster job, oldest first, so you can see how a file changed across corrections - how many rows failed on the first attempt versus the last, and which attempt finally imported.
When to use: call this when a job has been reuploaded and you need the history rather than just its current state, for example to answer what a client submitted on an earlier attempt.
Preconditions: supply the tenant-id header and the job's id. The job must belong to that tenant.
What you get back: the job's current attempt number and a list of attempt summaries. A job that predates attempt tracking returns an empty list and no attempt number - that means no history was recorded for it, not that it had zero attempts.
The list is bounded, not complete. The summaries come from the ledger held on the job record, which retains only the more recent attempts: how many is configurable, and a size guard can leave fewer still. When summaries have been dropped, olderAttemptsAvailable is true and attemptsTruncated counts them. This endpoint serves that same bounded ledger today - it does not yet return the dropped summaries. Their row-level data survives in the row history store for every attempt whose captured flag is true, and is not reachable through this API. Read-only; no state is mutated.
Request
Responses
- 200
- 401
- 403
- 404
- 500
The job's attempt history.
Returned when the request carries no valid authentication.
Returned when the caller lacks the READ_ROSTER permission for this tenant.
Returned when no roster job with the supplied id exists for the tenant.
Returned when the attempt history could not be read because of a server-side failure, for example the roster store being unavailable. The request itself was well formed; retrying is reasonable.