Files
directus/docs/reference/system/roles.md
Bevis Halsey-Perry 60df20d780 Simplified generic examples and consolidated imports for sdk examples in docs. (#19370)
* Simplified generics and imports for items page snippets

* Simplified generics and imports for files page snippets

* Fixing simplified generic snippets in items page

* Simplified generics and imports for activity page snippets

* Simplified generics and imports for collections page snippets

* Simplified generics and imports for dashboards page snippets

* Simplified generics and imports for extensions page snippets

* Simplified generics and imports for fields page snippets

* Simplified generics and imports for flows page snippets

* Simplified generics and imports for folders page snippets

* Simplified generics and imports for notifications page snippets

* Simplified generics and imports for operations page snippets

* Simplified generics and imports for panels page snippets

* Simplified generics and imports for permissions page snippets

* Simplified generics and imports for presets page snippets

* Simplified generics and imports for relations page snippets

* Simplified generics and imports for relations page snippets

* Simplified generics and imports for revisions page snippets

* Simplified generics and imports for roles page snippets

* Consolidated imports for schema page snippets

* Simplified generics and imports for server page snippets

* Simplified generics and imports for settings page snippets

* Fixed mixed up snippets and simplified generics and imports for shares page snippets

* Simplified generics and imports for translation page snippets

* Fixed mixed up snippets and simplified generics and imports for user page snippets

* Simplified generics and imports fo uutilitie pages snippets

* Simplified generics and imports for webhook pages snippets

* Simplified generics and imports for authentication pages snippets

* Consolidated imports for query pages sdk snippets

* Format files

* Update lockfile

* Fix spelling

* Format snippets

* Aling `result` const

* Small clean-ups

- Align `SEARCH` snippets, move "Learn more..." next to other hint
- ids -> IDs
- Other alignments

---------

Co-authored-by: Bevis Halsey-Perry <hi@be7.is>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-08-08 10:16:23 -04:00

14 KiB

description, readTime, pageClass
description readTime pageClass
REST and GraphQL API documentation on the Roles collection in Directus. 5 min read page-reference

Roles

Roles define a specific set of access permissions, and are the primary organizational structure for Users within the platform. Learn more about Roles.

The Role Object

id uuid
Primary key of the role.

name string
Name of the role.

icon string
Icon for the role. Displayed in the Admin App.

description string
Description for the role. Displayed in the Admin App.

ip_access csv
A CSV of IP addresses that have access to this role. Allows you to configure an allowlist of IP addresses.

enforce_tfa boolean
Whether or not Two-Factor Authentication is required for users in this role.

admin_access boolean
If this role is considered an admin role. This means that users in this role have full permissions to everything.

app_access boolean
Whether or not users in this role have access to use the Admin App.

users one-to-many
The users in this role. One-to-many to users.

{
	"id": "653925a9-970e-487a-bfc0-ab6c96affcdc",
	"name": "Admin",
	"icon": "supervised_user_circle",
	"description": null,
	"ip_access": null,
	"enforce_tfa": false,
	"admin_access": true,
	"app_access": true,
	"users": ["0bc7b36a-9ba9-4ce0-83f0-0a526f354e07"]
}

List Roles

List all roles that exist in Directus.

Request

GET /roles

SEARCH /roles

If using SEARCH you can provide a query object as the body of your request.

Learn more about SEARCH ->

POST /graphql/system

type Query {
	roles: [directus_roles]
}
import { createDirectus, rest, readRoles } from '@directus/sdk';

const client = createDirectus('directus_project_url').with(rest());

const result = await client.request(readRoles(query_object));

Query Parameters

Supports all global query parameters.

Response

An array of up to limit role objects. If no items are available, data will be an empty array.

Example

GET /roles

SEARCH /roles

POST /graphql/system

query {
	roles {
		id
		name
		users {
			email
		}
	}
}
import { createDirectus, rest, readRoles } from '@directus/sdk';

const client = createDirectus('https://directus.example.com').with(rest());

const result = await client.request(
	readRoles({
		fields: ['*'],
	})
);

Retrieve a Role

List an existing role by primary key.

GET /roles/:id

POST /graphql/system

type Query {
	roles_by_id(id: ID!): directus_roles
}
import { createDirectus, rest, readRole } from '@directus/sdk';

const client = createDirectus('directus_project_url').with(rest());

const result = await client.request(readRole(role_id, query_object));

Query Parameters

Supports all global query parameters.

Response

Returns the requested role object.

Example

GET /roles/b4cb3b64-8580-4ad9-a099-eade6da24302

POST /graphql/system

query {
	roles_by_id(id: 2) {
		id
		name
		users {
			email
		}
	}
}
import { createDirectus, rest, readRole } from '@directus/sdk';

const client = createDirectus('https://directus.example.com').with(rest());

const result = await client.request(
	readRole('39a178f6-d4d6-40e1-b0e7-ec6daaac8747', {
		fields: ['*'],
	})
);

Create a Role

Create a new role.

Request

POST /roles

Provide a role object as the body of your request.

POST /graphql/system

type Mutation {
	create_roles_item(data: create_directus_roles_input!): directus_roles
}
import { createDirectus, rest, createRole } from '@directus/sdk';

const client = createDirectus('directus_project_url').with(rest());

const result = await client.request(createRole(role_object));

Query Parameters

Supports all global query parameters.

Request Body

A partial role object.

Response

Returns the role object for the created role.

Example

POST /roles

{
	"name": "Interns",
	"icon": "verified_user",
	"description": null,
	"admin_access": false,
	"app_access": true
}

POST /graphql/system

mutation {
	create_roles_item(
		data: { name: "Interns", icon: "verified_user", description: null, admin_access: false, app_access: true }
	) {
		id
		name
		users {
			email
		}
	}
}
import { createDirectus, rest, createRole } from '@directus/sdk';

const client = createDirectus('https://directus.example.com').with(rest());

const result = await client.request(
	createRole({
		name: 'Interns',
		icon: 'verified_user',
		description: null,
		admin_access: false,
		app_access: true,
	})
);

Create Multiple Roles

Create multiple new roles.

Request

POST /roles

Provide an array of role objects as the body of your request.

POST /graphql/system

type Mutation {
	create_roles_items(data: [create_directus_roles_input!]!): [directus_roles]
}
import { createDirectus, rest, createRoles } from '@directus/sdk';

const client = createDirectus('directus_project_url').with(rest());

const result = await client.request(createRoles(role_object_array));

Query Parameters

Supports all global query parameters.

Request Body

An array of partial role objects.

Response

Returns the role objects for the created roles.

Example

POST /roles

[
	{
		"name": "Interns",
		"icon": "verified_user",
		"description": null,
		"admin_access": false,
		"app_access": true
	},
	{
		"name": "Customers",
		"icon": "person",
		"description": null,
		"admin_access": false,
		"app_access": false
	}
]

POST /graphql/system

mutation {
	create_roles_items(
		data: [
			{ name: "Interns", icon: "verified_user", description: null, admin_access: false, app_access: true }
			{ name: "Customers", icon: "person", description: null, admin_access: false, app_access: false }
		]
	) {
		id
		name
		users {
			email
		}
	}
}
import { createDirectus, rest, createRoles } from '@directus/sdk';

const client = createDirectus('https://directus.example.com').with(rest());

const result = await client.request(
	createRoles([
		{
			name: 'Interns',
			icon: 'verified_user',
			description: null,
			admin_access: false,
			app_access: true,
		},
		{
			name: 'Customers',
			icon: 'person',
			description: null,
			admin_access: false,
			app_access: false,
		},
	])
);

Update a Role

Update an existing role.

Request

PATCH /roles/:id

Provide a partial role object as the body of your request.

POST /graphql/system

type Mutation {
	update_roles_item(id: ID!, data: update_directus_roles_input): directus_roles
}
import { createDirectus, rest, updateRole } from '@directus/sdk';

const client = createDirectus('directus_project_url').with(rest());

const result = await client.request(updateRole(role_id, partial_role_object));

Query Parameters

Supports all global query parameters.

Request Body

A partial role object.

Response

Returns the role object for the updated role.

Example

PATCH /roles/c86c2761-65d3-43c3-897f-6f74ad6a5bd7

{
	"icon": "attractions"
}

POST /graphql/system

mutation {
	update_roles_item(id: "c86c2761-65d3-43c3-897f-6f74ad6a5bd7", data: { icon: "attractions" }) {
		id
		name
		users {
			email
		}
	}
}
import { createDirectus, rest, updateRole } from '@directus/sdk';

const client = createDirectus('https://directus.example.com').with(rest());

const result = await client.request(
	updateRole('a262a7f6-9ed4-423d-8cd2-3ee3b2d2a658', {
		admin_access: true,
	})
);

Update Multiple Roles

Update multiple existing roles.

Request

PATCH /roles

{
	"keys": role_id_array,
	"data": partial_role_object
}

POST /graphql/system

type Mutation {
	update_roles_items(ids: [ID!]!, data: update_directus_roles_input): [directus_roles]
}
import { createDirectus, rest, updateRoles } from '@directus/sdk';

const client = createDirectus('directus_project_url').with(rest());

const result = await client.request(updateRoles(role_id_array, partial_role_object));

Query Parameters

Supports all global query parameters.

Request Body

keys Required
Array of primary keys of the roles you'd like to update.

data Required
Any of the role object's properties.

Response

Returns the role objects for the updated roles.

Example

PATCH /roles

{
	"keys": ["c86c2761-65d3-43c3-897f-6f74ad6a5bd7", "6fc3d5d3-a37b-4da8-a2f4-ed62ad5abe03"],
	"data": {
		"icon": "attractions"
	}
}

POST /graphql/system

mutation {
	update_roles_items(
		ids: ["c86c2761-65d3-43c3-897f-6f74ad6a5bd7", "6fc3d5d3-a37b-4da8-a2f4-ed62ad5abe03"]
		data: { icon: "attractions" }
	) {
		id
		name
		users {
			email
		}
	}
}
import { createDirectus, rest, updateRoles } from '@directus/sdk';

const client = createDirectus('https://directus.example.com').with(rest());

const result = await client.request(
	updateRoles(['a262a7f6-9ed4-423d-8cd2-3ee3b2d2a658', '1792dc2c-6142-4723-ae40-698d082ddc5e'], {
		admin_access: true,
	})
);

Delete a Role

Delete an existing role.

Request

DELETE /roles/:id

POST /graphql/system

type Mutation {
	delete_roles_item(id: ID!): delete_one
}
import { createDirectus, rest, deleteRole } from '@directus/sdk';

const client = createDirectus('directus_project_url').with(rest());

const result = await client.request(deleteRole(role_id));

Response

Empty body.

Example

DELETE /roles/c86c2761-65d3-43c3-897f-6f74ad6a5bd7

POST /graphql/system

mutation {
	delete_roles_item(id: "c86c2761-65d3-43c3-897f-6f74ad6a5bd7") {
		id
	}
}
import { createDirectus, rest, deleteRole } from '@directus/sdk';

const client = createDirectus('https://directus.example.com').with(rest());

const result = await client.request(deleteRole('1792dc2c-6142-4723-ae40-698d082ddc5e'));

Delete Multiple Roles

Delete multiple existing roles.

Request

DELETE /roles

Provide an array of role IDs as the body of your request.

POST /graphql/system

type Mutation {
	delete_roles_items(ids: [ID!]!): delete_many
}
import { createDirectus, rest, deleteRoles } from '@directus/sdk';

const client = createDirectus('https://directus.example.com').with(rest());

const result = await client.request(deleteRoles(role_id_array));

Request Body

An array of role primary keys

Response

Empty body.

Example

DELETE /roles

["653925a9-970e-487a-bfc0-ab6c96affcdc", "c86c2761-65d3-43c3-897f-6f74ad6a5bd7"]

POST /graphql/system

mutation {
	delete_roles_items(ids: ["653925a9-970e-487a-bfc0-ab6c96affcdc", "c86c2761-65d3-43c3-897f-6f74ad6a5bd7"]) {
		ids
	}
}
import { createDirectus, rest, deleteRoles } from '@directus/sdk';

const client = createDirectus('https://directus.example.com').with(rest());

const result = await client.request(
	deleteRoles(['a262a7f6-9ed4-423d-8cd2-3ee3b2d2a658', '1792dc2c-6142-4723-ae40-698d082ddc5e'])
);