Harness · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Harness User API
21 actions
21 updates
phrasing
extends
openapi/harness-user-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Harness's API. It is a proposal applied on top of the contract, not a document Harness publishes.
What the actions change
x-apievangelist-phrasing
Targets 21 · first 16 shown; the file carries all of them
$.info
$.paths['/ng/api/user/add-user-to-groups/{userId}'].put
$.paths['/ng/api/user/users'].post
$.paths['/ng/api/user/password'].put
$.paths['/ng/api/user/last-admin'].get
$.paths['/ng/api/user/disable-two-factor-auth'].put
$.paths['/ng/api/user/endImpersonation/{userId}'].post
$.paths['/ng/api/user/aggregate/{userId}'].get
$.paths['/ng/api/user/aggregate'].post
$.paths['/ng/api/user/two-factor-auth/{authMechanism}'].get
$.paths['/ng/api/user/currentUser'].get
$.paths['/ng/api/user/batch'].post
$.paths['/ng/api/user/impersonate/{userId}'].post
$.paths['/ng/api/user/{userId}'].put
$.paths['/ng/api/user/{userId}'].delete
$.paths['/ng/api/user/reset-two-factor-auth/{userId}'].get
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 Harness User API
version: 1.0.0
extends: openapi/harness-user-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: 20
- target: $.paths['/ng/api/user/add-user-to-groups/{userId}'].put
update:
x-apievangelist-phrasing:
intent: Set which user groups a user belongs to
effect: write
questions:
- How do I put an existing Harness user into a set of user groups?
- Does adding a user to groups remove them from their other groups?
instructions:
- text: Put user {userId} into user groups {userGroupIdsToAdd}, replacing their other non-managed groups.
slots:
userId: path.userId
userGroupIdsToAdd: requestBody.userGroupIdsToAdd
- text: Reassign user {userId}'s group membership in project {projectIdentifier} to {userGroupIdsToAdd}.
slots:
userId: path.userId
projectIdentifier: query.projectIdentifier
userGroupIdsToAdd: requestBody.userGroupIdsToAdd
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/users'].post
update:
x-apievangelist-phrasing:
intent: Invite users by email to a scope
effect: write
questions:
- Can I invite several people by email to a Harness project at once?
- Is it possible to give invited users role bindings or user groups as they're added?
instructions:
- text: Invite {emails} to my account.
slots:
emails: requestBody.emails
- text: Add {emails} to project {projectIdentifier} and place them in user groups {userGroups}.
slots:
emails: requestBody.emails
projectIdentifier: query.projectIdentifier
userGroups: requestBody.userGroups
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/password'].put
update:
x-apievangelist-phrasing:
intent: Change my password
effect: write
questions:
- How do I change my own login password?
- Do I need to supply my current password to set a new one?
instructions:
- text: Change my password from {currentPassword} to {newPassword}.
slots:
currentPassword: requestBody.currentPassword
newPassword: requestBody.newPassword
- text: Update my login password to {newPassword}.
slots:
newPassword: requestBody.newPassword
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/last-admin'].get
update:
x-apievangelist-phrasing:
intent: Check whether a user is the last admin
effect: read
questions:
- Is this user the only admin left in the account?
- Would removing someone leave a project with no administrator?
instructions:
- text: Check whether user {userId} is the last admin in my account.
slots:
userId: query.userId
- text: Tell me if {userId} is the only remaining admin of project {projectIdentifier}.
slots:
userId: query.userId
projectIdentifier: query.projectIdentifier
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/disable-two-factor-auth'].put
update:
x-apievangelist-phrasing:
intent: Turn off two-factor authentication for me
effect: write
questions:
- How do I switch off two-factor authentication on my Harness login?
- Can I disable 2FA for my own user in an account?
instructions:
- text: Disable two-factor authentication for my user in account {accountIdentifier}.
slots:
accountIdentifier: query.accountIdentifier
- text: Turn off my 2FA.
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/endImpersonation/{userId}'].post
update:
x-apievangelist-phrasing:
intent: End an impersonation session
effect: write
questions:
- How do I stop impersonating another user?
- Can an admin end the impersonation session they started?
instructions:
- text: End my impersonation session of user {userId}.
slots:
userId: path.userId
- text: Stop impersonating {userId} and return to my own identity.
slots:
userId: path.userId
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/aggregate/{userId}'].get
update:
x-apievangelist-phrasing:
intent: Get a user's details and role assignments
effect: read
questions:
- What roles has a specific user been assigned in a project?
- Where can I see one user's metadata together with their role assignments?
instructions:
- text: Show user {userId}'s details and role assignments.
slots:
userId: path.userId
- text: Get the roles assigned to user {userId} in org {orgIdentifier}.
slots:
userId: path.userId
orgIdentifier: query.orgIdentifier
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/aggregate'].post
update:
x-apievangelist-phrasing:
intent: List users with their role assignments
effect: read
questions:
- Who has access to this project, and with which roles?
- Can I filter the people in a scope by role or resource group?
instructions:
- text: List everyone with access to project {projectIdentifier} along with their role assignments.
slots:
projectIdentifier: query.projectIdentifier
- text: Show users who hold role {roleIdentifiers}, including their role assignments.
slots:
roleIdentifiers: requestBody.roleIdentifiers
- text: Search users with role assignments for {searchTerm}.
slots:
searchTerm: query.searchTerm
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/two-factor-auth/{authMechanism}'].get
update:
x-apievangelist-phrasing:
intent: Get my two-factor auth setup details
effect: read
questions:
- Where do I get the settings needed to set up TOTP two-factor auth for my login?
- What does the two-factor setup look like for a given auth mechanism?
instructions:
- text: Get my two-factor authentication settings for mechanism {authMechanism}.
slots:
authMechanism: path.authMechanism
- text: Fetch the {authMechanism} 2FA setup info for my user.
slots:
authMechanism: path.authMechanism
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/currentUser'].get
update:
x-apievangelist-phrasing:
intent: Get the logged-in user's profile
effect: read
questions:
- Who am I logged in as in Harness?
- What account details does the API return for the current user?
instructions:
- text: Show my own user profile.
- text: Get the currently logged-in user's info for account {accountIdentifier}.
slots:
accountIdentifier: query.accountIdentifier
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/batch'].post
update:
x-apievangelist-phrasing:
intent: Look up users in a scope by email or id
effect: read
questions:
- Can I look up several users at once by their email addresses?
- Which users in an org match a given search term?
instructions:
- text: Look up the users with emails {emails}.
slots:
emails: requestBody.emails
- text: Get the basic user records for ids {identifiers}.
slots:
identifiers: requestBody.identifiers
- text: Find users in org {orgIdentifier} matching {searchTerm}.
slots:
orgIdentifier: query.orgIdentifier
searchTerm: requestBody.searchTerm
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/impersonate/{userId}'].post
update:
x-apievangelist-phrasing:
intent: Start impersonating a user
effect: write
questions:
- Can an admin sign in as another user to troubleshoot what they see?
- Do I have to give a reason when impersonating someone?
instructions:
- text: Impersonate user {userId} because {reasonOfImpersonation}.
slots:
userId: path.userId
reasonOfImpersonation: requestBody.reasonOfImpersonation
- text: Start an impersonation session as {userId} with reason {reasonOfImpersonation}.
slots:
userId: path.userId
reasonOfImpersonation: requestBody.reasonOfImpersonation
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/{userId}'].put
update:
x-apievangelist-phrasing:
intent: Update another user's name or email
effect: write
questions:
- Can I rename a user or change their email by their user id?
- Which profile fields of a specific user can be edited?
instructions:
- text: Change user {userId}'s email to {email}.
slots:
userId: path.userId
email: requestBody.email
- text: Set user {userId}'s given name to {givenName} and family name to {familyName}.
slots:
userId: path.userId
givenName: requestBody.givenName
familyName: requestBody.familyName
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/{userId}'].delete
update:
x-apievangelist-phrasing:
intent: Remove a user from a scope
effect: destructive
questions:
- How do I take someone off a Harness project?
- Can I remove a collaborator from an org without deleting their account?
instructions:
- text: Remove user {userId} from project {projectIdentifier}.
slots:
userId: path.userId
projectIdentifier: query.projectIdentifier
- text: Revoke {userId}'s access to my account.
slots:
userId: path.userId
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/reset-two-factor-auth/{userId}'].get
update:
x-apievangelist-phrasing:
intent: Reset a user's two-factor authentication
effect: write
questions:
- What can I do when a user has lost their 2FA device?
- Can an admin reset two-factor for someone else?
instructions:
- text: Reset two-factor authentication for user {userId}.
slots:
userId: path.userId
- text: Clear {userId}'s 2FA so they can enroll again.
slots:
userId: path.userId
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/unlock-user/{userId}'].put
update:
x-apievangelist-phrasing:
intent: Unlock a locked-out user
effect: write
questions:
- How do I unlock a user who got locked out?
- Can I unlock someone within a specific org or project?
instructions:
- text: Unlock user {userId}.
slots:
userId: path.userId
- text: Unlock {userId} in org {orgIdentifier}.
slots:
userId: path.userId
orgIdentifier: query.orgIdentifier
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user/enable-two-factor-auth'].put
update:
x-apievangelist-phrasing:
intent: Turn on two-factor authentication
effect: write
questions:
- Can I enable TOTP two-factor authentication for a user in an account?
- What secret key does enabling 2FA expect?
instructions:
- text: Enable two-factor auth for {email} using mechanism {mechanism}.
slots:
email: requestBody.email
mechanism: requestBody.mechanism
- text: Turn on 2FA for user {userId} with TOTP secret {totpSecretKey}.
slots:
userId: requestBody.userId
totpSecretKey: requestBody.totpSecretKey
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/user'].put
update:
x-apievangelist-phrasing:
intent: Update my user profile record
effect: write
questions:
- How do I change my own display name or preferences?
- Can I set my default account on my user record?
instructions:
- text: Update my display name to {name}.
slots:
name: requestBody.name
- text: Set my default account to {defaultAccountId}.
slots:
defaultAccountId: requestBody.defaultAccountId
method: generated
generated: '2026-09-26'
- target: $.paths['/code/api/v1/user/favorite'].post
update:
x-apievangelist-phrasing:
intent: Mark a code resource as a favorite
effect: write
questions:
- Can I star a repository in Harness Code?
- Which resource types can be added to my favorites?
instructions:
- text: Add {resource_id} to my favorites.
slots:
resource_id: requestBody.resource_id
- text: Favorite {resource_type} {resource_id}.
slots:
resource_type: requestBody.resource_type
resource_id: requestBody.resource_id
method: generated
generated: '2026-09-26'
- target: $.paths['/code/api/v1/user/favorite/{resource_id}'].delete
update:
x-apievangelist-phrasing:
intent: Unfavorite a code resource
effect: destructive
questions:
- How do I unstar a repo I favorited?
- Can I remove something from my favorites list?
instructions:
- text: Remove {resource_id} from my favorites.
slots:
resource_id: path.resource_id
- text: Unfavorite {resource_type} {resource_id}.
slots:
resource_type: query.resource_type
resource_id: path.resource_id
method: generated
generated: '2026-09-26'