Queue CSV or JSON-array jobs that update many members, then poll job status and row-level details. This is not the admin userlist CSV (Role_op=subtract lives there). The integration worker replaces Role with the valid roles in the row.The POST queue response is not proof that rows applied. It means the job was accepted. There is no job id in that POST body. Use a unique log_name.
Reads#
GET /v1/users/bulk-update → 200 All bulk updates fetched successfully with pagination and data[] _id, receivedAt, duration, status, name.
Missing job GET /v1/users/bulk-update/{id}/status → 500 Error getting bulk update info detail: Bulk update not found.
Writes#
POST /v1/users/bulk-update accepts multipart CSV or a JSON array of rows keyed by Email.
Status labels: In Queue → In Progress → Completed.
Details after completion include per-row success/failure.
Validation: need CSV or JSON data array; a JSON object returns 400; an empty array returns 400; a non-CSV upload returns 400.
limit on list must be <= 100.
Premium-currency POST /v1/users/bulk-update-premium-currency has its own CSV (Email, Premium Currency). Do not assume those jobs appear in the user bulk list.Permissions#
Grant bulkUpdateUser for POST and getBulkUpdate for GET list/status/details.Row rules#
Identifier is Email, not username, Mongo _id, or numeric userId.
Numerical columns need an _op (add, subtract, overwrite) where documented.
Custom fields use the display name as the header.
Do not use bulk for a single precise field write; use user-field history APIs.
Next endpoints#