# (NEW!) Rename Security User Group Rename a security user group. name is the only editable field on a group — unlike a role's PATCH, name is always required here, not "at least one of several fields." Business Rules: - type is not an accepted field here either — rejected with 400. - Caller identity is resolved first (401 if it can't be), then the group's existence is checked (404), then the concurrency guard (if supplied), then the name-uniqueness check. - If the exact same name (case-sensitive) already stored is resubmitted, the request is a true no-op — no uniqueness check runs and nothing is written, including no timestamp advance. Renaming to a case-only variant of the current name (e.g. "Hooli Corporate" → "HOOLI CORPORATE") is treated as a real change and does get written. Optimistic Concurrency: - expectedLastUpdatedEpoch is optional. If supplied and it doesn't match the group's current lastUpdatedEpoch, the write is rejected with 409 and code: STALE_UPDATE — checked before the name-uniqueness check, so a request that is both stale and a name collision surfaces STALE_UPDATE. The user submitting the request must have the User Management privilege. Endpoint: PATCH /security/user-groups/{id} Version: 1.5 Security: ApiKeyAuth, BasicAuth ## Header parameters: - `X-API-Key` (string, required) Customer-specific API key required to invoke API. - `Authorization` (string, required) Provided by Authentication Token creation operation. - `Content-Type` (string, required) Enum: "application/json" ## Path parameters: - `id` (string, required) The unique ID of the group to rename. Example: "group-hooli-corporate" ## Request fields (application/json): - `name` (string, required) New display name for the group. 1-255 characters after trimming. Example: "Hooli Corporate EMEA" - `expectedLastUpdatedEpoch` (integer) Optional optimistic-concurrency guard. If supplied and it doesn't match the group's current lastUpdatedEpoch, the write is rejected with 409 and code: STALE_UPDATE. Example: 1755600000000 ## Response 200 fields (application/json): - `id` (string, required) Unique ID of the group. Opaque string — ids are generated as UUIDs, but this isn't a format guarantee. Example: "group-hooli-corporate" - `name` (string, required) Display name of the group. Example: "Hooli Corporate" - `type` (string, required) Always security for a group returned by this API. Response-only — never an accepted input field on create or update. Enum: "security" - `userCount` (integer) Number of users currently in this group. Example: 24 - `usedIn` (object) Everywhere the group is currently referenced. - `usedIn.securityTemplates` (array) Security templates that still reference this group. - `usedIn.securityTemplates.id` (string) Example: "tmpl-hooli-apac-viewers" - `usedIn.securityTemplates.name` (string) Example: "Hooli APAC Viewers" - `createdBy` (string,null) User-profile id of the group's creator. null if the row has no recorded author. Example: "dc63db1b-1e63-43bc-877e-418931b6895c" - `createdEpoch` (integer) Unix timestamp (ms) of creation. Example: 1734000000000 - `createdDate` (string,null) ISO 8601 creation date, derived from createdEpoch. Example: "2024-12-12T12:00:00.000Z" - `lastUpdatedBy` (string,null) User-profile id of the last user to update the group. null if the row has no recorded author. Example: "a5ae4577-8940-4ca9-bf2c-b1b65b4306ec" - `lastUpdatedEpoch` (integer) Unix timestamp (ms) of the last update. Example: 1755600000000 - `lastUpdatedDate` (string,null) ISO 8601 last-updated date, derived from lastUpdatedEpoch. Example: "2025-08-19T12:00:00.000Z" ## Response 400 fields (application/json): - `status` (string) Example: "error" - `message` (string) ## Response 401 fields (application/json): - `status` (string) Example: "error" - `message` (string) ## Response 403 fields (application/json): - `status` (string) Example: "error" - `message` (string) ## Response 404 fields (application/json): - `status` (string) Example: "error" - `message` (string) ## Response 409 fields (application/json): - `status` (string) Example: "error" - `message` (string) - `code` (string) Enum: "STALE_UPDATE", "DUPLICATE_GROUP_NAME" - `details` (object) Present only when code is DUPLICATE_GROUP_NAME. - `details.existingGroupId` (string)