Show examples in:
JavascriptHTTP
Content Management API > Role

Role

A Role groups the permissions that govern what a credential can do in a project. The same role definition is applied to collaborators, SSO users, and API tokens alike — design roles around what the credential should be allowed to do, not who is holding it.

📘 Same role, different identities

Ask "what is the credential allowed to do?" — not "what is this person allowed to do?". For API tokens specifically, the role's permissions are further constrained by the token's API surface flags (can_access_cda, can_access_cda_preview, can_access_cma); see the API token resource for details.

How permissions are computed

Most of the granular permissions on a role come as a positive_<resource>_permissions / negative_<resource>_permissions pair: build triggers, search indexes, records (item_type), uploads. They all follow the same rule:

Effective permissions = (inherited ∪ positive_*) − negative_*

Positive entries (and entries pulled in via relationships.inherits_permissions_from) grant access. Negative entries always win when they overlap. The idiomatic recipe for "almost everything" is a single action: "all" positive entry plus targeted negative entries to subtract — instead of enumerating each allowed action.

⚠️ Send positive_* and negative_* together

For each resource family (records, uploads, build triggers, search indexes), the matching positive_* and negative_* arrays must be both present or both absent in a create/update payload. On update, sent arrays replace the stored ones wholesale, so always read the role first and pass back the existing entries on the side you're not changing — sending [] to satisfy the constraint will erase everything that was there. (On create, [] is fine since there's nothing to lose.) The Update endpoint documents an SDK helper that handles this diff for records and uploads.

The computed result is exposed on every role response under meta.final_permissions; the raw declared values stay on attributes.*. See Effective vs declared permissions below.

Project-level permissions

These attributes gate access to project-wide capabilities. They apply uniformly across the whole project; granular control over individual records and uploads lives under Per-environment content permissions.

  • Project-wide flags. Boolean attributes named can_* (can_edit_schema, can_manage_environments, can_manage_access_tokens, …) cover the schema, environments, users, webhooks, and so on — see the property table for the full list.
  • Environment access. environments_access controls which environments the credential can enter at all (all, primary_only, sandbox_only, or none). Use none when the role is meant only to be inherited from.
  • Build triggers. The role may manually fire the build triggers listed in positive_build_trigger_permissions, minus those listed in negative_build_trigger_permissions. Use build_trigger: null on an entry to cover every trigger at once. Creating, editing, or deleting trigger definitions is gated separately by can_manage_build_triggers.
  • Search indexes. The role may manually re-index the search indexes listed in positive_search_index_permissions, minus those listed in negative_search_index_permissions. Use search_index: null on an entry to cover every index. Managing the index definitions themselves is gated separately by can_manage_search_indexes.

Per-environment content permissions

The role's access to records and uploads is governed by two positive/negative array pairs. Every entry is scoped to a single environment via the required environment field — to grant the same permission across multiple environments, repeat the entry once per environment id (or use inherits_permissions_from together with environments_access). The computation is the same (inherited ∪ positive_*) − negative_* rule from How permissions are computed, evaluated per environment.

Records

Permission entries live in positive_item_type_permissions (and the negative_* counterpart). Each entry is a discriminated union keyed by action:

  • all — every action below
  • read — read records
  • create — create new records
  • update — edit existing records
  • publish — publish/unpublish records
  • duplicate — duplicate records
  • delete — destroy records
  • edit_creator — change a record's creator relationship
  • take_over — wrest a record from another user currently editing it
  • move_to_stage — move a record between workflow stages

Per entry you can also restrict by:

  • item_type — restrict to a specific model (null = all models)
  • workflow — restrict to records associated with a workflow (mutually exclusive with item_type)
  • on_creator — anyone, self (records the credential created), or role (records created by anyone with this role)
  • localization_scope + locale — for create/update/publish/all: restrict to localized vs non-localized content, optionally pinning to one locale (on all the scope is forced to "all")
  • on_stage / to_stage — for workflow-aware actions: restrict to records currently on a stage, or to moves towards a stage

The shape of each entry depends on the action — see the property tables on each endpoint for which sub-fields are valid per branch.

⚠️ Some restrictors require an Enterprise plan

Workflow-aware permissions — the move_to_stage action and the workflow / on_stage / to_stage restrictors — require Workflows, an Enterprise feature. Per-content-scope restrictions are also gated: only localization_scope: "all" is available on every plan, while "localized" (with its companion locale) and "not_localized" both require Enterprise. Setting any of these on a non-Enterprise project will return an error — check the pricing page before relying on them.

Uploads

Permission entries live in positive_upload_permissions (and the negative_* counterpart). Same discriminated-union shape as records, with the upload-relevant actions (read, create, update, delete, edit_creator, replace_asset, move, all), scoped by upload_collection instead of item_type. The move action also accepts move_to_upload_collection to restrict the destination of the move.

Inheriting from other roles

relationships.inherits_permissions_from accepts a list of role ids whose permissions are unioned into this role's positive set before the negative set is subtracted (per How permissions are computed). This is how built-in roles are typically extended without copying their full permission tree — duplicate the closest built-in role, then add a negative_* entry to take something away, or set inherits_permissions_from and add only the positive entries that differ.

Effective vs declared permissions

Two views of a role's permissions are surfaced on the response:

  • attributes.* — the permissions declared on this role directly. This is what was sent on create/update; it does not reflect anything inherited from relationships.inherits_permissions_from.
  • meta.final_permissions — the effective permissions after walking the inheritance chain and applying the rule from How permissions are computed. This is the set actually enforced when a credential bound to this role makes a request.

When debugging "why can't this user do X?", read meta.final_permissions, not attributes.

Object payload

idstring

ID of role

Example:"34"
typestring

Must be exactly "role".

attributes.namestring

The name of the role

Example:"Editor"
attributes.can_edit_siteboolean

Can change project-wide settings (project name, internal subdomain, frontend preview URL, deployment settings)

attributes.can_edit_faviconboolean

Can edit favicon, global SEO settings and no-index policy

attributes.can_edit_schemaboolean

Can create and edit the project schema: models, block models, fields, fieldsets, validators, and plugins

attributes.can_manage_menuboolean

Can customize content navigation bar

attributes.can_manage_usersboolean

Can create and edit roles and invite/remove collaborators

attributes.can_manage_shared_filtersboolean

Can create and edit shared filters (both for models and the media area)

attributes.can_manage_search_indexesboolean

Can create and edit search indexes

attributes.can_manage_upload_collectionsboolean

Can create and edit upload collections

attributes.can_manage_environmentsboolean

Can create, fork, and delete sandbox environments. Promotion to primary is gated separately by can_promote_environments.

attributes.can_manage_webhooksboolean

Can create and edit webhooks

attributes.environments_accessenum

Specifies the environments the user can access

Example:"primary_only"
all

Grants access to all environments

primary_only

Grants access exclusively to the primary environment

sandbox_only

Grants access exclusively to sandbox environments

none

No access to any environment. This value is typically used when the role is intended to inherit access settings from other roles

attributes.can_manage_ssoboolean

Can manage Single Sign-On settings

attributes.can_access_audit_logboolean

Can access Audit Log

attributes.can_manage_workflowsboolean

Can create and edit workflows

attributes.can_edit_environmentboolean

Can edit per-environment settings of the environments this role has access to: locales, timezone, and UI theme. This is not about creating or switching environments — see can_manage_environments for that, and environments_access for which environments this role can enter at all.

attributes.can_promote_environmentsboolean

Can promote a sandbox environment to primary (atomic swap) and toggle the project's maintenance mode. Distinct from can_manage_environments, which covers creating/forking/deleting sandboxes.

attributes.can_manage_build_triggersboolean

Can create and edit build triggers

attributes.can_manage_access_tokensboolean

Can manage API tokens

attributes.can_perform_site_searchboolean

Can perform Site Search API calls

attributes.can_access_build_events_logboolean

Can access the build events log

attributes.can_access_search_index_events_logboolean

Can access the search index events log

attributes.positive_item_type_permissions

Allowed actions on a model (or all) for a role.

The shape of each entry depends on the action (discriminated union). Idiomatic recipes:

  • To grant every action, use a single action: "all" entry with localization_scope: "all".
  • To grant a subset (e.g. create+read+update but not delete), prefer a single action: "all" entry plus negative_item_type_permissions entries for the actions to exclude — instead of listing each allowed action separately.
Type:Array&#x3C;object>
actionenum

Permitted action

Example:"all"
all
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

For action: "all" this must be "all".

Example:"all"
all
item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

to_stagestring, null

Restrict to moves towards a specific workflow stage.

actionenum

Permitted action

Example:"read"
read
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

actionenum

Permitted action

Example:"create"
create
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
localization_scopeenum

Permitted content scope

Example:"all"
all

Any content (localized/unlocalized)

localized

Content under a specific locale (locale must be defined)

not_localized

Non-localized content

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

localestring, null

Required (non-null) when localization_scope is "localized"; must be omitted otherwise.

Example:"en"
actionenum

Permitted action

Example:"update"
update
publish
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

Permitted content scope

Example:"all"
all

Any content (localized/unlocalized)

localized

Content under a specific locale (locale must be defined)

not_localized

Non-localized content

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

localestring, null

Required (non-null) when localization_scope is "localized"; must be omitted otherwise.

Example:"en"
actionenum

Permitted action

Example:"duplicate"
duplicate
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

actionenum

Permitted action

Example:"delete"
delete
edit_creator
take_over
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

actionenum

Permitted action

Example:"move_to_stage"
move_to_stage
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

to_stagestring, null

Restrict to moves towards a specific workflow stage.

attributes.negative_item_type_permissions

Prohibited actions on a model (or all) for a role. Negative permissions take precedence and are typically paired with a broader positive action: "all" entry to subtract specific actions (e.g. forbid delete).

Type:Array&#x3C;object>
actionenum

Permitted action

Example:"all"
all
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

For action: "all" this must be "all".

Example:"all"
all
item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

to_stagestring, null

Restrict to moves towards a specific workflow stage.

actionenum

Permitted action

Example:"read"
read
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

actionenum

Permitted action

Example:"create"
create
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
localization_scopeenum

Permitted content scope

Example:"all"
all

Any content (localized/unlocalized)

localized

Content under a specific locale (locale must be defined)

not_localized

Non-localized content

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

localestring, null

Required (non-null) when localization_scope is "localized"; must be omitted otherwise.

Example:"en"
actionenum

Permitted action

Example:"update"
update
publish
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

Permitted content scope

Example:"all"
all

Any content (localized/unlocalized)

localized

Content under a specific locale (locale must be defined)

not_localized

Non-localized content

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

localestring, null

Required (non-null) when localization_scope is "localized"; must be omitted otherwise.

Example:"en"
actionenum

Permitted action

Example:"duplicate"
duplicate
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

actionenum

Permitted action

Example:"delete"
delete
edit_creator
take_over
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

actionenum

Permitted action

Example:"move_to_stage"
move_to_stage
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

to_stagestring, null

Restrict to moves towards a specific workflow stage.

attributes.positive_upload_permissions

Allowed actions on uploads (or all) for a role.

The shape of each entry depends on the action (discriminated union). To grant a subset, prefer a single action: "all" entry plus negative_upload_permissions entries for the actions to exclude.

Type:Array&#x3C;object>
actionenum

Permitted action

Example:"all"
all
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

For action: "all" this must be "all".

Example:"all"
all
upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

actionenum

Permitted action

Example:"update"
update
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

Permitted content scope

Example:"all"
all

Any content (localized/unlocalized)

localized

Localized content in a specific locale (locale must be defined)

not_localized

Non-localized content

upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

localestring, null

Required (non-null) when localization_scope is "localized"; must be omitted otherwise.

Example:"en"
actionenum

Permitted action

Example:"create"
create
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

actionenum

Permitted action

Example:"read"
read
delete
edit_creator
replace_asset
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

actionenum

Permitted action

Example:"move"
move
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

move_to_upload_collectionstring, null

Restricts the destination upload collection of the move action. When null, any destination is allowed.

attributes.negative_upload_permissions

Prohibited actions on uploads (or all) for a role. Negative permissions take precedence and are typically paired with a broader positive action: "all" entry to subtract specific actions.

Type:Array&#x3C;object>
actionenum

Permitted action

Example:"all"
all
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

For action: "all" this must be "all".

Example:"all"
all
upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

actionenum

Permitted action

Example:"update"
update
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

Permitted content scope

Example:"all"
all

Any content (localized/unlocalized)

localized

Localized content in a specific locale (locale must be defined)

not_localized

Non-localized content

upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

localestring, null

Required (non-null) when localization_scope is "localized"; must be omitted otherwise.

Example:"en"
actionenum

Permitted action

Example:"create"
create
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

actionenum

Permitted action

Example:"read"
read
delete
edit_creator
replace_asset
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

actionenum

Permitted action

Example:"move"
move
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

move_to_upload_collectionstring, null

Restricts the destination upload collection of the move action. When null, any destination is allowed.

attributes.positive_build_trigger_permissions

Build triggers this role is allowed to manually fire. An entry with build_trigger: null covers every build trigger. Note: this does not control creating/editing build triggers themselves — that is gated by can_manage_build_triggers.

Type:Array&#x3C;object>
build_triggerstring, null
attributes.negative_build_trigger_permissions

Build triggers this role is forbidden from manually firing. Negative entries take precedence over positive ones; pair with a build_trigger: null positive entry to allow all-but-N.

Type:Array&#x3C;object>
build_triggerstring, null
attributes.positive_search_index_permissions

Search indexes this role is allowed to manually re-index. An entry with search_index: null covers every search index. Note: this does not control creating/editing search indexes themselves — that is gated by can_manage_search_indexes.

Type:Array&#x3C;object>
search_indexstring, null
attributes.negative_search_index_permissions

Search indexes this role is forbidden from manually re-indexing. Negative entries take precedence over positive ones; pair with a search_index: null positive entry to allow all-but-N.

Type:Array&#x3C;object>
search_indexstring, null
meta.final_permissionsobject

The final set of permissions considering also inherited roles

can_edit_siteboolean

Can change project-wide settings (project name, internal subdomain, frontend preview URL, deployment settings)

can_edit_faviconboolean

Can edit favicon, global SEO settings and no-index policy

can_edit_schemaboolean

Can create and edit the project schema: models, block models, fields, fieldsets, validators, and plugins

can_manage_menuboolean

Can customize content navigation bar

can_manage_usersboolean

Can create and edit roles and invite/remove collaborators

can_manage_environmentsboolean

Can create, fork, and delete sandbox environments. Promotion to primary is gated separately by can_promote_environments.

can_manage_webhooksboolean

Can create and edit webhooks

environments_accessenum

Specifies the environments the user can access

Example:"primary_only"
all

Grants access to all environments

primary_only

Grants access exclusively to the primary environment

sandbox_only

Grants access exclusively to sandbox environments

none

No access to any environment. This value is typically used when the role is intended to inherit access settings from other roles

can_manage_ssoboolean

Can manage Single Sign-On settings

can_access_audit_logboolean

Can access Audit Log

can_manage_workflowsboolean

Can create and edit workflows

can_edit_environmentboolean

Can edit per-environment settings of the environments this role has access to: locales, timezone, and UI theme. This is not about creating or switching environments — see can_manage_environments for that, and environments_access for which environments this role can enter at all.

can_promote_environmentsboolean

Can promote a sandbox environment to primary (atomic swap) and toggle the project's maintenance mode. Distinct from can_manage_environments, which covers creating/forking/deleting sandboxes.

can_manage_shared_filtersboolean

Can create and edit shared filters (both for models and the media area)

can_manage_search_indexesboolean

Can create and edit search indexes

can_manage_build_triggersboolean

Can create and edit build triggers

can_manage_upload_collectionsboolean

Can create and edit upload collections

can_manage_access_tokensboolean

Can manage API tokens

can_perform_site_searchboolean

Can perform Site Search API calls

can_access_build_events_logboolean

Can access the build events log

can_access_search_index_events_logboolean

Can access the search index events log

positive_item_type_permissions

Allowed actions on a model (or all) for a role.

The shape of each entry depends on the action (discriminated union). Idiomatic recipes:

  • To grant every action, use a single action: "all" entry with localization_scope: "all".
  • To grant a subset (e.g. create+read+update but not delete), prefer a single action: "all" entry plus negative_item_type_permissions entries for the actions to exclude — instead of listing each allowed action separately.
Type:Array&#x3C;object>
actionenum

Permitted action

Example:"all"
all
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

For action: "all" this must be "all".

Example:"all"
all
item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

to_stagestring, null

Restrict to moves towards a specific workflow stage.

actionenum

Permitted action

Example:"read"
read
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

actionenum

Permitted action

Example:"create"
create
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
localization_scopeenum

Permitted content scope

Example:"all"
all

Any content (localized/unlocalized)

localized

Content under a specific locale (locale must be defined)

not_localized

Non-localized content

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

localestring, null

Required (non-null) when localization_scope is "localized"; must be omitted otherwise.

Example:"en"
actionenum

Permitted action

Example:"update"
update
publish
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

Permitted content scope

Example:"all"
all

Any content (localized/unlocalized)

localized

Content under a specific locale (locale must be defined)

not_localized

Non-localized content

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

localestring, null

Required (non-null) when localization_scope is "localized"; must be omitted otherwise.

Example:"en"
actionenum

Permitted action

Example:"duplicate"
duplicate
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

actionenum

Permitted action

Example:"delete"
delete
edit_creator
take_over
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

actionenum

Permitted action

Example:"move_to_stage"
move_to_stage
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

to_stagestring, null

Restrict to moves towards a specific workflow stage.

negative_item_type_permissions

Prohibited actions on a model (or all) for a role. Negative permissions take precedence and are typically paired with a broader positive action: "all" entry to subtract specific actions (e.g. forbid delete).

Type:Array&#x3C;object>
actionenum

Permitted action

Example:"all"
all
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

For action: "all" this must be "all".

Example:"all"
all
item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

to_stagestring, null

Restrict to moves towards a specific workflow stage.

actionenum

Permitted action

Example:"read"
read
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

actionenum

Permitted action

Example:"create"
create
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
localization_scopeenum

Permitted content scope

Example:"all"
all

Any content (localized/unlocalized)

localized

Content under a specific locale (locale must be defined)

not_localized

Non-localized content

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

localestring, null

Required (non-null) when localization_scope is "localized"; must be omitted otherwise.

Example:"en"
actionenum

Permitted action

Example:"update"
update
publish
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

Permitted content scope

Example:"all"
all

Any content (localized/unlocalized)

localized

Content under a specific locale (locale must be defined)

not_localized

Non-localized content

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

localestring, null

Required (non-null) when localization_scope is "localized"; must be omitted otherwise.

Example:"en"
actionenum

Permitted action

Example:"duplicate"
duplicate
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

actionenum

Permitted action

Example:"delete"
delete
edit_creator
take_over
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

actionenum

Permitted action

Example:"move_to_stage"
move_to_stage
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

item_typestring, null

Restricts the permission to a specific model. When null, the permission applies to all models.

workflowstring, null

Restricts the permission to records associated with a specific workflow. Mutually exclusive with item_type.

on_stagestring, null

Restrict to records currently on a workflow stage.

to_stagestring, null

Restrict to moves towards a specific workflow stage.

positive_upload_permissions

Allowed actions on uploads (or all) for a role.

The shape of each entry depends on the action (discriminated union). To grant a subset, prefer a single action: "all" entry plus negative_upload_permissions entries for the actions to exclude.

Type:Array&#x3C;object>
actionenum

Permitted action

Example:"all"
all
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

For action: "all" this must be "all".

Example:"all"
all
upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

actionenum

Permitted action

Example:"update"
update
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

Permitted content scope

Example:"all"
all

Any content (localized/unlocalized)

localized

Localized content in a specific locale (locale must be defined)

not_localized

Non-localized content

upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

localestring, null

Required (non-null) when localization_scope is "localized"; must be omitted otherwise.

Example:"en"
actionenum

Permitted action

Example:"create"
create
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

actionenum

Permitted action

Example:"read"
read
delete
edit_creator
replace_asset
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

actionenum

Permitted action

Example:"move"
move
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

move_to_upload_collectionstring, null

Restricts the destination upload collection of the move action. When null, any destination is allowed.

negative_upload_permissions

Prohibited actions on uploads (or all) for a role. Negative permissions take precedence and are typically paired with a broader positive action: "all" entry to subtract specific actions.

Type:Array&#x3C;object>
actionenum

Permitted action

Example:"all"
all
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

For action: "all" this must be "all".

Example:"all"
all
upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

actionenum

Permitted action

Example:"update"
update
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

localization_scopeenum

Permitted content scope

Example:"all"
all

Any content (localized/unlocalized)

localized

Localized content in a specific locale (locale must be defined)

not_localized

Non-localized content

upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

localestring, null

Required (non-null) when localization_scope is "localized"; must be omitted otherwise.

Example:"en"
actionenum

Permitted action

Example:"create"
create
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

actionenum

Permitted action

Example:"read"
read
delete
edit_creator
replace_asset
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

actionenum

Permitted action

Example:"move"
move
environmentstring

ID of environment. Can only contain lowercase letters, numbers and dashes

Example:"main"
on_creatorenum

Permitted creator

Example:"anyone"
anyone

Created by anyone

self

Created by the user itself

role

Created by a user with the same role

upload_collectionstring, null

Restricts the permission to a specific upload collection. When null, the permission applies to all collections.

move_to_upload_collectionstring, null

Restricts the destination upload collection of the move action. When null, any destination is allowed.

positive_build_trigger_permissions

Build triggers this role is allowed to manually fire. An entry with build_trigger: null covers every build trigger. Note: this does not control creating/editing build triggers themselves — that is gated by can_manage_build_triggers.

Type:Array&#x3C;object>
build_triggerstring, null
negative_build_trigger_permissions

Build triggers this role is forbidden from manually firing. Negative entries take precedence over positive ones; pair with a build_trigger: null positive entry to allow all-but-N.

Type:Array&#x3C;object>
build_triggerstring, null
positive_search_index_permissions

Search indexes this role is allowed to manually re-index. An entry with search_index: null covers every search index. Note: this does not control creating/editing search indexes themselves — that is gated by can_manage_search_indexes.

Type:Array&#x3C;object>
search_indexstring, null
negative_search_index_permissions

Search indexes this role is forbidden from manually re-indexing. Negative entries take precedence over positive ones; pair with a search_index: null positive entry to allow all-but-N.

Type:Array&#x3C;object>
search_indexstring, null
relationships.inherits_permissions_from.data

The roles from which this role inherits permissions

Type:Array&#x3C;<a href="/docs/content-management-api/resources/role">ResourceLinkage&#x3C;"role"></a>>

Available endpoints