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.
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
# 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'