563848e0ecc0
Approve or reject a roster import
Records a decision on a roster job that has finished validation and, when approved, starts ingesting its rows.
When to use: call this once a roster has been reviewed and someone has decided whether its data should be written into the platform.
Preconditions: supply the tenant-id header, the job's rosterId, and the action query parameter, which is matched case-insensitively. The roster must be in VALIDATED, IN_PROGRESS, or VALIDATION_FAILED state; a job in any other state is rejected with 400. A roster still in PRE_PROCESSING is a special case - it can only be rejected, never approved, and only by a provider data administrator who does not also hold the roster analyst role.
Outcomes: approved moves the roster to APPROVED and queues ingestion, so its rows begin flowing into the platform; rejected moves it to CANCELLED and no further processing takes place.
Note on the HTTP method: this endpoint is exposed as a GET but changes state and triggers ingestion. Treat it as a write - never issue it speculatively, prefetch it, or allow it to be cached or retried automatically.
What you get back: the roster job reflecting the decision. Not idempotent - approving a roster twice can queue ingestion twice. The job's data object carries its status, file details, and record counters; see GET /roster/{id} for the full list of keys it can hold.
Path parameters
Identifier of the roster job being decided on, as returned by the roster listing endpoints.
Query parameters
Decision to record. approved moves the roster to APPROVED and queues ingestion; rejected moves it to CANCELLED and stops processing. Matched case-insensitively.
Headers
Unique identifier of the tenant that owns the roster job. Obtained from your account configuration; it scopes every roster this request can reach.
Response
The roster job after the decision was applied, at its new status.