The Role Based Access Control (RBAC) REST API allows you to manage users, groups, and roles for AppDynamics features. These operations provide more flexibility and automation with RBAC management. Relationship settings such as addUserToGroup and removeUserToGroup are supported.

To use the RBAC REST API, you must be the account owner or have administer user permission.

Note that SAML and LDAP user creations are not supported. Also, you can only create permissions through the UI.

For information about the users and groups, see Manage Users and Groups.

Create User

You can create users in the current account. The request payload should specify name, security_provider_typedisplayName, and password. The user ID is generated by the server.

Format

POST /controller/api/rbac/v1/users

Input Parameters

Parameter NameParameter TypeValueMandatory
nameRequest payload
Yes

security_provider_type

Request payload"INTERNAL"Yes

displayName

Request payload
Yes

password

Request payload
Yes

Example

curl -H "Content-Type: application/vnd.appd.cntrl+json;v=1" -X POST -d '{"name": "user10", "security_provider_type": "INTERNAL", "displayName": "user10", "password": "welcome"}' -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/users 

Response status code 200 :
{
  "id": 10,
  "name": "user10",
  "displayName": "user10",
  "security_provider_type": "INTERNAL"
}

Get User by ID

You can get full user information, including a summary of affiliated groups and roles, using the userId in the current account.

Format

GET /controller/api/rbac/v1/users/userId

Example

curl -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/users/4 

Response status code 200 :
{
   "id": 4,
   "name": "user1", 
   "email": "user1@customer1.com", 
   "displayName": "user1", 
   "security_provider_type": "INTERNAL", 
   "roles": 
      [
        {"id": 17,"name": "Workflow Executor"}, 
        {"id": 18,"name": "DB Monitoring Administrator"}, 
        {"id": 19,"name": "DB Monitoring User"}, 
        {"id": 20,"name": "Analytics Administrator"}, 
        {"id": 21,"name": "Server Monitoring Administrator"}, 
        {"id": 22,"name": "Server Monitoring User"}, 
        {"id": 23,"name": "Universal Agent Administrator"}, 
        {"id": 24,"name": "Universal Agent User"}, 
        {"id": 13,"name": "Account Administrator"}, 
        {"id": 14,"name": "Administrator"},
        {"id": 15,"name": "User"}, 
        {"id": 16,"name": "Dashboard Viewer"} 
      ], 
   "groups": 
      [
        {"id": 1,"name": "group_01"} 
      ] 
}

Get User by Name

You can get full user information, including a summary of affiliated groups and roles, using the userName in the current account.

Format

GET /controller/api/rbac/v1/users/name/name

Example

curl -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/users/name/user1

Response status code 200 :
{
   "id": 4,
   "name": "user1", 
   "email": "user1@customer1.com", 
   "displayName": "user1", 
   "security_provider_type": "INTERNAL", 
   "roles": 
      [
        {"id": 17,"name": "Workflow Executor"}, 
        {"id": 18,"name": "DB Monitoring Administrator"}, 
        {"id": 19,"name": "DB Monitoring User"}, 
        {"id": 20,"name": "Analytics Administrator"}, 
        {"id": 21,"name": "Server Monitoring Administrator"}, 
        {"id": 22,"name": "Server Monitoring User"}, 
        {"id": 23,"name": "Universal Agent Administrator"}, 
        {"id": 24,"name": "Universal Agent User"}, 
        {"id": 13,"name": "Account Administrator"}, 
        {"id": 14,"name": "Administrator"},
        {"id": 15,"name": "User"}, 
        {"id": 16,"name": "Dashboard Viewer"} 
      ], 
   "groups": 
      [
        {"id": 1,"name": "group_01"} 
      ] 
}

Get All Users

You can get a list of all users in the current account. The list includes user summaries, which includes userId and userName.

Format

GET /controller/api/rbac/v1/users

Example

curl -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/users

Response status code 200 :
{
   "users": 
      [
         {"id": 4,"name": "user1"},
         {"id": 10,"name": "user10"}
      ]
}

Update User

You can update a user by userId in the current account. Only the user object itself is updated, with the relationship to roles and groups remaining unaffected.

Format

PUT /controller/api/rbac/v1/users/userId

Input Parameters

Parameter NameParameter TypeValueMandatory
idRequest payload
Yes
nameRequest payload
Yes

displayName

Request payload
Yes

security_provider_type

Request payload"INTERNAL"Yes

Example

curl -H "Content-Type: application/vnd.appd.cntrl+json;v=1" -X PUT -d '{"id": 11,"name": "updated_user9","displayName": "user9","security_provider_type": "INTERNAL"}' -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/users/11 

Response status code 200 :
{  
   "id": 11, 
   "name": "updated_user9", 
   "displayName": "user9", 
   "security_provider_type": "INTERNAL" 
}

Delete User

You can delete a user by userId in the current account.

Format

DELETE /controller/api/rbac/v1/users/userId

Example

curl -X DELETE -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/users/11

Response status code 200 :

Create Group

You can create a group in the current account. The group ID is generated by the server.

Format

POST /controller/api/rbac/v1/groups 

Input Parameters

Parameter NameParameter TypeValueMandatory
nameRequest payload
Yes
descriptionRequest payload
No

security_provider_type

Request payload"INTERNAL"Yes 

Example

curl -H "Content-Type: application/vnd.appd.cntrl+json;v=1" -X POST -d '{"name": "group100","description": "new description", "security_provider_type": "INTERNAL"}' -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/groups

Response status code 200 :
{
   "id": 2,
   "name": "group100",
   "security_provider_type": "INTERNAL",
   "description": "new description"
}

Get Group by ID

You can get full group information by groupId in the current account.

Format

GET /controller/api/rbac/v1/groups/groupId

Example

curl -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/groups/1

Response status code 200 :
{
   "id": 1,
   "name": "group_03",
   "security_provider_type": "INTERNAL"
   "description": "",
   "roles": 
      [
         {"id": 19,"name": "DB Monitoring User"},
         {"id": 20,"name": "Analytics Administrator"},
         {"id": 21,"name": "Server Monitoring Administrator"},
         {"id": 22,"name": "Server Monitoring User"},
         {"id": 23,"name": "Universal Agent Administrator"},
         {"id": 13,"name": "Account Administrator"},
         {"id": 16,"name": "Dashboard Viewer"}
      ]
}

Get Group by Name

You can get full group information by groupName in the current account.

Format

GET /controller/api/rbac/v1/groups/name/name

Example

curl -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/groups/name/group_03

Response status code 200 :
{
   "id": 1,
   "name": "group_03",
   "security_provider_type": "INTERNAL"
   "description": "",
   "roles": 
      [
         {"id": 19,"name": "DB Monitoring User"},
         {"id": 20,"name": "Analytics Administrator"},
         {"id": 21,"name": "Server Monitoring Administrator"},
         {"id": 22,"name": "Server Monitoring User"},
         {"id": 23,"name": "Universal Agent Administrator"},
         {"id": 13,"name": "Account Administrator"},
         {"id": 16,"name": "Dashboard Viewer"}
      ]
}

Get All Groups

You can get all groups in the current account. This only returns group summaries, which includes groupId and groupName.

Format

GET /controller/api/rbac/v1/groups

Example 

curl -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/groups

Response status code 200 :
{
   "groups": 
      [
         {"id": 1,"name": "group_03"},
         {"id": 2,"name": "group100"}
      ]
}

Update Group

You can update a group by groupId in the current account. Only the group itself is updated, while the relationships with users and roles remain unaffected.

Format

PUT /controller/api/rbac/v1/groups/groupId

Input Parameters

Parameter NameParameter TypeValueMandatory
idRequest payload
Yes
nameRequest payload
Yes
descriptionRequest payload
No

security_provider_type

Request payload"INTERNAL"Yes

Example

curl -H "Content-Type: application/vnd.appd.cntrl+json;v=1" -X PUT -d '{"id": 1, "name": "group2","description": "new description", "security_provider_type": "INTERNAL"}' -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/groups/1

Response status code 200 :
{
   "id": 1,
   "name": "group2",
   "security_provider_type": "INTERNAL",
   "description": "new description",
   "roles": 
      [
         {"id": 19,"name": "DB Monitoring User"},
         {"id": 20,"name": "Analytics Administrator"},
         {"id": 21,"name": "Server Monitoring Administrator"},
         {"id": 22,"name": "Server Monitoring User"},
         {"id": 23,"name": "Universal Agent Administrator"},
         {"id": 13,"name": "Account Administrator"},
         {"id": 16,"name": "Dashboard Viewer"}
      ]
}

Delete Group 

You can delete a group by groupId in the current account.

Format

DELETE /controller/api/rbac/v1/groups/groupId

Example

curl -X DELETE -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/groups/1


Response status code 200 :

Add User to Group

You can add a user to a group by userId and groupId.

Format

PUT /controller/api/rbac/v1/groups/groupId/users/userId

Example

curl -H "Content-Type: application/vnd.appd.cntrl+json;v=1" -X PUT -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/groups/2/users/10


Response status code 200 :

Remove User from Group

You can remove a user from a group by userId and groupId.

Format

DELETE /controller/api/rbac/v1/groups/groupId/users/userId 

Example

curl -X DELETE -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/groups/2/users/10
 
 
Response status code 200 :

Create Role

You can create a role in the current account. The ID is generated by the server.

Format

POST /controller/api/rbac/v1/roles

Input Parameters

Parameter NameParameter TypeValueMandatory
nameRequest payload
Yes
description
Request payload
No

Example

curl -H "Content-Type: application/vnd.appd.cntrl+json;v=1" -X POST -d '{"name": "role2","description": "new description"}' -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/roles 

Response status code 200 :
{
   "id": 49, 
   "name": "role2", 
   "description": "new description" 
}

Add Role to User

You can add a role to a user by roleId and userId.

Format

PUT /controller/api/rbac/v1/roles/roleId/users/userId

Example

curl -H "Content-Type: application/vnd.appd.cntrl+json;v=1" -X PUT -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/roles/50/users/10


Response status code 200 :

Remove Role from User

You can remove a role from a user by roleId and userId.

Format

DELETE /controller/api/rbac/v1/roles/roleId/users/userId 

Example

curl -X DELETE -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/roles/50/users/10

Response status code 200 :

Add Role to Group

You can add a role to a group by roleId and groupId.

Format

PUT /controller/api/rbac/v1/roles/roleId/groups/groupId

Example

curl -H "Content-Type: application/vnd.appd.cntrl+json;v=1" -X PUT -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/roles/50/groups/2


Response status code 200 :

Remove Role from Group

You can remove a role from a group by roleId and groupId.

Format

DELETE /controller/api/rbac/v1/roles/roleId/groups/groupId

Example

curl -X DELETE -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/roles/50/groups/2

Response status code 200 :

Get Role by ID

You can get full role information by roleId in the current account. This only returns the role object.

Format

GET /controller/api/rbac/v1/roles/roleId

Example

curl -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/roles/15

Response status code 200 :
{
   "id": 15,
   "name": "User",
   "description": "Can view applications and dashboards but not modify their configuration"
}

Get Role by Name

You can get full role information by roleName in the current account.

Format

GET /controller/api/rbac/v1/roles/name/name

Example

curl -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/roles/name/User

Response status code 200 :
{
   "id": 15,"name": 
   "User",
   "description": "Can view applications and dashboards but not modify their configuration"
}

Get All Roles

You can get all roles in the current account. This only returns role summaries, which includes roleId and roleName.

Format

GET /controller/api/rbac/v1/roles 

Example

curl -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/roles

Response status code 200 :
{
   "roles": 
      [
         {"id": 13,"name": "Account Administrator"},
         {"id": 14,"name": "Administrator"},
         {"id": 20,"name": "Analytics Administrator"},
         {"id": 16,"name": "Dashboard Viewer"},
         {"id": 18,"name": "DB Monitoring Administrator"},
         {"id": 19,"name": "DB Monitoring User"},
         {"id": 21,"name": "Server Monitoring Administrator"},
         {"id": 22,"name": "Server Monitoring User"},
         {"id": 23,"name": "Universal Agent Administrator"},
         {"id": 24,"name": "Universal Agent User"},
         {"id": 15,"name": "User"},
         {"id": 17,"name": "Workflow Executor"}
      ]
}

Update Role

You can update a role by roleId in the current account. This only updates the role object itself, while leaving the relationship with users and groups unaffected.

Format

PUT /controller/api/rbac/v1/roles/roleId

Input Parameters

Parameter NameParameter TypeValueMandatory
idRequest payload
Yes
nameRequest payload
Yes
descriptionRequest payload
No

Example

curl -H "Content-Type: application/vnd.appd.cntrl+json;v=1" -X PUT -d '{"id": 49, "name": "role1","description": "new description" }' -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/roles/49

Response status code 200 :
{
   "id": 49,
   "name": "role1",
   "description": "new description"
}

Delete Role

You can delete a role in the current account.

Format

DELETE /controller/api/rbac/v1/roles/roleId

Example

curl -X DELETE -u user1@customer1 http://localhost:8080/controller/api/rbac/v1/roles/49


Response status code 200 :