[role="xpack"] [[security-api-bulk-delete-role]] === Bulk delete roles API preview::[] ++++ Bulk delete roles API ++++ Bulk deletes roles in the native realm. [[security-api-bulk-delete-role-request]] ==== {api-request-title} `DELETE /_security/role/` [[security-api-bulk-delete-role-prereqs]] ==== {api-prereq-title} * To use this API, you must have at least the `manage_security` cluster privilege. [[security-api-bulk-delete-role-desc]] ==== {api-description-title} The role management APIs are generally the preferred way to manage roles, rather than using <>. The bulk delete roles API cannot delete roles that are defined in roles files. [[security-api-bulk-delete-role-path-params]] ==== {api-path-parms-title} `refresh`:: Optional setting of the {ref}/docs-refresh.html[refresh policy] for the write request. Defaults to Immediate. [[security-api-bulk-delete-role-request-body]] ==== {api-request-body-title} The following parameters can be specified in the body of a DELETE request and pertain to deleting a set of roles: `names`:: (list) A list of role names to delete. [[security-bulk-api-delete-role-example]] ==== {api-examples-title} The following example deletes a `my_admin_role` and `my_user_role` roles: [source,console] -------------------------------------------------- DELETE /_security/role { "names": ["my_admin_role", "my_user_role"] } -------------------------------------------------- // TEST[setup:admin_role,user_role] If the roles are successfully deleted, the request returns: [source,console-result] -------------------------------------------------- { "deleted": [ "my_admin_role", "my_user_role" ] } -------------------------------------------------- If a role cannot be found, the not found roles are grouped under `not_found`: [source,console] -------------------------------------------------- DELETE /_security/role { "names": ["my_admin_role", "not_an_existing_role"] } -------------------------------------------------- // TEST[setup:admin_role] [source,console-result] -------------------------------------------------- { "deleted": [ "my_admin_role" ], "not_found": [ "not_an_existing_role" ] } -------------------------------------------------- If a request fails or is invalid, the errors are grouped under `errors`: [source,console] -------------------------------------------------- DELETE /_security/role { "names": ["my_admin_role", "superuser"] } -------------------------------------------------- // TEST[setup:admin_role] [source,console-result] -------------------------------------------------- { "deleted": [ "my_admin_role" ], "errors": { "count": 1, "details": { "superuser": { "type": "illegal_argument_exception", "reason": "role [superuser] is reserved and cannot be deleted" } } } } --------------------------------------------------