UNPKG

node-appwrite

Version:

Appwrite is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API

1,464 lines (1,230 loc) 44 kB
const Service = require('../service.js'); const AppwriteException = require('../exception.js'); const InputFile = require('../inputFile.js'); const client = require('../client.js'); const Stream = require('stream'); const { promisify } = require('util'); const fs = require('fs'); const { File } = require('undici'); const Query = require('../query.js'); class Users extends Service { constructor(client) { super(client); } /** * List users * * Get a list of all the project's users. You can use the query params to * filter your results. * * @param {string[]} queries * @param {string} search * @throws {AppwriteException} * @returns {Promise} */ async list(queries, search) { const apiPath = '/users'; let payload = {}; if (typeof queries !== 'undefined') { payload['queries'] = queries; } if (typeof search !== 'undefined') { payload['search'] = search; } return await this.client.call('get', apiPath, { 'content-type': 'application/json', }, payload); } /** * Create user * * Create a new user. * * @param {string} userId * @param {string} email * @param {string} phone * @param {string} password * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ async create(userId, email, phone, password, name) { const apiPath = '/users'; let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof userId !== 'undefined') { payload['userId'] = userId; } if (typeof email !== 'undefined') { payload['email'] = email; } if (typeof phone !== 'undefined') { payload['phone'] = phone; } if (typeof password !== 'undefined') { payload['password'] = password; } if (typeof name !== 'undefined') { payload['name'] = name; } return await this.client.call('post', apiPath, { 'content-type': 'application/json', }, payload); } /** * Create user with Argon2 password * * Create a new user. Password provided must be hashed with the * [Argon2](https://en.wikipedia.org/wiki/Argon2) algorithm. Use the [POST * /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to * create users with a plain text password. * * @param {string} userId * @param {string} email * @param {string} password * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ async createArgon2User(userId, email, password, name) { const apiPath = '/users/argon2'; let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof email === 'undefined') { throw new AppwriteException('Missing required parameter: "email"'); } if (typeof password === 'undefined') { throw new AppwriteException('Missing required parameter: "password"'); } if (typeof userId !== 'undefined') { payload['userId'] = userId; } if (typeof email !== 'undefined') { payload['email'] = email; } if (typeof password !== 'undefined') { payload['password'] = password; } if (typeof name !== 'undefined') { payload['name'] = name; } return await this.client.call('post', apiPath, { 'content-type': 'application/json', }, payload); } /** * Create user with bcrypt password * * Create a new user. Password provided must be hashed with the * [Bcrypt](https://en.wikipedia.org/wiki/Bcrypt) algorithm. Use the [POST * /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to * create users with a plain text password. * * @param {string} userId * @param {string} email * @param {string} password * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ async createBcryptUser(userId, email, password, name) { const apiPath = '/users/bcrypt'; let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof email === 'undefined') { throw new AppwriteException('Missing required parameter: "email"'); } if (typeof password === 'undefined') { throw new AppwriteException('Missing required parameter: "password"'); } if (typeof userId !== 'undefined') { payload['userId'] = userId; } if (typeof email !== 'undefined') { payload['email'] = email; } if (typeof password !== 'undefined') { payload['password'] = password; } if (typeof name !== 'undefined') { payload['name'] = name; } return await this.client.call('post', apiPath, { 'content-type': 'application/json', }, payload); } /** * List Identities * * Get identities for all users. * * @param {string[]} queries * @param {string} search * @throws {AppwriteException} * @returns {Promise} */ async listIdentities(queries, search) { const apiPath = '/users/identities'; let payload = {}; if (typeof queries !== 'undefined') { payload['queries'] = queries; } if (typeof search !== 'undefined') { payload['search'] = search; } return await this.client.call('get', apiPath, { 'content-type': 'application/json', }, payload); } /** * Delete identity * * Delete an identity by its unique ID. * * @param {string} identityId * @throws {AppwriteException} * @returns {Promise} */ async deleteIdentity(identityId) { const apiPath = '/users/identities/{identityId}'.replace('{identityId}', identityId); let payload = {}; if (typeof identityId === 'undefined') { throw new AppwriteException('Missing required parameter: "identityId"'); } return await this.client.call('delete', apiPath, { 'content-type': 'application/json', }, payload); } /** * Create user with MD5 password * * Create a new user. Password provided must be hashed with the * [MD5](https://en.wikipedia.org/wiki/MD5) algorithm. Use the [POST * /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to * create users with a plain text password. * * @param {string} userId * @param {string} email * @param {string} password * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ async createMD5User(userId, email, password, name) { const apiPath = '/users/md5'; let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof email === 'undefined') { throw new AppwriteException('Missing required parameter: "email"'); } if (typeof password === 'undefined') { throw new AppwriteException('Missing required parameter: "password"'); } if (typeof userId !== 'undefined') { payload['userId'] = userId; } if (typeof email !== 'undefined') { payload['email'] = email; } if (typeof password !== 'undefined') { payload['password'] = password; } if (typeof name !== 'undefined') { payload['name'] = name; } return await this.client.call('post', apiPath, { 'content-type': 'application/json', }, payload); } /** * Create user with PHPass password * * Create a new user. Password provided must be hashed with the * [PHPass](https://www.openwall.com/phpass/) algorithm. Use the [POST * /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to * create users with a plain text password. * * @param {string} userId * @param {string} email * @param {string} password * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ async createPHPassUser(userId, email, password, name) { const apiPath = '/users/phpass'; let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof email === 'undefined') { throw new AppwriteException('Missing required parameter: "email"'); } if (typeof password === 'undefined') { throw new AppwriteException('Missing required parameter: "password"'); } if (typeof userId !== 'undefined') { payload['userId'] = userId; } if (typeof email !== 'undefined') { payload['email'] = email; } if (typeof password !== 'undefined') { payload['password'] = password; } if (typeof name !== 'undefined') { payload['name'] = name; } return await this.client.call('post', apiPath, { 'content-type': 'application/json', }, payload); } /** * Create user with Scrypt password * * Create a new user. Password provided must be hashed with the * [Scrypt](https://github.com/Tarsnap/scrypt) algorithm. Use the [POST * /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to * create users with a plain text password. * * @param {string} userId * @param {string} email * @param {string} password * @param {string} passwordSalt * @param {number} passwordCpu * @param {number} passwordMemory * @param {number} passwordParallel * @param {number} passwordLength * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ async createScryptUser(userId, email, password, passwordSalt, passwordCpu, passwordMemory, passwordParallel, passwordLength, name) { const apiPath = '/users/scrypt'; let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof email === 'undefined') { throw new AppwriteException('Missing required parameter: "email"'); } if (typeof password === 'undefined') { throw new AppwriteException('Missing required parameter: "password"'); } if (typeof passwordSalt === 'undefined') { throw new AppwriteException('Missing required parameter: "passwordSalt"'); } if (typeof passwordCpu === 'undefined') { throw new AppwriteException('Missing required parameter: "passwordCpu"'); } if (typeof passwordMemory === 'undefined') { throw new AppwriteException('Missing required parameter: "passwordMemory"'); } if (typeof passwordParallel === 'undefined') { throw new AppwriteException('Missing required parameter: "passwordParallel"'); } if (typeof passwordLength === 'undefined') { throw new AppwriteException('Missing required parameter: "passwordLength"'); } if (typeof userId !== 'undefined') { payload['userId'] = userId; } if (typeof email !== 'undefined') { payload['email'] = email; } if (typeof password !== 'undefined') { payload['password'] = password; } if (typeof passwordSalt !== 'undefined') { payload['passwordSalt'] = passwordSalt; } if (typeof passwordCpu !== 'undefined') { payload['passwordCpu'] = passwordCpu; } if (typeof passwordMemory !== 'undefined') { payload['passwordMemory'] = passwordMemory; } if (typeof passwordParallel !== 'undefined') { payload['passwordParallel'] = passwordParallel; } if (typeof passwordLength !== 'undefined') { payload['passwordLength'] = passwordLength; } if (typeof name !== 'undefined') { payload['name'] = name; } return await this.client.call('post', apiPath, { 'content-type': 'application/json', }, payload); } /** * Create user with Scrypt modified password * * Create a new user. Password provided must be hashed with the [Scrypt * Modified](https://gist.github.com/Meldiron/eecf84a0225eccb5a378d45bb27462cc) * algorithm. Use the [POST * /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to * create users with a plain text password. * * @param {string} userId * @param {string} email * @param {string} password * @param {string} passwordSalt * @param {string} passwordSaltSeparator * @param {string} passwordSignerKey * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ async createScryptModifiedUser(userId, email, password, passwordSalt, passwordSaltSeparator, passwordSignerKey, name) { const apiPath = '/users/scrypt-modified'; let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof email === 'undefined') { throw new AppwriteException('Missing required parameter: "email"'); } if (typeof password === 'undefined') { throw new AppwriteException('Missing required parameter: "password"'); } if (typeof passwordSalt === 'undefined') { throw new AppwriteException('Missing required parameter: "passwordSalt"'); } if (typeof passwordSaltSeparator === 'undefined') { throw new AppwriteException('Missing required parameter: "passwordSaltSeparator"'); } if (typeof passwordSignerKey === 'undefined') { throw new AppwriteException('Missing required parameter: "passwordSignerKey"'); } if (typeof userId !== 'undefined') { payload['userId'] = userId; } if (typeof email !== 'undefined') { payload['email'] = email; } if (typeof password !== 'undefined') { payload['password'] = password; } if (typeof passwordSalt !== 'undefined') { payload['passwordSalt'] = passwordSalt; } if (typeof passwordSaltSeparator !== 'undefined') { payload['passwordSaltSeparator'] = passwordSaltSeparator; } if (typeof passwordSignerKey !== 'undefined') { payload['passwordSignerKey'] = passwordSignerKey; } if (typeof name !== 'undefined') { payload['name'] = name; } return await this.client.call('post', apiPath, { 'content-type': 'application/json', }, payload); } /** * Create user with SHA password * * Create a new user. Password provided must be hashed with the * [SHA](https://en.wikipedia.org/wiki/Secure_Hash_Algorithm) algorithm. Use * the [POST /users](https://appwrite.io/docs/server/users#usersCreate) * endpoint to create users with a plain text password. * * @param {string} userId * @param {string} email * @param {string} password * @param {PasswordHash} passwordVersion * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ async createSHAUser(userId, email, password, passwordVersion, name) { const apiPath = '/users/sha'; let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof email === 'undefined') { throw new AppwriteException('Missing required parameter: "email"'); } if (typeof password === 'undefined') { throw new AppwriteException('Missing required parameter: "password"'); } if (typeof userId !== 'undefined') { payload['userId'] = userId; } if (typeof email !== 'undefined') { payload['email'] = email; } if (typeof password !== 'undefined') { payload['password'] = password; } if (typeof passwordVersion !== 'undefined') { payload['passwordVersion'] = passwordVersion; } if (typeof name !== 'undefined') { payload['name'] = name; } return await this.client.call('post', apiPath, { 'content-type': 'application/json', }, payload); } /** * Get user * * Get a user by its unique ID. * * @param {string} userId * @throws {AppwriteException} * @returns {Promise} */ async get(userId) { const apiPath = '/users/{userId}'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } return await this.client.call('get', apiPath, { 'content-type': 'application/json', }, payload); } /** * Delete user * * Delete a user by its unique ID, thereby releasing it's ID. Since ID is * released and can be reused, all user-related resources like documents or * storage files should be deleted before user deletion. If you want to keep * ID reserved, use the * [updateStatus](https://appwrite.io/docs/server/users#usersUpdateStatus) * endpoint instead. * * @param {string} userId * @throws {AppwriteException} * @returns {Promise} */ async delete(userId) { const apiPath = '/users/{userId}'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } return await this.client.call('delete', apiPath, { 'content-type': 'application/json', }, payload); } /** * Update email * * Update the user email by its unique ID. * * @param {string} userId * @param {string} email * @throws {AppwriteException} * @returns {Promise} */ async updateEmail(userId, email) { const apiPath = '/users/{userId}/email'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof email === 'undefined') { throw new AppwriteException('Missing required parameter: "email"'); } if (typeof email !== 'undefined') { payload['email'] = email; } return await this.client.call('patch', apiPath, { 'content-type': 'application/json', }, payload); } /** * Update user labels * * Update the user labels by its unique ID. * * Labels can be used to grant access to resources. While teams are a way for * user's to share access to a resource, labels can be defined by the * developer to grant access without an invitation. See the [Permissions * docs](https://appwrite.io/docs/permissions) for more info. * * @param {string} userId * @param {string[]} labels * @throws {AppwriteException} * @returns {Promise} */ async updateLabels(userId, labels) { const apiPath = '/users/{userId}/labels'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof labels === 'undefined') { throw new AppwriteException('Missing required parameter: "labels"'); } if (typeof labels !== 'undefined') { payload['labels'] = labels; } return await this.client.call('put', apiPath, { 'content-type': 'application/json', }, payload); } /** * List user logs * * Get the user activity logs list by its unique ID. * * @param {string} userId * @param {string[]} queries * @throws {AppwriteException} * @returns {Promise} */ async listLogs(userId, queries) { const apiPath = '/users/{userId}/logs'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof queries !== 'undefined') { payload['queries'] = queries; } return await this.client.call('get', apiPath, { 'content-type': 'application/json', }, payload); } /** * List user memberships * * Get the user membership list by its unique ID. * * @param {string} userId * @throws {AppwriteException} * @returns {Promise} */ async listMemberships(userId) { const apiPath = '/users/{userId}/memberships'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } return await this.client.call('get', apiPath, { 'content-type': 'application/json', }, payload); } /** * Update MFA * * Enable or disable MFA on a user account. * * @param {string} userId * @param {boolean} mfa * @throws {AppwriteException} * @returns {Promise} */ async updateMfa(userId, mfa) { const apiPath = '/users/{userId}/mfa'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof mfa === 'undefined') { throw new AppwriteException('Missing required parameter: "mfa"'); } if (typeof mfa !== 'undefined') { payload['mfa'] = mfa; } return await this.client.call('patch', apiPath, { 'content-type': 'application/json', }, payload); } /** * Delete Authenticator * * Delete an authenticator app. * * @param {string} userId * @param {AuthenticatorType} type * @throws {AppwriteException} * @returns {Promise} */ async deleteMfaAuthenticator(userId, type) { const apiPath = '/users/{userId}/mfa/authenticators/{type}'.replace('{userId}', userId).replace('{type}', type); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof type === 'undefined') { throw new AppwriteException('Missing required parameter: "type"'); } return await this.client.call('delete', apiPath, { 'content-type': 'application/json', }, payload); } /** * List Factors * * List the factors available on the account to be used as a MFA challange. * * @param {string} userId * @throws {AppwriteException} * @returns {Promise} */ async listMfaFactors(userId) { const apiPath = '/users/{userId}/mfa/factors'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } return await this.client.call('get', apiPath, { 'content-type': 'application/json', }, payload); } /** * Get MFA Recovery Codes * * Get recovery codes that can be used as backup for MFA flow by User ID. * Before getting codes, they must be generated using * [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) * method. * * @param {string} userId * @throws {AppwriteException} * @returns {Promise} */ async getMfaRecoveryCodes(userId) { const apiPath = '/users/{userId}/mfa/recovery-codes'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } return await this.client.call('get', apiPath, { 'content-type': 'application/json', }, payload); } /** * Regenerate MFA Recovery Codes * * Regenerate recovery codes that can be used as backup for MFA flow by User * ID. Before regenerating codes, they must be first generated using * [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) * method. * * @param {string} userId * @throws {AppwriteException} * @returns {Promise} */ async updateMfaRecoveryCodes(userId) { const apiPath = '/users/{userId}/mfa/recovery-codes'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } return await this.client.call('put', apiPath, { 'content-type': 'application/json', }, payload); } /** * Create MFA Recovery Codes * * Generate recovery codes used as backup for MFA flow for User ID. Recovery * codes can be used as a MFA verification type in * [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) * method by client SDK. * * @param {string} userId * @throws {AppwriteException} * @returns {Promise} */ async createMfaRecoveryCodes(userId) { const apiPath = '/users/{userId}/mfa/recovery-codes'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } return await this.client.call('patch', apiPath, { 'content-type': 'application/json', }, payload); } /** * Update name * * Update the user name by its unique ID. * * @param {string} userId * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ async updateName(userId, name) { const apiPath = '/users/{userId}/name'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof name === 'undefined') { throw new AppwriteException('Missing required parameter: "name"'); } if (typeof name !== 'undefined') { payload['name'] = name; } return await this.client.call('patch', apiPath, { 'content-type': 'application/json', }, payload); } /** * Update password * * Update the user password by its unique ID. * * @param {string} userId * @param {string} password * @throws {AppwriteException} * @returns {Promise} */ async updatePassword(userId, password) { const apiPath = '/users/{userId}/password'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof password === 'undefined') { throw new AppwriteException('Missing required parameter: "password"'); } if (typeof password !== 'undefined') { payload['password'] = password; } return await this.client.call('patch', apiPath, { 'content-type': 'application/json', }, payload); } /** * Update phone * * Update the user phone by its unique ID. * * @param {string} userId * @param {string} number * @throws {AppwriteException} * @returns {Promise} */ async updatePhone(userId, number) { const apiPath = '/users/{userId}/phone'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof number === 'undefined') { throw new AppwriteException('Missing required parameter: "number"'); } if (typeof number !== 'undefined') { payload['number'] = number; } return await this.client.call('patch', apiPath, { 'content-type': 'application/json', }, payload); } /** * Get user preferences * * Get the user preferences by its unique ID. * * @param {string} userId * @throws {AppwriteException} * @returns {Promise} */ async getPrefs(userId) { const apiPath = '/users/{userId}/prefs'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } return await this.client.call('get', apiPath, { 'content-type': 'application/json', }, payload); } /** * Update user preferences * * Update the user preferences by its unique ID. The object you pass is stored * as is, and replaces any previous value. The maximum allowed prefs size is * 64kB and throws error if exceeded. * * @param {string} userId * @param {object} prefs * @throws {AppwriteException} * @returns {Promise} */ async updatePrefs(userId, prefs) { const apiPath = '/users/{userId}/prefs'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof prefs === 'undefined') { throw new AppwriteException('Missing required parameter: "prefs"'); } if (typeof prefs !== 'undefined') { payload['prefs'] = prefs; } return await this.client.call('patch', apiPath, { 'content-type': 'application/json', }, payload); } /** * List user sessions * * Get the user sessions list by its unique ID. * * @param {string} userId * @throws {AppwriteException} * @returns {Promise} */ async listSessions(userId) { const apiPath = '/users/{userId}/sessions'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } return await this.client.call('get', apiPath, { 'content-type': 'application/json', }, payload); } /** * Create session * * Creates a session for a user. Returns an immediately usable session object. * * If you want to generate a token for a custom authentication flow, use the * [POST * /users/{userId}/tokens](https://appwrite.io/docs/server/users#createToken) * endpoint. * * @param {string} userId * @throws {AppwriteException} * @returns {Promise} */ async createSession(userId) { const apiPath = '/users/{userId}/sessions'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } return await this.client.call('post', apiPath, { 'content-type': 'application/json', }, payload); } /** * Delete user sessions * * Delete all user's sessions by using the user's unique ID. * * @param {string} userId * @throws {AppwriteException} * @returns {Promise} */ async deleteSessions(userId) { const apiPath = '/users/{userId}/sessions'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } return await this.client.call('delete', apiPath, { 'content-type': 'application/json', }, payload); } /** * Delete user session * * Delete a user sessions by its unique ID. * * @param {string} userId * @param {string} sessionId * @throws {AppwriteException} * @returns {Promise} */ async deleteSession(userId, sessionId) { const apiPath = '/users/{userId}/sessions/{sessionId}'.replace('{userId}', userId).replace('{sessionId}', sessionId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof sessionId === 'undefined') { throw new AppwriteException('Missing required parameter: "sessionId"'); } return await this.client.call('delete', apiPath, { 'content-type': 'application/json', }, payload); } /** * Update user status * * Update the user status by its unique ID. Use this endpoint as an * alternative to deleting a user if you want to keep user's ID reserved. * * @param {string} userId * @param {boolean} status * @throws {AppwriteException} * @returns {Promise} */ async updateStatus(userId, status) { const apiPath = '/users/{userId}/status'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof status === 'undefined') { throw new AppwriteException('Missing required parameter: "status"'); } if (typeof status !== 'undefined') { payload['status'] = status; } return await this.client.call('patch', apiPath, { 'content-type': 'application/json', }, payload); } /** * List User Targets * * List the messaging targets that are associated with a user. * * @param {string} userId * @param {string[]} queries * @throws {AppwriteException} * @returns {Promise} */ async listTargets(userId, queries) { const apiPath = '/users/{userId}/targets'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof queries !== 'undefined') { payload['queries'] = queries; } return await this.client.call('get', apiPath, { 'content-type': 'application/json', }, payload); } /** * Create User Target * * Create a messaging target. * * @param {string} userId * @param {string} targetId * @param {MessagingProviderType} providerType * @param {string} identifier * @param {string} providerId * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ async createTarget(userId, targetId, providerType, identifier, providerId, name) { const apiPath = '/users/{userId}/targets'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof targetId === 'undefined') { throw new AppwriteException('Missing required parameter: "targetId"'); } if (typeof providerType === 'undefined') { throw new AppwriteException('Missing required parameter: "providerType"'); } if (typeof identifier === 'undefined') { throw new AppwriteException('Missing required parameter: "identifier"'); } if (typeof targetId !== 'undefined') { payload['targetId'] = targetId; } if (typeof providerType !== 'undefined') { payload['providerType'] = providerType; } if (typeof identifier !== 'undefined') { payload['identifier'] = identifier; } if (typeof providerId !== 'undefined') { payload['providerId'] = providerId; } if (typeof name !== 'undefined') { payload['name'] = name; } return await this.client.call('post', apiPath, { 'content-type': 'application/json', }, payload); } /** * Get User Target * * Get a user's push notification target by ID. * * @param {string} userId * @param {string} targetId * @throws {AppwriteException} * @returns {Promise} */ async getTarget(userId, targetId) { const apiPath = '/users/{userId}/targets/{targetId}'.replace('{userId}', userId).replace('{targetId}', targetId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof targetId === 'undefined') { throw new AppwriteException('Missing required parameter: "targetId"'); } return await this.client.call('get', apiPath, { 'content-type': 'application/json', }, payload); } /** * Update User target * * Update a messaging target. * * @param {string} userId * @param {string} targetId * @param {string} identifier * @param {string} providerId * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ async updateTarget(userId, targetId, identifier, providerId, name) { const apiPath = '/users/{userId}/targets/{targetId}'.replace('{userId}', userId).replace('{targetId}', targetId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof targetId === 'undefined') { throw new AppwriteException('Missing required parameter: "targetId"'); } if (typeof identifier !== 'undefined') { payload['identifier'] = identifier; } if (typeof providerId !== 'undefined') { payload['providerId'] = providerId; } if (typeof name !== 'undefined') { payload['name'] = name; } return await this.client.call('patch', apiPath, { 'content-type': 'application/json', }, payload); } /** * Delete user target * * Delete a messaging target. * * @param {string} userId * @param {string} targetId * @throws {AppwriteException} * @returns {Promise} */ async deleteTarget(userId, targetId) { const apiPath = '/users/{userId}/targets/{targetId}'.replace('{userId}', userId).replace('{targetId}', targetId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof targetId === 'undefined') { throw new AppwriteException('Missing required parameter: "targetId"'); } return await this.client.call('delete', apiPath, { 'content-type': 'application/json', }, payload); } /** * Create token * * Returns a token with a secret key for creating a session. If the provided * user ID has not be registered, a new user will be created. Use the returned * user ID and secret and submit a request to the [PUT * /account/sessions/custom](https://appwrite.io/docs/references/cloud/client-web/account#updateCustomSession) * endpoint to complete the login process. * * @param {string} userId * @param {number} length * @param {number} expire * @throws {AppwriteException} * @returns {Promise} */ async createToken(userId, length, expire) { const apiPath = '/users/{userId}/tokens'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof length !== 'undefined') { payload['length'] = length; } if (typeof expire !== 'undefined') { payload['expire'] = expire; } return await this.client.call('post', apiPath, { 'content-type': 'application/json', }, payload); } /** * Update email verification * * Update the user email verification status by its unique ID. * * @param {string} userId * @param {boolean} emailVerification * @throws {AppwriteException} * @returns {Promise} */ async updateEmailVerification(userId, emailVerification) { const apiPath = '/users/{userId}/verification'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof emailVerification === 'undefined') { throw new AppwriteException('Missing required parameter: "emailVerification"'); } if (typeof emailVerification !== 'undefined') { payload['emailVerification'] = emailVerification; } return await this.client.call('patch', apiPath, { 'content-type': 'application/json', }, payload); } /** * Update phone verification * * Update the user phone verification status by its unique ID. * * @param {string} userId * @param {boolean} phoneVerification * @throws {AppwriteException} * @returns {Promise} */ async updatePhoneVerification(userId, phoneVerification) { const apiPath = '/users/{userId}/verification/phone'.replace('{userId}', userId); let payload = {}; if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof phoneVerification === 'undefined') { throw new AppwriteException('Missing required parameter: "phoneVerification"'); } if (typeof phoneVerification !== 'undefined') { payload['phoneVerification'] = phoneVerification; } return await this.client.call('patch', apiPath, { 'content-type': 'application/json', }, payload); } } module.exports = Users;