Create or update roles

POST /_security/role/{name}

The role management APIs are generally the preferred way to manage roles in the native realm, rather than using file-based role management. The create or update roles API cannot update roles that are defined in roles files. File-based role management is not available in Elastic Serverless.

Path parameters

  • name string Required

    The name of the role that is being created or updated. On Elasticsearch Serverless, the role name must begin with a letter or digit and can only contain letters, digits and the characters '_', '-', and '.'. Each role must have a unique name, as this will serve as the identifier for that role.

Query parameters

  • refresh string

    If true (the default) then refresh the affected shards to make this operation visible to search, if wait_for then wait for a refresh to make this operation visible to search, if false then do nothing with refreshes.

    Values are true, false, or wait_for.

application/json

Body Required

  • applications array[object]

    A list of application privilege entries.

    Hide applications attributes Show applications attributes object
    • application string Required

      The name of the application to which this entry applies.

    • privileges array[string] Required

      A list of strings, where each element is the name of an application privilege or action.

    • resources array[string] Required

      A list resources to which the privileges are applied.

  • cluster array[string]

    A list of cluster privileges. These privileges define the cluster-level actions for users with this role.

  • global object

    An object defining global privileges. A global privilege is a form of cluster privilege that is request-aware. Support for global privileges is currently limited to the management of application privileges.

    Hide global attribute Show global attribute object
    • * object Additional properties

      Additional properties are allowed.

  • indices array[object]

    A list of indices permissions entries.

    Hide indices attributes Show indices attributes object
  • remote_indices array[object]

    A list of remote indices permissions entries.

    Hide remote_indices attributes Show remote_indices attributes object
  • remote_cluster array[object]

    A list of remote cluster permissions entries.

    Hide remote_cluster attributes Show remote_cluster attributes object
    • clusters string | array[string] Required
    • privileges array[string] Required

      The cluster level privileges that owners of the role have on the remote cluster.

      Values are monitor_enrich or monitor_stats.

  • metadata object
    Hide metadata attribute Show metadata attribute object
    • * object Additional properties

      Additional properties are allowed.

  • run_as array[string]

    A list of users that the owners of this role can impersonate. Note: in Serverless, the run-as feature is disabled. For API compatibility, you can still specify an empty run_as field, but a non-empty list will be rejected.

  • Optional description of the role descriptor

  • Indicates roles that might be incompatible with the current cluster license, specifically roles with document and field level security. When the cluster license doesn’t allow certain features for a given role, this parameter is updated dynamically to list the incompatible features. If enabled is false, the role is ignored, but is still listed in the response from the authenticate API.

    Hide transient_metadata attribute Show transient_metadata attribute object
    • * object Additional properties

      Additional properties are allowed.

Responses

  • 200 application/json
    Hide response attribute Show response attribute object
    • role object Required

      Additional properties are allowed.

      Hide role attribute Show role attribute object
POST /_security/role/{name}
curl \
 -X POST http://api.example.com/_security/role/{name} \
 -H "Content-Type: application/json" \
 -d '{"applications":[{"application":"string","privileges":["string"],"resources":["string"]}],"cluster":["string"],"global":{"additionalProperty1":{},"additionalProperty2":{}},"indices":[{"field_security":{"except":"string","grant":"string"},"names":"string","privileges":["string"],"":"string","allow_restricted_indices":true}],"remote_indices":[{"clusters":"string","field_security":{"except":"string","grant":"string"},"names":"string","privileges":["string"],"":"string","allow_restricted_indices":true}],"remote_cluster":[{"clusters":"string","privileges":["monitor_enrich"]}],"metadata":{"additionalProperty1":{},"additionalProperty2":{}},"run_as":["string"],"description":"string","transient_metadata":{"additionalProperty1":{},"additionalProperty2":{}}}'
Request examples
{
  "applications": [
    {
      "application": "string",
      "privileges": [
        "string"
      ],
      "resources": [
        "string"
      ]
    }
  ],
  "cluster": [
    "string"
  ],
  "global": {
    "additionalProperty1": {},
    "additionalProperty2": {}
  },
  "indices": [
    {
      "field_security": {
        "except": "string",
        "grant": "string"
      },
      "names": "string",
      "privileges": [
        "string"
      ],
      "": "string",
      "allow_restricted_indices": true
    }
  ],
  "remote_indices": [
    {
      "clusters": "string",
      "field_security": {
        "except": "string",
        "grant": "string"
      },
      "names": "string",
      "privileges": [
        "string"
      ],
      "": "string",
      "allow_restricted_indices": true
    }
  ],
  "remote_cluster": [
    {
      "clusters": "string",
      "privileges": [
        "monitor_enrich"
      ]
    }
  ],
  "metadata": {
    "additionalProperty1": {},
    "additionalProperty2": {}
  },
  "run_as": [
    "string"
  ],
  "description": "string",
  "transient_metadata": {
    "additionalProperty1": {},
    "additionalProperty2": {}
  }
}
Response examples (200)
{
  "role": {
    "created": true
  }
}