diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index f8e07c12f9..0cd9a62b24 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -646,6 +646,48 @@ App::delete('/v1/projects/:projectId') $response->noContent(); }); + +App::patch('/v1/projects/:projectId/team') + ->desc('Update Project Team') + ->groups(['api', 'projects']) + ->label('scope', 'projects.write') + ->label('sdk.auth', [APP_AUTH_TYPE_ADMIN]) + ->label('sdk.namespace', 'projects') + ->label('sdk.method', 'updateTeam') + ->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('teamId', '', new UID(), 'New Team ID.') + ->inject('response') + ->inject('user') + ->inject('dbForConsole') + ->inject('deletes') + ->action(function (string $projectId, string $teamId, Response $response, Document $user, Database $dbForConsole, Delete $deletes) { + // TODO: Must be owner of project + + $project = $dbForConsole->getDocument('projects', $projectId); + + if ($project->isEmpty()) { + throw new Exception(Exception::PROJECT_NOT_FOUND); + } + + $team = $dbForConsole->getDocument('teams', $teamId); + + if ($team->isEmpty()) { + throw new Exception(Exception::TEAM_NOT_FOUND); + } + + $project + ->setAttribute('teamId', $team->getId()) + ->setAttribute('teamInternalId', $team->getInternalId()) + ; + + $project = $dbForConsole->updateDocument('projects', $project->getId(), $project); + + $response->dynamic($project, Response::MODEL_PROJECT); + }); + // Webhooks App::post('/v1/projects/:projectId/webhooks')