dotCMS · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for dotCMS REST Permissions API
12 actions
12 updates
phrasing
extends
openapi/dotcms-permissions-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for dotCMS's API. It is a proposal applied on top of the contract, not a document dotCMS publishes.
What the actions change
x-apievangelist-phrasing
Targets 12
$.info
$.paths['/api/v1/permissions/{assetId}'].get
$.paths['/api/v1/permissions/{assetId}'].put
$.paths['/api/v1/permissions/_bycontent'].get
$.paths['/api/v1/permissions/_bycontent/_groupbytype'].get
$.paths['/api/v1/permissions'].get
$.paths['/api/v1/permissions/_bypermissiontype'].get
$.paths['/api/v1/permissions/role/{roleId}'].get
$.paths['/api/v1/permissions/user/{userId}'].get
$.paths['/api/v1/permissions/{assetId}/_reset'].put
$.paths['/api/v1/permissions/role/{roleId}/asset/{assetId}'].put
$.paths['/api/v1/permissions/user/{userId}/asset/{assetId}'].put
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for dotCMS REST Permissions API
version: 1.0.0
extends: openapi/dotcms-permissions-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-26'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 11
- target: $.paths['/api/v1/permissions/{assetId}'].get
update:
x-apievangelist-phrasing:
intent: Get permissions on an asset
effect: read
questions:
- Which roles have access to this folder or page?
- Can I page through the roles on an asset's permission list?
instructions:
- text: Get permissions for asset {assetId}.
slots:
assetId: path.assetId
- text: Show page {page} of the roles with access to asset {assetId}.
slots:
page: query.page
assetId: path.assetId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/permissions/{assetId}'].put
update:
x-apievangelist-phrasing:
intent: Replace all permissions on an asset
effect: write
questions:
- How do I overwrite every permission on an asset?
- Can I cascade new asset permissions down to its children?
instructions:
- text: Replace permissions on asset {assetId} with {permissions}.
slots:
assetId: path.assetId
permissions: requestBody.permissions
- text: Set asset {assetId} permissions to {permissions} and cascade them.
slots:
assetId: path.assetId
permissions: requestBody.permissions
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/permissions/_bycontent'].get
update:
x-apievangelist-phrasing:
intent: Get permissions on a contentlet
effect: read
questions:
- Who can read, edit or publish this piece of content?
- Can I check only the publish permissions on a contentlet?
instructions:
- text: Get permissions for contentlet {contentletId}.
slots:
contentletId: query.contentletId
- text: Show {type} permissions on content {contentletId}.
slots:
type: query.type
contentletId: query.contentletId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/permissions/_bycontent/_groupbytype'].get
update:
x-apievangelist-phrasing:
intent: Get contentlet permissions grouped by type
effect: read
questions:
- Can I see a contentlet's roles grouped by READ, WRITE and PUBLISH?
- Which roles fall under each permission type for this content?
instructions:
- text: Group the permissions on contentlet {contentletId} by type.
slots:
contentletId: query.contentletId
- text: Show roles per permission type for content {contentletId}.
slots:
contentletId: query.contentletId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/permissions'].get
update:
x-apievangelist-phrasing:
intent: List available permission levels and scopes
effect: read
questions:
- What permission levels and scopes can I assign in dotCMS?
- Which scopes exist for granting roles access?
instructions:
- text: List the available permission levels and scopes.
- text: Show the permission metadata.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/permissions/_bypermissiontype'].get
update:
x-apievangelist-phrasing:
intent: Map permissions by permission type for a user
effect: read
questions:
- Which permissionable types does a user have a given permission on?
- Can I look up permissions filtered by permission type?
instructions:
- text: Get permissions of type {permissiontype} for user {userid}.
slots:
permissiontype: query.permissiontype
userid: query.userid
- text: Map {permission} permissions by type for user {userid}.
slots:
permission: query.permission
userid: query.userid
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/permissions/role/{roleId}'].get
update:
x-apievangelist-phrasing:
intent: Get a role's permissions across sites and folders
effect: read
questions:
- Where does a role have permissions defined?
- Which sites and folders can members of a role access?
instructions:
- text: Get the permissions of role {roleId}.
slots:
roleId: path.roleId
- text: List every host and folder where role {roleId} has permissions.
slots:
roleId: path.roleId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/permissions/user/{userId}'].get
update:
x-apievangelist-phrasing:
intent: Get a user's individual permissions
effect: read
questions:
- What can a specific user access through their own role?
- Can I page through a user's permissions by site and folder?
instructions:
- text: Get permissions for user {userId}.
slots:
userId: path.userId
- text: Show page {page} of user {userId}'s permissions.
slots:
page: query.page
userId: path.userId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/permissions/{assetId}/_reset'].put
update:
x-apievangelist-phrasing:
intent: Reset an asset to inherited permissions
effect: destructive
questions:
- How do I make a folder go back to inheriting its parent's permissions?
- Can I remove all individual permissions from an asset?
instructions:
- text: Reset asset {assetId} to inherited permissions.
slots:
assetId: path.assetId
- text: Remove custom permissions on {assetId} so it inherits again.
slots:
assetId: path.assetId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/permissions/role/{roleId}/asset/{assetId}'].put
update:
x-apievangelist-phrasing:
intent: Set a role's permissions on a site or folder
effect: write
questions:
- How do I give a role access to a specific folder?
- Can I change a role's permissions on a host and cascade them?
instructions:
- text: Set role {roleId} permissions on asset {assetId} to {permissions}.
slots:
roleId: path.roleId
assetId: path.assetId
permissions: requestBody.permissions
- text: Grant role {roleId} {permissions} on folder {assetId} and cascade.
slots:
roleId: path.roleId
permissions: requestBody.permissions
assetId: path.assetId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/permissions/user/{userId}/asset/{assetId}'].put
update:
x-apievangelist-phrasing:
intent: Set a user's permissions on a site or folder
effect: write
questions:
- How do I give one user direct access to a folder?
- Can I assign permissions to a user's individual role on a host?
instructions:
- text: Set user {userId} permissions on asset {assetId} to {permissions}.
slots:
userId: path.userId
assetId: path.assetId
permissions: requestBody.permissions
- text: Grant user {userId} {permissions} on folder {assetId}, cascading {cascade}.
slots:
userId: path.userId
permissions: requestBody.permissions
assetId: path.assetId
cascade: requestBody.cascade
method: generated
generated: '2026-09-26'