Create a new role in Kuzzle.

There is a small delay between role creation and its availability in our search layer (usually a couple of seconds). That means that a role that was just created may not be returned by the searchRole function at first.

createRole(id, content, [options], callback)

Arguments Type Description
id string Unique role identifier
content JSON Object A plain JSON object representing the role
options string (Optional) Optional arguments
callback function Callback handling the response


Filter Type Description Default
replaceIfExist boolean If the same role already exists: throw an error if sets to false. Replace the existing role otherwise false
queuable boolean Make this request queuable or not true
refresh string If set to wait_for, Kuzzle will wait the persistence layer to finish indexing (available with Elasticsearch 5.x and above) undefined

Callback Response

Returns a Role object.


Copied to clipboard!
var roleDefinition = {
  controllers: {
    "*": {
      actions: {
        "*": true

// You can chose to replace the given role if already exists
var options = {
  replaceIfExist: true

// Using callbacks (NodeJS or Web Browser)
  .createRole('myrole', roleDefinition, options, function(error, response) {
    // result is a Role object

// Using promises (NodeJS)
  .createRolePromise('myrole', roleDefinition, options)
  .then((response) => {
    // result is a Role object