Back to Redis

Index

content/operate/rs/references/rest-api/requests/roles/_index.md

latest9.8 KB
Original Source
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-all-roles}

sh
GET /v1/roles

Get all roles' details.

Permissions

Permission nameRoles
[view_all_roles_info]({{< relref "/operate/rs/references/rest-api/permissions#view_all_roles_info" >}})admin
cluster_member
cluster_viewer
db_member
db_viewer
user_manager

Request {#get-all-request}

Example HTTP request

sh
GET /v1/roles

Headers

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

Response {#get-all-response}

Returns a JSON array of [role objects]({{< relref "/operate/rs/references/rest-api/objects/role" >}}).

Example JSON body

json
[
    {
        "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 {#get-all-status-codes}

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

Get role

sh
GET /v1/roles/{int: uid}

Get the details of a single role.

Permissions

Permission nameRoles
[view_role_info]({{< relref "/operate/rs/references/rest-api/permissions#view_role_info" >}})admin
cluster_member
cluster_viewer
db_member
db_viewer
user_manager

Request {#get-request}

Example HTTP request

sh
GET /v1/roles/1

Headers

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

URL parameters

FieldTypeDescription
uidintegerThe role's unique ID.

Response {#get-response}

Returns a [role object]({{< relref "/operate/rs/references/rest-api/objects/role" >}}).

Example JSON body

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

Status codes {#get-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-role}

sh
PUT /v1/roles/{int: uid}

Update an existing role's details.

Permissions

Permission nameRoles
[update_role]({{< relref "/operate/rs/references/rest-api/permissions#update_role" >}})admin
user_manager

Request {#put-request}

Example HTTP request

sh
PUT /v1/roles/17

Example JSON body

json
{
     "management": "cluster_member"
}

Headers

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

Query parameters

FieldTypeDescription
dry_runValidate the updated [role object]({{< relref "/operate/rs/references/rest-api/objects/role" >}}) but don't apply the update.

URL parameters

FieldTypeDescription
uidintegerThe role's unique ID.

Body

Include a [role object]({{< relref "/operate/rs/references/rest-api/objects/role" >}}) with updated fields in the request body.

Response {#put-response}

Returns a [role object]({{< relref "/operate/rs/references/rest-api/objects/role" >}}) with the updated fields.

Example JSON body

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

Error codes {#put-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 {#put-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-role}

sh
POST /v1/roles

Create a new role.

Permissions

Permission nameRoles
[create_role]({{< relref "/operate/rs/references/rest-api/permissions#create_role" >}})admin
user_manager

Request {#post-request}

Example HTTP request

sh
POST /v1/roles

Example JSON body

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

Headers

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

Query parameters

FieldTypeDescription
dry_runValidate the new [role object]({{< relref "/operate/rs/references/rest-api/objects/role" >}}) but don't apply the update.

Body

Include a [role object]({{< relref "/operate/rs/references/rest-api/objects/role" >}}) in the request body.

Response {#post-response}

Returns the newly created [role object]({{< relref "/operate/rs/references/rest-api/objects/role" >}}).

Example JSON body

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

Error codes {#post-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 {#post-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

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

Python

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-role}

sh
DELETE /v1/roles/{int: uid}

Delete a role object.

Permissions

Permission nameRoles
[delete_role]({{< relref "/operate/rs/references/rest-api/permissions#delete_role" >}})admin
user_manager

Request {#delete-request}

Example HTTP request

sh
DELETE /v1/roles/1

Headers

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

URL parameters

FieldTypeDescription
uidintegerThe role unique ID.

Response {#delete-response}

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

Status codes {#delete-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.