2021-06-24 00:15:27 +12:00
|
|
|
(function (exports, isomorphicFormData, crossFetch) {
|
2020-01-31 05:18:59 +13:00
|
|
|
'use strict';
|
|
|
|
|
2021-05-29 03:02:59 +12:00
|
|
|
/*! *****************************************************************************
|
|
|
|
Copyright (c) Microsoft Corporation.
|
|
|
|
|
|
|
|
Permission to use, copy, modify, and/or distribute this software for any
|
|
|
|
purpose with or without fee is hereby granted.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
|
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
|
|
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
|
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
|
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
|
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
|
|
PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
***************************************************************************** */
|
|
|
|
|
|
|
|
function __awaiter(thisArg, _arguments, P, generator) {
|
|
|
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
|
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
|
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
|
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
|
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
|
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
|
|
});
|
|
|
|
}
|
2020-01-31 05:18:59 +13:00
|
|
|
|
2021-05-29 03:02:59 +12:00
|
|
|
class AppwriteException extends Error {
|
|
|
|
constructor(message, code = 0, response = '') {
|
|
|
|
super(message);
|
|
|
|
this.name = 'AppwriteException';
|
|
|
|
this.message = message;
|
|
|
|
this.code = code;
|
|
|
|
this.response = response;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class Appwrite {
|
|
|
|
constructor() {
|
|
|
|
this.config = {
|
|
|
|
endpoint: 'https://appwrite.io/v1',
|
|
|
|
project: '',
|
|
|
|
jwt: '',
|
|
|
|
locale: '',
|
2020-01-31 05:18:59 +13:00
|
|
|
};
|
2021-05-29 03:02:59 +12:00
|
|
|
this.headers = {
|
2021-07-20 19:33:51 +12:00
|
|
|
'x-sdk-version': 'appwrite:web:2.1.0',
|
2021-07-02 01:35:36 +12:00
|
|
|
'X-Appwrite-Response-Format': '0.9.0',
|
2020-01-31 05:18:59 +13:00
|
|
|
};
|
2021-05-29 03:02:59 +12:00
|
|
|
this.account = {
|
|
|
|
/**
|
|
|
|
* Get Account
|
|
|
|
*
|
|
|
|
* Get currently logged in user data as JSON object.
|
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
get: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/account';
|
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Create Account
|
|
|
|
*
|
|
|
|
* Use this endpoint to allow a new user to register a new account in your
|
|
|
|
* project. After the user registration completes successfully, you can use
|
|
|
|
* the [/account/verfication](/docs/client/account#accountCreateVerification)
|
|
|
|
* route to start verifying the user email address. To allow the new user to
|
|
|
|
* login to their new account, you need to create a new [account
|
|
|
|
* session](/docs/client/account#accountCreateSession).
|
|
|
|
*
|
|
|
|
* @param {string} email
|
|
|
|
* @param {string} password
|
|
|
|
* @param {string} name
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-06-24 00:15:27 +12:00
|
|
|
create: (email, password, name) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof email === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "email"');
|
2020-01-31 05:18:59 +13:00
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof password === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "password"');
|
2020-01-31 05:18:59 +13:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
let path = '/account';
|
|
|
|
let payload = {};
|
|
|
|
if (typeof email !== 'undefined') {
|
|
|
|
payload['email'] = email;
|
2020-01-31 05:18:59 +13:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
if (typeof password !== 'undefined') {
|
|
|
|
payload['password'] = password;
|
2020-01-31 05:18:59 +13:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
if (typeof name !== 'undefined') {
|
|
|
|
payload['name'] = name;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('post', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Delete Account
|
|
|
|
*
|
|
|
|
* Delete a currently logged in user account. Behind the scene, the user
|
|
|
|
* record is not deleted but permanently blocked from any access. This is done
|
|
|
|
* to avoid deleted accounts being overtaken by new users with the same email
|
|
|
|
* address. Any user-related resources like documents or storage files should
|
|
|
|
* be deleted separately.
|
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
delete: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/account';
|
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('delete', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Update Account Email
|
|
|
|
*
|
|
|
|
* Update currently logged in user account email address. After changing user
|
|
|
|
* address, user confirmation status is being reset and a new confirmation
|
|
|
|
* mail is sent. For security measures, user password is required to complete
|
|
|
|
* this request.
|
|
|
|
* This endpoint can also be used to convert an anonymous account to a normal
|
|
|
|
* one, by passing an email address and a new password.
|
|
|
|
*
|
|
|
|
* @param {string} email
|
|
|
|
* @param {string} password
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
updateEmail: (email, password) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof email === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "email"');
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof password === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "password"');
|
|
|
|
}
|
|
|
|
let path = '/account/email';
|
|
|
|
let payload = {};
|
|
|
|
if (typeof email !== 'undefined') {
|
|
|
|
payload['email'] = email;
|
|
|
|
}
|
|
|
|
if (typeof password !== 'undefined') {
|
|
|
|
payload['password'] = password;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('patch', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Create Account JWT
|
|
|
|
*
|
|
|
|
* Use this endpoint to create a JSON Web Token. You can use the resulting JWT
|
|
|
|
* to authenticate on behalf of the current user when working with the
|
|
|
|
* Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes
|
2021-06-24 00:15:27 +12:00
|
|
|
* from its creation and will be invalid if the user will logout in that time
|
|
|
|
* frame.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
createJWT: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/account/jwt';
|
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('post', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Get Account Logs
|
|
|
|
*
|
|
|
|
* Get currently logged in user list of latest security activity logs. Each
|
|
|
|
* log returns user IP address, location and date and time of log.
|
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getLogs: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/account/logs';
|
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Update Account Name
|
|
|
|
*
|
|
|
|
* Update currently logged in user account name.
|
|
|
|
*
|
|
|
|
* @param {string} name
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
updateName: (name) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof name === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "name"');
|
|
|
|
}
|
|
|
|
let path = '/account/name';
|
|
|
|
let payload = {};
|
|
|
|
if (typeof name !== 'undefined') {
|
|
|
|
payload['name'] = name;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('patch', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Update Account Password
|
|
|
|
*
|
|
|
|
* Update currently logged in user password. For validation, user is required
|
|
|
|
* to pass in the new password, and the old password. For users created with
|
|
|
|
* OAuth and Team Invites, oldPassword is optional.
|
|
|
|
*
|
|
|
|
* @param {string} password
|
|
|
|
* @param {string} oldPassword
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-06-24 00:15:27 +12:00
|
|
|
updatePassword: (password, oldPassword) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof password === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "password"');
|
|
|
|
}
|
|
|
|
let path = '/account/password';
|
|
|
|
let payload = {};
|
|
|
|
if (typeof password !== 'undefined') {
|
|
|
|
payload['password'] = password;
|
|
|
|
}
|
|
|
|
if (typeof oldPassword !== 'undefined') {
|
|
|
|
payload['oldPassword'] = oldPassword;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('patch', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Get Account Preferences
|
|
|
|
*
|
|
|
|
* Get currently logged in user preferences as a key-value object.
|
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getPrefs: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/account/prefs';
|
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Update Account Preferences
|
|
|
|
*
|
|
|
|
* Update currently logged in user account preferences. You can pass only the
|
|
|
|
* specific settings you wish to update.
|
|
|
|
*
|
|
|
|
* @param {object} prefs
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
updatePrefs: (prefs) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof prefs === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "prefs"');
|
|
|
|
}
|
|
|
|
let path = '/account/prefs';
|
|
|
|
let payload = {};
|
|
|
|
if (typeof prefs !== 'undefined') {
|
|
|
|
payload['prefs'] = prefs;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('patch', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Create Password Recovery
|
|
|
|
*
|
|
|
|
* Sends the user an email with a temporary secret key for password reset.
|
|
|
|
* When the user clicks the confirmation link he is redirected back to your
|
|
|
|
* app password reset URL with the secret key and email address values
|
|
|
|
* attached to the URL query string. Use the query string params to submit a
|
|
|
|
* request to the [PUT
|
|
|
|
* /account/recovery](/docs/client/account#accountUpdateRecovery) endpoint to
|
|
|
|
* complete the process. The verification link sent to the user's email
|
|
|
|
* address is valid for 1 hour.
|
|
|
|
*
|
|
|
|
* @param {string} email
|
|
|
|
* @param {string} url
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
createRecovery: (email, url) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof email === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "email"');
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof url === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "url"');
|
|
|
|
}
|
|
|
|
let path = '/account/recovery';
|
|
|
|
let payload = {};
|
|
|
|
if (typeof email !== 'undefined') {
|
|
|
|
payload['email'] = email;
|
|
|
|
}
|
|
|
|
if (typeof url !== 'undefined') {
|
|
|
|
payload['url'] = url;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('post', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Complete Password Recovery
|
|
|
|
*
|
|
|
|
* Use this endpoint to complete the user account password reset. Both the
|
|
|
|
* **userId** and **secret** arguments will be passed as query parameters to
|
|
|
|
* the redirect URL you have provided when sending your request to the [POST
|
|
|
|
* /account/recovery](/docs/client/account#accountCreateRecovery) endpoint.
|
|
|
|
*
|
|
|
|
* Please note that in order to avoid a [Redirect
|
|
|
|
* Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md)
|
|
|
|
* the only valid redirect URLs are the ones from domains you have set when
|
|
|
|
* adding your platforms in the console interface.
|
|
|
|
*
|
|
|
|
* @param {string} userId
|
|
|
|
* @param {string} secret
|
|
|
|
* @param {string} password
|
|
|
|
* @param {string} passwordAgain
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
updateRecovery: (userId, secret, password, passwordAgain) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof userId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "userId"');
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof secret === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "secret"');
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof password === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "password"');
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof passwordAgain === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "passwordAgain"');
|
|
|
|
}
|
|
|
|
let path = '/account/recovery';
|
|
|
|
let payload = {};
|
|
|
|
if (typeof userId !== 'undefined') {
|
|
|
|
payload['userId'] = userId;
|
|
|
|
}
|
|
|
|
if (typeof secret !== 'undefined') {
|
|
|
|
payload['secret'] = secret;
|
|
|
|
}
|
|
|
|
if (typeof password !== 'undefined') {
|
|
|
|
payload['password'] = password;
|
|
|
|
}
|
|
|
|
if (typeof passwordAgain !== 'undefined') {
|
|
|
|
payload['passwordAgain'] = passwordAgain;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('put', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Get Account Sessions
|
|
|
|
*
|
|
|
|
* Get currently logged in user list of active sessions across different
|
|
|
|
* devices.
|
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getSessions: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/account/sessions';
|
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Create Account Session
|
|
|
|
*
|
|
|
|
* Allow the user to login into their account by providing a valid email and
|
|
|
|
* password combination. This route will create a new session for the user.
|
|
|
|
*
|
|
|
|
* @param {string} email
|
|
|
|
* @param {string} password
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
createSession: (email, password) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof email === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "email"');
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof password === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "password"');
|
|
|
|
}
|
|
|
|
let path = '/account/sessions';
|
|
|
|
let payload = {};
|
|
|
|
if (typeof email !== 'undefined') {
|
|
|
|
payload['email'] = email;
|
|
|
|
}
|
|
|
|
if (typeof password !== 'undefined') {
|
|
|
|
payload['password'] = password;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('post', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Delete All Account Sessions
|
|
|
|
*
|
|
|
|
* Delete all sessions from the user account and remove any sessions cookies
|
|
|
|
* from the end client.
|
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
deleteSessions: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/account/sessions';
|
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('delete', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Create Anonymous Session
|
|
|
|
*
|
|
|
|
* Use this endpoint to allow a new user to register an anonymous account in
|
|
|
|
* your project. This route will also create a new session for the user. To
|
2021-07-02 01:35:36 +12:00
|
|
|
* allow the new user to convert an anonymous account to a normal account, you
|
|
|
|
* need to update its [email and
|
|
|
|
* password](/docs/client/account#accountUpdateEmail) or create an [OAuth2
|
|
|
|
* session](/docs/client/account#accountCreateOAuth2Session).
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
createAnonymousSession: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/account/sessions/anonymous';
|
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('post', uri, {
|
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Create Account Session with OAuth2
|
|
|
|
*
|
|
|
|
* Allow the user to login to their account using the OAuth2 provider of their
|
|
|
|
* choice. Each OAuth2 provider should be enabled from the Appwrite console
|
|
|
|
* first. Use the success and failure arguments to provide a redirect URL's
|
|
|
|
* back to your app when login is completed.
|
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* If there is already an active session, the new session will be attached to
|
|
|
|
* the logged-in account. If there are no active sessions, the server will
|
|
|
|
* attempt to look for a user with the same email address as the email
|
|
|
|
* received from the OAuth2 provider and attach the new session to the
|
|
|
|
* existing user. If no matching user is found - the server will create a new
|
|
|
|
* user..
|
|
|
|
*
|
|
|
|
*
|
2021-05-29 03:02:59 +12:00
|
|
|
* @param {string} provider
|
|
|
|
* @param {string} success
|
|
|
|
* @param {string} failure
|
|
|
|
* @param {string[]} scopes
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {void|string}
|
|
|
|
*/
|
2021-06-24 00:15:27 +12:00
|
|
|
createOAuth2Session: (provider, success, failure, scopes) => {
|
|
|
|
if (typeof provider === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "provider"');
|
|
|
|
}
|
|
|
|
let path = '/account/sessions/oauth2/{provider}'.replace('{provider}', provider);
|
|
|
|
let payload = {};
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof success !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['success'] = success;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof failure !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['failure'] = failure;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof scopes !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['scopes'] = scopes;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
payload['project'] = this.config.project;
|
|
|
|
for (const [key, value] of Object.entries(this.flatten(payload))) {
|
|
|
|
uri.searchParams.append(key, value);
|
|
|
|
}
|
|
|
|
if (typeof window !== 'undefined' && (window === null || window === void 0 ? void 0 : window.location)) {
|
|
|
|
window.location.href = uri.toString();
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
|
|
|
else {
|
2021-05-29 03:02:59 +12:00
|
|
|
return uri;
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
},
|
2021-07-02 01:35:36 +12:00
|
|
|
/**
|
|
|
|
* Get Session By ID
|
|
|
|
*
|
|
|
|
* Use this endpoint to get a logged in user's session using a Session ID.
|
|
|
|
* Inputting 'current' will return the current session being used.
|
|
|
|
*
|
|
|
|
* @param {string} sessionId
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getSession: (sessionId) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof sessionId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "sessionId"');
|
|
|
|
}
|
|
|
|
let path = '/account/sessions/{sessionId}'.replace('{sessionId}', sessionId);
|
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
|
|
|
}),
|
2021-05-29 03:02:59 +12:00
|
|
|
/**
|
|
|
|
* Delete Account Session
|
|
|
|
*
|
|
|
|
* Use this endpoint to log out the currently logged in user from all their
|
|
|
|
* account sessions across all of their different devices. When using the
|
|
|
|
* option id argument, only the session unique ID provider will be deleted.
|
|
|
|
*
|
|
|
|
* @param {string} sessionId
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
deleteSession: (sessionId) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof sessionId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "sessionId"');
|
|
|
|
}
|
|
|
|
let path = '/account/sessions/{sessionId}'.replace('{sessionId}', sessionId);
|
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('delete', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Create Email Verification
|
|
|
|
*
|
|
|
|
* Use this endpoint to send a verification message to your user email address
|
|
|
|
* to confirm they are the valid owners of that address. Both the **userId**
|
|
|
|
* and **secret** arguments will be passed as query parameters to the URL you
|
|
|
|
* have provided to be attached to the verification email. The provided URL
|
|
|
|
* should redirect the user back to your app and allow you to complete the
|
|
|
|
* verification process by verifying both the **userId** and **secret**
|
|
|
|
* parameters. Learn more about how to [complete the verification
|
|
|
|
* process](/docs/client/account#accountUpdateVerification). The verification
|
|
|
|
* link sent to the user's email address is valid for 7 days.
|
|
|
|
*
|
|
|
|
* Please note that in order to avoid a [Redirect
|
|
|
|
* Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md),
|
|
|
|
* the only valid redirect URLs are the ones from domains you have set when
|
|
|
|
* adding your platforms in the console interface.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param {string} url
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
createVerification: (url) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof url === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "url"');
|
|
|
|
}
|
|
|
|
let path = '/account/verification';
|
|
|
|
let payload = {};
|
|
|
|
if (typeof url !== 'undefined') {
|
|
|
|
payload['url'] = url;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('post', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Complete Email Verification
|
|
|
|
*
|
|
|
|
* Use this endpoint to complete the user email verification process. Use both
|
|
|
|
* the **userId** and **secret** parameters that were attached to your app URL
|
|
|
|
* to verify the user email ownership. If confirmed this route will return a
|
|
|
|
* 200 status code.
|
|
|
|
*
|
|
|
|
* @param {string} userId
|
|
|
|
* @param {string} secret
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
updateVerification: (userId, secret) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof userId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "userId"');
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof secret === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "secret"');
|
|
|
|
}
|
|
|
|
let path = '/account/verification';
|
|
|
|
let payload = {};
|
|
|
|
if (typeof userId !== 'undefined') {
|
|
|
|
payload['userId'] = userId;
|
|
|
|
}
|
|
|
|
if (typeof secret !== 'undefined') {
|
|
|
|
payload['secret'] = secret;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('put', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
})
|
|
|
|
};
|
|
|
|
this.avatars = {
|
|
|
|
/**
|
|
|
|
* Get Browser Icon
|
|
|
|
*
|
|
|
|
* You can use this endpoint to show different browser icons to your users.
|
|
|
|
* The code argument receives the browser code as it appears in your user
|
|
|
|
* /account/sessions endpoint. Use width, height and quality arguments to
|
|
|
|
* change the output settings.
|
|
|
|
*
|
|
|
|
* @param {string} code
|
|
|
|
* @param {number} width
|
|
|
|
* @param {number} height
|
|
|
|
* @param {number} quality
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {URL}
|
|
|
|
*/
|
2021-06-24 00:15:27 +12:00
|
|
|
getBrowser: (code, width, height, quality) => {
|
|
|
|
if (typeof code === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "code"');
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
let path = '/avatars/browsers/{code}'.replace('{code}', code);
|
|
|
|
let payload = {};
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof width !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['width'] = width;
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof height !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['height'] = height;
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof quality !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['quality'] = quality;
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
payload['project'] = this.config.project;
|
|
|
|
for (const [key, value] of Object.entries(this.flatten(payload))) {
|
|
|
|
uri.searchParams.append(key, value);
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
return uri;
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* Get Credit Card Icon
|
|
|
|
*
|
|
|
|
* The credit card endpoint will return you the icon of the credit card
|
|
|
|
* provider you need. Use width, height and quality arguments to change the
|
|
|
|
* output settings.
|
|
|
|
*
|
|
|
|
* @param {string} code
|
|
|
|
* @param {number} width
|
|
|
|
* @param {number} height
|
|
|
|
* @param {number} quality
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {URL}
|
|
|
|
*/
|
2021-06-24 00:15:27 +12:00
|
|
|
getCreditCard: (code, width, height, quality) => {
|
|
|
|
if (typeof code === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "code"');
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
let path = '/avatars/credit-cards/{code}'.replace('{code}', code);
|
|
|
|
let payload = {};
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof width !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['width'] = width;
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof height !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['height'] = height;
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof quality !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['quality'] = quality;
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
payload['project'] = this.config.project;
|
|
|
|
for (const [key, value] of Object.entries(this.flatten(payload))) {
|
|
|
|
uri.searchParams.append(key, value);
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
return uri;
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* Get Favicon
|
|
|
|
*
|
|
|
|
* Use this endpoint to fetch the favorite icon (AKA favicon) of any remote
|
|
|
|
* website URL.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param {string} url
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {URL}
|
|
|
|
*/
|
|
|
|
getFavicon: (url) => {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof url === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "url"');
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
let path = '/avatars/favicon';
|
|
|
|
let payload = {};
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof url !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['url'] = url;
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
payload['project'] = this.config.project;
|
|
|
|
for (const [key, value] of Object.entries(this.flatten(payload))) {
|
|
|
|
uri.searchParams.append(key, value);
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
return uri;
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* Get Country Flag
|
|
|
|
*
|
|
|
|
* You can use this endpoint to show different country flags icons to your
|
|
|
|
* users. The code argument receives the 2 letter country code. Use width,
|
|
|
|
* height and quality arguments to change the output settings.
|
|
|
|
*
|
|
|
|
* @param {string} code
|
|
|
|
* @param {number} width
|
|
|
|
* @param {number} height
|
|
|
|
* @param {number} quality
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {URL}
|
|
|
|
*/
|
2021-06-24 00:15:27 +12:00
|
|
|
getFlag: (code, width, height, quality) => {
|
|
|
|
if (typeof code === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "code"');
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
let path = '/avatars/flags/{code}'.replace('{code}', code);
|
|
|
|
let payload = {};
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof width !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['width'] = width;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof height !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['height'] = height;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof quality !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['quality'] = quality;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
payload['project'] = this.config.project;
|
|
|
|
for (const [key, value] of Object.entries(this.flatten(payload))) {
|
|
|
|
uri.searchParams.append(key, value);
|
|
|
|
}
|
|
|
|
return uri;
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* Get Image from URL
|
|
|
|
*
|
|
|
|
* Use this endpoint to fetch a remote image URL and crop it to any image size
|
|
|
|
* you want. This endpoint is very useful if you need to crop and display
|
|
|
|
* remote images in your app or in case you want to make sure a 3rd party
|
|
|
|
* image is properly served using a TLS protocol.
|
|
|
|
*
|
|
|
|
* @param {string} url
|
|
|
|
* @param {number} width
|
|
|
|
* @param {number} height
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {URL}
|
|
|
|
*/
|
2021-06-24 00:15:27 +12:00
|
|
|
getImage: (url, width, height) => {
|
|
|
|
if (typeof url === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "url"');
|
|
|
|
}
|
|
|
|
let path = '/avatars/image';
|
|
|
|
let payload = {};
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof url !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['url'] = url;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof width !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['width'] = width;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof height !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['height'] = height;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
payload['project'] = this.config.project;
|
|
|
|
for (const [key, value] of Object.entries(this.flatten(payload))) {
|
|
|
|
uri.searchParams.append(key, value);
|
|
|
|
}
|
|
|
|
return uri;
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* Get User Initials
|
|
|
|
*
|
|
|
|
* Use this endpoint to show your user initials avatar icon on your website or
|
|
|
|
* app. By default, this route will try to print your logged-in user name or
|
|
|
|
* email initials. You can also overwrite the user name if you pass the 'name'
|
|
|
|
* parameter. If no name is given and no user is logged, an empty avatar will
|
|
|
|
* be returned.
|
|
|
|
*
|
|
|
|
* You can use the color and background params to change the avatar colors. By
|
|
|
|
* default, a random theme will be selected. The random theme will persist for
|
|
|
|
* the user's initials when reloading the same theme will always return for
|
|
|
|
* the same initials.
|
|
|
|
*
|
|
|
|
* @param {string} name
|
|
|
|
* @param {number} width
|
|
|
|
* @param {number} height
|
|
|
|
* @param {string} color
|
|
|
|
* @param {string} background
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {URL}
|
|
|
|
*/
|
2021-06-24 00:15:27 +12:00
|
|
|
getInitials: (name, width, height, color, background) => {
|
2021-05-29 03:02:59 +12:00
|
|
|
let path = '/avatars/initials';
|
|
|
|
let payload = {};
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof name !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['name'] = name;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof width !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['width'] = width;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof height !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['height'] = height;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof color !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['color'] = color;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof background !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['background'] = background;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
payload['project'] = this.config.project;
|
|
|
|
for (const [key, value] of Object.entries(this.flatten(payload))) {
|
|
|
|
uri.searchParams.append(key, value);
|
|
|
|
}
|
|
|
|
return uri;
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* Get QR Code
|
|
|
|
*
|
|
|
|
* Converts a given plain text to a QR code image. You can use the query
|
|
|
|
* parameters to change the size and style of the resulting image.
|
|
|
|
*
|
|
|
|
* @param {string} text
|
|
|
|
* @param {number} size
|
|
|
|
* @param {number} margin
|
|
|
|
* @param {boolean} download
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {URL}
|
|
|
|
*/
|
2021-06-24 00:15:27 +12:00
|
|
|
getQR: (text, size, margin, download) => {
|
|
|
|
if (typeof text === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "text"');
|
|
|
|
}
|
|
|
|
let path = '/avatars/qr';
|
|
|
|
let payload = {};
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof text !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['text'] = text;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof size !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['size'] = size;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof margin !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['margin'] = margin;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof download !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['download'] = download;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
payload['project'] = this.config.project;
|
|
|
|
for (const [key, value] of Object.entries(this.flatten(payload))) {
|
|
|
|
uri.searchParams.append(key, value);
|
|
|
|
}
|
|
|
|
return uri;
|
2020-06-17 07:39:14 +12:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
};
|
|
|
|
this.database = {
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* List Attributes
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} collectionId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
listAttributes: (collectionId) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof collectionId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "collectionId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
let path = '/database/collections/{collectionId}/attributes'.replace('{collectionId}', collectionId);
|
|
|
|
let payload = {};
|
2021-05-29 03:02:59 +12:00
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Create Attribute
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} collectionId
|
|
|
|
* @param {string} id
|
|
|
|
* @param {string} type
|
|
|
|
* @param {number} size
|
|
|
|
* @param {boolean} required
|
|
|
|
* @param {string} xdefault
|
|
|
|
* @param {boolean} array
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
createAttribute: (collectionId, id, type, size, required, xdefault, array) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof collectionId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "collectionId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof id === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "id"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof type === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "type"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof size === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "size"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof required === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "required"');
|
|
|
|
}
|
|
|
|
let path = '/database/collections/{collectionId}/attributes'.replace('{collectionId}', collectionId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof id !== 'undefined') {
|
|
|
|
payload['id'] = id;
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof type !== 'undefined') {
|
|
|
|
payload['type'] = type;
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof size !== 'undefined') {
|
|
|
|
payload['size'] = size;
|
|
|
|
}
|
|
|
|
if (typeof required !== 'undefined') {
|
|
|
|
payload['required'] = required;
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof xdefault !== 'undefined') {
|
|
|
|
payload['xdefault'] = xdefault;
|
|
|
|
}
|
|
|
|
if (typeof array !== 'undefined') {
|
|
|
|
payload['array'] = array;
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('post', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get Attribute
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param {string} collectionId
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} attributeId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
getAttribute: (collectionId, attributeId) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof collectionId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "collectionId"');
|
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof attributeId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "attributeId"');
|
|
|
|
}
|
|
|
|
let path = '/database/collections/{collectionId}/attributes/{attributeId}'.replace('{collectionId}', collectionId).replace('{attributeId}', attributeId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Delete Attribute
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param {string} collectionId
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} attributeId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
deleteAttribute: (collectionId, attributeId) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof collectionId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "collectionId"');
|
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof attributeId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "attributeId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
let path = '/database/collections/{collectionId}/attributes/{attributeId}'.replace('{collectionId}', collectionId).replace('{attributeId}', attributeId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('delete', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* List Documents
|
|
|
|
*
|
|
|
|
* Get a list of all the user documents. You can use the query params to
|
|
|
|
* filter your results. On admin mode, this endpoint will return a list of all
|
|
|
|
* of the project's documents. [Learn more about different API
|
|
|
|
* modes](/docs/admin).
|
|
|
|
*
|
|
|
|
* @param {string} collectionId
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string[]} queries
|
2021-05-29 03:02:59 +12:00
|
|
|
* @param {number} limit
|
|
|
|
* @param {number} offset
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string[]} orderAttributes
|
|
|
|
* @param {string[]} orderTypes
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
listDocuments: (collectionId, queries, limit, offset, orderAttributes, orderTypes) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof collectionId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "collectionId"');
|
|
|
|
}
|
|
|
|
let path = '/database/collections/{collectionId}/documents'.replace('{collectionId}', collectionId);
|
|
|
|
let payload = {};
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof queries !== 'undefined') {
|
|
|
|
payload['queries'] = queries;
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof limit !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['limit'] = limit;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof offset !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['offset'] = offset;
|
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof orderAttributes !== 'undefined') {
|
|
|
|
payload['orderAttributes'] = orderAttributes;
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof orderTypes !== 'undefined') {
|
|
|
|
payload['orderTypes'] = orderTypes;
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Create Document
|
|
|
|
*
|
|
|
|
* Create a new Document. Before using this route, you should create a new
|
|
|
|
* collection resource using either a [server
|
|
|
|
* integration](/docs/server/database#databaseCreateCollection) API or
|
|
|
|
* directly from your database console.
|
|
|
|
*
|
|
|
|
* @param {string} collectionId
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} documentId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @param {object} data
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} read
|
|
|
|
* @param {string} write
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
createDocument: (collectionId, documentId, data, read, write) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof collectionId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "collectionId"');
|
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof documentId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "documentId"');
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof data === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "data"');
|
|
|
|
}
|
|
|
|
let path = '/database/collections/{collectionId}/documents'.replace('{collectionId}', collectionId);
|
|
|
|
let payload = {};
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof documentId !== 'undefined') {
|
|
|
|
payload['documentId'] = documentId;
|
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
if (typeof data !== 'undefined') {
|
|
|
|
payload['data'] = data;
|
|
|
|
}
|
|
|
|
if (typeof read !== 'undefined') {
|
|
|
|
payload['read'] = read;
|
|
|
|
}
|
|
|
|
if (typeof write !== 'undefined') {
|
|
|
|
payload['write'] = write;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('post', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Get Document
|
|
|
|
*
|
|
|
|
* Get a document by its unique ID. This endpoint response returns a JSON
|
|
|
|
* object with the document data.
|
|
|
|
*
|
|
|
|
* @param {string} collectionId
|
|
|
|
* @param {string} documentId
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getDocument: (collectionId, documentId) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof collectionId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "collectionId"');
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof documentId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "documentId"');
|
|
|
|
}
|
|
|
|
let path = '/database/collections/{collectionId}/documents/{documentId}'.replace('{collectionId}', collectionId).replace('{documentId}', documentId);
|
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Update Document
|
|
|
|
*
|
|
|
|
* Update a document by its unique ID. Using the patch method you can pass
|
|
|
|
* only specific fields that will get updated.
|
|
|
|
*
|
|
|
|
* @param {string} collectionId
|
|
|
|
* @param {string} documentId
|
|
|
|
* @param {object} data
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} read
|
|
|
|
* @param {string} write
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-06-24 00:15:27 +12:00
|
|
|
updateDocument: (collectionId, documentId, data, read, write) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof collectionId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "collectionId"');
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof documentId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "documentId"');
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof data === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "data"');
|
|
|
|
}
|
|
|
|
let path = '/database/collections/{collectionId}/documents/{documentId}'.replace('{collectionId}', collectionId).replace('{documentId}', documentId);
|
|
|
|
let payload = {};
|
|
|
|
if (typeof data !== 'undefined') {
|
|
|
|
payload['data'] = data;
|
|
|
|
}
|
|
|
|
if (typeof read !== 'undefined') {
|
|
|
|
payload['read'] = read;
|
|
|
|
}
|
|
|
|
if (typeof write !== 'undefined') {
|
|
|
|
payload['write'] = write;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('patch', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Delete Document
|
|
|
|
*
|
|
|
|
* Delete a document by its unique ID. This endpoint deletes only the parent
|
|
|
|
* documents, its attributes and relations to other documents. Child documents
|
|
|
|
* **will not** be deleted.
|
|
|
|
*
|
|
|
|
* @param {string} collectionId
|
|
|
|
* @param {string} documentId
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
deleteDocument: (collectionId, documentId) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof collectionId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "collectionId"');
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof documentId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "documentId"');
|
|
|
|
}
|
|
|
|
let path = '/database/collections/{collectionId}/documents/{documentId}'.replace('{collectionId}', collectionId).replace('{documentId}', documentId);
|
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('delete', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-07-20 22:12:39 +12:00
|
|
|
}),
|
2021-05-29 03:02:59 +12:00
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* List Indexes
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} collectionId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
listIndexes: (collectionId) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof collectionId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "collectionId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
let path = '/database/collections/{collectionId}/indexes'.replace('{collectionId}', collectionId);
|
|
|
|
let payload = {};
|
2021-05-29 03:02:59 +12:00
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Create Index
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} collectionId
|
|
|
|
* @param {string} id
|
|
|
|
* @param {string} type
|
|
|
|
* @param {string[]} attributes
|
|
|
|
* @param {string[]} orders
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
createIndex: (collectionId, id, type, attributes, orders) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof collectionId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "collectionId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof id === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "id"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof type === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "type"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof attributes === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "attributes"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
let path = '/database/collections/{collectionId}/indexes'.replace('{collectionId}', collectionId);
|
|
|
|
let payload = {};
|
|
|
|
if (typeof id !== 'undefined') {
|
|
|
|
payload['id'] = id;
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof type !== 'undefined') {
|
|
|
|
payload['type'] = type;
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof attributes !== 'undefined') {
|
|
|
|
payload['attributes'] = attributes;
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof orders !== 'undefined') {
|
|
|
|
payload['orders'] = orders;
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('post', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get Index
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} collectionId
|
|
|
|
* @param {string} indexId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
getIndex: (collectionId, indexId) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof collectionId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "collectionId"');
|
|
|
|
}
|
|
|
|
if (typeof indexId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "indexId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
let path = '/database/collections/{collectionId}/indexes/{indexId}'.replace('{collectionId}', collectionId).replace('{indexId}', indexId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Delete Index
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} collectionId
|
|
|
|
* @param {string} indexId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
deleteIndex: (collectionId, indexId) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof collectionId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "collectionId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof indexId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "indexId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
let path = '/database/collections/{collectionId}/indexes/{indexId}'.replace('{collectionId}', collectionId).replace('{indexId}', indexId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('delete', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-07-20 22:12:39 +12:00
|
|
|
})
|
|
|
|
};
|
|
|
|
this.functions = {
|
2021-05-29 03:02:59 +12:00
|
|
|
/**
|
|
|
|
* List Executions
|
|
|
|
*
|
|
|
|
* Get a list of all the current user function execution logs. You can use the
|
|
|
|
* query params to filter your results. On admin mode, this endpoint will
|
|
|
|
* return a list of all of the project's executions. [Learn more about
|
|
|
|
* different API modes](/docs/admin).
|
|
|
|
*
|
|
|
|
* @param {string} functionId
|
|
|
|
* @param {number} limit
|
|
|
|
* @param {number} offset
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
listExecutions: (functionId, limit, offset) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof functionId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "functionId"');
|
|
|
|
}
|
|
|
|
let path = '/functions/{functionId}/executions'.replace('{functionId}', functionId);
|
|
|
|
let payload = {};
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof limit !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['limit'] = limit;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof offset !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['offset'] = offset;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-06-14 06:44:50 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Create Execution
|
|
|
|
*
|
|
|
|
* Trigger a function execution. The returned object will return you the
|
|
|
|
* current execution status. You can ping the `Get Execution` endpoint to get
|
|
|
|
* updates on the current execution status. Once this endpoint is called, your
|
|
|
|
* function execution process will start asynchronously.
|
|
|
|
*
|
|
|
|
* @param {string} functionId
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} executionId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @param {string} data
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
createExecution: (functionId, executionId, data) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof functionId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "functionId"');
|
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof executionId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "executionId"');
|
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
let path = '/functions/{functionId}/executions'.replace('{functionId}', functionId);
|
|
|
|
let payload = {};
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof executionId !== 'undefined') {
|
|
|
|
payload['executionId'] = executionId;
|
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
if (typeof data !== 'undefined') {
|
|
|
|
payload['data'] = data;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('post', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Get Execution
|
|
|
|
*
|
|
|
|
* Get a function execution log by its unique ID.
|
|
|
|
*
|
|
|
|
* @param {string} functionId
|
|
|
|
* @param {string} executionId
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getExecution: (functionId, executionId) => __awaiter(this, void 0, void 0, function* () {
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof functionId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "functionId"');
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof executionId === 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
throw new AppwriteException('Missing required parameter: "executionId"');
|
|
|
|
}
|
|
|
|
let path = '/functions/{functionId}/executions/{executionId}'.replace('{functionId}', functionId).replace('{executionId}', executionId);
|
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
|
|
|
'content-type': 'application/json',
|
2020-05-11 08:19:20 +12:00
|
|
|
}, payload);
|
2021-07-20 22:12:39 +12:00
|
|
|
})
|
|
|
|
};
|
|
|
|
this.locale = {
|
2021-05-29 03:02:59 +12:00
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get User Locale
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get the current user location based on IP. Returns an object with user
|
|
|
|
* country code, country name, continent name, continent code, ip address and
|
|
|
|
* suggested currency. You can use the locale header to get the data in a
|
|
|
|
* supported language.
|
|
|
|
*
|
|
|
|
* ([IP Geolocation by DB-IP](https://db-ip.com))
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
get: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/locale';
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
2021-07-20 22:12:39 +12:00
|
|
|
return yield this.call('get', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* List Continents
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* List of all continents. You can use the locale header to get the data in a
|
|
|
|
* supported language.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
getContinents: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/locale/continents';
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-05-11 08:19:20 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* List Countries
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* List of all countries. You can use the locale header to get the data in a
|
|
|
|
* supported language.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
getCountries: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/locale/countries';
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
2021-07-20 22:12:39 +12:00
|
|
|
return yield this.call('get', uri, {
|
|
|
|
'content-type': 'application/json',
|
2021-05-29 03:02:59 +12:00
|
|
|
}, payload);
|
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* List EU Countries
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* List of all countries that are currently members of the EU. You can use the
|
|
|
|
* locale header to get the data in a supported language.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
getCountriesEU: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/locale/countries/eu';
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-07-21 23:53:48 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* List Countries Phone Codes
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* List of all countries phone codes. You can use the locale header to get the
|
|
|
|
* data in a supported language.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
getCountriesPhones: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/locale/countries/phones';
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
2021-07-20 22:12:39 +12:00
|
|
|
return yield this.call('get', uri, {
|
2020-06-08 16:38:39 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* List Currencies
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* List of all currencies, including currency symbol, name, plural, and
|
|
|
|
* decimal digits for all major and minor currencies. You can use the locale
|
|
|
|
* header to get the data in a supported language.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
getCurrencies: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/locale/currencies';
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-06-08 16:38:39 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-07-20 22:12:39 +12:00
|
|
|
}),
|
2021-05-29 03:02:59 +12:00
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* List Languages
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* List of all languages classified by ISO 639-1 including 2-letter code, name
|
|
|
|
* in English, and name in the respective language.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
getLanguages: () => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/locale/languages';
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-06-08 16:38:39 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-07-20 22:12:39 +12:00
|
|
|
})
|
|
|
|
};
|
|
|
|
this.storage = {
|
2021-05-29 03:02:59 +12:00
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* List Files
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get a list of all the user files. You can use the query params to filter
|
|
|
|
* your results. On admin mode, this endpoint will return a list of all of the
|
|
|
|
* project's files. [Learn more about different API modes](/docs/admin).
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} search
|
|
|
|
* @param {number} limit
|
|
|
|
* @param {number} offset
|
|
|
|
* @param {string} orderType
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
listFiles: (search, limit, offset, orderType) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
let path = '/storage/files';
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof search !== 'undefined') {
|
|
|
|
payload['search'] = search;
|
|
|
|
}
|
|
|
|
if (typeof limit !== 'undefined') {
|
|
|
|
payload['limit'] = limit;
|
|
|
|
}
|
|
|
|
if (typeof offset !== 'undefined') {
|
|
|
|
payload['offset'] = offset;
|
|
|
|
}
|
|
|
|
if (typeof orderType !== 'undefined') {
|
|
|
|
payload['orderType'] = orderType;
|
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-06-08 16:38:39 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Create File
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Create a new file. The user who creates the file will automatically be
|
|
|
|
* assigned to read and write access unless he has passed custom values for
|
|
|
|
* read and write arguments.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {File} file
|
|
|
|
* @param {string[]} read
|
|
|
|
* @param {string[]} write
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
createFile: (file, read, write) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof file === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "file"');
|
|
|
|
}
|
|
|
|
let path = '/storage/files';
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof file !== 'undefined') {
|
|
|
|
payload['file'] = file;
|
|
|
|
}
|
|
|
|
if (typeof read !== 'undefined') {
|
|
|
|
payload['read'] = read;
|
|
|
|
}
|
|
|
|
if (typeof write !== 'undefined') {
|
|
|
|
payload['write'] = write;
|
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
const uri = new URL(this.config.endpoint + path);
|
2021-07-20 22:12:39 +12:00
|
|
|
return yield this.call('post', uri, {
|
|
|
|
'content-type': 'multipart/form-data',
|
2020-06-08 16:38:39 +12:00
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get File
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get a file by its unique ID. This endpoint response returns a JSON object
|
|
|
|
* with the file metadata.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} fileId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
getFile: (fileId) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof fileId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "fileId"');
|
|
|
|
}
|
|
|
|
let path = '/storage/files/{fileId}'.replace('{fileId}', fileId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-06-08 16:38:39 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Update File
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Update a file by its unique ID. Only users with write permissions have
|
|
|
|
* access to update this resource.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} fileId
|
|
|
|
* @param {string[]} read
|
|
|
|
* @param {string[]} write
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
updateFile: (fileId, read, write) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof fileId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "fileId"');
|
|
|
|
}
|
|
|
|
if (typeof read === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "read"');
|
|
|
|
}
|
|
|
|
if (typeof write === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "write"');
|
|
|
|
}
|
|
|
|
let path = '/storage/files/{fileId}'.replace('{fileId}', fileId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof read !== 'undefined') {
|
|
|
|
payload['read'] = read;
|
|
|
|
}
|
|
|
|
if (typeof write !== 'undefined') {
|
|
|
|
payload['write'] = write;
|
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
const uri = new URL(this.config.endpoint + path);
|
2021-07-20 22:12:39 +12:00
|
|
|
return yield this.call('put', uri, {
|
2020-06-08 16:38:39 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Delete File
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Delete a file by its unique ID. Only users with write permissions have
|
|
|
|
* access to delete this resource.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} fileId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
deleteFile: (fileId) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof fileId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "fileId"');
|
|
|
|
}
|
|
|
|
let path = '/storage/files/{fileId}'.replace('{fileId}', fileId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
2021-07-20 22:12:39 +12:00
|
|
|
return yield this.call('delete', uri, {
|
2020-06-08 16:38:39 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get File for Download
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get a file content by its unique ID. The endpoint response return with a
|
|
|
|
* 'Content-Disposition: attachment' header that tells the browser to start
|
|
|
|
* downloading the file to user downloads directory.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} fileId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
2021-07-20 22:12:39 +12:00
|
|
|
* @returns {URL}
|
2021-05-29 03:02:59 +12:00
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
getFileDownload: (fileId) => {
|
|
|
|
if (typeof fileId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "fileId"');
|
|
|
|
}
|
|
|
|
let path = '/storage/files/{fileId}/download'.replace('{fileId}', fileId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
2021-07-20 22:12:39 +12:00
|
|
|
payload['project'] = this.config.project;
|
|
|
|
for (const [key, value] of Object.entries(this.flatten(payload))) {
|
|
|
|
uri.searchParams.append(key, value);
|
|
|
|
}
|
|
|
|
return uri;
|
|
|
|
},
|
2021-05-29 03:02:59 +12:00
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get File Preview
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get a file preview image. Currently, this method supports preview for image
|
|
|
|
* files (jpg, png, and gif), other supported formats, like pdf, docs, slides,
|
|
|
|
* and spreadsheets, will return the file icon image. You can also pass query
|
|
|
|
* string arguments for cutting and resizing your preview image.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} fileId
|
|
|
|
* @param {number} width
|
|
|
|
* @param {number} height
|
|
|
|
* @param {string} gravity
|
|
|
|
* @param {number} quality
|
|
|
|
* @param {number} borderWidth
|
|
|
|
* @param {string} borderColor
|
|
|
|
* @param {number} borderRadius
|
|
|
|
* @param {number} opacity
|
|
|
|
* @param {number} rotation
|
|
|
|
* @param {string} background
|
|
|
|
* @param {string} output
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
2021-07-20 22:12:39 +12:00
|
|
|
* @returns {URL}
|
2021-05-29 03:02:59 +12:00
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
getFilePreview: (fileId, width, height, gravity, quality, borderWidth, borderColor, borderRadius, opacity, rotation, background, output) => {
|
|
|
|
if (typeof fileId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "fileId"');
|
|
|
|
}
|
|
|
|
let path = '/storage/files/{fileId}/preview'.replace('{fileId}', fileId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof width !== 'undefined') {
|
|
|
|
payload['width'] = width;
|
|
|
|
}
|
|
|
|
if (typeof height !== 'undefined') {
|
|
|
|
payload['height'] = height;
|
|
|
|
}
|
|
|
|
if (typeof gravity !== 'undefined') {
|
|
|
|
payload['gravity'] = gravity;
|
|
|
|
}
|
|
|
|
if (typeof quality !== 'undefined') {
|
|
|
|
payload['quality'] = quality;
|
|
|
|
}
|
|
|
|
if (typeof borderWidth !== 'undefined') {
|
|
|
|
payload['borderWidth'] = borderWidth;
|
|
|
|
}
|
|
|
|
if (typeof borderColor !== 'undefined') {
|
|
|
|
payload['borderColor'] = borderColor;
|
|
|
|
}
|
|
|
|
if (typeof borderRadius !== 'undefined') {
|
|
|
|
payload['borderRadius'] = borderRadius;
|
|
|
|
}
|
|
|
|
if (typeof opacity !== 'undefined') {
|
|
|
|
payload['opacity'] = opacity;
|
|
|
|
}
|
|
|
|
if (typeof rotation !== 'undefined') {
|
|
|
|
payload['rotation'] = rotation;
|
|
|
|
}
|
|
|
|
if (typeof background !== 'undefined') {
|
|
|
|
payload['background'] = background;
|
|
|
|
}
|
|
|
|
if (typeof output !== 'undefined') {
|
|
|
|
payload['output'] = output;
|
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
const uri = new URL(this.config.endpoint + path);
|
2021-07-20 22:12:39 +12:00
|
|
|
payload['project'] = this.config.project;
|
|
|
|
for (const [key, value] of Object.entries(this.flatten(payload))) {
|
|
|
|
uri.searchParams.append(key, value);
|
|
|
|
}
|
|
|
|
return uri;
|
|
|
|
},
|
2021-05-29 03:02:59 +12:00
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get File for View
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get a file content by its unique ID. This endpoint is similar to the
|
|
|
|
* download method but returns with no 'Content-Disposition: attachment'
|
|
|
|
* header.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} fileId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
2021-07-20 22:12:39 +12:00
|
|
|
* @returns {URL}
|
2021-05-29 03:02:59 +12:00
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
getFileView: (fileId) => {
|
|
|
|
if (typeof fileId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "fileId"');
|
|
|
|
}
|
|
|
|
let path = '/storage/files/{fileId}/view'.replace('{fileId}', fileId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
2021-07-20 22:12:39 +12:00
|
|
|
payload['project'] = this.config.project;
|
|
|
|
for (const [key, value] of Object.entries(this.flatten(payload))) {
|
|
|
|
uri.searchParams.append(key, value);
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
return uri;
|
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
};
|
2021-07-20 22:12:39 +12:00
|
|
|
this.teams = {
|
2021-05-29 03:02:59 +12:00
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* List Teams
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get a list of all the current user teams. You can use the query params to
|
|
|
|
* filter your results. On admin mode, this endpoint will return a list of all
|
|
|
|
* of the project's teams. [Learn more about different API
|
|
|
|
* modes](/docs/admin).
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
* @param {string} search
|
|
|
|
* @param {number} limit
|
|
|
|
* @param {number} offset
|
|
|
|
* @param {string} orderType
|
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-06-24 00:15:27 +12:00
|
|
|
list: (search, limit, offset, orderType) => __awaiter(this, void 0, void 0, function* () {
|
2021-07-20 22:12:39 +12:00
|
|
|
let path = '/teams';
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof search !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['search'] = search;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof limit !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['limit'] = limit;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof offset !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['offset'] = offset;
|
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof orderType !== 'undefined') {
|
2021-05-29 03:02:59 +12:00
|
|
|
payload['orderType'] = orderType;
|
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Create Team
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Create a new team. The user who creates the team will automatically be
|
|
|
|
* assigned as the owner of the team. The team owner can invite new members,
|
|
|
|
* who will be able add new owners and update or delete the team from your
|
|
|
|
* project.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} teamId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @param {string} name
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string[]} roles
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
create: (teamId, name, roles) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof teamId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "teamId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof name === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "name"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
let path = '/teams';
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof teamId !== 'undefined') {
|
|
|
|
payload['teamId'] = teamId;
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
|
|
|
if (typeof name !== 'undefined') {
|
|
|
|
payload['name'] = name;
|
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof roles !== 'undefined') {
|
|
|
|
payload['roles'] = roles;
|
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('post', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get Team
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get a team by its unique ID. All team members have read access for this
|
|
|
|
* resource.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} teamId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
get: (teamId) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof teamId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "teamId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
let path = '/teams/{teamId}'.replace('{teamId}', teamId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Update Team
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Update a team by its unique ID. Only team owners have write access for this
|
|
|
|
* resource.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} teamId
|
|
|
|
* @param {string} name
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
update: (teamId, name) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof teamId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "teamId"');
|
|
|
|
}
|
|
|
|
if (typeof name === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "name"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
let path = '/teams/{teamId}'.replace('{teamId}', teamId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof name !== 'undefined') {
|
|
|
|
payload['name'] = name;
|
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
const uri = new URL(this.config.endpoint + path);
|
2021-07-20 22:12:39 +12:00
|
|
|
return yield this.call('put', uri, {
|
2020-09-20 18:12:33 +12:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Delete Team
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Delete a team by its unique ID. Only team owners have write access for this
|
|
|
|
* resource.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} teamId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
delete: (teamId) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof teamId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "teamId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
let path = '/teams/{teamId}'.replace('{teamId}', teamId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
2021-07-20 22:12:39 +12:00
|
|
|
return yield this.call('delete', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get Team Memberships
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Get a team members by the team unique ID. All team members have read access
|
|
|
|
* for this list of resources.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} teamId
|
|
|
|
* @param {string} search
|
|
|
|
* @param {number} limit
|
|
|
|
* @param {number} offset
|
|
|
|
* @param {string} orderType
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
getMemberships: (teamId, search, limit, offset, orderType) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof teamId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "teamId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
let path = '/teams/{teamId}/memberships'.replace('{teamId}', teamId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof search !== 'undefined') {
|
|
|
|
payload['search'] = search;
|
|
|
|
}
|
|
|
|
if (typeof limit !== 'undefined') {
|
|
|
|
payload['limit'] = limit;
|
|
|
|
}
|
|
|
|
if (typeof offset !== 'undefined') {
|
|
|
|
payload['offset'] = offset;
|
|
|
|
}
|
|
|
|
if (typeof orderType !== 'undefined') {
|
|
|
|
payload['orderType'] = orderType;
|
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('get', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Create Team Membership
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Use this endpoint to invite a new member to join your team. An email with a
|
|
|
|
* link to join the team will be sent to the new member email address if the
|
|
|
|
* member doesn't exist in the project it will be created automatically.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Use the 'URL' parameter to redirect the user from the invitation email back
|
|
|
|
* to your app. When the user is redirected, use the [Update Team Membership
|
|
|
|
* Status](/docs/client/teams#teamsUpdateMembershipStatus) endpoint to allow
|
|
|
|
* the user to accept the invitation to the team.
|
|
|
|
*
|
|
|
|
* Please note that in order to avoid a [Redirect
|
|
|
|
* Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md)
|
|
|
|
* the only valid redirect URL's are the once from domains you have set when
|
|
|
|
* added your platforms in the console interface.
|
|
|
|
*
|
|
|
|
* @param {string} teamId
|
|
|
|
* @param {string} membershipId
|
|
|
|
* @param {string} email
|
|
|
|
* @param {string[]} roles
|
|
|
|
* @param {string} url
|
|
|
|
* @param {string} name
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
createMembership: (teamId, membershipId, email, roles, url, name) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof teamId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "teamId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof membershipId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "membershipId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof email === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "email"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof roles === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "roles"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof url === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "url"');
|
|
|
|
}
|
|
|
|
let path = '/teams/{teamId}/memberships'.replace('{teamId}', teamId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof membershipId !== 'undefined') {
|
|
|
|
payload['membershipId'] = membershipId;
|
|
|
|
}
|
|
|
|
if (typeof email !== 'undefined') {
|
|
|
|
payload['email'] = email;
|
|
|
|
}
|
|
|
|
if (typeof name !== 'undefined') {
|
|
|
|
payload['name'] = name;
|
|
|
|
}
|
|
|
|
if (typeof roles !== 'undefined') {
|
|
|
|
payload['roles'] = roles;
|
|
|
|
}
|
|
|
|
if (typeof url !== 'undefined') {
|
|
|
|
payload['url'] = url;
|
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
const uri = new URL(this.config.endpoint + path);
|
2021-07-20 22:12:39 +12:00
|
|
|
return yield this.call('post', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Update Membership Roles
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} teamId
|
|
|
|
* @param {string} membershipId
|
|
|
|
* @param {string[]} roles
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
updateMembershipRoles: (teamId, membershipId, roles) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof teamId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "teamId"');
|
|
|
|
}
|
|
|
|
if (typeof membershipId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "membershipId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof roles === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "roles"');
|
|
|
|
}
|
|
|
|
let path = '/teams/{teamId}/memberships/{membershipId}'.replace('{teamId}', teamId).replace('{membershipId}', membershipId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof roles !== 'undefined') {
|
|
|
|
payload['roles'] = roles;
|
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
const uri = new URL(this.config.endpoint + path);
|
2021-07-20 22:12:39 +12:00
|
|
|
return yield this.call('patch', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Delete Team Membership
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* This endpoint allows a user to leave a team or for a team owner to delete
|
|
|
|
* the membership of any other team member. You can also use this endpoint to
|
|
|
|
* delete a user membership even if it is not accepted.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} teamId
|
|
|
|
* @param {string} membershipId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
deleteMembership: (teamId, membershipId) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof teamId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "teamId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof membershipId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "membershipId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
let path = '/teams/{teamId}/memberships/{membershipId}'.replace('{teamId}', teamId).replace('{membershipId}', membershipId);
|
2021-05-29 03:02:59 +12:00
|
|
|
let payload = {};
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('delete', uri, {
|
2020-01-31 05:18:59 +13:00
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
}),
|
|
|
|
/**
|
2021-07-20 22:12:39 +12:00
|
|
|
* Update Team Membership Status
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* Use this endpoint to allow a user to accept an invitation to join a team
|
|
|
|
* after being redirected back to your app from the invitation email recieved
|
|
|
|
* by the user.
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} teamId
|
|
|
|
* @param {string} membershipId
|
2021-05-29 03:02:59 +12:00
|
|
|
* @param {string} userId
|
2021-07-20 22:12:39 +12:00
|
|
|
* @param {string} secret
|
2021-05-29 03:02:59 +12:00
|
|
|
* @throws {AppwriteException}
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
2021-07-20 22:12:39 +12:00
|
|
|
updateMembershipStatus: (teamId, membershipId, userId, secret) => __awaiter(this, void 0, void 0, function* () {
|
|
|
|
if (typeof teamId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "teamId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof membershipId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "membershipId"');
|
2021-05-29 03:02:59 +12:00
|
|
|
}
|
2021-06-24 00:15:27 +12:00
|
|
|
if (typeof userId === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "userId"');
|
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof secret === 'undefined') {
|
|
|
|
throw new AppwriteException('Missing required parameter: "secret"');
|
2021-06-24 00:15:27 +12:00
|
|
|
}
|
2021-07-20 22:12:39 +12:00
|
|
|
let path = '/teams/{teamId}/memberships/{membershipId}/status'.replace('{teamId}', teamId).replace('{membershipId}', membershipId);
|
2021-06-24 00:15:27 +12:00
|
|
|
let payload = {};
|
2021-07-20 22:12:39 +12:00
|
|
|
if (typeof userId !== 'undefined') {
|
|
|
|
payload['userId'] = userId;
|
|
|
|
}
|
|
|
|
if (typeof secret !== 'undefined') {
|
|
|
|
payload['secret'] = secret;
|
2021-06-24 00:15:27 +12:00
|
|
|
}
|
|
|
|
const uri = new URL(this.config.endpoint + path);
|
|
|
|
return yield this.call('patch', uri, {
|
|
|
|
'content-type': 'application/json',
|
|
|
|
}, payload);
|
2021-05-29 03:02:59 +12:00
|
|
|
})
|
|
|
|
};
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Set Endpoint
|
|
|
|
*
|
2021-06-24 00:15:27 +12:00
|
|
|
* Your project endpoint
|
2021-05-29 03:02:59 +12:00
|
|
|
*
|
|
|
|
* @param {string} endpoint
|
|
|
|
*
|
|
|
|
* @returns {this}
|
|
|
|
*/
|
|
|
|
setEndpoint(endpoint) {
|
|
|
|
this.config.endpoint = endpoint;
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Set Project
|
|
|
|
*
|
|
|
|
* Your project ID
|
|
|
|
*
|
|
|
|
* @param value string
|
|
|
|
*
|
|
|
|
* @return {this}
|
|
|
|
*/
|
|
|
|
setProject(value) {
|
|
|
|
this.headers['X-Appwrite-Project'] = value;
|
|
|
|
this.config.project = value;
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Set JWT
|
|
|
|
*
|
|
|
|
* Your secret JSON Web Token
|
|
|
|
*
|
|
|
|
* @param value string
|
|
|
|
*
|
|
|
|
* @return {this}
|
|
|
|
*/
|
|
|
|
setJWT(value) {
|
|
|
|
this.headers['X-Appwrite-JWT'] = value;
|
|
|
|
this.config.jwt = value;
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Set Locale
|
|
|
|
*
|
|
|
|
* @param value string
|
|
|
|
*
|
|
|
|
* @return {this}
|
|
|
|
*/
|
|
|
|
setLocale(value) {
|
|
|
|
this.headers['X-Appwrite-Locale'] = value;
|
|
|
|
this.config.locale = value;
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
call(method, url, headers = {}, params = {}) {
|
|
|
|
var _a, _b;
|
|
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
|
|
method = method.toUpperCase();
|
|
|
|
headers = Object.assign(Object.assign({}, headers), this.headers);
|
|
|
|
let options = {
|
|
|
|
method,
|
|
|
|
headers,
|
|
|
|
credentials: 'include'
|
|
|
|
};
|
|
|
|
if (typeof window !== 'undefined' && window.localStorage) {
|
|
|
|
headers['X-Fallback-Cookies'] = (_a = window.localStorage.getItem('cookieFallback')) !== null && _a !== void 0 ? _a : "";
|
|
|
|
}
|
|
|
|
if (method === 'GET') {
|
|
|
|
for (const [key, value] of Object.entries(this.flatten(params))) {
|
|
|
|
url.searchParams.append(key, value);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
switch (headers['content-type']) {
|
|
|
|
case 'application/json':
|
|
|
|
options.body = JSON.stringify(params);
|
|
|
|
break;
|
|
|
|
case 'multipart/form-data':
|
|
|
|
let formData = new FormData();
|
|
|
|
for (const key in params) {
|
|
|
|
if (Array.isArray(params[key])) {
|
|
|
|
formData.append(key + '[]', params[key].join(','));
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
formData.append(key, params[key]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
options.body = formData;
|
|
|
|
delete headers['content-type'];
|
|
|
|
break;
|
|
|
|
}
|
2020-01-31 05:18:59 +13:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
try {
|
|
|
|
let data = null;
|
|
|
|
const response = yield crossFetch.fetch(url.toString(), options);
|
|
|
|
if ((_b = response.headers.get("content-type")) === null || _b === void 0 ? void 0 : _b.includes("application/json")) {
|
|
|
|
data = yield response.json();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
data = {
|
|
|
|
message: yield response.text()
|
|
|
|
};
|
|
|
|
}
|
|
|
|
if (400 <= response.status) {
|
|
|
|
throw new AppwriteException(data === null || data === void 0 ? void 0 : data.message, response.status, data);
|
|
|
|
}
|
|
|
|
const cookieFallback = response.headers.get('X-Fallback-Cookies');
|
|
|
|
if (typeof window !== 'undefined' && window.localStorage && cookieFallback) {
|
|
|
|
window.console.warn('Appwrite is using localStorage for session management. Increase your security by adding a custom domain as your API endpoint.');
|
|
|
|
window.localStorage.setItem('cookieFallback', cookieFallback);
|
|
|
|
}
|
|
|
|
return data;
|
2020-01-31 05:18:59 +13:00
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
catch (e) {
|
|
|
|
throw new AppwriteException(e.message);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
flatten(data, prefix = '') {
|
|
|
|
let output = {};
|
|
|
|
for (const key in data) {
|
|
|
|
let value = data[key];
|
|
|
|
let finalKey = prefix ? `${prefix}[${key}]` : key;
|
|
|
|
if (Array.isArray(value)) {
|
|
|
|
output = Object.assign(output, this.flatten(value, finalKey));
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
output[finalKey] = value;
|
2020-01-31 05:18:59 +13:00
|
|
|
}
|
|
|
|
}
|
2021-05-29 03:02:59 +12:00
|
|
|
return output;
|
|
|
|
}
|
|
|
|
}
|
2020-01-31 05:18:59 +13:00
|
|
|
|
2021-05-29 03:02:59 +12:00
|
|
|
exports.Appwrite = Appwrite;
|
2020-01-31 05:18:59 +13:00
|
|
|
|
2021-06-24 00:15:27 +12:00
|
|
|
Object.defineProperty(exports, '__esModule', { value: true });
|
2020-01-31 05:18:59 +13:00
|
|
|
|
2021-06-24 00:15:27 +12:00
|
|
|
}(this.window = this.window || {}, null, window));
|