import { Service } from '../service'; import { AppwriteException, Client } from '../client'; import type { Models } from '../models'; import type { UploadProgress, Payload } from '../client'; import { PasswordVersion } from '../enums/password-version'; import { ProviderType } from '../enums/provider-type'; export class Users extends Service { constructor(client: 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?: string[], search?: string): Promise> { const apiPath = '/users'; const payload: Payload = {}; if (typeof queries !== 'undefined') { payload['queries'] = queries; } if (typeof search !== 'undefined') { payload['search'] = search; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('get', uri, { '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: string, email?: string, phone?: string, password?: string, name?: string): Promise> { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } const apiPath = '/users'; const payload: Payload = {}; 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; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('post', uri, { '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: string, email: string, password: string, name?: string): Promise> { 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"'); } const apiPath = '/users/argon2'; const payload: Payload = {}; 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; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('post', uri, { '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: string, email: string, password: string, name?: string): Promise> { 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"'); } const apiPath = '/users/bcrypt'; const payload: Payload = {}; 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; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('post', uri, { '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?: string, search?: string): Promise { const apiPath = '/users/identities'; const payload: Payload = {}; if (typeof queries !== 'undefined') { payload['queries'] = queries; } if (typeof search !== 'undefined') { payload['search'] = search; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('get', uri, { 'content-type': 'application/json', }, payload); } /** * Delete identity * * Delete an identity by its unique ID. * * @param {string} identityId * @throws {AppwriteException} * @returns {Promise} */ async deleteIdentity(identityId: string): Promise<{}> { if (typeof identityId === 'undefined') { throw new AppwriteException('Missing required parameter: "identityId"'); } const apiPath = '/users/identities/{identityId}'.replace('{identityId}', identityId); const payload: Payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('delete', uri, { '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: string, email: string, password: string, name?: string): Promise> { 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"'); } const apiPath = '/users/md5'; const payload: Payload = {}; 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; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('post', uri, { '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: string, email: string, password: string, name?: string): Promise> { 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"'); } const apiPath = '/users/phpass'; const payload: Payload = {}; 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; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('post', uri, { '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: string, email: string, password: string, passwordSalt: string, passwordCpu: number, passwordMemory: number, passwordParallel: number, passwordLength: number, name?: string): Promise> { 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"'); } const apiPath = '/users/scrypt'; const payload: Payload = {}; 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; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('post', uri, { '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: string, email: string, password: string, passwordSalt: string, passwordSaltSeparator: string, passwordSignerKey: string, name?: string): Promise> { 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"'); } const apiPath = '/users/scrypt-modified'; const payload: Payload = {}; 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; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('post', uri, { '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 {PasswordVersion} passwordVersion * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ async createSHAUser(userId: string, email: string, password: string, passwordVersion?: PasswordVersion, name?: string): Promise> { 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"'); } const apiPath = '/users/sha'; const payload: Payload = {}; 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; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('post', uri, { 'content-type': 'application/json', }, payload); } /** * Get user * * Get a user by its unique ID. * * @param {string} userId * @throws {AppwriteException} * @returns {Promise} */ async get(userId: string): Promise> { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } const apiPath = '/users/{userId}'.replace('{userId}', userId); const payload: Payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('get', uri, { '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: string): Promise<{}> { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } const apiPath = '/users/{userId}'.replace('{userId}', userId); const payload: Payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('delete', uri, { '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: string, email: string): Promise> { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof email === 'undefined') { throw new AppwriteException('Missing required parameter: "email"'); } const apiPath = '/users/{userId}/email'.replace('{userId}', userId); const payload: Payload = {}; if (typeof email !== 'undefined') { payload['email'] = email; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('patch', uri, { '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: string, labels: string[]): Promise> { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof labels === 'undefined') { throw new AppwriteException('Missing required parameter: "labels"'); } const apiPath = '/users/{userId}/labels'.replace('{userId}', userId); const payload: Payload = {}; if (typeof labels !== 'undefined') { payload['labels'] = labels; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('put', uri, { '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: string, queries?: string[]): Promise { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } const apiPath = '/users/{userId}/logs'.replace('{userId}', userId); const payload: Payload = {}; if (typeof queries !== 'undefined') { payload['queries'] = queries; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('get', uri, { '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: string): Promise { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } const apiPath = '/users/{userId}/memberships'.replace('{userId}', userId); const payload: Payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('get', uri, { '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: string, name: string): Promise> { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof name === 'undefined') { throw new AppwriteException('Missing required parameter: "name"'); } const apiPath = '/users/{userId}/name'.replace('{userId}', userId); const payload: Payload = {}; if (typeof name !== 'undefined') { payload['name'] = name; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('patch', uri, { '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: string, password: string): Promise> { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof password === 'undefined') { throw new AppwriteException('Missing required parameter: "password"'); } const apiPath = '/users/{userId}/password'.replace('{userId}', userId); const payload: Payload = {}; if (typeof password !== 'undefined') { payload['password'] = password; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('patch', uri, { '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: string, number: string): Promise> { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof number === 'undefined') { throw new AppwriteException('Missing required parameter: "number"'); } const apiPath = '/users/{userId}/phone'.replace('{userId}', userId); const payload: Payload = {}; if (typeof number !== 'undefined') { payload['number'] = number; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('patch', uri, { '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: string): Promise { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } const apiPath = '/users/{userId}/prefs'.replace('{userId}', userId); const payload: Payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('get', uri, { '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: string, prefs: object): Promise { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof prefs === 'undefined') { throw new AppwriteException('Missing required parameter: "prefs"'); } const apiPath = '/users/{userId}/prefs'.replace('{userId}', userId); const payload: Payload = {}; if (typeof prefs !== 'undefined') { payload['prefs'] = prefs; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('patch', uri, { '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: string): Promise { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } const apiPath = '/users/{userId}/sessions'.replace('{userId}', userId); const payload: Payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('get', uri, { 'content-type': 'application/json', }, payload); } /** * Create session * * * @param {string} userId * @throws {AppwriteException} * @returns {Promise} */ async createSession(userId: string): Promise { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } const apiPath = '/users/{userId}/sessions'.replace('{userId}', userId); const payload: Payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('post', uri, { '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: string): Promise<{}> { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } const apiPath = '/users/{userId}/sessions'.replace('{userId}', userId); const payload: Payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('delete', uri, { '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: string, sessionId: string): Promise<{}> { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof sessionId === 'undefined') { throw new AppwriteException('Missing required parameter: "sessionId"'); } const apiPath = '/users/{userId}/sessions/{sessionId}'.replace('{userId}', userId).replace('{sessionId}', sessionId); const payload: Payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('delete', uri, { '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: string, status: boolean): Promise> { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof status === 'undefined') { throw new AppwriteException('Missing required parameter: "status"'); } const apiPath = '/users/{userId}/status'.replace('{userId}', userId); const payload: Payload = {}; if (typeof status !== 'undefined') { payload['status'] = status; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('patch', uri, { 'content-type': 'application/json', }, payload); } /** * List User Targets * * * @param {string} userId * @param {string} queries * @throws {AppwriteException} * @returns {Promise} */ async listTargets(userId: string, queries?: string): Promise { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } const apiPath = '/users/{userId}/targets'.replace('{userId}', userId); const payload: Payload = {}; if (typeof queries !== 'undefined') { payload['queries'] = queries; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('get', uri, { 'content-type': 'application/json', }, payload); } /** * Create User Target * * * @param {string} userId * @param {string} targetId * @param {ProviderType} providerType * @param {string} identifier * @param {string} providerId * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ async createTarget(userId: string, targetId: string, providerType: ProviderType, identifier: string, providerId?: string, name?: string): Promise { 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"'); } const apiPath = '/users/{userId}/targets'.replace('{userId}', userId); const payload: Payload = {}; 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; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('post', uri, { 'content-type': 'application/json', }, payload); } /** * Get User Target * * * @param {string} userId * @param {string} targetId * @throws {AppwriteException} * @returns {Promise} */ async getTarget(userId: string, targetId: string): Promise { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof targetId === 'undefined') { throw new AppwriteException('Missing required parameter: "targetId"'); } const apiPath = '/users/{userId}/targets/{targetId}'.replace('{userId}', userId).replace('{targetId}', targetId); const payload: Payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('get', uri, { 'content-type': 'application/json', }, payload); } /** * Update User target * * * @param {string} userId * @param {string} targetId * @param {string} identifier * @param {string} providerId * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ async updateTarget(userId: string, targetId: string, identifier?: string, providerId?: string, name?: string): Promise { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof targetId === 'undefined') { throw new AppwriteException('Missing required parameter: "targetId"'); } const apiPath = '/users/{userId}/targets/{targetId}'.replace('{userId}', userId).replace('{targetId}', targetId); const payload: Payload = {}; if (typeof identifier !== 'undefined') { payload['identifier'] = identifier; } if (typeof providerId !== 'undefined') { payload['providerId'] = providerId; } if (typeof name !== 'undefined') { payload['name'] = name; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('patch', uri, { 'content-type': 'application/json', }, payload); } /** * Delete user target * * * @param {string} userId * @param {string} targetId * @throws {AppwriteException} * @returns {Promise} */ async deleteTarget(userId: string, targetId: string): Promise<{}> { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof targetId === 'undefined') { throw new AppwriteException('Missing required parameter: "targetId"'); } const apiPath = '/users/{userId}/targets/{targetId}'.replace('{userId}', userId).replace('{targetId}', targetId); const payload: Payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('delete', uri, { 'content-type': 'application/json', }, payload); } /** * Create token * * Returns a custom 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. By default, the secret sent in the * response is valid for 15 minutes. * * @param {string} userId * @param {number} length * @param {number} expire * @throws {AppwriteException} * @returns {Promise} */ async createToken(userId: string, length?: number, expire?: number): Promise { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } const apiPath = '/users/{userId}/tokens'.replace('{userId}', userId); const payload: Payload = {}; if (typeof length !== 'undefined') { payload['length'] = length; } if (typeof expire !== 'undefined') { payload['expire'] = expire; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('post', uri, { '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: string, emailVerification: boolean): Promise> { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof emailVerification === 'undefined') { throw new AppwriteException('Missing required parameter: "emailVerification"'); } const apiPath = '/users/{userId}/verification'.replace('{userId}', userId); const payload: Payload = {}; if (typeof emailVerification !== 'undefined') { payload['emailVerification'] = emailVerification; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('patch', uri, { '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: string, phoneVerification: boolean): Promise> { if (typeof userId === 'undefined') { throw new AppwriteException('Missing required parameter: "userId"'); } if (typeof phoneVerification === 'undefined') { throw new AppwriteException('Missing required parameter: "phoneVerification"'); } const apiPath = '/users/{userId}/verification/phone'.replace('{userId}', userId); const payload: Payload = {}; if (typeof phoneVerification !== 'undefined') { payload['phoneVerification'] = phoneVerification; } const uri = new URL(this.client.config.endpoint + apiPath); return await this.client.call('patch', uri, { 'content-type': 'application/json', }, payload); } };