# IRPCVault.GetUsersAndUserGroups

Location: [gRPC API](https://developer.m-files.com/APIs/gRPC-API/index.md) > [Vault API](https://developer.m-files.com/APIs/gRPC-API/vault/index.md) > [Vault information](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCVault/index.md)

HTML version: https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCVault/GetUsersAndUserGroups/

Badges: `Vault API / core` `read` `session or assertion` `idempotent` `returns metadata structure version`

Gets all users and normal user groups of the vault as JSON.

- **Service:** [Vault information](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCVault/index.md) `MFiles.IRPCVault`
- **gRPC method:** `/MFiles.IRPCVault/GetUsersAndUserGroups`
- **HTTP (mf-http-grpc):** `POST /grpc/v1/get-users-and-user-groups`
- **Request:** [`GetUsersAndUserGroupsRequest`](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCVault/GetUsersAndUserGroups/index.md#request)
- **Response:** [`GetUsersAndUserGroupsResponse`](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCVault/GetUsersAndUserGroups/index.md#response)
- **Book and level:** Vault API, core
- **Kind:** read
- **Session:** Required: a session (mfiles-session-id-bin metadata) or a session assertion (x-mf-session-assertion metadata).
- **Idempotent:** yes
- **Returns metadata structure version:** yes (in the mfiles-metadata-version-bin trailer)
- **Streaming:** none (unary)

<a id="remarks"></a>

## Remarks

Prefer [GetUsersAndUserContainers](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCVault/GetUsersAndUserContainers/index.md), which
returns the same kind of data as typed messages.

`users` and `groups` are UTF-8 JSON arrays followed by one NUL byte, each zlib-compressed unless
its length field is 4294967295. Users are `{"key": <user ID>, "name": "<full name>"}`; groups
are `{"id": ..., "name": ..., "members": [<user IDs and group IDs>], "type": "normal"}`. Only
normal user groups are included.

<a id="request"></a>

## Request: GetUsersAndUserGroupsRequest

No fields.

<a id="response"></a>

## Response: GetUsersAndUserGroupsResponse

> Nested message fields are expanded to depth 3; follow a type link for deeper levels and for the type's own page.

| Field | Type | Description |
|---|---|---|
| `users` | `bytes` | NUL-terminated JSON array of users (`key`, `name`), zlib-compressed unless `uncompressed_users_length` is 4294967295. |
| `uncompressed_users_length` | `uint32` | Size of the decompressed `users`, or 4294967295 if `users` is not compressed. |
| `groups` | `bytes` | NUL-terminated JSON array of user groups (`id`, `name`, `members`, `type`), zlib-compressed unless `uncompressed_groups_length` is 4294967295. |
| `uncompressed_groups_length` | `uint32` | Size of the decompressed `groups`, or 4294967295 if `groups` is not compressed. |

<a id="related"></a>

## Related methods

- [GetUsersAndUserContainers](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCVault/GetUsersAndUserContainers/index.md): Gets all users and all user groups of the vault.
- [GetUsersAndUserGroupsList](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCVault/GetUsersAndUserGroupsList/index.md): Gets the names of all users and user groups in one list, with group IDs negated.
- [GetUsersAndUserGroupsOrDelta](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCVault/GetUsersAndUserGroupsOrDelta/index.md): Gets users and normal user groups as JSON, or only the changes since a version the caller already has.
