Groups
/api/usersandgroups/groups
Exposes groups through the annotation-based WebAPI.
The collection operation deliberately returns compact summaries. A model operation returns only fields whose registered GroupFieldDefinition grants access to the current caller. All mutations are staged on this request-local object and are validated before the first manager write.
For an existing group, both PUT and PATCH use partial-update semantics: only properties supplied by the request are changed, while omitted properties retain their current values. PUT is not a full replacement.
GET /api/usersandgroups/groups
Lists active groups using the existing Users and Groups search syntax.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
query |
query | string |
no | optional search query |
fields |
query | string |
no | Comma-separated readable properties to include in the JSON response. |
Response
| Status | Content Type | Schema | Description |
|---|---|---|---|
200 |
application/json |
array<GroupSummary> |
at most 5000 compact group summaries |
Example Request
# Request
GET /api/usersandgroups/groups HTTP/1.1
Accept: application/json
Authorization: Bearer <access-token>
# Response
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"displayName": "string",
"name": "string",
"active": true,
"id": "9ueizsfbz96hjr85vbjk5qflt",
"type": "string"
}
]
POST /api/usersandgroups/groups
Creates a request-local group. The request body supplies at least a name and a registered type before commit.
Request Body
| Content Type | Schema | Required | Description |
|---|---|---|---|
application/json |
GroupCreate |
yes | — |
Response
| Status | Content Type | Schema | Description |
|---|---|---|---|
201 |
application/json |
GroupRead |
new request-local group |
Example Request
# Request
POST /api/usersandgroups/groups HTTP/1.1
Accept: application/json
Authorization: Bearer <access-token>
Content-Type: application/json
{
"fields": {
"property": {
}
},
"permissions": [
"string"
],
"parentId": "b4pqq67l5tc1ytk3iee51pyir",
"name": "string",
"type": "string"
}
# Response
HTTP/1.1 201 Created
Content-Type: application/json
{
"fields": {
"property": {
}
},
"permissions": [
"string"
],
"parentId": "b2pyti3zkr818upt7qui2t8ov",
"id": "c6ld2ivtvzlj3b4w3kd7hskch",
"name": "string"
}
Common Error Responses
The status codes 400, 403, 404, 405, 406, 409, 413, 415, and 500 use the same ApiError JSON error format:
{
"status": 404,
"code": "route_not_found",
"message": "The requested API route does not exist.",
"details": []
}
Schemas
Request and response schemas used on this page.
GroupSummary
| Property | Type | Required | Description |
|---|---|---|---|
displayName |
string |
no | — |
name |
string |
no | — |
active |
boolean |
no | — |
id |
string |
no | — |
type |
string |
no | — |
parentId |
string |
no | — |
ApiError
| Property | Type | Required | Description |
|---|---|---|---|
status |
integer (int32) |
yes | — |
code |
string |
yes | — |
message |
string |
yes | — |
details |
array<object> |
no | — |
GroupCreate
| Property | Type | Required | Description |
|---|---|---|---|
fields |
object |
no |
Stages a replacement of registered group field values. |
permissions |
array<string> |
no |
Stages replacement of the direct permissions. |
parentId |
string |
no |
Stages a new parent group. |
name |
string |
no |
Required user-visible group name. |
type |
string |
no |
Registered group type name. It is immutable after creation. |
* |
Object |
no |
Stages one registered group field value. Conversion and validation are delegated to the installed GroupFieldDefinition. |
Object
Type: object
GroupRead
| Property | Type | Required | Description |
|---|---|---|---|
fields |
object |
no |
Returns all readable registered field values without exposing field implementation objects or unavailable values. |
permissions |
array<string> |
no |
Returns the desired direct permissions as stable permission keys. |
parentId |
string |
no |
Parent group identifier, or null for a root group. |
id |
string |
no |
Stable group identifier. It is generated for creates and replaced by the manager's ID. |
name |
string |
no |
Required user-visible group name. |
type |
string |
no |
Registered group type name. It is immutable after creation. |
active |
boolean |
no |
Whether this group is active. Inactive groups cannot be updated. |
lastModified |
number (int64) |
no |
Last modification time in milliseconds since the Unix epoch. |
* |
Object |
no |
Returns one registered field value. This dynamic property is also used by PATCH bodies containing a field key directly. |