# Create or update roles **POST /_security/role/{name}** **All methods and paths for this operation:**
PUT /_security/role/{name}
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. ## Required authorization * Cluster privileges: `manage_security` [External documentation](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/defining-roles.html) ## Servers - http://api.example.com: http://api.example.com () ## Authentication methods - Api key auth - Basic auth - Bearer auth ## Parameters ### Path parameters - **name** (string) The name of the 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. ### Body: application/json (object) - **applications** (array[object]) A list of application privilege entries. - **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. - **indices** (array[object]) A list of indices permissions entries. - **remote_indices** (array[object]) A list of remote indices permissions entries. NOTE: Remote indices are effective for remote clusters configured with the API key based model. They have no effect for remote clusters configured with the certificate based model. - **remote_cluster** (array[object]) A list of remote cluster permissions entries. - **metadata** (object) Optional metadata. Within the metadata object, keys that begin with an underscore (`_`) are reserved for system use. - **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. - **description** (string) Optional description of the role descriptor - **transient_metadata** (object) 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. ## Responses ### 200 #### Body: application/json (object) - **role** (object) When an existing role is updated, `created` is set to `false`. [Powered by Bump.sh](https://bump.sh)