REST API Users
This Public Stable API allows you to log your User into the PCE, enabling you to obtain a session token to access other REST API calls. This API is your starting point for interacting with the PCE using the REST API.
Users API Methods
Functionality | HTTP | URI |
|---|---|---|
Authenticate to the Illumio Login Service and obtain a single-use authentication token. |
|
|
Create a new user. |
|
|
Log in as a user and obtain a session token. |
|
|
Log out a user and destroy the session token. |
|
|
Get a userʼs information. |
|
|
Update the userʼs information. |
|
|
Change a user's password (a local, non-SSO user). |
|
|
Log In to the PCE
URI to Log In User
GET [api_version]/users/login
Log Out and Destroy Credentials
This API logs users out of the PCE and destroys the temporary session credentials used to log them in.
Note
This PUT /logout call is not used with persistent API credentials.
URI to Log Out a User
PUT [user_href]/logout
Request Body
The request body is an empty JSON object.
{}Log Out a User
curl -i -X PUT https://pce.my-company.com:8443/api/v2/authentication_services/password_policy -H "Content-Type: application/json" -u $KEY:$TOKEN -d '{"require_type_symbol": true, "expire_time_days": 90}
Get User Information
This API retrieves specific information about a user, including the time the user logs into the Illumio PCE, the IP address from which the user logs in, the user's name, and the password.
URI to Get User Information
GET [user_href]
Create a New User
This API creates a new local user.
URI to Create a New User
POST [api_version][users]
Change the User Password
This API method allows currently authenticated users to change their login password.
The call must be made by the user currently authenticated in the session; even an administrator cannot change another user's password.
An API key is not used with this API.
The user's login name (typically the user's e-mail address) and login password are used for authentication.
The user's five most recent passwords are not available for use.
Possible Responses
When you execute the command to change a password, you can receive one of these three messages:
204 success: The password was changed successfully.406: Validation error, such asinvalid.501: The password was changed, but the e-mail notification failed.
Required Permissions for API Users
To use the REST APIs, you must be an authorized Illumio user with credentials to log into the PCE.
User Permissions and the API
Authentication to the PCE is based on three user roles that allow users to perform specific API operations:
Organization owner: All
GET,POST,PUT, andDELETEAPIsAdministrator: Most
GET,POST,PUT, andDELETEAPIsRead-only:
GETonly
The PCE also has two other kinds of roles:
Unscoped: Not bound by label scopes
Scoped: Bound by label scopes
Unscoped Roles
API Role Name | UI Role Name | Granted Access |
|---|---|---|
| Global Organization Owner | Perform all actions: Add, edit, or delete any resource, organization setting, or user account. |
| Global Administrator | He performs all actions except that he cannot change organization settings and cannot perform user management tasks. |
| Global Read Only | View any resource or organization setting. Cannot perform any operations. |
| Global Policy Object Provisioner | Provision rules containing IP lists, services, label groups, and manage security settings. Cannot provision rulesets, virtual services, or virtual servers, or add, modify, or delete existing policy items. |
Scoped Roles
API Role Name | UI Role Name | Granted Access |
|---|---|---|
| Full Ruleset Manager | Add, edit, and delete all rulesets within the specified scope. You can add, edit, and delete rules when the Source matches the specified scope. The rule Destination can match any scope. |
| Limited Ruleset Manager | Add, edit, and delete all rulesets within the specified scope. Add, edit, and delete rules when the Source and Destination match the specified scope. Ruleset Managers with limited privileges cannot manage rules that use IP lists, user groups, label groups, or iptables rules as destinations, or rules that allow internet connectivity. |
| Ruleset Provisioner | Provision rulesets within a specified scope. This role cannot provision virtual servers, virtual services, SecureConnect gateways, security settings, IP lists, services, or label groups. |
REST API Users Reference
This topic covers properties, parameters, and examples for REST API users
Properties
Property | Description | Type |
|---|---|---|
| URI of the user. | String |
| Username used for authentication. | String |
| When the user logged on. | String |
| The IP address of the system where the user has logged into the PCE. | String |
| The number of times the user has logged in. | Integer |
| Full name of a user as listed in the PCE web console. | String |
| Userʼs timezone IANA Region name. | String |
| Indicates if a user account is locked or not. True = locked. | Boolean |
| A list of group names to which the user belongs. | String |
| Local user profile | Object |
| Date when user account information was last updated in the system. | String |
| Date when the user account was created in the system. | String |
| Indicates if the PCE authenticates the user account. ( | String |
| The time-based one-time password for two-factor authentication. This password is required in addition to username and password for authentication. | String |
Request Example
GET https://pce.my-company.com:8443/api/v2/users/5
Get a Userʼs Information
curl -i -X GET https://pce.my-company.com:8443/api/v2/users/14 -H "Accept: application/json" -u $KEY:$TOKEN
Response Body
In this response, the user is represented in the system by an HREF path property ("href": "/users/14”), which can be used when you want to update the user information.
{
"href": "/users/14",
"type": "local",
"effective_groups": [],
"id": 14,
"username": "[email protected]",
"full_name": "Ralph W. Emerson",
"time_zone": "America/Los_Angeles",
"locked": false,
"login_count": 75,
"last_login_ip_address": "xxx.37.96.18",
"last_login_on": "2020-08-17T15:42:25.732Z",
"local_profile": {
"pending_invitation": false
},
"created_at": "2019-10-26T05:24:08.735Z",
"updated_at": "2019-08-17T15:55:40.130Z"
}Request Body for REST API users
Property | Description | Type | Required |
|---|---|---|---|
| Userʼs full name. | String | No |
|
| String | Yes |
| User's type, such as user authenticated as local. | String | Yes |
| The userʼs timezone IANA region name. | String | No |
Create a User
curl -i -X POST https://pce.my-company.com:8443/api/v2/users/users
Possible Responses
When you execute the command to update a user, you can receive one of these three messages:
204 success: A new local user was created successfully.406: Validation error such asinvalid.501: The user has been created, but the invitation email failed. The new user cannot register or sign up. If you receive this message, you need to create another local user.
Resend Invitation for a Local User
To resend the invitation to a new local user after an e-mail notification failure, use the following URI:
PUT /users/:user_id/local_profile/reinvite
Update User Information
This API updates an Illumio API userʼs account information.
URI to Update User's Information
PUT [api_version][user_href]
Request Body
The request body is an empty JSON object.
{}If you attempt to use a PUT with that URL without a payload, the 406 error shows No payload provided for PUT request.
Property | Description | Type | Optional |
|---|---|---|---|
| Userʼs full name | String | Yes |
| The userʼs time zone IANA region name | String | Yes |
Log Out a User
Use PUT to log out a user:
"logout": {
"http_method": "PUT",
"path": "/users/:id/logout",
"summary": "Logout a specific user and destroy the access token", Curl Command to log out a User
curl -i -X PUT https://pce.my-company.com:8443/api/v2/users/12345678/logout -H "Content-Type: application/json" -u $KEY:$TOKEN
where "12345678" is the user ID.
URI to Change the User's Password
PUT [api_version]/login_users/[user_href]/password
Request Body
Property | Description | Type | Required |
|---|---|---|---|
| User's new password must meet these requirements:
| String | Yes |
Example Request Body
{
"password":"'new_password'"
}Change the User's Password
curl -u 'username'@'company'.com:'existing_password' -X PUT https://'company'.com:8443/api/v2/login_users/me/password -H "Content-type: application/json" -d '{"password":"'new_password'"}' -i