MethodPathDescription
GET/v1/rolesGet all roles
GET/v1/roles/{uid}Get a single role
PUT/v1/roles/{uid}Update an existing role
POST/v1/rolesCreate a new role
DELETE/v1/roles/{uid}Delete a role

Get all roles

GET /v1/roles

Get all roles’ details.

Permissions

Permission nameRoles
view_all_roles_infoadmin
cluster_member
cluster_viewer
db_member
db_viewer

Request

Example HTTP request

GET /roles

Headers

KeyValueDescription
Hostcnm.cluster.fqdnDomain name
Acceptapplication/jsonAccepted media type

Response

Returns a JSON array of role objects.

Example JSON body

[
    {
        "uid": 1,
        "name": "Admin",
        "management": "admin"
    },
    {
        "uid": 2,
        "name": "Cluster Member",
        "management": "cluster_member"
    },
    {
        "uid": 3,
        "name": "Cluster Viewer",
        "management": "cluster_viewer"
    },
    {
        "uid": 4,
        "name": "DB Member",
        "management": "db_member"
    },
    {
        "uid": 5,
        "name": "DB Viewer",
        "management": "db_viewer"
    },
    {
        "uid": 6,
        "name": "None",
        "management": "none"
    },
    {
        "uid": 17,
        "name": "DBA",
        "management": "admin"
    }
]

Status codes

CodeDescription
200 OKNo error
501 Not ImplementedCluster doesn’t support roles yet.

Get role

GET /v1/roles/{int: uid}

Get the details of a single role.

Permissions

Permission nameRoles
view_role_infoadmin
cluster_member
cluster_viewer
db_member
db_viewer

Request

Example HTTP request

GET /roles/1

Headers

KeyValueDescription
Hostcnm.cluster.fqdnDomain name
Acceptapplication/jsonAccepted media type

URL parameters

FieldTypeDescription
uidintegerThe role’s unique ID.

Response

Returns a role object.

Example JSON body

{
     "uid": 17,
     "name": "DBA",
     "management": "admin"
}

Status codes

CodeDescription
200 OKSuccess.
403 ForbiddenOperation is forbidden.
404 Not FoundRole does not exist.
501 Not ImplementedCluster doesn’t support roles yet.

Update role

PUT /v1/roles/{int: uid}

Update an existing role’s details.

Permissions

Permission nameRoles
update_roleadmin

Request

Example HTTP request

PUT /roles/17

Example JSON body

{
     "management": "cluster_member"
}

Headers

KeyValueDescription
Hostcnm.cluster.fqdnDomain name
Acceptapplication/jsonAccepted media type

Body

Include a role object with updated fields in the request body.

Response

Returns a role object with the updated fields.

Example JSON body

{
     "uid": 17,
     "name": "DBA",
     "management": "cluster_member"
}

Error codes

Possible error_code values:

CodeDescription
unsupported_resourceThe cluster is not yet able to handle this resource type. This could happen in a partially upgraded cluster, where some of the nodes are still on a previous version.
name_already_existsAn object of the same type and name exists.
change_last_admin_role_not_allowedAt least one user with admin role should exist.

Status codes

CodeDescription
200 OKSuccess, role is created.
400 Bad RequestBad or missing configuration parameters.
404 Not FoundAttempting to change a non-existant role.
501 Not ImplementedCluster doesn’t support roles yet.

Create role

POST /v1/roles

Create a new role.

Permissions

Permission nameRoles
create_roleadmin

Request

Example HTTP request

POST /roles

Example JSON body

{
     "name": "DBA",
     "management": "admin"
}

Headers

KeyValueDescription
Hostcnm.cluster.fqdnDomain name
Acceptapplication/jsonAccepted media type

Body

Include a role object in the request body.

Response

Returns the newly created role object.

Example JSON body

{
     "uid": 17,
     "name": "DBA",
     "management": "admin"
}

Error codes

Possible error_codevalues:

CodeDescription
unsupported_resourceThe cluster is not yet able to handle this resource type. This could happen in a partially upgraded cluster, where some of the nodes are still on a previous version.
name_already_existsAn object of the same type and name exists
missing_fieldA needed field is missing

Status codes

CodeDescription
200 OKSuccess, role is created.
400 Bad RequestBad or missing configuration parameters.
501 Not ImplementedCluster doesn’t support roles yet.

Examples

cURL

curl -k -u "[username]:[password]" -X POST \
     -H 'Content-Type: application/json' \
     -d '{ "name": "DBA", "management": "admin" }' \
     https://[host][:port]/v1/roles

Python

import requests
import json

url = "https://[host][:port]/v1/roles"

headers = {
  'Content-Type': 'application/json'
}

payload = json.dumps({
    "name": "DBA",
    "management": "admin"
})
auth=("[username]", "[password]")

response = requests.request("POST", url,
           auth=auth, headers=headers, payload=payload, verify=False)

print(response.text)

Delete role

DELETE /v1/roles/{int: uid}

Delete a role object.

Permissions

Permission nameRoles
delete_roleadmin

Request

Example HTTP request

DELETE /roles/1

Headers

KeyValueDescription
Hostcnm.cluster.fqdnDomain name
Acceptapplication/jsonAccepted media type

URL parameters

FieldTypeDescription
uidintegerThe role unique ID.

Response

Returns a status code to indicate role deletion success or failure.

Status codes

CodeDescription
200 OKSuccess, the role is deleted.
404 Not FoundRole does not exist.
406 Not AcceptableThe request is not acceptable.
501 Not ImplementedCluster doesn’t support roles yet.