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