---
title: "IDT-934: owner-only bulk operations over a user selection — passivate, change brand, change profile, change group. Each user is processed independently; per-user failures are reported in the response and do not abort the batch (not transactional). Action payloads reuse the validated single-user paths (Save / AddUserToProfile / UserChangeGroups), so the existing assignment and audit rules still apply."
method: POST
path: "/v1/users/bulk-action"
tags: ["User"]
---

# IDT-934: owner-only bulk operations over a user selection — passivate, change brand, change profile, change group. Each user is processed independently; per-user failures are reported in the response and do not abort the batch (not transactional). Action payloads reuse the validated single-user paths (Save / AddUserToProfile / UserChangeGroups), so the existing assignment and audit rules still apply.

`POST /v1/users/bulk-action`

## Request body

- BulkUserActionRequest
  - `userIds` integer[], required
  - `action` 1 | 2 | 3 | 4, required — Owner-only bulk operations applied to a selection of users (IDT-934).<p>Enum values:</p><ul><li><i>1 = Passivate</i></li><li><i>2 = ChangeBrand</i></li><li><i>3 = ChangeProfile</i></li><li><i>4 = ChangeGroup</i></li></ul>
  - `value` string, nullable — Action payload: comma-separated department ids (ChangeBrand), a single profile id (ChangeProfile), comma-separated group ids (ChangeGroup). Ignored for Passivate.

## Response `200`

OK

- BulkUserActionResponse
  - `succeeded` integer
  - `failed` integer
  - `results` BulkUserActionResult[], nullable
    - `userId` integer
    - `success` boolean
    - `error` string, nullable

## Other responses

- `400` — Bad Request
- `403` — Forbidden
- `422` — Unprocessable Content

---

[API](https://skmtc.dev/infoset/apis/infoset-rest-api.md) · [All operations](https://skmtc.dev/infoset/apis/infoset-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/infoset/infoset-rest-api/revisions/f5bc39a1ac15/schema)
