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