diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index b257c4736f..bb66a17904 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -504,6 +504,40 @@ App::patch('/v1/projects/:projectId/api') $response->dynamic($project, Response::MODEL_PROJECT); }); +App::patch('/v1/projects/:projectId/api/all') + ->desc('Update all API status') + ->groups(['api', 'projects']) + ->label('scope', 'projects.write') + ->label('sdk.auth', [APP_AUTH_TYPE_ADMIN]) + ->label('sdk.namespace', 'projects') + ->label('sdk.method', 'updateAPIStatusAll') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_PROJECT) + ->param('projectId', '', new UID(), 'Project unique ID.') + ->param('status', null, new Boolean(), 'API status.') + ->inject('response') + ->inject('dbForConsole') + ->action(function (string $projectId, bool $status, Response $response, Database $dbForConsole) { + + $project = $dbForConsole->getDocument('projects', $projectId); + + if ($project->isEmpty()) { + throw new Exception(Exception::PROJECT_NOT_FOUND); + } + + $allApis = array_keys(Config::getParam('apis')); + + $apis = []; + foreach ($allApis as $api) { + $apis[$api] = $status; + } + + $project = $dbForConsole->updateDocument('projects', $project->getId(), $project->setAttribute('apis', $apis)); + + $response->dynamic($project, Response::MODEL_PROJECT); + }); + App::patch('/v1/projects/:projectId/oauth2') ->desc('Update project OAuth2') ->groups(['api', 'projects'])