Appwrite · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Appwrite Users API

46 actions 46 updates phrasing extends openapi/appwrite-users-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Appwrite's API. It is a proposal applied on top of the contract, not a document Appwrite publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

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

$.info
$.paths['/users'].get
$.paths['/users'].post
$.paths['/users/argon2'].post
$.paths['/users/bcrypt'].post
$.paths['/users/identities'].get
$.paths['/users/identities/{identityId}'].delete
$.paths['/users/md5'].post
$.paths['/users/phpass'].post
$.paths['/users/scrypt'].post
$.paths['/users/scrypt-modified'].post
$.paths['/users/sha'].post
$.paths['/users/usage'].get
$.paths['/users/{userId}'].get
$.paths['/users/{userId}'].delete
$.paths['/users/{userId}/email'].patch

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 Appwrite Users API
  version: 1.0.0
extends: openapi/appwrite-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: 45
- target: $.paths['/users'].get
  update:
    x-apievangelist-phrasing:
      intent: List the project's users
      effect: read
      questions:
      - Who are all the users registered in my project?
      - Can I search users by name or email and filter with queries?
      instructions:
      - text: List every user in this project.
      - text: Search project users for {search}.
        slots:
          search: query.search
      - text: List users matching {queries}.
        slots:
          queries: query.queries
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a user
      effect: write
      questions:
      - How do I add a new user to my project from the server side?
      - Can I create a user with only a phone number and no email?
      instructions:
      - text: Create user {userId} with email {email} and password {password}.
        slots:
          userId: requestBody.userId
          email: requestBody.email
          password: requestBody.password
      - text: Add user {userId} named {name} with phone {phone}.
        slots:
          userId: requestBody.userId
          name: requestBody.name
          phone: requestBody.phone
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/argon2'].post
  update:
    x-apievangelist-phrasing:
      intent: Import a user with an Argon2-hashed password
      effect: write
      questions:
      - How do I import a user whose password is already hashed with Argon2?
      - Can migrated users keep their Argon2 password hashes so they don't need to reset?
      instructions:
      - text: Create user {userId} with email {email} and Argon2 hash {password}.
        slots:
          userId: requestBody.userId
          email: requestBody.email
          password: requestBody.password
      - text: Import {name} as user {userId}, email {email}, Argon2 password hash {password}.
        slots:
          name: requestBody.name
          userId: requestBody.userId
          email: requestBody.email
          password: requestBody.password
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/bcrypt'].post
  update:
    x-apievangelist-phrasing:
      intent: Import a user with a bcrypt-hashed password
      effect: write
      questions:
      - Can I bring over users whose passwords are stored as bcrypt hashes?
      - How do I create a user from an existing bcrypt password hash?
      instructions:
      - text: Create user {userId} with email {email} and bcrypt hash {password}.
        slots:
          userId: requestBody.userId
          email: requestBody.email
          password: requestBody.password
      - text: Import {name} as {userId} ({email}) keeping the bcrypt password {password}.
        slots:
          name: requestBody.name
          userId: requestBody.userId
          email: requestBody.email
          password: requestBody.password
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/identities'].get
  update:
    x-apievangelist-phrasing:
      intent: List OAuth identities across all users
      effect: read
      questions:
      - Which OAuth identities are linked to users in my project?
      - Can I search linked login identities across every user?
      instructions:
      - text: List all linked user identities.
      - text: Search user identities for {search}.
        slots:
          search: query.search
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/identities/{identityId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Unlink an OAuth identity
      effect: destructive
      questions:
      - How do I disconnect a social login identity from a user?
      - Can I delete one linked identity without deleting the user?
      instructions:
      - text: Delete identity {identityId}.
        slots:
          identityId: path.identityId
      - text: Unlink the OAuth identity {identityId} from its user.
        slots:
          identityId: path.identityId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/md5'].post
  update:
    x-apievangelist-phrasing:
      intent: Import a user with an MD5-hashed password
      effect: write
      questions:
      - How do I import legacy users whose passwords are MD5 hashes?
      - Can I create a user from an MD5 password hash?
      instructions:
      - text: Create user {userId} with email {email} and MD5 hash {password}.
        slots:
          userId: requestBody.userId
          email: requestBody.email
          password: requestBody.password
      - text: Import {name} as {userId} ({email}) with MD5 password {password}.
        slots:
          name: requestBody.name
          userId: requestBody.userId
          email: requestBody.email
          password: requestBody.password
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/phpass'].post
  update:
    x-apievangelist-phrasing:
      intent: Import a user with a PHPass-hashed password
      effect: write
      questions:
      - Can I migrate users from a PHP app whose passwords are PHPass hashes?
      - How do I create a user from a PHPass password hash?
      instructions:
      - text: Create user {userId} with email {email} and PHPass hash {password}.
        slots:
          userId: requestBody.userId
          email: requestBody.email
          password: requestBody.password
      - text: Import {name} as {userId} ({email}) keeping PHPass password {password}.
        slots:
          name: requestBody.name
          userId: requestBody.userId
          email: requestBody.email
          password: requestBody.password
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/scrypt'].post
  update:
    x-apievangelist-phrasing:
      intent: Import a user with a Scrypt-hashed password
      effect: write
      questions:
      - How do I import a user whose password is hashed with standard Scrypt?
      - Which Scrypt parameters (salt, CPU, memory, parallel, length) must I pass when importing a user?
      instructions:
      - text: Create {userId} ({email}), Scrypt hash {password}, salt {passwordSalt}, cpu {passwordCpu}, mem {passwordMemory}, par {passwordParallel}, len {passwordLength}.
        slots:
          userId: requestBody.userId
          email: requestBody.email
          password: requestBody.password
          passwordSalt: requestBody.passwordSalt
          passwordCpu: requestBody.passwordCpu
          passwordMemory: requestBody.passwordMemory
          passwordParallel: requestBody.passwordParallel
          passwordLength: requestBody.passwordLength
      - text: 'Import Scrypt user {userId}: {email}, hash {password}, salt {passwordSalt}, N {passwordCpu}, r {passwordMemory}, p {passwordParallel}, len {passwordLength}.'
        slots:
          userId: requestBody.userId
          email: requestBody.email
          password: requestBody.password
          passwordSalt: requestBody.passwordSalt
          passwordCpu: requestBody.passwordCpu
          passwordMemory: requestBody.passwordMemory
          passwordParallel: requestBody.passwordParallel
          passwordLength: requestBody.passwordLength
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/scrypt-modified'].post
  update:
    x-apievangelist-phrasing:
      intent: Import a user with a Scrypt Modified password hash
      effect: write
      questions:
      - Can I import users exported with the Scrypt Modified hash variant that uses a signer key?
      - What salt separator and signer key do I need for a Scrypt Modified user import?
      instructions:
      - text: Create user {userId} ({email}) with Scrypt Modified hash {password}, salt {passwordSalt}, separator {passwordSaltSeparator}, signer key {passwordSignerKey}.
        slots:
          userId: requestBody.userId
          email: requestBody.email
          password: requestBody.password
          passwordSalt: requestBody.passwordSalt
          passwordSaltSeparator: requestBody.passwordSaltSeparator
          passwordSignerKey: requestBody.passwordSignerKey
      - text: Import {name} as {userId}, {email}, modified-scrypt {password} with {passwordSalt}/{passwordSaltSeparator}/{passwordSignerKey}.
        slots:
          name: requestBody.name
          userId: requestBody.userId
          email: requestBody.email
          password: requestBody.password
          passwordSalt: requestBody.passwordSalt
          passwordSaltSeparator: requestBody.passwordSaltSeparator
          passwordSignerKey: requestBody.passwordSignerKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/sha'].post
  update:
    x-apievangelist-phrasing:
      intent: Import a user with a SHA-hashed password
      effect: write
      questions:
      - How do I import a user whose password is a SHA hash?
      - Can I specify which SHA version the imported password hash uses?
      instructions:
      - text: Create user {userId} with email {email} and SHA hash {password}.
        slots:
          userId: requestBody.userId
          email: requestBody.email
          password: requestBody.password
      - text: Import {userId} ({email}) with {passwordVersion} password hash {password}.
        slots:
          userId: requestBody.userId
          email: requestBody.email
          passwordVersion: requestBody.passwordVersion
          password: requestBody.password
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/usage'].get
  update:
    x-apievangelist-phrasing:
      intent: Get user and session usage stats
      effect: read
      questions:
      - How many users and sessions does my project have, and how has that grown?
      - Can I see user sign-up trends over the last 30 days?
      instructions:
      - text: Show user usage stats for the last {range}.
        slots:
          range: query.range
      - text: Report total users and sessions for this project.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a user
      effect: read
      questions:
      - How do I look up one user's profile by their ID?
      - What does a single user record include, like email and verification status?
      instructions:
      - text: Show user {userId}.
        slots:
          userId: path.userId
      - text: Fetch the account details for user {userId}.
        slots:
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a user
      effect: destructive
      questions:
      - What happens to a user's ID after I delete them — can it be reused?
      - Once a user is deleted, do their documents and files get removed too?
      instructions:
      - text: Delete user {userId}.
        slots:
          userId: path.userId
      - text: Permanently remove user {userId} and release their ID.
        slots:
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/email'].patch
  update:
    x-apievangelist-phrasing:
      intent: Change a user's email
      effect: write
      questions:
      - How do I change the email address on a user's account as an admin?
      - Can I update a user's email from the server?
      instructions:
      - text: Change user {userId}'s email to {email}.
        slots:
          userId: path.userId
          email: requestBody.email
      - text: Set the email address of {userId} to {email}.
        slots:
          userId: path.userId
          email: requestBody.email
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/impersonator'].patch
  update:
    x-apievangelist-phrasing:
      intent: Allow or block a user impersonating others
      effect: write
      questions:
      - How do I let a support agent act as another user for debugging?
      - When a user impersonates someone, whose name shows in the audit logs?
      instructions:
      - text: Set impersonation capability for user {userId} to {impersonator}.
        slots:
          userId: path.userId
          impersonator: requestBody.impersonator
      - text: Turn impersonator access {impersonator} for {userId}.
        slots:
          impersonator: requestBody.impersonator
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/jwts'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a JWT for a user
      effect: write
      questions:
      - How can my server get a JWT to call the API on behalf of a user?
      - Can I set how long a user's JWT stays valid, or tie it to a specific session?
      instructions:
      - text: Create a JWT for user {userId}.
        slots:
          userId: path.userId
      - text: Issue a JWT for {userId} tied to session {sessionId} lasting {duration} seconds.
        slots:
          userId: path.userId
          sessionId: requestBody.sessionId
          duration: requestBody.duration
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/labels'].put
  update:
    x-apievangelist-phrasing:
      intent: Set a user's access labels
      effect: write
      questions:
      - How do I tag a user with labels like admin or premium to grant access to resources?
      - Does setting labels replace a user's existing labels?
      instructions:
      - text: Set user {userId}'s labels to {labels}.
        slots:
          userId: path.userId
          labels: requestBody.labels
      - text: Replace the labels on {userId} with {labels}.
        slots:
          userId: path.userId
          labels: requestBody.labels
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/logs'].get
  update:
    x-apievangelist-phrasing:
      intent: List a user's activity logs
      effect: read
      questions:
      - What has a particular user been doing recently in my project?
      - Can I see a user's login and activity history?
      instructions:
      - text: Show the activity logs for user {userId}.
        slots:
          userId: path.userId
      - text: List logs for {userId} matching {queries}.
        slots:
          userId: path.userId
          queries: query.queries
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/memberships'].get
  update:
    x-apievangelist-phrasing:
      intent: List the teams a user belongs to
      effect: read
      questions:
      - Which teams is a given user a member of?
      - Can I search a user's team memberships?
      instructions:
      - text: List team memberships for user {userId}.
        slots:
          userId: path.userId
      - text: Search {userId}'s memberships for {search}.
        slots:
          userId: path.userId
          search: query.search
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/mfa'].patch
  update:
    x-apievangelist-phrasing:
      intent: Turn MFA on or off for a user
      effect: write
      questions:
      - How do I enforce multi-factor authentication on a specific user's account?
      - Can an admin disable MFA for a user who is locked out?
      instructions:
      - text: Set MFA to {mfa} for user {userId}.
        slots:
          mfa: requestBody.mfa
          userId: path.userId
      - text: Enable or disable two-factor on {userId} with value {mfa}.
        slots:
          userId: path.userId
          mfa: requestBody.mfa
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/mfa/authenticators/{type}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove a user's authenticator app
      effect: destructive
      questions:
      - A user lost their phone; how do I remove their TOTP authenticator app?
      - Can I delete one MFA authenticator type from a user's account?
      instructions:
      - text: Delete the {type} authenticator for user {userId}.
        slots:
          type: path.type
          userId: path.userId
      - text: Remove authenticator app {type} from {userId}.
        slots:
          type: path.type
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/mfa/challenges/{challengeId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a user's custom MFA challenge code
      effect: read
      questions:
      - How do I retrieve an MFA challenge code so I can deliver it through my own SMS or email channel?
      - Can my server read the code of a pending MFA challenge?
      instructions:
      - text: Get MFA challenge {challengeId} for user {userId}.
        slots:
          challengeId: path.challengeId
          userId: path.userId
      - text: Fetch the code for challenge {challengeId} of {userId} so I can send it myself.
        slots:
          challengeId: path.challengeId
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/mfa/factors'].get
  update:
    x-apievangelist-phrasing:
      intent: List a user's available MFA factors
      effect: read
      questions:
      - Which second factors (TOTP, email, phone) can a user use for MFA?
      - Has a user set up an authenticator app yet?
      instructions:
      - text: List the MFA factors for user {userId}.
        slots:
          userId: path.userId
      - text: Show which two-factor methods {userId} has available.
        slots:
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/mfa/recovery-codes'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a user's MFA recovery codes
      effect: read
      questions:
      - How can an admin view a user's existing MFA backup codes?
      - Do recovery codes need to be generated before I can read them?
      instructions:
      - text: Show the MFA recovery codes for user {userId}.
        slots:
          userId: path.userId
      - text: Read {userId}'s current backup codes.
        slots:
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/mfa/recovery-codes'].put
  update:
    x-apievangelist-phrasing:
      intent: Regenerate a user's MFA recovery codes
      effect: write
      questions:
      - A user's backup codes leaked; how do I issue them a fresh set?
      - Does regenerating recovery codes invalidate the old ones?
      instructions:
      - text: Regenerate MFA recovery codes for user {userId}.
        slots:
          userId: path.userId
      - text: Replace {userId}'s existing backup codes with a new set.
        slots:
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/mfa/recovery-codes'].patch
  update:
    x-apievangelist-phrasing:
      intent: Generate a user's first MFA recovery codes
      effect: write
      questions:
      - How do I generate MFA recovery codes for a user for the first time?
      - Can recovery codes be used as a verification type during an MFA challenge?
      instructions:
      - text: Create initial MFA recovery codes for user {userId}.
        slots:
          userId: path.userId
      - text: Generate backup codes for {userId}, who has none yet.
        slots:
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/name'].patch
  update:
    x-apievangelist-phrasing:
      intent: Change a user's name
      effect: write
      questions:
      - How do I update a user's display name from the server?
      - Can I fix a typo in someone's name on their account?
      instructions:
      - text: Rename user {userId} to {name}.
        slots:
          userId: path.userId
          name: requestBody.name
      - text: Set the display name of {userId} to {name}.
        slots:
          userId: path.userId
          name: requestBody.name
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/password'].patch
  update:
    x-apievangelist-phrasing:
      intent: Reset a user's password
      effect: write
      questions:
      - How can an admin set a new password for a user?
      - Can I force-change a user's password without them knowing the old one?
      instructions:
      - text: Set user {userId}'s password to {password}.
        slots:
          userId: path.userId
          password: requestBody.password
      - text: Reset the password for {userId} to {password}.
        slots:
          userId: path.userId
          password: requestBody.password
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/phone'].patch
  update:
    x-apievangelist-phrasing:
      intent: Change a user's phone number
      effect: write
      questions:
      - How do I update the phone number on a user's account?
      - Can I change a user's phone from the server side?
      instructions:
      - text: Change user {userId}'s phone number to {number}.
        slots:
          userId: path.userId
          number: requestBody.number
      - text: Set {userId}'s phone to {number}.
        slots:
          userId: path.userId
          number: requestBody.number
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/prefs'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a user's preferences
      effect: read
      questions:
      - What preferences, like theme or language, has a user saved?
      - How do I read the custom prefs object stored on a user?
      instructions:
      - text: Show preferences for user {userId}.
        slots:
          userId: path.userId
      - text: Read the stored prefs of {userId}.
        slots:
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/prefs'].patch
  update:
    x-apievangelist-phrasing:
      intent: Replace a user's preferences
      effect: write
      questions:
      - Does updating user preferences merge with the old values or replace them entirely?
      - What is the maximum size of a user's preferences object?
      instructions:
      - text: Set user {userId}'s preferences to {prefs}.
        slots:
          userId: path.userId
          prefs: requestBody.prefs
      - text: Overwrite the prefs of {userId} with {prefs}.
        slots:
          userId: path.userId
          prefs: requestBody.prefs
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/sessions'].get
  update:
    x-apievangelist-phrasing:
      intent: List a user's sessions
      effect: read
      questions:
      - On which devices is a user currently logged in?
      - How many active sessions does a particular user have?
      instructions:
      - text: List sessions for user {userId}.
        slots:
          userId: path.userId
      - text: Show where {userId} is signed in.
        slots:
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/sessions'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a session for a user
      effect: write
      questions:
      - How can my server sign a user in and get an immediately usable session?
      - Can I create a session for a user without their password?
      instructions:
      - text: Create a session for user {userId}.
        slots:
          userId: path.userId
      - text: Log {userId} in server-side and return the session.
        slots:
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/sessions'].delete
  update:
    x-apievangelist-phrasing:
      intent: Sign a user out of every session
      effect: destructive
      questions:
      - How do I log a user out of all devices at once?
      - Can I revoke every session a user has after a password leak?
      instructions:
      - text: Delete all sessions for user {userId}.
        slots:
          userId: path.userId
      - text: Sign {userId} out everywhere.
        slots:
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/sessions/{sessionId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Sign a user out of one session
      effect: destructive
      questions:
      - How do I end just one of a user's sessions, like a lost laptop?
      - Can I revoke a single session by its ID while keeping the others?
      instructions:
      - text: Delete session {sessionId} for user {userId}.
        slots:
          sessionId: path.sessionId
          userId: path.userId
      - text: Log {userId} out of session {sessionId} only.
        slots:
          userId: path.userId
          sessionId: path.sessionId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/status'].patch
  update:
    x-apievangelist-phrasing:
      intent: Block or unblock a user
      effect: write
      questions:
      - How do I block a user from signing in without deleting them?
      - Can I re-enable a user I previously blocked?
      instructions:
      - text: Set user {userId}'s status to {status}.
        slots:
          userId: path.userId
          status: requestBody.status
      - text: Block or unblock {userId} by setting status {status}.
        slots:
          userId: path.userId
          status: requestBody.status
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/targets'].get
  update:
    x-apievangelist-phrasing:
      intent: List a user's messaging targets
      effect: read
      questions:
      - Which email addresses, phones or push devices can I message a user on?
      - Can I filter a user's messaging targets with queries?
      instructions:
      - text: List messaging targets for user {userId}.
        slots:
          userId: path.userId
      - text: Show {userId}'s targets matching {queries}.
        slots:
          userId: path.userId
          queries: query.queries
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/targets'].post
  update:
    x-apievangelist-phrasing:
      intent: Add a messaging target to a user
      effect: write
      questions:
      - How do I register a new email, SMS or push destination for a user?
      - Can I tie a user's messaging target to a specific provider?
      instructions:
      - text: Add a {providerType} target {targetId} for user {userId} at {identifier}.
        slots:
          providerType: requestBody.providerType
          targetId: requestBody.targetId
          userId: path.userId
          identifier: requestBody.identifier
      - text: 'Create target {targetId} named {name} on {userId}: {providerType} {identifier} via provider {providerId}.'
        slots:
          targetId: requestBody.targetId
          name: requestBody.name
          userId: path.userId
          providerType: requestBody.providerType
          identifier: requestBody.identifier
          providerId: requestBody.providerId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/targets/{targetId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one of a user's messaging targets
      effect: read
      questions:
      - What are the details of a specific push or email target on a user?
      - How do I look up a single user target by its ID?
      instructions:
      - text: Show target {targetId} of user {userId}.
        slots:
          targetId: path.targetId
          userId: path.userId
      - text: Get messaging target {targetId} for {userId}.
        slots:
          targetId: path.targetId
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/targets/{targetId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove a user's messaging target
      effect: destructive
      questions:
      - How do I stop messaging a user at an old phone number or device?
      - Can I delete one messaging target from a user?
      instructions:
      - text: Delete target {targetId} from user {userId}.
        slots:
          targetId: path.targetId
          userId: path.userId
      - text: Remove messaging destination {targetId} on {userId}.
        slots:
          targetId: path.targetId
          userId: path.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/targets/{targetId}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update a user's messaging target
      effect: write
      questions:
      - Can I change the address or provider on an existing user target?
      - How do I rename a messaging target I already created for a user?
      instructions:
      - text: Change target {targetId} of user {userId} to identifier {identifier}.
        slots:
          targetId: path.targetId
          userId: path.userId
          identifier: requestBody.identifier
      - text: Rename {userId}'s existing target {targetId} to {name} and route it via provider {providerId}.
        slots:
          userId: path.userId
          targetId: path.targetId
          name: requestBody.name
          providerId: requestBody.providerId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/tokens'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a login token for a custom auth flow
      effect: write
      questions:
      - How do I generate a secret token my client can exchange for a session in a custom login flow?
      - Can I set the length and expiry of a user's login token?
      instructions:
      - text: Create a session token for user {userId}.
        slots:
          userId: path.userId
      - text: Issue a {length}-character token for {userId} that expires in {expire} seconds.
        slots:
          length: requestBody.length
          userId: path.userId
          expire: requestBody.expire
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/verification'].patch
  update:
    x-apievangelist-phrasing:
      intent: Mark a user's email as verified or not
      effect: write
      questions:
      - How do I manually mark a user's email address as verified?
      - Can an admin reset the email verification flag on an account?
      instructions:
      - text: Set email verification for user {userId} to {emailVerification}.
        slots:
          userId: path.userId
          emailVerification: requestBody.emailVerification
      - text: 'Mark {userId}''s email address verified: {emailVerification}.'
        slots:
          userId: path.userId
          emailVerification: requestBody.emailVerification
      method: generated
      generated: '2026-09-26'
- target: $.paths['/users/{userId}/verification/phone'].patch
  update:
    x-apievangelist-phrasing:
      intent: Mark a user's phone as verified or not
      effect: write
      questions:
      - How do I manually mark a user's phone number as verified?
      - Can I unverify a user's phone after they change numbers?
      instructions:
      - text: Set phone verification for user {userId} to {phoneVerification}.
        slots:
          userId: path.userId
          phoneVerification: requestBody.phoneVerification
      - text: 'Mark {userId}''s phone number verified: {phoneVerification}.'
        slots:
          userId: path.userId
          phoneVerification: requestBody.phoneVerification
      method: generated
      generated: '2026-09-26'