dotCMS · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for dotCMS REST Roles API

20 actions 20 updates phrasing extends openapi/dotcms-roles-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.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 20 · first 16 shown; the file carries all of them

$.info
$.paths['/api/role/loadbyid/{params}'].get
$.paths['/api/role/loadbyname/{params}'].get
$.paths['/api/role/loadchildren/{params}'].get
$.paths['/api/v1/roles'].get
$.paths['/api/v1/roles'].post
$.paths['/api/v1/roles/{roleid}/users/{userId}'].post
$.paths['/api/v1/roles/checkuserroles/userid/{userId}/roleids/{roleIds}'].get
$.paths['/api/v1/roles/{roleid}'].get
$.paths['/api/v1/roles/{roleid}'].put
$.paths['/api/v1/roles/{roleid}'].delete
$.paths['/api/v1/roles/layouts'].get
$.paths['/api/v1/roles/layouts'].post
$.paths['/api/v1/roles/layouts'].delete
$.paths['/api/v1/roles/{roleId}/layouts'].get
$.paths['/api/v1/roles/users/{userIdOrEmail}'].get

OpenAPI Overlay

Raw ↑
# 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 Roles API
  version: 1.0.0
extends: openapi/dotcms-roles-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: 19
- target: $.paths['/api/role/loadbyid/{params}'].get
  update:
    x-apievangelist-phrasing:
      intent: Load full role details (legacy endpoint)
      effect: read
      questions:
      - How did the old admin UI load a role's full properties by id?
      - Is there a deprecated endpoint that returns every property of a role?
      instructions:
      - text: Load role details with the deprecated loadbyid endpoint using {params}.
        slots:
          params: path.params
      - text: Fetch the role via the legacy loadbyid call for {params}.
        slots:
          params: path.params
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/role/loadbyname/{params}'].get
  update:
    x-apievangelist-phrasing:
      intent: Filter the role tree by name (legacy endpoint)
      effect: read
      questions:
      - Can I get a role tree trimmed to leaves whose name contains some text on the old API?
      - Which deprecated call filters the role tree by name?
      instructions:
      - text: Filter the role tree by name using the legacy loadbyname call with {params}.
        slots:
          params: path.params
      - text: Get the deprecated name-filtered role tree for {params}.
        slots:
          params: path.params
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/role/loadchildren/{params}'].get
  update:
    x-apievangelist-phrasing:
      intent: Lazy-load a role's children (legacy endpoint)
      effect: read
      questions:
      - How does the deprecated API return the first-level children of a role?
      - What does the legacy loadchildren call return when no role id is given?
      instructions:
      - text: Load first-level child roles with the legacy loadchildren call for {params}.
        slots:
          params: path.params
      - text: Expand the old role tree node {params} one level down.
        slots:
          params: path.params
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles'].get
  update:
    x-apievangelist-phrasing:
      intent: List the top-level roles
      effect: read
      questions:
      - What are the root roles in my dotCMS role hierarchy?
      - Can I get the root roles with their children included?
      instructions:
      - text: List the root roles.
      - text: Show root roles with children loaded set to {loadChildrenRoles}.
        slots:
          loadChildrenRoles: query.loadChildrenRoles
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a new role
      effect: write
      questions:
      - How do I create a new role under an existing parent role?
      - Can I let a new role edit users or permissions when I create it?
      instructions:
      - text: Create a role named {roleName}.
        slots:
          roleName: requestBody.roleName
      - text: Create role {roleName} under parent {parentRoleId} with key {roleKey}.
        slots:
          roleName: requestBody.roleName
          parentRoleId: requestBody.parentRoleId
          roleKey: requestBody.roleKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles/{roleid}/users/{userId}'].post
  update:
    x-apievangelist-phrasing:
      intent: Grant a role to a user
      effect: write
      questions:
      - How do I give a user a role directly?
      - What happens if I grant a role the user already has?
      instructions:
      - text: Grant role {roleid} to user {userId}.
        slots:
          roleid: path.roleid
          userId: path.userId
      - text: Add user {userId} as a direct member of role {roleid}.
        slots:
          userId: path.userId
          roleid: path.roleid
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles/checkuserroles/userid/{userId}/roleids/{roleIds}'].get
  update:
    x-apievangelist-phrasing:
      intent: Check if a user holds any of given roles
      effect: read
      questions:
      - Does this user belong to at least one of these roles?
      - How can I verify a user's role membership against a list of role ids?
      instructions:
      - text: Check whether user {userId} has any of the roles {roleIds}.
        slots:
          userId: path.userId
          roleIds: path.roleIds
      - text: Verify {userId} is assigned one of {roleIds}.
        slots:
          userId: path.userId
          roleIds: path.roleIds
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles/{roleid}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a role by its id
      effect: read
      questions:
      - How do I look up a single role by id on the v1 API?
      - Can I include the child roles when fetching one role?
      instructions:
      - text: Get role {roleid}.
        slots:
          roleid: path.roleid
      - text: Fetch role {roleid} with its child roles set to {loadChildrenRoles}.
        slots:
          roleid: path.roleid
          loadChildrenRoles: query.loadChildrenRoles
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles/{roleid}'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace an existing role's settings
      effect: write
      questions:
      - How do I rename a role or move it under a different parent?
      - Does updating a role overwrite fields I leave out of the request?
      instructions:
      - text: Rename role {roleid} to {roleName}.
        slots:
          roleid: path.roleid
          roleName: requestBody.roleName
      - text: Update role {roleid} as {roleName} and move it under parent {parentRoleId}.
        slots:
          roleid: path.roleid
          roleName: requestBody.roleName
          parentRoleId: requestBody.parentRoleId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles/{roleid}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a role and its grants
      effect: destructive
      questions:
      - What happens to users and permissions when I delete a role?
      - Can a deleted role be restored?
      instructions:
      - text: Delete role {roleid}.
        slots:
          roleid: path.roleid
      - text: Remove role {roleid} along with its permissions and user memberships.
        slots:
          roleid: path.roleid
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles/layouts'].get
  update:
    x-apievangelist-phrasing:
      intent: List all tool-group layouts
      effect: read
      questions:
      - Which tool groups (layouts) exist in the backend?
      - What layouts could I assign to a role?
      instructions:
      - text: List every layout in the system.
      - text: Show all tool groups available for roles.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles/layouts'].post
  update:
    x-apievangelist-phrasing:
      intent: Assign layouts to a role
      effect: write
      questions:
      - How do I give a role access to certain backend tool groups?
      - Can I add several layouts to a role in one call?
      instructions:
      - text: Assign layouts {layoutIds} to role {roleId}.
        slots:
          layoutIds: requestBody.layoutIds
          roleId: requestBody.roleId
      - text: Give role {roleId} the tool groups {layoutIds}.
        slots:
          roleId: requestBody.roleId
          layoutIds: requestBody.layoutIds
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles/layouts'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove layouts from a role
      effect: destructive
      questions:
      - How do I take tool groups away from a role?
      - Can I unassign several layouts from a role at once?
      instructions:
      - text: Remove layouts {layoutIds} from role {roleId}.
        slots:
          layoutIds: requestBody.layoutIds
          roleId: requestBody.roleId
      - text: Revoke tool groups {layoutIds} from role {roleId}.
        slots:
          layoutIds: requestBody.layoutIds
          roleId: requestBody.roleId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles/{roleId}/layouts'].get
  update:
    x-apievangelist-phrasing:
      intent: List the layouts assigned to a role
      effect: read
      questions:
      - Which tool groups does this role currently have?
      - What backend layouts are attached to a given role?
      instructions:
      - text: Show the layouts assigned to role {roleId}.
        slots:
          roleId: path.roleId
      - text: List tool groups for role {roleId}.
        slots:
          roleId: path.roleId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles/users/{userIdOrEmail}'].get
  update:
    x-apievangelist-phrasing:
      intent: List the roles a user holds
      effect: read
      questions:
      - Which roles does a given user have?
      - Can I look up a user's roles by email address?
      instructions:
      - text: List the roles for user {userIdOrEmail}.
        slots:
          userIdOrEmail: path.userIdOrEmail
      - text: Show what roles {userIdOrEmail} is in.
        slots:
          userIdOrEmail: path.userIdOrEmail
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles/{roleid}/rolehierarchyanduserroles'].get
  update:
    x-apievangelist-phrasing:
      intent: Load a role's hierarchy and user roles
      effect: read
      questions:
      - How do I see a role's hierarchy together with the user roles under it?
      - Can I filter a role's hierarchy and user roles by name?
      instructions:
      - text: Load the role hierarchy and user roles for {roleid}.
        slots:
          roleid: path.roleid
      - text: Show hierarchy and user roles under {roleid} filtered by {name}.
        slots:
          roleid: path.roleid
          name: query.name
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles/{roleid}/users'].get
  update:
    x-apievangelist-phrasing:
      intent: List users directly granted a role
      effect: read
      questions:
      - Who are the users directly assigned to this role?
      - Does the role member list include users who inherit it through the hierarchy?
      instructions:
      - text: List the users directly granted role {roleid}.
        slots:
          roleid: path.roleid
      - text: Show page {page} of role {roleid} members matching {filter}.
        slots:
          page: query.page
          roleid: path.roleid
          filter: query.filter
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles/{roleid}/users'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove users from a role in bulk
      effect: destructive
      questions:
      - How do I take several users out of a role at once?
      - What happens if some of the users in a bulk role removal aren't members?
      instructions:
      - text: Remove users {userIds} from role {roleid}.
        slots:
          userIds: requestBody.userIds
          roleid: path.roleid
      - text: Revoke the direct membership of {userIds} in role {roleid}.
        slots:
          userIds: requestBody.userIds
          roleid: path.roleid
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/roles/_search'].get
  update:
    x-apievangelist-phrasing:
      intent: Search roles by name, key or id
      effect: read
      questions:
      - How do I search for roles whose name matches some text?
      - Can a role search include workflow roles and user roles?
      instructions:
      - text: Search roles named like {searchName}.
        slots:
          searchName: query.searchName
      - text: Find roles with key {searchKey}, including workflow roles set to {includeWorkflowRoles}.
        slots:
          searchKey: query.searchKey
          includeWorkflowRoles: query.includeWorkflowRoles
      method: generated
      generated: '2026-09-26'