# Users requests

> :::note
* GET requests to the `/odata/Users` or `/odata/Users({})` endpoints return an empty Domain for AD users.
* The `GetOrganizationUnits(Id)` and `GetRoles(Id)` requests only return folders and roles explicitly set for an auto-provisioned user. The ones inherited from the group configuration
can be retrieved through the `/api/DirectoryService/GetDirectoryPermissions?userId={userId}` endpoint.
:::

:::note
* GET requests to the `/odata/Users` or `/odata/Users({})` endpoints return an empty Domain for AD users.
* The `GetOrganizationUnits(Id)` and `GetRoles(Id)` requests only return folders and roles explicitly set for an auto-provisioned user. The ones inherited from the group configuration
can be retrieved through the `/api/DirectoryService/GetDirectoryPermissions?userId={userId}` endpoint.
:::

## Deleting a user

DELETE

`https://{yourDomain}/{organizationName}/{tenantName}/orchestrator_/odata/Users(446)`

### Request headers

| Key | Value |
| --- | --- |
| Authorization | Bearer |

### Response code

204 No content

## Changing the language

The following example enables you to change the language for the user with the 749 Id to Japanese.

POST

`https://{yourDomain}/{organizationName}/{tenantName}/orchestrator_/odata/Users(749)/UiPath.Server.Configuration.OData.ChangeUserCulture`

### Request headers

| Key | Value |
| --- | --- |
| Authorization | Bearer |

### Request body

```
{
    "culture": "ja"
}
```

### Response code

200 OK

## Provisioning a robot for a user

PUT

`https://{yourDomain}/{organizationName}/{tenantName}/orchestrator_/odata/Users(13)`

### Request headers

| Key | Value |
| --- | --- |
| Authorization | Bearer |

### Request body

```
{
  "RobotProvision": {
     "UserName": "uipath\\john.smith",
     "RobotId": 53,
     "RobotType": "Development",
     "ExecutionSettings": {}
  }
}
```

### Response code

200 OK

## Assigning roles

You can use this endpoint to assign one or more roles to the specified user ID, which can be the ID of a group, a user account, or a robot account.

POST

`https://{yourDomain}/{organizationName}/{tenantName}/orchestrator_/odata/Users(9)/UiPath.Server.Configuration.OData.AssignRoles`

### Request headers

| Key | Value |
| --- | --- |
| Authorization | Bearer |

### Request body

```
{
  "roleIds": [
    1,3
  ]
}
```

#### Example

The below request updates the account or group with the user ID `9` by **overwriting** its assigned roles with the roles that have IDs `1` and `3`.

| Roles before request | Roles after request | Changes |
| --- | --- | --- |
| No roles | `1` and `3` | Roles with IDs `1` and `3` have been assigned. |
| Roles with IDs `1` and `2` | `1` and `3` | Role with ID `2` was removed and role with ID `3` was assigned. |
| Role with ID `2` | `1` and `3` | Role with ID `2` was removed, and roles with IDs `1` and `3` were assigned. |

#### cURL

`curl -X POST "https://{yourDomain}/{organizationName}/{tenantName}/orchestrator_/odata/Users({key})/UiPath.Server.Configuration.OData.AssignRoles" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"roleIds\": [ {RoleID1},{RoleID2} ] }"`

**Swagger UI** (available at `https://https://{yourDomain}/{organizationName}/{tenantName}/orchestrator_/swagger`)

Figure 1. Assigning roles

![Screenshot of the assigning roles API in Swagger](https://dev-assets.cms.uipath.com/assets/images/orchestrator/orchestrator-screenshot-of-the-assigning-roles-api-in-swagger-219761-1f6aa2e8.webp)

### Step by step

Here's an example procedure for how to assign roles to an account:

1. Make a GET request at `/odata/Roles` to retrieve the list of roles.
  You can use any type of filter that OData supports, if needed.
2. Note the IDs for the roles you want to assign.
3. Make a GET request at `/odata/Users` to retrieve the list of accounts.
  The list includes groups, user accounts, and robot accounts. You can use any type of filter that OData supports, if needed.
4. Note the IDs for the accounts to which you want to assign roles.
5. Make a POST request to `/odata/Users({key})/UiPath.Server.Configuration.OData.AssignRoles` for each account to which you want to assign roles.
   * `{key}` is a single account ID for the account to which you want to assign roles
   * `{roleID}` is a single role ID for the role you want to assign; you can list multiple IDs, separated by a comma.
