dotCMS · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for dotCMS REST Users API

14 actions 14 updates phrasing extends openapi/dotcms-users-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 14

$.info
$.paths['/api/user/getloggedinuser/{params}'].get
$.paths['/api/v1/users/activate/{userId}'].patch
$.paths['/api/v1/users'].put
$.paths['/api/v1/users'].post
$.paths['/api/v1/users/deactivate/{userId}'].patch
$.paths['/api/v1/users/{userId}'].get
$.paths['/api/v1/users/{userId}'].delete
$.paths['/api/v1/users/filter'].get
$.paths['/api/v1/users/loginas'].post
$.paths['/api/v1/users/loginAsData'].get
$.paths['/api/v1/users/logoutas'].put
$.paths['/api/v1/users/current'].get
$.paths['/api/v1/users/current'].put

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 Users API
  version: 1.0.0
extends: openapi/dotcms-users-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: 13
- target: $.paths['/api/user/getloggedinuser/{params}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get the logged-in user (deprecated endpoint)
      effect: read
      questions:
      - Is there an older endpoint that returns the logged-in user's email and role ID?
      - Which deprecated call returns who is logged in?
      instructions:
      - text: Get the logged-in user from the deprecated legacy endpoint using {params}.
        slots:
          params: path.params
      - text: Call the old getloggedinuser route with {params} to get the userId and roleId.
        slots:
          params: path.params
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/users/activate/{userId}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Activate a user account
      effect: write
      questions:
      - How do I re-enable a user who was deactivated?
      - Can I activate a user account by its user ID?
      instructions:
      - text: Activate user {userId}.
        slots:
          userId: path.userId
      - text: Re-enable the account of user {userId} so they can log in again.
        slots:
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/users'].put
  update:
    x-apievangelist-phrasing:
      intent: Update another user's account
      effect: write
      questions:
      - Can an admin change another user's name, email and roles in one request?
      - What permissions do I need to edit someone else's user account?
      instructions:
      - text: Update user {userId} to first name {firstName}, last name {lastName} and email {email}.
        slots:
          userId: requestBody.userId
          firstName: requestBody.firstName
          lastName: requestBody.lastName
          email: requestBody.email
      - text: Change the roles of user {userId} to {roles}, keeping name {firstName} {lastName} and email {email}.
        slots:
          userId: requestBody.userId
          roles: requestBody.roles
          firstName: requestBody.firstName
          lastName: requestBody.lastName
          email: requestBody.email
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/users'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a new user
      effect: write
      questions:
      - How do I add a new editor to dotCMS with a password and roles?
      - Which fields are required to create a user?
      instructions:
      - text: Create user {firstName} {lastName} with email {email} and password {password}.
        slots:
          firstName: requestBody.firstName
          lastName: requestBody.lastName
          email: requestBody.email
          password: requestBody.password
      - text: Add a new user {firstName} {lastName} ({email}) with roles {roles}.
        slots:
          firstName: requestBody.firstName
          lastName: requestBody.lastName
          email: requestBody.email
          roles: requestBody.roles
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/users/deactivate/{userId}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Deactivate a user account
      effect: write
      questions:
      - Can I block a user from logging in without deleting their account?
      - How do I deactivate someone who left the team?
      instructions:
      - text: Deactivate user {userId}.
        slots:
          userId: path.userId
      - text: Disable the account of {userId} but keep their content.
        slots:
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/users/{userId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Look up a user by ID
      effect: read
      questions:
      - What details are stored for a specific user?
      - Can I fetch one user's profile by their user ID?
      instructions:
      - text: Get user {userId}.
        slots:
          userId: path.userId
      - text: Show the profile of user {userId}.
        slots:
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/users/{userId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a user and reassign their content
      effect: destructive
      questions:
      - When I delete a user, what happens to the content they own?
      - Can I delete a user and hand their permissions to someone else?
      instructions:
      - text: Delete user {userId} and reassign their content to {replacementUserId}.
        slots:
          userId: path.userId
          replacementUserId: query.replacementUserId
      - text: Remove the account of {userId}, transferring ownership to user {replacementUserId}.
        slots:
          userId: path.userId
          replacementUserId: query.replacementUserId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/users/filter'].get
  update:
    x-apievangelist-phrasing:
      intent: Search and filter users
      effect: read
      questions:
      - How can I find all users who have a particular role?
      - Can I page through users sorted by name and exclude the anonymous user?
      instructions:
      - text: Search users matching {query}.
        slots:
          query: query.query
      - text: List users with role {roleKey}, {per_page} per page, page {page}.
        slots:
          roleKey: query.roleKey
          per_page: query.per_page
          page: query.page
      - text: Find users sorted by {orderby} in {direction} order.
        slots:
          orderby: query.orderby
          direction: query.direction
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/users/loginas'].post
  update:
    x-apievangelist-phrasing:
      intent: Impersonate another user
      effect: write
      questions:
      - How can an admin log in as another user to reproduce what they see?
      - Do I need to re-enter my password to use Login As?
      instructions:
      - text: Log in as user {userId}, confirming with my password {password}.
        slots:
          userId: requestBody.userId
          password: requestBody.password
      - text: Impersonate {userId} using admin password {password}.
        slots:
          userId: requestBody.userId
          password: requestBody.password
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/users/loginAsData'].get
  update:
    x-apievangelist-phrasing:
      intent: List users I can impersonate
      effect: read
      questions:
      - Which users am I allowed to log in as?
      - Can I search the list of users available for Login As?
      instructions:
      - text: List the users I can impersonate.
      - text: Show Login As candidates matching {filter}, page {page}.
        slots:
          filter: query.filter
          page: query.page
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/users/logoutas'].put
  update:
    x-apievangelist-phrasing:
      intent: Stop impersonating a user
      effect: write
      questions:
      - How do I get back to my own admin session after Login As?
      - Can I end an impersonation session through the API?
      instructions:
      - text: Stop impersonating and return to my admin account.
      - text: End the current Login As session.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/users/current'].get
  update:
    x-apievangelist-phrasing:
      intent: Get the currently authenticated user
      effect: read
      questions:
      - Who am I logged in as right now?
      - Can I get my own user details from the v1 users API?
      instructions:
      - text: Get my current user details.
      - text: Show the account I'm authenticated as.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/users/current'].put
  update:
    x-apievangelist-phrasing:
      intent: Update my own profile or password
      effect: write
      questions:
      - How do I change my own password?
      - Will changing my own email force me to re-authenticate?
      instructions:
      - text: Change my password from {currentPassword} to {newPassword}.
        slots:
          currentPassword: requestBody.currentPassword
          newPassword: requestBody.newPassword
      - text: Update my profile name to {givenName} {surname}.
        slots:
          givenName: requestBody.givenName
          surname: requestBody.surname
      - text: Change my own email to {email}.
        slots:
          email: requestBody.email
      method: generated
      generated: '2026-09-26'