Meridian handbook
ReferenceConfiguration

access/roles.yaml and grants.yaml

Every key of config/access/roles.yaml (staff roles and their permissions) and config/access/grants.yaml (roles granted to staff groups under a scope).

config/access/roles.yaml defines staff roles and config/access/grants.yaml grants them to staff groups, optionally scoped to sites, types, locales, tags, states or ownership. Scope is enforced in every query, not filtered afterwards.

grants:
  - group: editors
    role: editor
    scope:
      site: [wyndmouth]

engine-dmo access matrix prints every active user’s effective permissions, and engine-dmo user grant-explain says why a user may or may not do something. schema apply refuses a change that would leave nobody able to manage users. See Users, roles and permissions.

access/roles.yaml

KeyTypeDefaultMeaning
roleslist of objectsStaff roles: your own, or a built-in role restated with new permissions
roles[].idstringWritten for youThe element’s stable id. Written by engine-dmo check --fix; never write or change it by hand
roles[].keystringRequiredThe role’s key; a built-in key replaces that role
roles[].namemap of stringIts name per locale
roles[].permissionslist of stringRequiredThe permissions the role grants, such as content.publish. engine-dmo access matrix shows the effect

access/grants.yaml

KeyTypeDefaultMeaning
grantslist of objectsGrants of a role to a staff group, optionally narrowed by a scope
grants[].groupstringRequiredThe staff group key
grants[].rolestringRequiredThe role key
grants[].scopeobjectEverythingNarrows where the role applies; each key given must match
grants[].scope.localelist of stringLocale codes
grants[].scope.ownerstringanyany, self (documents the person created) or own_group (documents created by anyone in the granted group)
grants[].scope.sitelist of stringSite keys
grants[].scope.statelist of stringDocument states
grants[].scope.taglist of stringTag keys
grants[].scope.typelist of stringContent type keys