Merge pull request #3667 from appwrite/feat-reorder-endpoints-2
Fix Endpoint Order
This commit is contained in:
commit
4f80bb87c2
12 changed files with 948 additions and 945 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
# Unreleased
|
||||||
|
|
||||||
|
- Reorder endpoints to improve docs by @Meldiron in https://github.com/appwrite/appwrite/pull/3343
|
||||||
|
|
||||||
# Version 0.15.3
|
# Version 0.15.3
|
||||||
## Features
|
## Features
|
||||||
- Added hint during Installation for DNS Configuration by @PineappleIOnic in https://github.com/appwrite/appwrite/pull/2450
|
- Added hint during Installation for DNS Configuration by @PineappleIOnic in https://github.com/appwrite/appwrite/pull/2450
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load diff
|
@ -127,33 +127,6 @@ App::get('/v1/functions')
|
||||||
]), Response::MODEL_FUNCTION_LIST);
|
]), Response::MODEL_FUNCTION_LIST);
|
||||||
});
|
});
|
||||||
|
|
||||||
App::get('/v1/functions/runtimes')
|
|
||||||
->groups(['api', 'functions'])
|
|
||||||
->desc('List runtimes')
|
|
||||||
->label('scope', 'functions.read')
|
|
||||||
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
|
|
||||||
->label('sdk.namespace', 'functions')
|
|
||||||
->label('sdk.method', 'listRuntimes')
|
|
||||||
->label('sdk.description', '/docs/references/functions/list-runtimes.md')
|
|
||||||
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
|
||||||
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
|
||||||
->label('sdk.response.model', Response::MODEL_RUNTIME_LIST)
|
|
||||||
->inject('response')
|
|
||||||
->action(function (Response $response) {
|
|
||||||
|
|
||||||
$runtimes = Config::getParam('runtimes');
|
|
||||||
|
|
||||||
$runtimes = array_map(function ($key) use ($runtimes) {
|
|
||||||
$runtimes[$key]['$id'] = $key;
|
|
||||||
return $runtimes[$key];
|
|
||||||
}, array_keys($runtimes));
|
|
||||||
|
|
||||||
$response->dynamic(new Document([
|
|
||||||
'total' => count($runtimes),
|
|
||||||
'runtimes' => $runtimes
|
|
||||||
]), Response::MODEL_RUNTIME_LIST);
|
|
||||||
});
|
|
||||||
|
|
||||||
App::get('/v1/functions/:functionId')
|
App::get('/v1/functions/:functionId')
|
||||||
->groups(['api', 'functions'])
|
->groups(['api', 'functions'])
|
||||||
->desc('Get Function')
|
->desc('Get Function')
|
||||||
|
@ -1063,7 +1036,7 @@ App::post('/v1/functions/:functionId/deployments/:deploymentId/builds/:buildId')
|
||||||
->desc('Retry Build')
|
->desc('Retry Build')
|
||||||
->label('scope', 'functions.write')
|
->label('scope', 'functions.write')
|
||||||
->label('event', 'functions.[functionId].deployments.[deploymentId].update')
|
->label('event', 'functions.[functionId].deployments.[deploymentId].update')
|
||||||
->label('sdk.auth', [APP_AUTH_TYPE_SESSION, APP_AUTH_TYPE_KEY, APP_AUTH_TYPE_JWT])
|
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
|
||||||
->label('sdk.namespace', 'functions')
|
->label('sdk.namespace', 'functions')
|
||||||
->label('sdk.method', 'retryBuild')
|
->label('sdk.method', 'retryBuild')
|
||||||
->label('sdk.description', '/docs/references/functions/retry-build.md')
|
->label('sdk.description', '/docs/references/functions/retry-build.md')
|
||||||
|
@ -1114,3 +1087,30 @@ App::post('/v1/functions/:functionId/deployments/:deploymentId/builds/:buildId')
|
||||||
|
|
||||||
$response->noContent();
|
$response->noContent();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
App::get('/v1/functions/runtimes')
|
||||||
|
->groups(['api', 'functions'])
|
||||||
|
->desc('List runtimes')
|
||||||
|
->label('scope', 'functions.read')
|
||||||
|
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
|
||||||
|
->label('sdk.namespace', 'functions')
|
||||||
|
->label('sdk.method', 'listRuntimes')
|
||||||
|
->label('sdk.description', '/docs/references/functions/list-runtimes.md')
|
||||||
|
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
||||||
|
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
||||||
|
->label('sdk.response.model', Response::MODEL_RUNTIME_LIST)
|
||||||
|
->inject('response')
|
||||||
|
->action(function (Response $response) {
|
||||||
|
|
||||||
|
$runtimes = Config::getParam('runtimes');
|
||||||
|
|
||||||
|
$runtimes = array_map(function ($key) use ($runtimes) {
|
||||||
|
$runtimes[$key]['$id'] = $key;
|
||||||
|
return $runtimes[$key];
|
||||||
|
}, array_keys($runtimes));
|
||||||
|
|
||||||
|
$response->dynamic(new Document([
|
||||||
|
'total' => count($runtimes),
|
||||||
|
'runtimes' => $runtimes
|
||||||
|
]), Response::MODEL_RUNTIME_LIST);
|
||||||
|
});
|
||||||
|
|
|
@ -512,7 +512,7 @@ App::get('/v1/teams/:teamId/memberships')
|
||||||
});
|
});
|
||||||
|
|
||||||
App::get('/v1/teams/:teamId/memberships/:membershipId')
|
App::get('/v1/teams/:teamId/memberships/:membershipId')
|
||||||
->desc('Get Team Membership')
|
->desc('List Team Membership')
|
||||||
->groups(['api', 'teams'])
|
->groups(['api', 'teams'])
|
||||||
->label('scope', 'teams.read')
|
->label('scope', 'teams.read')
|
||||||
->label('sdk.auth', [APP_AUTH_TYPE_SESSION, APP_AUTH_TYPE_KEY, APP_AUTH_TYPE_JWT])
|
->label('sdk.auth', [APP_AUTH_TYPE_SESSION, APP_AUTH_TYPE_KEY, APP_AUTH_TYPE_JWT])
|
||||||
|
|
|
@ -361,123 +361,6 @@ App::get('/v1/users/:userId/logs')
|
||||||
]), Response::MODEL_LOG_LIST);
|
]), Response::MODEL_LOG_LIST);
|
||||||
});
|
});
|
||||||
|
|
||||||
App::patch('/v1/users/:userId/status')
|
|
||||||
->desc('Update User Status')
|
|
||||||
->groups(['api', 'users'])
|
|
||||||
->label('event', 'users.[userId].update.status')
|
|
||||||
->label('scope', 'users.write')
|
|
||||||
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
|
|
||||||
->label('sdk.namespace', 'users')
|
|
||||||
->label('sdk.method', 'updateStatus')
|
|
||||||
->label('sdk.description', '/docs/references/users/update-user-status.md')
|
|
||||||
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
|
||||||
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
|
||||||
->label('sdk.response.model', Response::MODEL_USER)
|
|
||||||
->param('userId', '', new UID(), 'User ID.')
|
|
||||||
->param('status', null, new Boolean(true), 'User Status. To activate the user pass `true` and to block the user pass `false`.')
|
|
||||||
->inject('response')
|
|
||||||
->inject('dbForProject')
|
|
||||||
->inject('usage')
|
|
||||||
->inject('events')
|
|
||||||
->action(function (string $userId, bool $status, Response $response, Database $dbForProject, Stats $usage, Event $events) {
|
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
|
||||||
|
|
||||||
if ($user->isEmpty()) {
|
|
||||||
throw new Exception(Exception::USER_NOT_FOUND);
|
|
||||||
}
|
|
||||||
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('status', (bool) $status));
|
|
||||||
|
|
||||||
$usage
|
|
||||||
->setParam('users.update', 1)
|
|
||||||
;
|
|
||||||
|
|
||||||
$events
|
|
||||||
->setParam('userId', $user->getId())
|
|
||||||
;
|
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_USER);
|
|
||||||
});
|
|
||||||
|
|
||||||
App::patch('/v1/users/:userId/verification')
|
|
||||||
->desc('Update Email Verification')
|
|
||||||
->groups(['api', 'users'])
|
|
||||||
->label('event', 'users.[userId].update.verification')
|
|
||||||
->label('scope', 'users.write')
|
|
||||||
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
|
|
||||||
->label('sdk.namespace', 'users')
|
|
||||||
->label('sdk.method', 'updateEmailVerification')
|
|
||||||
->label('sdk.description', '/docs/references/users/update-user-email-verification.md')
|
|
||||||
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
|
||||||
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
|
||||||
->label('sdk.response.model', Response::MODEL_USER)
|
|
||||||
->param('userId', '', new UID(), 'User ID.')
|
|
||||||
->param('emailVerification', false, new Boolean(), 'User email verification status.')
|
|
||||||
->inject('response')
|
|
||||||
->inject('dbForProject')
|
|
||||||
->inject('usage')
|
|
||||||
->inject('events')
|
|
||||||
->action(function (string $userId, bool $emailVerification, Response $response, Database $dbForProject, Stats $usage, Event $events) {
|
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
|
||||||
|
|
||||||
if ($user->isEmpty()) {
|
|
||||||
throw new Exception(Exception::USER_NOT_FOUND);
|
|
||||||
}
|
|
||||||
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('emailVerification', $emailVerification));
|
|
||||||
|
|
||||||
$usage
|
|
||||||
->setParam('users.update', 1)
|
|
||||||
;
|
|
||||||
|
|
||||||
$events
|
|
||||||
->setParam('userId', $user->getId())
|
|
||||||
;
|
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_USER);
|
|
||||||
});
|
|
||||||
|
|
||||||
App::patch('/v1/users/:userId/verification/phone')
|
|
||||||
->desc('Update Phone Verification')
|
|
||||||
->groups(['api', 'users'])
|
|
||||||
->label('event', 'users.[userId].update.verification')
|
|
||||||
->label('scope', 'users.write')
|
|
||||||
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
|
|
||||||
->label('sdk.namespace', 'users')
|
|
||||||
->label('sdk.method', 'updatePhoneVerification')
|
|
||||||
->label('sdk.description', '/docs/references/users/update-user-phone-verification.md')
|
|
||||||
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
|
||||||
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
|
||||||
->label('sdk.response.model', Response::MODEL_USER)
|
|
||||||
->param('userId', '', new UID(), 'User ID.')
|
|
||||||
->param('phoneVerification', false, new Boolean(), 'User phone verification status.')
|
|
||||||
->inject('response')
|
|
||||||
->inject('dbForProject')
|
|
||||||
->inject('usage')
|
|
||||||
->inject('events')
|
|
||||||
->action(function (string $userId, bool $phoneVerification, Response $response, Database $dbForProject, Stats $usage, Event $events) {
|
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
|
||||||
|
|
||||||
if ($user->isEmpty()) {
|
|
||||||
throw new Exception(Exception::USER_NOT_FOUND);
|
|
||||||
}
|
|
||||||
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('phoneVerification', $phoneVerification));
|
|
||||||
|
|
||||||
$usage
|
|
||||||
->setParam('users.update', 1)
|
|
||||||
;
|
|
||||||
|
|
||||||
$events
|
|
||||||
->setParam('userId', $user->getId())
|
|
||||||
;
|
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_USER);
|
|
||||||
});
|
|
||||||
|
|
||||||
App::patch('/v1/users/:userId/name')
|
App::patch('/v1/users/:userId/name')
|
||||||
->desc('Update Name')
|
->desc('Update Name')
|
||||||
->groups(['api', 'users'])
|
->groups(['api', 'users'])
|
||||||
|
@ -506,7 +389,7 @@ App::patch('/v1/users/:userId/name')
|
||||||
|
|
||||||
$user
|
$user
|
||||||
->setAttribute('name', $name)
|
->setAttribute('name', $name)
|
||||||
->setAttribute('search', \implode(' ', [$user->getId(), $user->getAttribute('email', ''), $name, $user->getAttribute('phone', '')]));
|
->setAttribute('search', \implode(' ', [$user->getId(), $user->getAttribute('email'), $name]));
|
||||||
;
|
;
|
||||||
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user);
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user);
|
||||||
|
@ -596,57 +479,7 @@ App::patch('/v1/users/:userId/email')
|
||||||
$user
|
$user
|
||||||
->setAttribute('email', $email)
|
->setAttribute('email', $email)
|
||||||
->setAttribute('emailVerification', false)
|
->setAttribute('emailVerification', false)
|
||||||
->setAttribute('search', \implode(' ', [$user->getId(), $email, $user->getAttribute('name', ''), $user->getAttribute('phone', '')]))
|
->setAttribute('search', \implode(' ', [$user->getId(), $email, $user->getAttribute('name')]))
|
||||||
;
|
|
||||||
|
|
||||||
try {
|
|
||||||
$user = $dbForProject->updateDocument('users', $user->getId(), $user);
|
|
||||||
} catch (Duplicate $th) {
|
|
||||||
throw new Exception(Exception::USER_EMAIL_ALREADY_EXISTS);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$audits
|
|
||||||
->setResource('user/' . $user->getId())
|
|
||||||
;
|
|
||||||
|
|
||||||
$events
|
|
||||||
->setParam('userId', $user->getId())
|
|
||||||
;
|
|
||||||
|
|
||||||
$response->dynamic($user, Response::MODEL_USER);
|
|
||||||
});
|
|
||||||
|
|
||||||
App::patch('/v1/users/:userId/phone')
|
|
||||||
->desc('Update Phone')
|
|
||||||
->groups(['api', 'users'])
|
|
||||||
->label('event', 'users.[userId].update.phone')
|
|
||||||
->label('scope', 'users.write')
|
|
||||||
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
|
|
||||||
->label('sdk.namespace', 'users')
|
|
||||||
->label('sdk.method', 'updatePhone')
|
|
||||||
->label('sdk.description', '/docs/references/users/update-user-phone.md')
|
|
||||||
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
|
||||||
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
|
||||||
->label('sdk.response.model', Response::MODEL_USER)
|
|
||||||
->param('userId', '', new UID(), 'User ID.')
|
|
||||||
->param('number', '', new Phone(), 'User phone number.')
|
|
||||||
->inject('response')
|
|
||||||
->inject('dbForProject')
|
|
||||||
->inject('audits')
|
|
||||||
->inject('events')
|
|
||||||
->action(function (string $userId, string $number, Response $response, Database $dbForProject, EventAudit $audits, Event $events) {
|
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
|
||||||
|
|
||||||
if ($user->isEmpty()) {
|
|
||||||
throw new Exception(Exception::USER_NOT_FOUND);
|
|
||||||
}
|
|
||||||
|
|
||||||
$user
|
|
||||||
->setAttribute('phone', $number)
|
|
||||||
->setAttribute('phoneVerification', false)
|
|
||||||
->setAttribute('search', implode(' ', [$user->getId(), $user->getAttribute('name', ''), $user->getAttribute('email', ''), $number]));
|
|
||||||
;
|
;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -706,6 +539,219 @@ App::patch('/v1/users/:userId/prefs')
|
||||||
$response->dynamic(new Document($prefs), Response::MODEL_PREFERENCES);
|
$response->dynamic(new Document($prefs), Response::MODEL_PREFERENCES);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
App::patch('/v1/users/:userId/status')
|
||||||
|
->desc('Update User Status')
|
||||||
|
->groups(['api', 'users'])
|
||||||
|
->label('event', 'users.[userId].update.status')
|
||||||
|
->label('scope', 'users.write')
|
||||||
|
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
|
||||||
|
->label('sdk.namespace', 'users')
|
||||||
|
->label('sdk.method', 'updateStatus')
|
||||||
|
->label('sdk.description', '/docs/references/users/update-user-status.md')
|
||||||
|
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
||||||
|
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
||||||
|
->label('sdk.response.model', Response::MODEL_USER)
|
||||||
|
->param('userId', '', new UID(), 'User ID.')
|
||||||
|
->param('status', null, new Boolean(true), 'User Status. To activate the user pass `true` and to block the user pass `false`.')
|
||||||
|
->inject('response')
|
||||||
|
->inject('dbForProject')
|
||||||
|
->inject('usage')
|
||||||
|
->inject('events')
|
||||||
|
->action(function (string $userId, bool $status, Response $response, Database $dbForProject, Stats $usage, Event $events) {
|
||||||
|
|
||||||
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
if ($user->isEmpty()) {
|
||||||
|
throw new Exception(Exception::USER_NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('status', (bool) $status));
|
||||||
|
|
||||||
|
$usage
|
||||||
|
->setParam('users.update', 1)
|
||||||
|
;
|
||||||
|
|
||||||
|
$events
|
||||||
|
->setParam('userId', $user->getId())
|
||||||
|
;
|
||||||
|
|
||||||
|
$response->dynamic($user, Response::MODEL_USER);
|
||||||
|
});
|
||||||
|
|
||||||
|
App::patch('/v1/users/:userId/phone')
|
||||||
|
->desc('Update Phone')
|
||||||
|
->groups(['api', 'users'])
|
||||||
|
->label('event', 'users.[userId].update.phone')
|
||||||
|
->label('scope', 'users.write')
|
||||||
|
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
|
||||||
|
->label('sdk.namespace', 'users')
|
||||||
|
->label('sdk.method', 'updatePhone')
|
||||||
|
->label('sdk.description', '/docs/references/users/update-user-phone.md')
|
||||||
|
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
||||||
|
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
||||||
|
->label('sdk.response.model', Response::MODEL_USER)
|
||||||
|
->param('userId', '', new UID(), 'User ID.')
|
||||||
|
->param('number', '', new Phone(), 'User phone number.')
|
||||||
|
->inject('response')
|
||||||
|
->inject('dbForProject')
|
||||||
|
->inject('audits')
|
||||||
|
->inject('events')
|
||||||
|
->action(function (string $userId, string $number, Response $response, Database $dbForProject, EventAudit $audits, Event $events) {
|
||||||
|
|
||||||
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
if ($user->isEmpty()) {
|
||||||
|
throw new Exception(Exception::USER_NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
$user
|
||||||
|
->setAttribute('phone', $number)
|
||||||
|
->setAttribute('phoneVerification', false)
|
||||||
|
;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user);
|
||||||
|
} catch (Duplicate $th) {
|
||||||
|
throw new Exception(Exception::USER_EMAIL_ALREADY_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$audits
|
||||||
|
->setResource('user/' . $user->getId())
|
||||||
|
;
|
||||||
|
|
||||||
|
$events
|
||||||
|
->setParam('userId', $user->getId())
|
||||||
|
;
|
||||||
|
|
||||||
|
$response->dynamic($user, Response::MODEL_USER);
|
||||||
|
});
|
||||||
|
|
||||||
|
App::patch('/v1/users/:userId/verification')
|
||||||
|
->desc('Update Email Verification')
|
||||||
|
->groups(['api', 'users'])
|
||||||
|
->label('event', 'users.[userId].update.verification')
|
||||||
|
->label('scope', 'users.write')
|
||||||
|
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
|
||||||
|
->label('sdk.namespace', 'users')
|
||||||
|
->label('sdk.method', 'updateEmailVerification')
|
||||||
|
->label('sdk.description', '/docs/references/users/update-user-email-verification.md')
|
||||||
|
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
||||||
|
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
||||||
|
->label('sdk.response.model', Response::MODEL_USER)
|
||||||
|
->param('userId', '', new UID(), 'User ID.')
|
||||||
|
->param('emailVerification', false, new Boolean(), 'User email verification status.')
|
||||||
|
->inject('response')
|
||||||
|
->inject('dbForProject')
|
||||||
|
->inject('usage')
|
||||||
|
->inject('events')
|
||||||
|
->action(function (string $userId, bool $emailVerification, Response $response, Database $dbForProject, Stats $usage, Event $events) {
|
||||||
|
|
||||||
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
if ($user->isEmpty()) {
|
||||||
|
throw new Exception(Exception::USER_NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('emailVerification', $emailVerification));
|
||||||
|
|
||||||
|
$usage
|
||||||
|
->setParam('users.update', 1)
|
||||||
|
;
|
||||||
|
|
||||||
|
$events
|
||||||
|
->setParam('userId', $user->getId())
|
||||||
|
;
|
||||||
|
|
||||||
|
$response->dynamic($user, Response::MODEL_USER);
|
||||||
|
});
|
||||||
|
|
||||||
|
App::patch('/v1/users/:userId/verification/phone')
|
||||||
|
->desc('Update Phone Verification')
|
||||||
|
->groups(['api', 'users'])
|
||||||
|
->label('event', 'users.[userId].update.verification')
|
||||||
|
->label('scope', 'users.write')
|
||||||
|
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
|
||||||
|
->label('sdk.namespace', 'users')
|
||||||
|
->label('sdk.method', 'updatePhoneVerification')
|
||||||
|
->label('sdk.description', '/docs/references/users/update-user-phone-verification.md')
|
||||||
|
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
||||||
|
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
||||||
|
->label('sdk.response.model', Response::MODEL_USER)
|
||||||
|
->param('userId', '', new UID(), 'User ID.')
|
||||||
|
->param('phoneVerification', false, new Boolean(), 'User phone verification status.')
|
||||||
|
->inject('response')
|
||||||
|
->inject('dbForProject')
|
||||||
|
->inject('usage')
|
||||||
|
->inject('events')
|
||||||
|
->action(function (string $userId, bool $phoneVerification, Response $response, Database $dbForProject, Stats $usage, Event $events) {
|
||||||
|
|
||||||
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
if ($user->isEmpty()) {
|
||||||
|
throw new Exception(Exception::USER_NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('phoneVerification', $phoneVerification));
|
||||||
|
|
||||||
|
$usage
|
||||||
|
->setParam('users.update', 1)
|
||||||
|
;
|
||||||
|
|
||||||
|
$events
|
||||||
|
->setParam('userId', $user->getId())
|
||||||
|
;
|
||||||
|
|
||||||
|
$response->dynamic($user, Response::MODEL_USER);
|
||||||
|
});
|
||||||
|
|
||||||
|
App::delete('/v1/users/:userId')
|
||||||
|
->desc('Delete User')
|
||||||
|
->groups(['api', 'users'])
|
||||||
|
->label('event', 'users.[userId].delete')
|
||||||
|
->label('scope', 'users.write')
|
||||||
|
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
|
||||||
|
->label('sdk.namespace', 'users')
|
||||||
|
->label('sdk.method', 'delete')
|
||||||
|
->label('sdk.description', '/docs/references/users/delete.md')
|
||||||
|
->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT)
|
||||||
|
->label('sdk.response.model', Response::MODEL_NONE)
|
||||||
|
->param('userId', '', new UID(), 'User ID.')
|
||||||
|
->inject('response')
|
||||||
|
->inject('dbForProject')
|
||||||
|
->inject('events')
|
||||||
|
->inject('deletes')
|
||||||
|
->inject('usage')
|
||||||
|
->action(function (string $userId, Response $response, Database $dbForProject, Event $events, Delete $deletes, Stats $usage) {
|
||||||
|
|
||||||
|
$user = $dbForProject->getDocument('users', $userId);
|
||||||
|
|
||||||
|
if ($user->isEmpty()) {
|
||||||
|
throw new Exception(Exception::USER_NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
// clone user object to send to workers
|
||||||
|
$clone = clone $user;
|
||||||
|
|
||||||
|
$dbForProject->deleteDocument('users', $userId);
|
||||||
|
|
||||||
|
$deletes
|
||||||
|
->setType(DELETE_TYPE_DOCUMENT)
|
||||||
|
->setDocument($clone)
|
||||||
|
;
|
||||||
|
|
||||||
|
$events
|
||||||
|
->setParam('userId', $user->getId())
|
||||||
|
->setPayload($response->output($clone, Response::MODEL_USER))
|
||||||
|
;
|
||||||
|
|
||||||
|
$usage
|
||||||
|
->setParam('users.delete', 1)
|
||||||
|
;
|
||||||
|
|
||||||
|
$response->noContent();
|
||||||
|
});
|
||||||
|
|
||||||
App::delete('/v1/users/:userId/sessions/:sessionId')
|
App::delete('/v1/users/:userId/sessions/:sessionId')
|
||||||
->desc('Delete User Session')
|
->desc('Delete User Session')
|
||||||
->groups(['api', 'users'])
|
->groups(['api', 'users'])
|
||||||
|
@ -800,53 +846,6 @@ App::delete('/v1/users/:userId/sessions')
|
||||||
$response->noContent();
|
$response->noContent();
|
||||||
});
|
});
|
||||||
|
|
||||||
App::delete('/v1/users/:userId')
|
|
||||||
->desc('Delete User')
|
|
||||||
->groups(['api', 'users'])
|
|
||||||
->label('event', 'users.[userId].delete')
|
|
||||||
->label('scope', 'users.write')
|
|
||||||
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
|
|
||||||
->label('sdk.namespace', 'users')
|
|
||||||
->label('sdk.method', 'delete')
|
|
||||||
->label('sdk.description', '/docs/references/users/delete.md')
|
|
||||||
->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT)
|
|
||||||
->label('sdk.response.model', Response::MODEL_NONE)
|
|
||||||
->param('userId', '', new UID(), 'User ID.')
|
|
||||||
->inject('response')
|
|
||||||
->inject('dbForProject')
|
|
||||||
->inject('events')
|
|
||||||
->inject('deletes')
|
|
||||||
->inject('usage')
|
|
||||||
->action(function (string $userId, Response $response, Database $dbForProject, Event $events, Delete $deletes, Stats $usage) {
|
|
||||||
|
|
||||||
$user = $dbForProject->getDocument('users', $userId);
|
|
||||||
|
|
||||||
if ($user->isEmpty()) {
|
|
||||||
throw new Exception(Exception::USER_NOT_FOUND);
|
|
||||||
}
|
|
||||||
|
|
||||||
// clone user object to send to workers
|
|
||||||
$clone = clone $user;
|
|
||||||
|
|
||||||
$dbForProject->deleteDocument('users', $userId);
|
|
||||||
|
|
||||||
$deletes
|
|
||||||
->setType(DELETE_TYPE_DOCUMENT)
|
|
||||||
->setDocument($clone)
|
|
||||||
;
|
|
||||||
|
|
||||||
$events
|
|
||||||
->setParam('userId', $user->getId())
|
|
||||||
->setPayload($response->output($clone, Response::MODEL_USER))
|
|
||||||
;
|
|
||||||
|
|
||||||
$usage
|
|
||||||
->setParam('users.delete', 1)
|
|
||||||
;
|
|
||||||
|
|
||||||
$response->noContent();
|
|
||||||
});
|
|
||||||
|
|
||||||
App::get('/v1/users/usage')
|
App::get('/v1/users/usage')
|
||||||
->desc('Get usage stats for the users API')
|
->desc('Get usage stats for the users API')
|
||||||
->groups(['api', 'users'])
|
->groups(['api', 'users'])
|
||||||
|
|
|
@ -120,7 +120,7 @@ trait AccountBase
|
||||||
$sessionId = $response['body']['$id'];
|
$sessionId = $response['body']['$id'];
|
||||||
$session = $this->client->parseCookie((string)$response['headers']['set-cookie'])['a_session_' . $this->getProject()['$id']];
|
$session = $this->client->parseCookie((string)$response['headers']['set-cookie'])['a_session_' . $this->getProject()['$id']];
|
||||||
|
|
||||||
$response = $this->client->call(Client::METHOD_POST, '/account/sessions', array_merge([
|
$response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', array_merge([
|
||||||
'origin' => 'http://localhost',
|
'origin' => 'http://localhost',
|
||||||
'content-type' => 'application/json',
|
'content-type' => 'application/json',
|
||||||
'x-appwrite-project' => $this->getProject()['$id'],
|
'x-appwrite-project' => $this->getProject()['$id'],
|
||||||
|
|
Loading…
Reference in a new issue