]> source.dussan.org Git - nextcloud-server.git/commitdiff
refactor(core): Switch to attribute based routing 42801/head
authorprovokateurin <kate@provokateurin.de>
Wed, 10 Jan 2024 11:35:44 +0000 (12:35 +0100)
committerprovokateurin <kate@provokateurin.de>
Wed, 21 Feb 2024 11:07:50 +0000 (12:07 +0100)
Signed-off-by: provokateurin <kate@provokateurin.de>
40 files changed:
core/Controller/AppPasswordController.php
core/Controller/AutoCompleteController.php
core/Controller/AvatarController.php
core/Controller/CSRFTokenController.php
core/Controller/ClientFlowLoginController.php
core/Controller/ClientFlowLoginV2Controller.php
core/Controller/CollaborationResourcesController.php
core/Controller/ContactsMenuController.php
core/Controller/CssController.php
core/Controller/ErrorController.php
core/Controller/GuestAvatarController.php
core/Controller/HoverCardController.php
core/Controller/JsController.php
core/Controller/LoginController.php
core/Controller/LostController.php
core/Controller/NavigationController.php
core/Controller/OCJSController.php
core/Controller/OCMController.php
core/Controller/OCSController.php
core/Controller/PreviewController.php
core/Controller/ProfileApiController.php
core/Controller/ProfilePageController.php
core/Controller/RecommendedAppsController.php
core/Controller/ReferenceApiController.php
core/Controller/ReferenceController.php
core/Controller/SearchController.php
core/Controller/TextProcessingApiController.php
core/Controller/TextToImageApiController.php
core/Controller/TranslationApiController.php
core/Controller/TwoFactorChallengeController.php
core/Controller/UnifiedSearchController.php
core/Controller/UnsupportedBrowserController.php
core/Controller/UserController.php
core/Controller/WalledGardenController.php
core/Controller/WebAuthnController.php
core/Controller/WellKnownController.php
core/Controller/WhatsNewController.php
core/Controller/WipeController.php
core/openapi.json
core/routes.php

index 2575729fe850cf5da4cffa86869f99a4db7a9d18..11aca8ef32931ccfb9905f7e636801161155e7f7 100644 (file)
@@ -33,6 +33,7 @@ use OC\Authentication\Token\IProvider;
 use OC\Authentication\Token\IToken;
 use OC\User\Session;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\ApiRoute;
 use OCP\AppFramework\Http\Attribute\UseSession;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\AppFramework\OCS\OCSForbiddenException;
@@ -74,6 +75,7 @@ class AppPasswordController extends \OCP\AppFramework\OCSController {
         *
         * 200: App password returned
         */
+       #[ApiRoute(verb: 'GET', url: '/getapppassword', root: '/core')]
        public function getAppPassword(): DataResponse {
                // We do not allow the creation of new tokens if this is an app password
                if ($this->session->exists('app_password')) {
@@ -125,6 +127,7 @@ class AppPasswordController extends \OCP\AppFramework\OCSController {
         *
         * 200: App password deleted successfully
         */
+       #[ApiRoute(verb: 'DELETE', url: '/apppassword', root: '/core')]
        public function deleteAppPassword(): DataResponse {
                if (!$this->session->exists('app_password')) {
                        throw new OCSForbiddenException('no app password in use');
@@ -152,6 +155,7 @@ class AppPasswordController extends \OCP\AppFramework\OCSController {
         *
         * 200: App password returned
         */
+       #[ApiRoute(verb: 'POST', url: '/apppassword/rotate', root: '/core')]
        public function rotateAppPassword(): DataResponse {
                if (!$this->session->exists('app_password')) {
                        throw new OCSForbiddenException('no app password in use');
@@ -187,6 +191,7 @@ class AppPasswordController extends \OCP\AppFramework\OCSController {
         * 403: Password confirmation failed
         */
        #[UseSession]
+       #[ApiRoute(verb: 'PUT', url: '/apppassword/confirm', root: '/core')]
        public function confirmUserPassword(string $password): DataResponse {
                $loginName = $this->userSession->getLoginName();
                $loginResult = $this->userManager->checkPassword($loginName, $password);
index c873603fd0e5f353cbc2b3e83f0591adbba5802f..20170546ce562328d365c29b062b0d0b35b9e00b 100644 (file)
@@ -32,6 +32,7 @@ namespace OC\Core\Controller;
 
 use OCA\Core\ResponseDefinitions;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\ApiRoute;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\AppFramework\OCSController;
 use OCP\Collaboration\AutoComplete\AutoCompleteEvent;
@@ -72,6 +73,7 @@ class AutoCompleteController extends OCSController {
         *
         * 200: Autocomplete results returned
         */
+       #[ApiRoute(verb: 'GET', url: '/autocomplete/get', root: '/core')]
        public function get(string $search, ?string $itemType, ?string $itemId, ?string $sorter = null, array $shareTypes = [IShare::TYPE_USER], int $limit = 10): DataResponse {
                // if enumeration/user listings are disabled, we'll receive an empty
                // result from search() – thus nothing else to do here.
index 32858b526122b95b6c33ccc2d43aee72e8d0b6a3..03f59fd6439e68168be32fc60047212f3caf74bc 100644 (file)
@@ -34,6 +34,7 @@ namespace OC\Core\Controller;
 use OC\AppFramework\Utility\TimeFactory;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\DataDisplayResponse;
 use OCP\AppFramework\Http\FileDisplayResponse;
 use OCP\AppFramework\Http\JSONResponse;
@@ -82,6 +83,7 @@ class AvatarController extends Controller {
         * 200: Avatar returned
         * 404: Avatar not found
         */
+       #[FrontpageRoute(verb: 'GET', url: '/avatar/{userId}/{size}/dark')]
        public function getAvatarDark(string $userId, int $size) {
                if ($size <= 64) {
                        if ($size !== 64) {
@@ -128,6 +130,7 @@ class AvatarController extends Controller {
         * 200: Avatar returned
         * 404: Avatar not found
         */
+       #[FrontpageRoute(verb: 'GET', url: '/avatar/{userId}/{size}')]
        public function getAvatar(string $userId, int $size) {
                if ($size <= 64) {
                        if ($size !== 64) {
@@ -161,6 +164,7 @@ class AvatarController extends Controller {
        /**
         * @NoAdminRequired
         */
+       #[FrontpageRoute(verb: 'POST', url: '/avatar/')]
        public function postAvatar(?string $path = null): JSONResponse {
                $files = $this->request->getUploadedFile('files');
 
@@ -283,6 +287,7 @@ class AvatarController extends Controller {
        /**
         * @NoAdminRequired
         */
+       #[FrontpageRoute(verb: 'DELETE', url: '/avatar/')]
        public function deleteAvatar(): JSONResponse {
                try {
                        $avatar = $this->avatarManager->getAvatar($this->userId);
@@ -299,6 +304,7 @@ class AvatarController extends Controller {
         *
         * @return JSONResponse|DataDisplayResponse
         */
+       #[FrontpageRoute(verb: 'GET', url: '/avatar/tmp')]
        public function getTmpAvatar() {
                $tmpAvatar = $this->cache->get('tmpAvatar');
                if (is_null($tmpAvatar)) {
@@ -325,6 +331,7 @@ class AvatarController extends Controller {
        /**
         * @NoAdminRequired
         */
+       #[FrontpageRoute(verb: 'POST', url: '/avatar/cropped')]
        public function postCroppedAvatar(?array $crop = null): JSONResponse {
                if (is_null($crop)) {
                        return new JSONResponse(['data' => ['message' => $this->l10n->t("No crop data provided")]],
index 046d809702c8e2f0f4ea25a2ee867e17417aeb12..13ea0011146db4f912588906494d8f8d3dcbb61d 100644 (file)
@@ -30,6 +30,7 @@ namespace OC\Core\Controller;
 use OC\Security\CSRF\CsrfTokenManager;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\JSONResponse;
 use OCP\IRequest;
@@ -49,6 +50,7 @@ class CSRFTokenController extends Controller {
         * @NoCSRFRequired
         * @PublicPage
         */
+       #[FrontpageRoute(verb: 'GET', url: '/csrftoken')]
        public function index(): JSONResponse {
                if (!$this->request->passesStrictCookieCheck()) {
                        return new JSONResponse([], Http::STATUS_FORBIDDEN);
index d6e381b36740c17102f0093390c5e96791434640..76079e710e3ae76a6ef5d9976685d17d1ed79ac9 100644 (file)
@@ -41,6 +41,7 @@ use OCA\OAuth2\Db\AccessTokenMapper;
 use OCA\OAuth2\Db\ClientMapper;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\Attribute\UseSession;
 use OCP\AppFramework\Http\Response;
@@ -113,6 +114,7 @@ class ClientFlowLoginController extends Controller {
         * @NoCSRFRequired
         */
        #[UseSession]
+       #[FrontpageRoute(verb: 'GET', url: '/login/flow')]
        public function showAuthPickerPage(string $clientIdentifier = '', string $user = '', int $direct = 0): StandaloneTemplateResponse {
                $clientName = $this->getClientName();
                $client = null;
@@ -180,6 +182,7 @@ class ClientFlowLoginController extends Controller {
         * @NoSameSiteCookieRequired
         */
        #[UseSession]
+       #[FrontpageRoute(verb: 'GET', url: '/login/flow/grant')]
        public function grantPage(string $stateToken = '',
                string $clientIdentifier = '',
                int $direct = 0): StandaloneTemplateResponse {
@@ -232,6 +235,7 @@ class ClientFlowLoginController extends Controller {
         * @return Http\RedirectResponse|Response
         */
        #[UseSession]
+       #[FrontpageRoute(verb: 'POST', url: '/login/flow')]
        public function generateAppPassword(string $stateToken,
                string $clientIdentifier = '') {
                if (!$this->isValidToken($stateToken)) {
@@ -323,6 +327,7 @@ class ClientFlowLoginController extends Controller {
        /**
         * @PublicPage
         */
+       #[FrontpageRoute(verb: 'POST', url: '/login/flow/apptoken')]
        public function apptokenRedirect(string $stateToken, string $user, string $password): Response {
                if (!$this->isValidToken($stateToken)) {
                        return $this->stateTokenForbiddenResponse();
index f5bd2d216dde3f8834d7edd7745c2e6f9469c153..19c1f9ce2514b84c8e972d613688eb50da311a5f 100644 (file)
@@ -33,6 +33,7 @@ use OC\Core\Service\LoginFlowV2Service;
 use OCA\Core\ResponseDefinitions;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\Attribute\UseSession;
 use OCP\AppFramework\Http\JSONResponse;
@@ -84,6 +85,7 @@ class ClientFlowLoginV2Controller extends Controller {
         * 200: Login flow credentials returned
         * 404: Login flow not found or completed
         */
+       #[FrontpageRoute(verb: 'POST', url: '/login/v2/poll')]
        public function poll(string $token): JSONResponse {
                try {
                        $creds = $this->loginFlowV2Service->poll($token);
@@ -100,6 +102,7 @@ class ClientFlowLoginV2Controller extends Controller {
         */
        #[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
        #[UseSession]
+       #[FrontpageRoute(verb: 'GET', url: '/login/v2/flow/{token}')]
        public function landing(string $token, $user = ''): Response {
                if (!$this->loginFlowV2Service->startLoginFlow($token)) {
                        return $this->loginTokenForbiddenResponse();
@@ -118,6 +121,7 @@ class ClientFlowLoginV2Controller extends Controller {
         */
        #[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
        #[UseSession]
+       #[FrontpageRoute(verb: 'GET', url: '/login/v2/flow')]
        public function showAuthPickerPage($user = ''): StandaloneTemplateResponse {
                try {
                        $flow = $this->getFlowByLoginToken();
@@ -152,6 +156,7 @@ class ClientFlowLoginV2Controller extends Controller {
         */
        #[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
        #[UseSession]
+       #[FrontpageRoute(verb: 'GET', url: '/login/v2/grant')]
        public function grantPage(?string $stateToken): StandaloneTemplateResponse {
                if ($stateToken === null) {
                        return $this->stateTokenMissingResponse();
@@ -187,6 +192,7 @@ class ClientFlowLoginV2Controller extends Controller {
        /**
         * @PublicPage
         */
+       #[FrontpageRoute(verb: 'POST', url: '/login/v2/apptoken')]
        public function apptokenRedirect(?string $stateToken, string $user, string $password) {
                if ($stateToken === null) {
                        return $this->stateTokenMissingResponse();
@@ -234,6 +240,7 @@ class ClientFlowLoginV2Controller extends Controller {
         * @NoAdminRequired
         */
        #[UseSession]
+       #[FrontpageRoute(verb: 'POST', url: '/login/v2/grant')]
        public function generateAppPassword(?string $stateToken): Response {
                if ($stateToken === null) {
                        return $this->stateTokenMissingResponse();
@@ -291,6 +298,7 @@ class ClientFlowLoginV2Controller extends Controller {
         *
         * 200: Login flow init returned
         */
+       #[FrontpageRoute(verb: 'POST', url: '/login/v2')]
        public function init(): JSONResponse {
                // Get client user agent
                $userAgent = $this->request->getHeader('USER_AGENT');
index e1389309c15c3b3445d4f85b7aa0551675f46578..9d7d7148468412fd944296e66f2b4d6311c8d4dd 100644 (file)
@@ -32,6 +32,7 @@ namespace OC\Core\Controller;
 use Exception;
 use OCA\Core\ResponseDefinitions;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\ApiRoute;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\AppFramework\OCSController;
 use OCP\Collaboration\Resources\CollectionException;
@@ -84,6 +85,7 @@ class CollaborationResourcesController extends OCSController {
         * 200: Collection returned
         * 404: Collection not found
         */
+       #[ApiRoute(verb: 'GET', url: '/resources/collections/{collectionId}', root: '/collaboration')]
        public function listCollection(int $collectionId): DataResponse {
                try {
                        $collection = $this->getCollection($collectionId);
@@ -105,6 +107,7 @@ class CollaborationResourcesController extends OCSController {
         * 200: Collections returned
         * 404: Collection not found
         */
+       #[ApiRoute(verb: 'GET', url: '/resources/collections/search/{filter}', root: '/collaboration')]
        public function searchCollections(string $filter): DataResponse {
                try {
                        $collections = $this->manager->searchCollections($this->userSession->getUser(), $filter);
@@ -128,6 +131,7 @@ class CollaborationResourcesController extends OCSController {
         * 200: Collection returned
         * 404: Collection not found or resource inaccessible
         */
+       #[ApiRoute(verb: 'POST', url: '/resources/collections/{collectionId}', root: '/collaboration')]
        public function addResource(int $collectionId, string $resourceType, string $resourceId): DataResponse {
                try {
                        $collection = $this->getCollection($collectionId);
@@ -162,6 +166,7 @@ class CollaborationResourcesController extends OCSController {
         * 200: Collection returned
         * 404: Collection or resource not found
         */
+       #[ApiRoute(verb: 'DELETE', url: '/resources/collections/{collectionId}', root: '/collaboration')]
        public function removeResource(int $collectionId, string $resourceType, string $resourceId): DataResponse {
                try {
                        $collection = $this->getCollection($collectionId);
@@ -192,6 +197,7 @@ class CollaborationResourcesController extends OCSController {
         * 200: Collections returned
         * 404: Resource not accessible
         */
+       #[ApiRoute(verb: 'GET', url: '/resources/{resourceType}/{resourceId}', root: '/collaboration')]
        public function getCollectionsByResource(string $resourceType, string $resourceId): DataResponse {
                try {
                        $resource = $this->manager->getResourceForUser($resourceType, $resourceId, $this->userSession->getUser());
@@ -220,6 +226,7 @@ class CollaborationResourcesController extends OCSController {
         * 400: Creating collection is not possible
         * 404: Resource inaccessible
         */
+       #[ApiRoute(verb: 'POST', url: '/resources/{baseResourceType}/{baseResourceId}', root: '/collaboration')]
        public function createCollectionOnResource(string $baseResourceType, string $baseResourceId, string $name): DataResponse {
                if (!isset($name[0]) || isset($name[64])) {
                        return new DataResponse([], Http::STATUS_BAD_REQUEST);
@@ -253,6 +260,7 @@ class CollaborationResourcesController extends OCSController {
         * 200: Collection returned
         * 404: Collection not found
         */
+       #[ApiRoute(verb: 'PUT', url: '/resources/collections/{collectionId}', root: '/collaboration')]
        public function renameCollection(int $collectionId, string $collectionName): DataResponse {
                try {
                        $collection = $this->getCollection($collectionId);
index 7b8f2e50aa54a87bb21a23645cb3159139f81d10..e70349970a3e637eaae7a7b91f4f2d58c75c6608 100644 (file)
@@ -28,6 +28,7 @@ use Exception;
 use OC\Contacts\ContactsMenu\Manager;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\JSONResponse;
 use OCP\IRequest;
 use OCP\IUserSession;
@@ -47,6 +48,7 @@ class ContactsMenuController extends Controller {
         * @return \JsonSerializable[]
         * @throws Exception
         */
+       #[FrontpageRoute(verb: 'POST', url: '/contactsmenu/contacts')]
        public function index(?string $filter = null): array {
                return $this->manager->getEntries($this->userSession->getUser(), $filter);
        }
@@ -57,6 +59,7 @@ class ContactsMenuController extends Controller {
         * @return JSONResponse|\JsonSerializable
         * @throws Exception
         */
+       #[FrontpageRoute(verb: 'POST', url: '/contactsmenu/findOne')]
        public function findOne(int $shareType, string $shareWith) {
                $contact = $this->manager->findOne($this->userSession->getUser(), $shareType, $shareWith);
 
index 6d12309366124877145e2b236d2be66ca4620329..3fd0c524b06bb4638b6f1a88093af81b9db54575 100644 (file)
@@ -34,6 +34,7 @@ namespace OC\Core\Controller;
 use OC\Files\AppData\Factory;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\FileDisplayResponse;
 use OCP\AppFramework\Http\NotFoundResponse;
@@ -69,6 +70,7 @@ class CssController extends Controller {
         * @param string $appName css folder name
         * @return FileDisplayResponse|NotFoundResponse
         */
+       #[FrontpageRoute(verb: 'GET', url: '/css/{appName}/{fileName}')]
        public function getCss(string $fileName, string $appName): Response {
                try {
                        $folder = $this->appData->getFolder($appName);
index 0bc9e605e13fc30a7c6c1492067032f56b080497..040b75be87b2ceb5082426883209c6d60f128cea 100644 (file)
@@ -28,6 +28,7 @@ declare(strict_types=1);
 namespace OC\Core\Controller;
 
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\TemplateResponse;
 
@@ -37,6 +38,7 @@ class ErrorController extends \OCP\AppFramework\Controller {
         * @PublicPage
         * @NoCSRFRequired
         */
+       #[FrontpageRoute(verb: 'GET', url: 'error/403')]
        public function error403(): TemplateResponse {
                $response = new TemplateResponse(
                        'core',
@@ -52,6 +54,7 @@ class ErrorController extends \OCP\AppFramework\Controller {
         * @PublicPage
         * @NoCSRFRequired
         */
+       #[FrontpageRoute(verb: 'GET', url: 'error/404')]
        public function error404(): TemplateResponse {
                $response = new TemplateResponse(
                        'core',
index 3270a1f7f5aae6d892181699893ca2ddaa0c3a75..5e6f2438dd68a96cbf9b3d7350ec301c3411a861 100644 (file)
@@ -25,6 +25,7 @@ namespace OC\Core\Controller;
 
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\FileDisplayResponse;
 use OCP\AppFramework\Http\Response;
 use OCP\IAvatarManager;
@@ -61,6 +62,7 @@ class GuestAvatarController extends Controller {
         * 200: Custom avatar returned
         * 201: Avatar returned
         */
+       #[FrontpageRoute(verb: 'GET', url: '/avatar/guest/{guestName}/{size}')]
        public function getAvatar(string $guestName, string $size, ?bool $darkTheme = false) {
                $size = (int) $size;
                $darkTheme = $darkTheme ?? false;
@@ -113,6 +115,7 @@ class GuestAvatarController extends Controller {
         * 200: Custom avatar returned
         * 201: Avatar returned
         */
+       #[FrontpageRoute(verb: 'GET', url: '/avatar/guest/{guestName}/{size}/dark')]
        public function getAvatarDark(string $guestName, string $size) {
                return $this->getAvatar($guestName, $size, true);
        }
index ac1b809ba0c0a58e1106abdb4f31b4b7de9cb4d5..705d506057a9dbd75cd0732e2484aaf6cb7b58de 100644 (file)
@@ -28,6 +28,7 @@ namespace OC\Core\Controller;
 use OC\Contacts\ContactsMenu\Manager;
 use OCA\Core\ResponseDefinitions;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\ApiRoute;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\IRequest;
 use OCP\IUserSession;
@@ -56,6 +57,7 @@ class HoverCardController extends \OCP\AppFramework\OCSController {
         * 200: Account details returned
         * 404: Account not found
         */
+       #[ApiRoute(verb: 'GET', url: '/v1/{userId}', root: '/hovercard')]
        public function getUser(string $userId): DataResponse {
                $contact = $this->manager->findOne($this->userSession->getUser(), IShare::TYPE_USER, $userId);
 
index 213231eb85448792e0043164742138040d5b3cf8..1f504e05ed05df1df8dbf8950c06b7323b449d07 100644 (file)
@@ -34,6 +34,7 @@ namespace OC\Core\Controller;
 use OC\Files\AppData\Factory;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\FileDisplayResponse;
 use OCP\AppFramework\Http\NotFoundResponse;
@@ -69,6 +70,7 @@ class JsController extends Controller {
         * @param string $appName js folder name
         * @return FileDisplayResponse|NotFoundResponse
         */
+       #[FrontpageRoute(verb: 'GET', url: '/js/{appName}/{fileName}')]
        public function getJs(string $fileName, string $appName): Response {
                try {
                        $folder = $this->appData->getFolder($appName);
index 9e5eab4feceb771c33b8da1871876ed535d02675..e8c08f134be4ce3bb346a185e554cb65fffe0745 100644 (file)
@@ -43,6 +43,7 @@ use OC\User\Session;
 use OC_App;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\Attribute\UseSession;
@@ -91,6 +92,7 @@ class LoginController extends Controller {
         * @return RedirectResponse
         */
        #[UseSession]
+       #[FrontpageRoute(verb: 'GET', url: '/logout')]
        public function logout() {
                $loginToken = $this->request->getCookie('nc_token');
                if (!is_null($loginToken)) {
@@ -127,6 +129,7 @@ class LoginController extends Controller {
         */
        #[UseSession]
        #[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
+       #[FrontpageRoute(verb: 'GET', url: '/login')]
        public function showLoginForm(string $user = null, string $redirect_url = null): Http\Response {
                if ($this->userSession->isLoggedIn()) {
                        return new RedirectResponse($this->urlGenerator->linkToDefaultPageUrl());
@@ -276,6 +279,7 @@ class LoginController extends Controller {
         */
        #[UseSession]
        #[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
+       #[FrontpageRoute(verb: 'POST', url: '/login')]
        public function tryLogin(Chain $loginChain,
                string $user = '',
                string $password = '',
@@ -370,6 +374,7 @@ class LoginController extends Controller {
         */
        #[UseSession]
        #[NoCSRFRequired]
+       #[FrontpageRoute(verb: 'POST', url: '/login/confirm')]
        public function confirmPassword(string $password): DataResponse {
                $loginName = $this->userSession->getLoginName();
                $loginResult = $this->userManager->checkPassword($loginName, $password);
index 2a0d374b55212efd67cca6f28f8b40147dd45e05..8e9a9e0f0de58971bb334e7c51093c444c0f18b5 100644 (file)
@@ -44,6 +44,7 @@ use OC\Core\Exception\ResetPasswordException;
 use OC\Security\RateLimiting\Exception\RateLimitExceededException;
 use OC\Security\RateLimiting\Limiter;
 use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\JSONResponse;
 use OCP\AppFramework\Http\TemplateResponse;
@@ -108,6 +109,7 @@ class LostController extends Controller {
         * @BruteForceProtection(action=passwordResetEmail)
         * @AnonRateThrottle(limit=10, period=300)
         */
+       #[FrontpageRoute(verb: 'GET', url: '/lostpassword/reset/form/{token}/{userId}')]
        public function resetform(string $token, string $userId): TemplateResponse {
                try {
                        $this->checkPasswordResetToken($token, $userId);
@@ -172,6 +174,7 @@ class LostController extends Controller {
         * @BruteForceProtection(action=passwordResetEmail)
         * @AnonRateThrottle(limit=10, period=300)
         */
+       #[FrontpageRoute(verb: 'POST', url: '/lostpassword/email')]
        public function email(string $user): JSONResponse {
                if ($this->config->getSystemValue('lost_password_link', '') !== '') {
                        return new JSONResponse($this->error($this->l10n->t('Password reset is disabled')));
@@ -205,6 +208,7 @@ class LostController extends Controller {
         * @BruteForceProtection(action=passwordResetEmail)
         * @AnonRateThrottle(limit=10, period=300)
         */
+       #[FrontpageRoute(verb: 'POST', url: '/lostpassword/set/{token}/{userId}')]
        public function setPassword(string $token, string $userId, string $password, bool $proceed): JSONResponse {
                if ($this->encryptionManager->isEnabled() && !$proceed) {
                        $encryptionModules = $this->encryptionManager->getEncryptionModules();
index 0996b41042ed59d5c7a5a8f5596552a73564d6c1..7b651e6ec7000fd752b0e6b9b9f243564d699a2b 100644 (file)
@@ -25,6 +25,7 @@ namespace OC\Core\Controller;
 
 use OCA\Core\ResponseDefinitions;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\ApiRoute;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\AppFramework\OCSController;
 use OCP\INavigationManager;
@@ -56,6 +57,7 @@ class NavigationController extends OCSController {
         * 200: Apps navigation returned
         * 304: No apps navigation changed
         */
+       #[ApiRoute(verb: 'GET', url: '/navigation/apps', root: '/core')]
        public function getAppsNavigation(bool $absolute = false): DataResponse {
                $navigation = $this->navigationManager->getAll();
                if ($absolute) {
@@ -83,6 +85,7 @@ class NavigationController extends OCSController {
         * 200: Apps navigation returned
         * 304: No apps navigation changed
         */
+       #[ApiRoute(verb: 'GET', url: '/navigation/settings', root: '/core')]
        public function getSettingsNavigation(bool $absolute = false): DataResponse {
                $navigation = $this->navigationManager->getAll('settings');
                if ($absolute) {
index e909343912574afd5df06dd08024c3e5751e8f0e..dbb203e827f34e78c3ba2bc95b75fbf3c8f506fc 100644 (file)
@@ -34,6 +34,7 @@ use OC\Template\JSConfigHelper;
 use OCP\App\IAppManager;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\DataDisplayResponse;
 use OCP\Defaults;
@@ -87,6 +88,7 @@ class OCJSController extends Controller {
         * @NoTwoFactorRequired
         * @PublicPage
         */
+       #[FrontpageRoute(verb: 'GET', url: '/core/js/oc.js')]
        public function getConfig(): DataDisplayResponse {
                $data = $this->helper->getConfig();
 
index 03a8c0d8e4f2657669c53ef8707a5544cea5394e..4fa03e67c4f2316d2839eb501835a11e63499412 100644 (file)
@@ -29,6 +29,7 @@ namespace OC\Core\Controller;
 use Exception;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\Capabilities\ICapability;
 use OCP\IConfig;
@@ -64,6 +65,7 @@ class OCMController extends Controller {
         * 200: OCM Provider details returned
         * 500: OCM not supported
         */
+       #[FrontpageRoute(verb: 'GET', url: '/ocm-provider/')]
        public function discovery(): DataResponse {
                try {
                        $cap = Server::get(
index b0ab867f8d8e54f51638ec16451a8451a84cb494..c6ddc23717d170d427a86559b883d1233660686c 100644 (file)
@@ -31,6 +31,7 @@ namespace OC\Core\Controller;
 use OC\CapabilitiesManager;
 use OC\Security\IdentityProof\Manager;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\ApiRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\IRequest;
@@ -53,6 +54,7 @@ class OCSController extends \OCP\AppFramework\OCSController {
         * @PublicPage
         */
        #[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
+       #[ApiRoute(verb: 'GET', url: '/config', root: '')]
        public function getConfig(): DataResponse {
                $data = [
                        'version' => '1.7',
@@ -74,6 +76,7 @@ class OCSController extends \OCP\AppFramework\OCSController {
         *
         * 200: Capabilities returned
         */
+       #[ApiRoute(verb: 'GET', url: '/capabilities', root: '/cloud')]
        public function getCapabilities(): DataResponse {
                $result = [];
                [$major, $minor, $micro] = \OCP\Util::getVersion();
@@ -102,6 +105,7 @@ class OCSController extends \OCP\AppFramework\OCSController {
         * @BruteForceProtection(action=login)
         */
        #[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
+       #[ApiRoute(verb: 'POST', url: '/check', root: '/person')]
        public function personCheck(string $login = '', string $password = ''): DataResponse {
                if ($login !== '' && $password !== '') {
                        if ($this->userManager->checkPassword($login, $password)) {
@@ -123,6 +127,7 @@ class OCSController extends \OCP\AppFramework\OCSController {
         * @PublicPage
         */
        #[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
+       #[ApiRoute(verb: 'GET', url: '/key/{cloudId}', root: '/identityproof')]
        public function getIdentityProof(string $cloudId): DataResponse {
                $userObject = $this->userManager->get($cloudId);
 
index 7adec03814c7dff252cad9dfa971fbb1ecf67b3f..34c21bd3ecb9e8e8f0956ab0120591535c94d3a7 100644 (file)
@@ -30,6 +30,7 @@ namespace OC\Core\Controller;
 use OCA\Files_Sharing\SharedStorage;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\AppFramework\Http\FileDisplayResponse;
 use OCP\AppFramework\Http\RedirectResponse;
@@ -74,6 +75,7 @@ class PreviewController extends Controller {
         * 403: Getting preview is not allowed
         * 404: Preview not found
         */
+       #[FrontpageRoute(verb: 'GET', url: '/core/preview.png')]
        public function getPreview(
                string $file = '',
                int $x = 32,
@@ -117,6 +119,7 @@ class PreviewController extends Controller {
         * 403: Getting preview is not allowed
         * 404: Preview not found
         */
+       #[FrontpageRoute(verb: 'GET', url: '/core/preview')]
        public function getPreviewByFileId(
                int $fileId = -1,
                int $x = 32,
index 7a11e5f93c18ec1f6e6a6b72ae724caf6317e9d6..7cba0593c1f81c9a5e73d273227d433d49693e87 100644 (file)
@@ -30,6 +30,7 @@ namespace OC\Core\Controller;
 use OC\Core\Db\ProfileConfigMapper;
 use OC\Profile\ProfileManager;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\ApiRoute;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\AppFramework\OCS\OCSBadRequestException;
 use OCP\AppFramework\OCS\OCSForbiddenException;
@@ -68,6 +69,7 @@ class ProfileApiController extends OCSController {
         *
         * 200: Visibility updated successfully
         */
+       #[ApiRoute(verb: 'PUT', url: '/{targetUserId}', root: '/profile')]
        public function setVisibility(string $targetUserId, string $paramId, string $visibility): DataResponse {
                $requestingUser = $this->userSession->getUser();
                $targetUser = $this->userManager->get($targetUserId);
index eb5b0aa4c0aeee4aea3d9a7576c902b9ffd41dfe..c3a33d6bbdae9ddd7a3877cc82e4a8af05cdab7d 100644 (file)
@@ -29,6 +29,7 @@ namespace OC\Core\Controller;
 
 use OC\Profile\ProfileManager;
 use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\TemplateResponse;
 use OCP\AppFramework\Services\IInitialState;
@@ -65,6 +66,7 @@ class ProfilePageController extends Controller {
         * @NoAdminRequired
         * @NoSubAdminRequired
         */
+       #[FrontpageRoute(verb: 'GET', url: '/u/{targetUserId}')]
        public function index(string $targetUserId): TemplateResponse {
                $profileNotFoundTemplate = new TemplateResponse(
                        'core',
index 59e40f56f730da8afc2f7ca0c3beefe8f8d97893..5d4749e1e8374907ad027cc6d4a40ecece4a010e 100644 (file)
@@ -27,6 +27,7 @@ declare(strict_types=1);
 namespace OC\Core\Controller;
 
 use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\Response;
 use OCP\AppFramework\Http\StandaloneTemplateResponse;
@@ -48,6 +49,7 @@ class RecommendedAppsController extends Controller {
         * @NoCSRFRequired
         * @return Response
         */
+       #[FrontpageRoute(verb: 'GET', url: '/core/apps/recommended')]
        public function index(): Response {
                $defaultPageUrl = $this->urlGenerator->linkToDefaultPageUrl();
                $this->initialStateService->provideInitialState('core', 'defaultPageUrl', $defaultPageUrl);
index 384011f80208f50b6cf1a336b524805487268b63..854c15cb985498024f677d3bbde51cffe2f8ae80 100644 (file)
@@ -27,6 +27,7 @@ namespace OC\Core\Controller;
 
 use OCA\Core\ResponseDefinitions;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\ApiRoute;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\Collaboration\Reference\IDiscoverableReferenceProvider;
 use OCP\Collaboration\Reference\IReferenceManager;
@@ -59,6 +60,7 @@ class ReferenceApiController extends \OCP\AppFramework\OCSController {
         *
         * 200: References returned
         */
+       #[ApiRoute(verb: 'POST', url: '/extract', root: '/references')]
        public function extract(string $text, bool $resolve = false, int $limit = 1): DataResponse {
                $references = $this->referenceManager->extractReferences($text);
 
@@ -87,6 +89,7 @@ class ReferenceApiController extends \OCP\AppFramework\OCSController {
         *
         * 200: Reference returned
         */
+       #[ApiRoute(verb: 'GET', url: '/resolve', root: '/references')]
        public function resolveOne(string $reference): DataResponse {
                /** @var ?CoreReference $resolvedReference */
                $resolvedReference = $this->referenceManager->resolveReference(trim($reference))?->jsonSerialize();
@@ -107,6 +110,7 @@ class ReferenceApiController extends \OCP\AppFramework\OCSController {
         *
         * 200: References returned
         */
+       #[ApiRoute(verb: 'POST', url: '/resolve', root: '/references')]
        public function resolve(array $references, int $limit = 1): DataResponse {
                $result = [];
                $index = 0;
@@ -132,6 +136,7 @@ class ReferenceApiController extends \OCP\AppFramework\OCSController {
         *
         * 200: Providers returned
         */
+       #[ApiRoute(verb: 'GET', url: '/providers', root: '/references')]
        public function getProvidersInfo(): DataResponse {
                $providers = $this->referenceManager->getDiscoverableProviders();
                $jsonProviders = array_map(static function (IDiscoverableReferenceProvider $provider) {
@@ -151,6 +156,7 @@ class ReferenceApiController extends \OCP\AppFramework\OCSController {
         *
         * 200: Provider touched
         */
+       #[ApiRoute(verb: 'PUT', url: '/provider/{providerId}', root: '/references')]
        public function touchProvider(string $providerId, ?int $timestamp = null): DataResponse {
                if ($this->userId !== null) {
                        $success = $this->referenceManager->touchProvider($this->userId, $providerId, $timestamp);
index 8d1ff7f86d29099935c1de4756c046dc88841124..8874978037fa1cdf18de235330dfb747b60c059b 100644 (file)
@@ -27,6 +27,7 @@ namespace OC\Core\Controller;
 
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\DataDownloadResponse;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\Collaboration\Reference\IReferenceManager;
@@ -57,6 +58,7 @@ class ReferenceController extends Controller {
         * 200: Preview returned
         * 404: Reference not found
         */
+       #[FrontpageRoute(verb: 'GET', url: '/core/references/preview/{referenceId}')]
        public function preview(string $referenceId): DataDownloadResponse|DataResponse {
                $reference = $this->referenceManager->getReferenceByCacheKey($referenceId);
 
index f839c16e8dac52e2372a1a0f7b8b8586625b493d..ccea067ae2cf8387cefc6eb4630d06d7b68bc05a 100644 (file)
@@ -27,6 +27,7 @@ declare(strict_types=1);
 namespace OC\Core\Controller;
 
 use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\JSONResponse;
 use OCP\IRequest;
 use OCP\ISearch;
@@ -46,6 +47,7 @@ class SearchController extends Controller {
        /**
         * @NoAdminRequired
         */
+       #[FrontpageRoute(verb: 'GET', url: '/core/search')]
        public function search(string $query, array $inApps = [], int $page = 1, int $size = 30): JSONResponse {
                $results = $this->searcher->searchPaged($query, $inApps, $page, $size);
 
index cbba7e976b0d5a45100cd3c6d6d7111480c85c8a..6ba98f99f51d0f5f1bd90d58807cdab08339ca45 100644 (file)
@@ -30,6 +30,7 @@ use InvalidArgumentException;
 use OCA\Core\ResponseDefinitions;
 use OCP\AppFramework\Http;
 use OCP\AppFramework\Http\Attribute\AnonRateLimit;
+use OCP\AppFramework\Http\Attribute\ApiRoute;
 use OCP\AppFramework\Http\Attribute\NoAdminRequired;
 use OCP\AppFramework\Http\Attribute\PublicPage;
 use OCP\AppFramework\Http\Attribute\UserRateLimit;
@@ -72,6 +73,7 @@ class TextProcessingApiController extends \OCP\AppFramework\OCSController {
         * 200: Task types returned
         */
        #[PublicPage]
+       #[ApiRoute(verb: 'GET', url: '/tasktypes', root: '/textprocessing')]
        public function taskTypes(): DataResponse {
                $typeClasses = $this->textProcessingManager->getAvailableTaskTypes();
                $types = [];
@@ -113,6 +115,7 @@ class TextProcessingApiController extends \OCP\AppFramework\OCSController {
        #[PublicPage]
        #[UserRateLimit(limit: 20, period: 120)]
        #[AnonRateLimit(limit: 5, period: 120)]
+       #[ApiRoute(verb: 'POST', url: '/schedule', root: '/textprocessing')]
        public function schedule(string $input, string $type, string $appId, string $identifier = ''): DataResponse {
                try {
                        $task = new Task($type, $input, $appId, $this->userId, $identifier);
@@ -150,6 +153,7 @@ class TextProcessingApiController extends \OCP\AppFramework\OCSController {
         * 404: Task not found
         */
        #[PublicPage]
+       #[ApiRoute(verb: 'GET', url: '/task/{id}', root: '/textprocessing')]
        public function getTask(int $id): DataResponse {
                try {
                        $task = $this->textProcessingManager->getUserTask($id, $this->userId);
@@ -177,6 +181,7 @@ class TextProcessingApiController extends \OCP\AppFramework\OCSController {
         * 404: Task not found
         */
        #[NoAdminRequired]
+       #[ApiRoute(verb: 'DELETE', url: '/task/{id}', root: '/textprocessing')]
        public function deleteTask(int $id): DataResponse {
                try {
                        $task = $this->textProcessingManager->getUserTask($id, $this->userId);
@@ -207,6 +212,7 @@ class TextProcessingApiController extends \OCP\AppFramework\OCSController {
         *  200: Task list returned
         */
        #[NoAdminRequired]
+       #[ApiRoute(verb: 'GET', url: '/tasks/app/{appId}', root: '/textprocessing')]
        public function listTasksByApp(string $appId, ?string $identifier = null): DataResponse {
                try {
                        $tasks = $this->textProcessingManager->getUserTasksByApp($this->userId, $appId, $identifier);
index 9d97a538750618a621e562f03480b5c5d793a2a5..8dd21e90664672f640343af6fcb3788deae4ada2 100644 (file)
@@ -30,6 +30,7 @@ use OC\Files\AppData\AppData;
 use OCA\Core\ResponseDefinitions;
 use OCP\AppFramework\Http;
 use OCP\AppFramework\Http\Attribute\AnonRateLimit;
+use OCP\AppFramework\Http\Attribute\ApiRoute;
 use OCP\AppFramework\Http\Attribute\BruteForceProtection;
 use OCP\AppFramework\Http\Attribute\NoAdminRequired;
 use OCP\AppFramework\Http\Attribute\PublicPage;
@@ -69,6 +70,7 @@ class TextToImageApiController extends \OCP\AppFramework\OCSController {
         * 200: Returns availability status
         */
        #[PublicPage]
+       #[ApiRoute(verb: 'GET', url: '/is_available', root: '/text2image')]
        public function isAvailable(): DataResponse {
                return new DataResponse([
                        'isAvailable' => $this->textToImageManager->hasProviders(),
@@ -91,6 +93,7 @@ class TextToImageApiController extends \OCP\AppFramework\OCSController {
        #[PublicPage]
        #[UserRateLimit(limit: 20, period: 120)]
        #[AnonRateLimit(limit: 5, period: 120)]
+       #[ApiRoute(verb: 'POST', url: '/schedule', root: '/text2image')]
        public function schedule(string $input, string $appId, string $identifier = '', int $numberOfImages = 8): DataResponse {
                $task = new Task($input, $appId, $numberOfImages, $this->userId, $identifier);
                try {
@@ -125,6 +128,7 @@ class TextToImageApiController extends \OCP\AppFramework\OCSController {
         */
        #[PublicPage]
        #[BruteForceProtection(action: 'text2image')]
+       #[ApiRoute(verb: 'GET', url: '/task/{id}', root: '/text2image')]
        public function getTask(int $id): DataResponse {
                try {
                        $task = $this->textToImageManager->getUserTask($id, $this->userId);
@@ -156,6 +160,7 @@ class TextToImageApiController extends \OCP\AppFramework\OCSController {
         */
        #[PublicPage]
        #[BruteForceProtection(action: 'text2image')]
+       #[ApiRoute(verb: 'GET', url: '/task/{id}/image/{index}', root: '/text2image')]
        public function getImage(int $id, int $index): DataResponse|FileDisplayResponse {
                try {
                        $task = $this->textToImageManager->getUserTask($id, $this->userId);
@@ -195,6 +200,7 @@ class TextToImageApiController extends \OCP\AppFramework\OCSController {
         */
        #[NoAdminRequired]
        #[BruteForceProtection(action: 'text2image')]
+       #[ApiRoute(verb: 'DELETE', url: '/task/{id}', root: '/text2image')]
        public function deleteTask(int $id): DataResponse {
                try {
                        $task = $this->textToImageManager->getUserTask($id, $this->userId);
@@ -228,6 +234,7 @@ class TextToImageApiController extends \OCP\AppFramework\OCSController {
         */
        #[NoAdminRequired]
        #[AnonRateLimit(limit: 5, period: 120)]
+       #[ApiRoute(verb: 'GET', url: '/tasks/app/{appId}', root: '/text2image')]
        public function listTasksByApp(string $appId, ?string $identifier = null): DataResponse {
                try {
                        $tasks = $this->textToImageManager->getUserTasksByApp($this->userId, $appId, $identifier);
index c4f3c8e855eea31bf28cda1e77d0ec1db24728d3..4cc0ec95ca19c706ffdd26e18e34ec4fb1eeaa2b 100644 (file)
@@ -29,6 +29,7 @@ namespace OC\Core\Controller;
 
 use InvalidArgumentException;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\ApiRoute;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\IL10N;
 use OCP\IRequest;
@@ -55,6 +56,7 @@ class TranslationApiController extends \OCP\AppFramework\OCSController {
         *
         * 200: Supported languages returned
         */
+       #[ApiRoute(verb: 'GET', url: '/languages', root: '/translation')]
        public function languages(): DataResponse {
                return new DataResponse([
                        'languages' => array_map(fn ($lang) => $lang->jsonSerialize(), $this->translationManager->getLanguages()),
@@ -78,6 +80,7 @@ class TranslationApiController extends \OCP\AppFramework\OCSController {
         * 400: Language not detected or unable to translate
         * 412: Translating is not possible
         */
+       #[ApiRoute(verb: 'POST', url: '/translate', root: '/translation')]
        public function translate(string $text, ?string $fromLanguage, string $toLanguage): DataResponse {
                try {
                        $translation = $this->translationManager->translate($text, $fromLanguage, $toLanguage);
index bc25121034b9ab31e763942043bd70316eebebe9..7152078c3381a779de729dd159c513dfe5522cd4 100644 (file)
@@ -29,6 +29,7 @@ namespace OC\Core\Controller;
 use OC\Authentication\TwoFactorAuth\Manager;
 use OC_User;
 use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\Attribute\UseSession;
 use OCP\AppFramework\Http\RedirectResponse;
@@ -89,6 +90,7 @@ class TwoFactorChallengeController extends Controller {
         * @param string $redirect_url
         * @return StandaloneTemplateResponse
         */
+       #[FrontpageRoute(verb: 'GET', url: '/login/selectchallenge')]
        public function selectChallenge($redirect_url) {
                $user = $this->userSession->getUser();
                $providerSet = $this->twoFactorManager->getProviderSet($user);
@@ -117,6 +119,7 @@ class TwoFactorChallengeController extends Controller {
         * @return StandaloneTemplateResponse|RedirectResponse
         */
        #[UseSession]
+       #[FrontpageRoute(verb: 'GET', url: '/login/challenge/{challengeProviderId}')]
        public function showChallenge($challengeProviderId, $redirect_url) {
                $user = $this->userSession->getUser();
                $providerSet = $this->twoFactorManager->getProviderSet($user);
@@ -171,6 +174,7 @@ class TwoFactorChallengeController extends Controller {
         * @return RedirectResponse
         */
        #[UseSession]
+       #[FrontpageRoute(verb: 'POST', url: '/login/challenge/{challengeProviderId}')]
        public function solveChallenge($challengeProviderId, $challenge, $redirect_url = null) {
                $user = $this->userSession->getUser();
                $provider = $this->twoFactorManager->getProvider($user, $challengeProviderId);
@@ -208,6 +212,7 @@ class TwoFactorChallengeController extends Controller {
         * @NoAdminRequired
         * @NoCSRFRequired
         */
+       #[FrontpageRoute(verb: 'GET', url: 'login/setupchallenge')]
        public function setupProviders(): StandaloneTemplateResponse {
                $user = $this->userSession->getUser();
                $setupProviders = $this->twoFactorManager->getLoginSetupProviders($user);
@@ -224,6 +229,7 @@ class TwoFactorChallengeController extends Controller {
         * @NoAdminRequired
         * @NoCSRFRequired
         */
+       #[FrontpageRoute(verb: 'GET', url: 'login/setupchallenge/{providerId}')]
        public function setupProvider(string $providerId) {
                $user = $this->userSession->getUser();
                $providers = $this->twoFactorManager->getLoginSetupProviders($user);
@@ -257,6 +263,7 @@ class TwoFactorChallengeController extends Controller {
         *
         * @todo handle the extreme edge case of an invalid provider ID and redirect to the provider selection page
         */
+       #[FrontpageRoute(verb: 'POST', url: 'login/setupchallenge/{providerId}')]
        public function confirmProviderSetup(string $providerId) {
                return new RedirectResponse($this->urlGenerator->linkToRoute(
                        'core.TwoFactorChallenge.showChallenge',
index 9754515603c74d1ddcbb4194efb4da3ec53a918e..469c6c6ed7bf40a2c0224fd4b129089c649e8ecc 100644 (file)
@@ -34,6 +34,7 @@ use OC\Search\SearchQuery;
 use OC\Search\UnsupportedFilter;
 use OCA\Core\ResponseDefinitions;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\ApiRoute;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\AppFramework\OCSController;
 use OCP\IRequest;
@@ -69,6 +70,7 @@ class UnifiedSearchController extends OCSController {
         *
         * 200: Providers returned
         */
+       #[ApiRoute(verb: 'GET', url: '/providers', root: '/search')]
        public function getProviders(string $from = ''): DataResponse {
                [$route, $parameters] = $this->getRouteInformation($from);
 
@@ -99,6 +101,7 @@ class UnifiedSearchController extends OCSController {
         * 200: Search entries returned
         * 400: Searching is not possible
         */
+       #[ApiRoute(verb: 'GET', url: '/providers/{providerId}/search', root: '/search')]
        public function search(
                string $providerId,
                // Unused parameter for OpenAPI spec generator
index 4f096d4409226beaf7d9502b76219ebccfe9b1ac..dfcff8df38140342169dec150990630f72e725e6 100644 (file)
@@ -28,6 +28,7 @@ declare(strict_types=1);
 namespace OC\Core\Controller;
 
 use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\Response;
 use OCP\AppFramework\Http\TemplateResponse;
@@ -46,6 +47,7 @@ class UnsupportedBrowserController extends Controller {
         *
         * @return Response
         */
+       #[FrontpageRoute(verb: 'GET', url: 'unsupported')]
        public function index(): Response {
                Util::addScript('core', 'unsupported-browser');
                Util::addStyle('core', 'icons');
index f8dbc1af0270089e78670549363576aaf94dc176..c941a80e53df6cdf1ef3ee4c20b7b7773c60b196 100644 (file)
@@ -25,6 +25,7 @@
 namespace OC\Core\Controller;
 
 use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\JSONResponse;
 use OCP\IRequest;
 use OCP\IUserManager;
@@ -47,6 +48,7 @@ class UserController extends Controller {
         *
         * @return JSONResponse
         */
+       #[FrontpageRoute(verb: 'POST', url: '/displaynames')]
        public function getDisplayNames($users) {
                $result = [];
 
index 2ae91135b1dc1abbac738c00cf0f460731e7a8ae..e5d8edd9083e591aa9635b317875d139075a8a22 100644 (file)
@@ -26,6 +26,7 @@ namespace OC\Core\Controller;
 
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\Response;
 
@@ -35,6 +36,7 @@ class WalledGardenController extends Controller {
         * @PublicPage
         * @NoCSRFRequired
         */
+       #[FrontpageRoute(verb: 'GET', url: '/204')]
        public function get(): Response {
                $resp = new Response();
                $resp->setStatus(Http::STATUS_NO_CONTENT);
index 08a6b36d276f33366f9315c505a61cf88de759bb..70034f08fcc5eeb57bfe515e1dee44444d69080a 100644 (file)
@@ -33,6 +33,7 @@ use OC\Authentication\WebAuthn\Manager;
 use OC\URLGenerator;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\UseSession;
 use OCP\AppFramework\Http\JSONResponse;
 use OCP\IRequest;
@@ -62,6 +63,7 @@ class WebAuthnController extends Controller {
         * @PublicPage
         */
        #[UseSession]
+       #[FrontpageRoute(verb: 'POST', url: 'login/webauthn/start')]
        public function startAuthentication(string $loginName): JSONResponse {
                $this->logger->debug('Starting WebAuthn login');
 
@@ -86,6 +88,7 @@ class WebAuthnController extends Controller {
         * @PublicPage
         */
        #[UseSession]
+       #[FrontpageRoute(verb: 'POST', url: 'login/webauthn/finish')]
        public function finishAuthentication(string $data): JSONResponse {
                $this->logger->debug('Validating WebAuthn login');
 
index 896d216308d98e504fc3f64ae26a81d221ddc8e1..0e6b7ee3ef8c6f6d240b461b4a559cdb8b960744 100644 (file)
@@ -29,6 +29,7 @@ namespace OC\Core\Controller;
 use OC\Http\WellKnown\RequestManager;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\Attribute\OpenAPI;
 use OCP\AppFramework\Http\JSONResponse;
 use OCP\AppFramework\Http\Response;
@@ -49,6 +50,7 @@ class WellKnownController extends Controller {
         *
         * @return Response
         */
+       #[FrontpageRoute(verb: 'GET', url: '.well-known/{service}')]
        public function handle(string $service): Response {
                $response = $this->requestManager->process(
                        $service,
index 2d48f3cc485e7e32823180777f1927a20c1e33d7..ab107cd115d126465a007b664c61d66726260e6d 100644 (file)
@@ -29,6 +29,7 @@ use OC\Security\IdentityProof\Manager;
 use OC\Updater\ChangesCheck;
 use OCP\AppFramework\Db\DoesNotExistException;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\ApiRoute;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\Defaults;
 use OCP\IConfig;
@@ -63,6 +64,7 @@ class WhatsNewController extends OCSController {
         * 200: Changes returned
         * 204: No changes
         */
+       #[ApiRoute(verb: 'GET', url: '/whatsnew', root: '/core')]
        public function get():DataResponse {
                $user = $this->userSession->getUser();
                if ($user === null) {
@@ -110,6 +112,7 @@ class WhatsNewController extends OCSController {
         *
         * 200: Changes dismissed
         */
+       #[ApiRoute(verb: 'POST', url: '/whatsnew', root: '/core')]
        public function dismiss(string $version):DataResponse {
                $user = $this->userSession->getUser();
                if ($user === null) {
index c18b74e4b9618f8d3c206f218b969d61af9fe4fb..3e4860036681b2d955964ae1aac865bfd35505dc 100644 (file)
@@ -29,6 +29,7 @@ namespace OC\Core\Controller;
 use OC\Authentication\Token\RemoteWipe;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\FrontpageRoute;
 use OCP\AppFramework\Http\JSONResponse;
 use OCP\Authentication\Exceptions\InvalidTokenException;
 use OCP\IRequest;
@@ -58,6 +59,7 @@ class WipeController extends Controller {
         * 200: Device should be wiped
         * 404: Device should not be wiped
         */
+       #[FrontpageRoute(verb: 'POST', url: '/core/wipe/check')]
        public function checkWipe(string $token): JSONResponse {
                try {
                        if ($this->remoteWipe->start($token)) {
@@ -89,6 +91,7 @@ class WipeController extends Controller {
         * 200: Wipe finished successfully
         * 404: Device should not be wiped
         */
+       #[FrontpageRoute(verb: 'POST', url: '/core/wipe/success')]
        public function wipeDone(string $token): JSONResponse {
                try {
                        if ($this->remoteWipe->finish($token)) {
index 931f680f075c676e21185ed29167f3c62f14a934..2c6b5f28ef2475ab8bbc6487c1b8092de29c17aa 100644 (file)
         }
     },
     "paths": {
-        "/index.php/avatar/{userId}/{size}/dark": {
+        "/ocs/v2.php/core/getapppassword": {
             "get": {
-                "operationId": "avatar-get-avatar-dark",
-                "summary": "Get the dark avatar",
+                "operationId": "app_password-get-app-password",
+                "summary": "Create app password",
                 "tags": [
-                    "avatar"
+                    "app_password"
                 ],
                 "security": [
-                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "userId",
-                        "in": "path",
-                        "description": "ID of the user",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "size",
-                        "in": "path",
-                        "description": "Size of the avatar",
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
                         "required": true,
                         "schema": {
-                            "type": "integer",
-                            "format": "int64"
+                            "type": "boolean",
+                            "default": true
                         }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Avatar returned",
-                        "headers": {
-                            "X-NC-IsCustomAvatar": {
-                                "schema": {
-                                    "type": "integer",
-                                    "format": "int64"
-                                }
-                            }
-                        },
+                        "description": "App password returned",
                         "content": {
-                            "*/*": {
+                            "application/json": {
                                 "schema": {
-                                    "type": "string",
-                                    "format": "binary"
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "apppassword"
+                                                    ],
+                                                    "properties": {
+                                                        "apppassword": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
                                 }
                             }
                         }
                     },
-                    "404": {
-                        "description": "Avatar not found",
+                    "403": {
+                        "description": "Creating app password is not allowed",
                         "content": {
-                            "application/json": {
-                                "schema": {}
+                            "text/plain": {
+                                "schema": {
+                                    "type": "string"
+                                }
                             }
                         }
                     }
                 }
             }
         },
-        "/index.php/avatar/{userId}/{size}": {
-            "get": {
-                "operationId": "avatar-get-avatar",
-                "summary": "Get the avatar",
+        "/ocs/v2.php/core/apppassword": {
+            "delete": {
+                "operationId": "app_password-delete-app-password",
+                "summary": "Delete app password",
                 "tags": [
-                    "avatar"
+                    "app_password"
                 ],
                 "security": [
-                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "userId",
-                        "in": "path",
-                        "description": "ID of the user",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "size",
-                        "in": "path",
-                        "description": "Size of the avatar",
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
                         "required": true,
                         "schema": {
-                            "type": "integer",
-                            "format": "int64"
+                            "type": "boolean",
+                            "default": true
                         }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Avatar returned",
-                        "headers": {
-                            "X-NC-IsCustomAvatar": {
-                                "schema": {
-                                    "type": "integer",
-                                    "format": "int64"
-                                }
-                            }
-                        },
+                        "description": "App password deleted successfully",
                         "content": {
-                            "*/*": {
+                            "application/json": {
                                 "schema": {
-                                    "type": "string",
-                                    "format": "binary"
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
+                                        }
+                                    }
                                 }
                             }
                         }
                     },
-                    "404": {
-                        "description": "Avatar not found",
+                    "403": {
+                        "description": "Deleting app password is not allowed",
                         "content": {
-                            "application/json": {
-                                "schema": {}
+                            "text/plain": {
+                                "schema": {
+                                    "type": "string"
+                                }
                             }
                         }
                     }
                 }
             }
         },
-        "/index.php/avatar/guest/{guestName}/{size}/dark": {
-            "get": {
-                "operationId": "guest_avatar-get-avatar-dark",
-                "summary": "Returns a dark guest avatar image response",
+        "/ocs/v2.php/core/apppassword/rotate": {
+            "post": {
+                "operationId": "app_password-rotate-app-password",
+                "summary": "Rotate app password",
                 "tags": [
-                    "guest_avatar"
+                    "app_password"
                 ],
                 "security": [
-                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "guestName",
-                        "in": "path",
-                        "description": "The guest name, e.g. \"Albert\"",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "size",
-                        "in": "path",
-                        "description": "The desired avatar size, e.g. 64 for 64x64px",
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
                         "required": true,
                         "schema": {
-                            "type": "string"
+                            "type": "boolean",
+                            "default": true
                         }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Custom avatar returned",
+                        "description": "App password returned",
                         "content": {
-                            "*/*": {
+                            "application/json": {
                                 "schema": {
-                                    "type": "string",
-                                    "format": "binary"
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "apppassword"
+                                                    ],
+                                                    "properties": {
+                                                        "apppassword": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
                                 }
                             }
                         }
                     },
-                    "201": {
-                        "description": "Avatar returned",
+                    "403": {
+                        "description": "Rotating app password is not allowed",
                         "content": {
-                            "*/*": {
+                            "text/plain": {
                                 "schema": {
-                                    "type": "string",
-                                    "format": "binary"
+                                    "type": "string"
                                 }
                             }
                         }
-                    },
-                    "500": {
-                        "description": ""
                     }
                 }
             }
         },
-        "/index.php/avatar/guest/{guestName}/{size}": {
-            "get": {
-                "operationId": "guest_avatar-get-avatar",
-                "summary": "Returns a guest avatar image response",
+        "/ocs/v2.php/core/apppassword/confirm": {
+            "put": {
+                "operationId": "app_password-confirm-user-password",
+                "summary": "Confirm the user password",
                 "tags": [
-                    "guest_avatar"
+                    "app_password"
                 ],
                 "security": [
-                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "darkTheme",
+                        "name": "password",
                         "in": "query",
-                        "description": "Return dark avatar",
+                        "description": "The password of the user",
+                        "required": true,
                         "schema": {
-                            "type": "integer",
-                            "nullable": true,
-                            "default": 0,
-                            "enum": [
-                                0,
-                                1
-                            ]
+                            "type": "string"
                         }
                     },
                     {
-                        "name": "guestName",
-                        "in": "path",
-                        "description": "The guest name, e.g. \"Albert\"",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "size",
-                        "in": "path",
-                        "description": "The desired avatar size, e.g. 64 for 64x64px",
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
                         "required": true,
                         "schema": {
-                            "type": "string"
+                            "type": "boolean",
+                            "default": true
                         }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Custom avatar returned",
+                        "description": "Password confirmation succeeded",
                         "content": {
-                            "*/*": {
+                            "application/json": {
                                 "schema": {
-                                    "type": "string",
-                                    "format": "binary"
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "lastLogin"
+                                                    ],
+                                                    "properties": {
+                                                        "lastLogin": {
+                                                            "type": "integer",
+                                                            "format": "int64"
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
                                 }
                             }
                         }
                     },
-                    "201": {
-                        "description": "Avatar returned",
+                    "403": {
+                        "description": "Password confirmation failed",
                         "content": {
-                            "*/*": {
+                            "application/json": {
                                 "schema": {
-                                    "type": "string",
-                                    "format": "binary"
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
+                                        }
+                                    }
                                 }
                             }
                         }
-                    },
-                    "500": {
-                        "description": ""
                     }
                 }
             }
         },
-        "/index.php/login/confirm": {
-            "post": {
-                "operationId": "login-confirm-password",
-                "summary": "Confirm the user password",
+        "/ocs/v2.php/core/autocomplete/get": {
+            "get": {
+                "operationId": "auto_complete-get",
+                "summary": "Autocomplete a query",
                 "tags": [
-                    "login"
+                    "auto_complete"
                 ],
                 "security": [
                     {
                 ],
                 "parameters": [
                     {
-                        "name": "password",
+                        "name": "search",
                         "in": "query",
-                        "description": "The password of the user",
+                        "description": "Text to search for",
                         "required": true,
                         "schema": {
                             "type": "string"
                         }
+                    },
+                    {
+                        "name": "itemType",
+                        "in": "query",
+                        "description": "Type of the items to search for",
+                        "schema": {
+                            "type": "string",
+                            "nullable": true
+                        }
+                    },
+                    {
+                        "name": "itemId",
+                        "in": "query",
+                        "description": "ID of the items to search for",
+                        "schema": {
+                            "type": "string",
+                            "nullable": true
+                        }
+                    },
+                    {
+                        "name": "sorter",
+                        "in": "query",
+                        "description": "can be piped, top prio first, e.g.: \"commenters|share-recipients\"",
+                        "schema": {
+                            "type": "string",
+                            "nullable": true
+                        }
+                    },
+                    {
+                        "name": "shareTypes[]",
+                        "in": "query",
+                        "description": "Types of shares to search for",
+                        "schema": {
+                            "type": "array",
+                            "default": [],
+                            "items": {
+                                "type": "integer",
+                                "format": "int64"
+                            }
+                        }
+                    },
+                    {
+                        "name": "limit",
+                        "in": "query",
+                        "description": "Maximum number of results to return",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64",
+                            "default": 10
+                        }
+                    },
+                    {
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
+                        "required": true,
+                        "schema": {
+                            "type": "boolean",
+                            "default": true
+                        }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Password confirmation succeeded",
+                        "description": "Autocomplete results returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                     "type": "object",
                                     "required": [
-                                        "lastLogin"
+                                        "ocs"
                                     ],
                                     "properties": {
-                                        "lastLogin": {
-                                            "type": "integer",
-                                            "format": "int64"
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {
+                                                    "type": "array",
+                                                    "items": {
+                                                        "$ref": "#/components/schemas/AutocompleteResult"
+                                                    }
+                                                }
+                                            }
                                         }
                                     }
                                 }
                             }
                         }
-                    },
-                    "403": {
-                        "description": "Password confirmation failed",
-                        "content": {
-                            "application/json": {
-                                "schema": {}
-                            }
-                        }
                     }
                 }
             }
         },
-        "/index.php/login/v2/poll": {
-            "post": {
-                "operationId": "client_flow_login_v2-poll",
-                "summary": "Poll the login flow credentials",
+        "/ocs/v2.php/collaboration/resources/collections/{collectionId}": {
+            "get": {
+                "operationId": "collaboration_resources-list-collection",
+                "summary": "Get a collection",
                 "tags": [
-                    "client_flow_login_v2"
+                    "collaboration_resources"
                 ],
                 "security": [
-                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "token",
-                        "in": "query",
-                        "description": "Token of the flow",
+                        "name": "collectionId",
+                        "in": "path",
+                        "description": "ID of the collection",
                         "required": true,
                         "schema": {
-                            "type": "string"
+                            "type": "integer",
+                            "format": "int64"
+                        }
+                    },
+                    {
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
+                        "required": true,
+                        "schema": {
+                            "type": "boolean",
+                            "default": true
                         }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Login flow credentials returned",
+                        "description": "Collection returned",
                         "content": {
                             "application/json": {
                                 "schema": {
-                                    "$ref": "#/components/schemas/LoginFlowV2Credentials"
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {
+                                                    "$ref": "#/components/schemas/Collection"
+                                                }
+                                            }
+                                        }
+                                    }
                                 }
                             }
                         }
                     },
                     "404": {
-                        "description": "Login flow not found or completed",
+                        "description": "Collection not found",
                         "content": {
                             "application/json": {
-                                "schema": {}
-                            }
-                        }
-                    }
-                }
-            }
-        },
-        "/index.php/login/v2": {
-            "post": {
-                "operationId": "client_flow_login_v2-init",
-                "summary": "Init a login flow",
-                "tags": [
-                    "client_flow_login_v2"
-                ],
-                "security": [
-                    {},
-                    {
-                        "bearer_auth": []
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
                     },
-                    {
-                        "basic_auth": []
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "Login flow init returned",
+                    "500": {
+                        "description": "",
                         "content": {
                             "application/json": {
                                 "schema": {
-                                    "$ref": "#/components/schemas/LoginFlowV2"
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
+                                        }
+                                    }
                                 }
                             }
                         }
                     }
                 }
-            }
-        },
-        "/index.php/core/preview": {
-            "get": {
-                "operationId": "preview-get-preview-by-file-id",
-                "summary": "Get a preview by file ID",
+            },
+            "post": {
+                "operationId": "collaboration_resources-add-resource",
+                "summary": "Add a resource to a collection",
                 "tags": [
-                    "preview"
+                    "collaboration_resources"
                 ],
                 "security": [
                     {
                 ],
                 "parameters": [
                     {
-                        "name": "fileId",
-                        "in": "query",
-                        "description": "ID of the file",
-                        "schema": {
-                            "type": "integer",
-                            "format": "int64",
-                            "default": -1
-                        }
-                    },
-                    {
-                        "name": "x",
-                        "in": "query",
-                        "description": "Width of the preview",
-                        "schema": {
-                            "type": "integer",
-                            "format": "int64",
-                            "default": 32
-                        }
-                    },
-                    {
-                        "name": "y",
+                        "name": "resourceType",
                         "in": "query",
-                        "description": "Height of the preview",
+                        "description": "Name of the resource",
+                        "required": true,
                         "schema": {
-                            "type": "integer",
-                            "format": "int64",
-                            "default": 32
+                            "type": "string"
                         }
                     },
                     {
-                        "name": "a",
+                        "name": "resourceId",
                         "in": "query",
-                        "description": "Whether to not crop the preview",
+                        "description": "ID of the resource",
+                        "required": true,
                         "schema": {
-                            "type": "integer",
-                            "default": 0,
-                            "enum": [
-                                0,
-                                1
-                            ]
+                            "type": "string"
                         }
                     },
                     {
-                        "name": "forceIcon",
-                        "in": "query",
-                        "description": "Force returning an icon",
+                        "name": "collectionId",
+                        "in": "path",
+                        "description": "ID of the collection",
+                        "required": true,
                         "schema": {
                             "type": "integer",
-                            "default": 1,
-                            "enum": [
-                                0,
-                                1
-                            ]
-                        }
-                    },
-                    {
-                        "name": "mode",
-                        "in": "query",
-                        "description": "How to crop the image",
-                        "schema": {
-                            "type": "string",
-                            "default": "fill"
+                            "format": "int64"
                         }
                     },
                     {
-                        "name": "mimeFallback",
-                        "in": "query",
-                        "description": "Whether to fallback to the mime icon if no preview is available",
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
+                        "required": true,
                         "schema": {
-                            "type": "integer",
-                            "default": 0,
-                            "enum": [
-                                0,
-                                1
-                            ]
+                            "type": "boolean",
+                            "default": true
                         }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Preview returned",
+                        "description": "Collection returned",
                         "content": {
-                            "*/*": {
+                            "application/json": {
                                 "schema": {
-                                    "type": "string",
-                                    "format": "binary"
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {
+                                                    "$ref": "#/components/schemas/Collection"
+                                                }
+                                            }
+                                        }
+                                    }
                                 }
                             }
                         }
                     },
-                    "400": {
-                        "description": "Getting preview is not possible",
-                        "content": {
-                            "application/json": {
-                                "schema": {}
-                            }
-                        }
-                    },
-                    "403": {
-                        "description": "Getting preview is not allowed",
+                    "404": {
+                        "description": "Collection not found or resource inaccessible",
                         "content": {
                             "application/json": {
-                                "schema": {}
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
+                                        }
+                                    }
+                                }
                             }
                         }
                     },
-                    "404": {
-                        "description": "Preview not found",
+                    "500": {
+                        "description": "",
                         "content": {
                             "application/json": {
-                                "schema": {}
-                            }
-                        }
-                    },
-                    "303": {
-                        "description": "Redirect to the mime icon url if mimeFallback is true",
-                        "headers": {
-                            "Location": {
                                 "schema": {
-                                    "type": "string"
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
+                                        }
+                                    }
                                 }
                             }
                         }
                     }
                 }
-            }
-        },
-        "/index.php/core/preview.png": {
-            "get": {
-                "operationId": "preview-get-preview",
-                "summary": "Get a preview by file path",
+            },
+            "delete": {
+                "operationId": "collaboration_resources-remove-resource",
+                "summary": "Remove a resource from a collection",
                 "tags": [
-                    "preview"
+                    "collaboration_resources"
                 ],
                 "security": [
                     {
                 ],
                 "parameters": [
                     {
-                        "name": "file",
+                        "name": "resourceType",
                         "in": "query",
-                        "description": "Path of the file",
-                        "schema": {
-                            "type": "string",
-                            "default": ""
-                        }
-                    },
-                    {
-                        "name": "x",
-                        "in": "query",
-                        "description": "Width of the preview",
-                        "schema": {
-                            "type": "integer",
-                            "format": "int64",
-                            "default": 32
-                        }
-                    },
-                    {
-                        "name": "y",
-                        "in": "query",
-                        "description": "Height of the preview",
+                        "description": "Name of the resource",
+                        "required": true,
                         "schema": {
-                            "type": "integer",
-                            "format": "int64",
-                            "default": 32
+                            "type": "string"
                         }
                     },
                     {
-                        "name": "a",
+                        "name": "resourceId",
                         "in": "query",
-                        "description": "Whether to not crop the preview",
+                        "description": "ID of the resource",
+                        "required": true,
                         "schema": {
-                            "type": "integer",
-                            "default": 0,
-                            "enum": [
-                                0,
-                                1
-                            ]
+                            "type": "string"
                         }
                     },
                     {
-                        "name": "forceIcon",
-                        "in": "query",
-                        "description": "Force returning an icon",
+                        "name": "collectionId",
+                        "in": "path",
+                        "description": "ID of the collection",
+                        "required": true,
                         "schema": {
                             "type": "integer",
-                            "default": 1,
-                            "enum": [
-                                0,
-                                1
-                            ]
-                        }
-                    },
-                    {
-                        "name": "mode",
-                        "in": "query",
-                        "description": "How to crop the image",
-                        "schema": {
-                            "type": "string",
-                            "default": "fill"
+                            "format": "int64"
                         }
                     },
                     {
-                        "name": "mimeFallback",
-                        "in": "query",
-                        "description": "Whether to fallback to the mime icon if no preview is available",
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
+                        "required": true,
                         "schema": {
-                            "type": "integer",
-                            "default": 0,
-                            "enum": [
-                                0,
-                                1
-                            ]
+                            "type": "boolean",
+                            "default": true
                         }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Preview returned",
+                        "description": "Collection returned",
                         "content": {
-                            "*/*": {
+                            "application/json": {
                                 "schema": {
-                                    "type": "string",
-                                    "format": "binary"
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {
+                                                    "$ref": "#/components/schemas/Collection"
+                                                }
+                                            }
+                                        }
+                                    }
                                 }
                             }
                         }
                     },
-                    "400": {
-                        "description": "Getting preview is not possible",
-                        "content": {
-                            "application/json": {
-                                "schema": {}
-                            }
-                        }
-                    },
-                    "403": {
-                        "description": "Getting preview is not allowed",
+                    "404": {
+                        "description": "Collection or resource not found",
                         "content": {
                             "application/json": {
-                                "schema": {}
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
+                                        }
+                                    }
+                                }
                             }
                         }
                     },
-                    "404": {
-                        "description": "Preview not found",
+                    "500": {
+                        "description": "",
                         "content": {
                             "application/json": {
-                                "schema": {}
-                            }
-                        }
-                    },
-                    "303": {
-                        "description": "Redirect to the mime icon url if mimeFallback is true",
-                        "headers": {
-                            "Location": {
                                 "schema": {
-                                    "type": "string"
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
+                                        }
+                                    }
                                 }
                             }
                         }
                     }
                 }
-            }
-        },
-        "/index.php/core/references/preview/{referenceId}": {
-            "get": {
-                "operationId": "reference-preview",
-                "summary": "Get a preview for a reference",
+            },
+            "put": {
+                "operationId": "collaboration_resources-rename-collection",
+                "summary": "Rename a collection",
                 "tags": [
-                    "reference"
+                    "collaboration_resources"
                 ],
                 "security": [
-                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "referenceId",
-                        "in": "path",
-                        "description": "the reference cache key",
+                        "name": "collectionName",
+                        "in": "query",
+                        "description": "New name",
                         "required": true,
                         "schema": {
                             "type": "string"
                         }
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "Preview returned",
-                        "content": {
-                            "*/*": {
-                                "schema": {
-                                    "type": "string",
-                                    "format": "binary"
-                                }
-                            }
-                        }
                     },
-                    "404": {
-                        "description": "Reference not found",
-                        "content": {
-                            "application/json": {
-                                "schema": {
-                                    "type": "string"
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        },
-        "/index.php/core/wipe/check": {
-            "post": {
-                "operationId": "wipe-check-wipe",
-                "summary": "Check if the device should be wiped",
-                "tags": [
-                    "wipe"
-                ],
-                "security": [
-                    {},
                     {
-                        "bearer_auth": []
+                        "name": "collectionId",
+                        "in": "path",
+                        "description": "ID of the collection",
+                        "required": true,
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64"
+                        }
                     },
                     {
-                        "basic_auth": []
-                    }
-                ],
-                "parameters": [
-                    {
-                        "name": "token",
-                        "in": "query",
-                        "description": "App password",
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
                         "required": true,
                         "schema": {
-                            "type": "string"
+                            "type": "boolean",
+                            "default": true
                         }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Device should be wiped",
+                        "description": "Collection returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                     "type": "object",
                                     "required": [
-                                        "wipe"
+                                        "ocs"
                                     ],
                                     "properties": {
-                                        "wipe": {
-                                            "type": "boolean"
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    },
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {
+                                                    "$ref": "#/components/schemas/Collection"
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    },
                     "404": {
-                        "description": "Device should not be wiped",
+                        "description": "Collection not found",
                         "content": {
                             "application/json": {
-                                "schema": {}
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
+                                        }
+                                    }
+                                }
                             }
                         }
                     }
                 }
             }
         },
-        "/index.php/core/wipe/success": {
-            "post": {
-                "operationId": "wipe-wipe-done",
-                "summary": "Finish the wipe",
+        "/ocs/v2.php/collaboration/resources/collections/search/{filter}": {
+            "get": {
+                "operationId": "collaboration_resources-search-collections",
+                "summary": "Search for collections",
                 "tags": [
-                    "wipe"
+                    "collaboration_resources"
                 ],
                 "security": [
-                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "token",
-                        "in": "query",
-                        "description": "App password",
+                        "name": "filter",
+                        "in": "path",
+                        "description": "Filter collections",
                         "required": true,
                         "schema": {
                             "type": "string"
                         }
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "Wipe finished successfully",
-                        "content": {
-                            "application/json": {
-                                "schema": {}
-                            }
-                        }
-                    },
-                    "404": {
-                        "description": "Device should not be wiped",
-                        "content": {
-                            "application/json": {
-                                "schema": {}
-                            }
-                        }
-                    }
-                }
-            }
-        },
-        "/index.php/ocm-provider": {
-            "get": {
-                "operationId": "ocm-discovery",
-                "summary": "generate a OCMProvider with local data and send it as DataResponse. This replaces the old PHP file ocm-provider/index.php",
-                "tags": [
-                    "ocm"
-                ],
-                "security": [
-                    {},
-                    {
-                        "bearer_auth": []
                     },
                     {
-                        "basic_auth": []
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
+                        "required": true,
+                        "schema": {
+                            "type": "boolean",
+                            "default": true
+                        }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "OCM Provider details returned",
-                        "headers": {
-                            "X-NEXTCLOUD-OCM-PROVIDERS": {
-                                "schema": {
-                                    "type": "boolean",
-                                    "enum": [
-                                        true
-                                    ]
-                                }
-                            }
-                        },
+                        "description": "Collections returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                     "type": "object",
                                     "required": [
-                                        "enabled",
-                                        "apiVersion",
-                                        "endPoint",
-                                        "resourceTypes"
+                                        "ocs"
                                     ],
                                     "properties": {
-                                        "enabled": {
-                                            "type": "boolean"
-                                        },
-                                        "apiVersion": {
-                                            "type": "string"
-                                        },
-                                        "endPoint": {
-                                            "type": "string"
-                                        },
-                                        "resourceTypes": {
-                                            "type": "array",
-                                            "items": {
-                                                "type": "object",
-                                                "required": [
-                                                    "name",
-                                                    "shareTypes",
-                                                    "protocols"
-                                                ],
-                                                "properties": {
-                                                    "name": {
-                                                        "type": "string"
-                                                    },
-                                                    "shareTypes": {
-                                                        "type": "array",
-                                                        "items": {
-                                                            "type": "string"
-                                                        }
-                                                    },
-                                                    "protocols": {
-                                                        "type": "object",
-                                                        "required": [
-                                                            "webdav"
-                                                        ],
-                                                        "properties": {
-                                                            "webdav": {
-                                                                "type": "string"
-                                                            }
-                                                        }
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {
+                                                    "type": "array",
+                                                    "items": {
+                                                        "$ref": "#/components/schemas/Collection"
                                                     }
                                                 }
                                             }
                             }
                         }
                     },
-                    "500": {
-                        "description": "OCM not supported",
+                    "404": {
+                        "description": "Collection not found",
                         "content": {
                             "application/json": {
                                 "schema": {
                                     "type": "object",
                                     "required": [
-                                        "message"
+                                        "ocs"
                                     ],
                                     "properties": {
-                                        "message": {
-                                            "type": "string"
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
                                         }
                                     }
                                 }
                 }
             }
         },
-        "/ocs/v2.php/cloud/capabilities": {
+        "/ocs/v2.php/collaboration/resources/{resourceType}/{resourceId}": {
             "get": {
-                "operationId": "ocs-get-capabilities",
-                "summary": "Get the capabilities",
+                "operationId": "collaboration_resources-get-collections-by-resource",
+                "summary": "Get collections by resource",
                 "tags": [
-                    "ocs"
+                    "collaboration_resources"
                 ],
                 "security": [
-                    {},
                     {
                         "bearer_auth": []
                     },
                     }
                 ],
                 "parameters": [
+                    {
+                        "name": "resourceType",
+                        "in": "path",
+                        "description": "Type of the resource",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        }
+                    },
+                    {
+                        "name": "resourceId",
+                        "in": "path",
+                        "description": "ID of the resource",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        }
+                    },
                     {
                         "name": "OCS-APIRequest",
                         "in": "header",
                 ],
                 "responses": {
                     "200": {
-                        "description": "Capabilities returned",
+                        "description": "Collections returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "version",
-                                                        "capabilities"
-                                                    ],
-                                                    "properties": {
-                                                        "version": {
-                                                            "type": "object",
-                                                            "required": [
-                                                                "major",
-                                                                "minor",
-                                                                "micro",
-                                                                "string",
-                                                                "edition",
-                                                                "extendedSupport"
-                                                            ],
-                                                            "properties": {
-                                                                "major": {
-                                                                    "type": "integer",
-                                                                    "format": "int64"
-                                                                },
-                                                                "minor": {
-                                                                    "type": "integer",
-                                                                    "format": "int64"
-                                                                },
-                                                                "micro": {
-                                                                    "type": "integer",
-                                                                    "format": "int64"
-                                                                },
-                                                                "string": {
-                                                                    "type": "string"
-                                                                },
-                                                                "edition": {
-                                                                    "type": "string"
-                                                                },
-                                                                "extendedSupport": {
-                                                                    "type": "boolean"
-                                                                }
-                                                            }
-                                                        },
-                                                        "capabilities": {
-                                                            "type": "object",
-                                                            "additionalProperties": {
-                                                                "type": "object"
-                                                            }
-                                                        }
+                                                    "type": "array",
+                                                    "items": {
+                                                        "$ref": "#/components/schemas/Collection"
                                                     }
                                                 }
                                             }
                                 }
                             }
                         }
+                    },
+                    "404": {
+                        "description": "Resource not accessible",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
                     }
                 }
             }
         },
-        "/ocs/v2.php/core/navigation/apps": {
-            "get": {
-                "operationId": "navigation-get-apps-navigation",
-                "summary": "Get the apps navigation",
+        "/ocs/v2.php/collaboration/resources/{baseResourceType}/{baseResourceId}": {
+            "post": {
+                "operationId": "collaboration_resources-create-collection-on-resource",
+                "summary": "Create a collection for a resource",
                 "tags": [
-                    "navigation"
+                    "collaboration_resources"
                 ],
                 "security": [
                     {
                 ],
                 "parameters": [
                     {
-                        "name": "absolute",
+                        "name": "name",
                         "in": "query",
-                        "description": "Rewrite URLs to absolute ones",
+                        "description": "Name of the collection",
+                        "required": true,
                         "schema": {
-                            "type": "integer",
-                            "default": 0,
-                            "enum": [
-                                0,
-                                1
-                            ]
+                            "type": "string"
+                        }
+                    },
+                    {
+                        "name": "baseResourceType",
+                        "in": "path",
+                        "description": "Type of the base resource",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        }
+                    },
+                    {
+                        "name": "baseResourceId",
+                        "in": "path",
+                        "description": "ID of the base resource",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
                         }
                     },
                     {
                 ],
                 "responses": {
                     "200": {
-                        "description": "Apps navigation returned",
+                        "description": "Collection returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "type": "array",
-                                                    "items": {
-                                                        "$ref": "#/components/schemas/NavigationEntry"
-                                                    }
+                                                    "$ref": "#/components/schemas/Collection"
                                                 }
                                             }
                                         }
                             }
                         }
                     },
-                    "304": {
-                        "description": "No apps navigation changed",
+                    "400": {
+                        "description": "Creating collection is not possible",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Resource inaccessible",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "",
                         "content": {
                             "application/json": {
                                 "schema": {
                 }
             }
         },
-        "/ocs/v2.php/core/navigation/settings": {
+        "/ocs/v2.php/hovercard/v1/{userId}": {
             "get": {
-                "operationId": "navigation-get-settings-navigation",
-                "summary": "Get the settings navigation",
+                "operationId": "hover_card-get-user",
+                "summary": "Get the account details for a hovercard",
                 "tags": [
-                    "navigation"
+                    "hover_card"
                 ],
                 "security": [
                     {
                 ],
                 "parameters": [
                     {
-                        "name": "absolute",
-                        "in": "query",
-                        "description": "Rewrite URLs to absolute ones",
+                        "name": "userId",
+                        "in": "path",
+                        "description": "ID of the user",
+                        "required": true,
                         "schema": {
-                            "type": "integer",
-                            "default": 0,
-                            "enum": [
-                                0,
-                                1
-                            ]
+                            "type": "string"
                         }
                     },
                     {
                 ],
                 "responses": {
                     "200": {
-                        "description": "Apps navigation returned",
+                        "description": "Account details returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "type": "array",
-                                                    "items": {
-                                                        "$ref": "#/components/schemas/NavigationEntry"
+                                                    "type": "object",
+                                                    "required": [
+                                                        "userId",
+                                                        "displayName",
+                                                        "actions"
+                                                    ],
+                                                    "properties": {
+                                                        "userId": {
+                                                            "type": "string"
+                                                        },
+                                                        "displayName": {
+                                                            "type": "string"
+                                                        },
+                                                        "actions": {
+                                                            "type": "array",
+                                                            "items": {
+                                                                "$ref": "#/components/schemas/ContactsAction"
+                                                            }
+                                                        }
                                                     }
                                                 }
                                             }
                             }
                         }
                     },
-                    "304": {
-                        "description": "No apps navigation changed",
+                    "404": {
+                        "description": "Account not found",
                         "content": {
                             "application/json": {
                                 "schema": {
                 }
             }
         },
-        "/ocs/v2.php/core/autocomplete/get": {
+        "/ocs/v2.php/core/navigation/apps": {
             "get": {
-                "operationId": "auto_complete-get",
-                "summary": "Autocomplete a query",
+                "operationId": "navigation-get-apps-navigation",
+                "summary": "Get the apps navigation",
                 "tags": [
-                    "auto_complete"
+                    "navigation"
                 ],
                 "security": [
                     {
                 ],
                 "parameters": [
                     {
-                        "name": "search",
+                        "name": "absolute",
                         "in": "query",
-                        "description": "Text to search for",
-                        "required": true,
+                        "description": "Rewrite URLs to absolute ones",
                         "schema": {
-                            "type": "string"
+                            "type": "integer",
+                            "default": 0,
+                            "enum": [
+                                0,
+                                1
+                            ]
                         }
                     },
                     {
-                        "name": "itemType",
-                        "in": "query",
-                        "description": "Type of the items to search for",
-                        "schema": {
-                            "type": "string",
-                            "nullable": true
-                        }
-                    },
-                    {
-                        "name": "itemId",
-                        "in": "query",
-                        "description": "ID of the items to search for",
-                        "schema": {
-                            "type": "string",
-                            "nullable": true
-                        }
-                    },
-                    {
-                        "name": "sorter",
-                        "in": "query",
-                        "description": "can be piped, top prio first, e.g.: \"commenters|share-recipients\"",
-                        "schema": {
-                            "type": "string",
-                            "nullable": true
-                        }
-                    },
-                    {
-                        "name": "shareTypes[]",
-                        "in": "query",
-                        "description": "Types of shares to search for",
-                        "schema": {
-                            "type": "array",
-                            "default": [],
-                            "items": {
-                                "type": "integer",
-                                "format": "int64"
-                            }
-                        }
-                    },
-                    {
-                        "name": "limit",
-                        "in": "query",
-                        "description": "Maximum number of results to return",
-                        "schema": {
-                            "type": "integer",
-                            "format": "int64",
-                            "default": 10
-                        }
-                    },
-                    {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
-                        "required": true,
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
+                        "required": true,
                         "schema": {
                             "type": "boolean",
                             "default": true
                 ],
                 "responses": {
                     "200": {
-                        "description": "Autocomplete results returned",
+                        "description": "Apps navigation returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "data": {
                                                     "type": "array",
                                                     "items": {
-                                                        "$ref": "#/components/schemas/AutocompleteResult"
+                                                        "$ref": "#/components/schemas/NavigationEntry"
                                                     }
                                                 }
                                             }
                                 }
                             }
                         }
+                    },
+                    "304": {
+                        "description": "No apps navigation changed",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {}
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
                     }
                 }
             }
         },
-        "/ocs/v2.php/core/whatsnew": {
+        "/ocs/v2.php/core/navigation/settings": {
             "get": {
-                "operationId": "whats_new-get",
-                "summary": "Get the changes",
+                "operationId": "navigation-get-settings-navigation",
+                "summary": "Get the settings navigation",
                 "tags": [
-                    "whats_new"
+                    "navigation"
                 ],
                 "security": [
                     {
                     }
                 ],
                 "parameters": [
+                    {
+                        "name": "absolute",
+                        "in": "query",
+                        "description": "Rewrite URLs to absolute ones",
+                        "schema": {
+                            "type": "integer",
+                            "default": 0,
+                            "enum": [
+                                0,
+                                1
+                            ]
+                        }
+                    },
                     {
                         "name": "OCS-APIRequest",
                         "in": "header",
                 ],
                 "responses": {
                     "200": {
-                        "description": "Changes returned",
+                        "description": "Apps navigation returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "changelogURL",
-                                                        "product",
-                                                        "version"
-                                                    ],
-                                                    "properties": {
-                                                        "changelogURL": {
-                                                            "type": "string"
-                                                        },
-                                                        "product": {
-                                                            "type": "string"
-                                                        },
-                                                        "version": {
-                                                            "type": "string"
-                                                        },
-                                                        "whatsNew": {
-                                                            "type": "object",
-                                                            "required": [
-                                                                "regular",
-                                                                "admin"
-                                                            ],
-                                                            "properties": {
-                                                                "regular": {
-                                                                    "type": "array",
-                                                                    "items": {
-                                                                        "type": "string"
-                                                                    }
-                                                                },
-                                                                "admin": {
-                                                                    "type": "array",
-                                                                    "items": {
-                                                                        "type": "string"
-                                                                    }
-                                                                }
-                                                            }
-                                                        }
+                                                    "type": "array",
+                                                    "items": {
+                                                        "$ref": "#/components/schemas/NavigationEntry"
                                                     }
                                                 }
                                             }
                             }
                         }
                     },
-                    "204": {
-                        "description": "No changes",
+                    "304": {
+                        "description": "No apps navigation changed",
                         "content": {
                             "application/json": {
                                 "schema": {
                         }
                     }
                 }
-            },
-            "post": {
-                "operationId": "whats_new-dismiss",
-                "summary": "Dismiss the changes",
+            }
+        },
+        "/ocs/v2.php/cloud/capabilities": {
+            "get": {
+                "operationId": "ocs-get-capabilities",
+                "summary": "Get the capabilities",
                 "tags": [
-                    "whats_new"
+                    "ocs"
                 ],
                 "security": [
+                    {},
                     {
                         "bearer_auth": []
                     },
                     }
                 ],
                 "parameters": [
-                    {
-                        "name": "version",
-                        "in": "query",
-                        "description": "Version to dismiss the changes for",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
                     {
                         "name": "OCS-APIRequest",
                         "in": "header",
                 ],
                 "responses": {
                     "200": {
-                        "description": "Changes dismissed",
+                        "description": "Capabilities returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "version",
+                                                        "capabilities"
+                                                    ],
+                                                    "properties": {
+                                                        "version": {
+                                                            "type": "object",
+                                                            "required": [
+                                                                "major",
+                                                                "minor",
+                                                                "micro",
+                                                                "string",
+                                                                "edition",
+                                                                "extendedSupport"
+                                                            ],
+                                                            "properties": {
+                                                                "major": {
+                                                                    "type": "integer",
+                                                                    "format": "int64"
+                                                                },
+                                                                "minor": {
+                                                                    "type": "integer",
+                                                                    "format": "int64"
+                                                                },
+                                                                "micro": {
+                                                                    "type": "integer",
+                                                                    "format": "int64"
+                                                                },
+                                                                "string": {
+                                                                    "type": "string"
+                                                                },
+                                                                "edition": {
+                                                                    "type": "string"
+                                                                },
+                                                                "extendedSupport": {
+                                                                    "type": "boolean"
+                                                                }
+                                                            }
+                                                        },
+                                                        "capabilities": {
+                                                            "type": "object",
+                                                            "additionalProperties": {
+                                                                "type": "object"
+                                                            }
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
-                    },
-                    "500": {
-                        "description": "",
-                        "content": {
-                            "text/plain": {
-                                "schema": {
-                                    "type": "string"
-                                }
-                            }
-                        }
                     }
                 }
             }
         },
-        "/ocs/v2.php/core/getapppassword": {
-            "get": {
-                "operationId": "app_password-get-app-password",
-                "summary": "Create app password",
+        "/ocs/v2.php/profile/{targetUserId}": {
+            "put": {
+                "operationId": "profile_api-set-visibility",
+                "summary": "Update the visibility of a parameter",
                 "tags": [
-                    "app_password"
+                    "profile_api"
                 ],
                 "security": [
                     {
                 ],
                 "parameters": [
                     {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
+                        "name": "paramId",
+                        "in": "query",
+                        "description": "ID of the parameter",
                         "required": true,
                         "schema": {
-                            "type": "boolean",
-                            "default": true
+                            "type": "string"
                         }
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "App password returned",
+                    },
+                    {
+                        "name": "visibility",
+                        "in": "query",
+                        "description": "New visibility",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        }
+                    },
+                    {
+                        "name": "targetUserId",
+                        "in": "path",
+                        "description": "ID of the user",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        }
+                    },
+                    {
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
+                        "required": true,
+                        "schema": {
+                            "type": "boolean",
+                            "default": true
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Visibility updated successfully",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "apppassword"
-                                                    ],
-                                                    "properties": {
-                                                        "apppassword": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
+                                                "data": {}
                                             }
                                         }
                                     }
                             }
                         }
                     },
+                    "400": {
+                        "description": "Updating visibility is not possible",
+                        "content": {
+                            "text/plain": {
+                                "schema": {
+                                    "type": "string"
+                                }
+                            }
+                        }
+                    },
                     "403": {
-                        "description": "Creating app password is not allowed",
+                        "description": "Not allowed to edit other users visibility",
+                        "content": {
+                            "text/plain": {
+                                "schema": {
+                                    "type": "string"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Account not found",
                         "content": {
                             "text/plain": {
                                 "schema": {
                 }
             }
         },
-        "/ocs/v2.php/core/apppassword/rotate": {
+        "/ocs/v2.php/references/extract": {
             "post": {
-                "operationId": "app_password-rotate-app-password",
-                "summary": "Rotate app password",
+                "operationId": "reference_api-extract",
+                "summary": "Extract references from a text",
                 "tags": [
-                    "app_password"
+                    "reference_api"
                 ],
                 "security": [
                     {
                     }
                 ],
                 "parameters": [
+                    {
+                        "name": "text",
+                        "in": "query",
+                        "description": "Text to extract from",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        }
+                    },
+                    {
+                        "name": "resolve",
+                        "in": "query",
+                        "description": "Resolve the references",
+                        "schema": {
+                            "type": "integer",
+                            "default": 0,
+                            "enum": [
+                                0,
+                                1
+                            ]
+                        }
+                    },
+                    {
+                        "name": "limit",
+                        "in": "query",
+                        "description": "Maximum amount of references to extract",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64",
+                            "default": 1
+                        }
+                    },
                     {
                         "name": "OCS-APIRequest",
                         "in": "header",
                 ],
                 "responses": {
                     "200": {
-                        "description": "App password returned",
+                        "description": "References returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "data": {
                                                     "type": "object",
                                                     "required": [
-                                                        "apppassword"
+                                                        "references"
                                                     ],
                                                     "properties": {
-                                                        "apppassword": {
-                                                            "type": "string"
+                                                        "references": {
+                                                            "type": "object",
+                                                            "additionalProperties": {
+                                                                "$ref": "#/components/schemas/Reference",
+                                                                "nullable": true
+                                                            }
                                                         }
                                                     }
                                                 }
                                 }
                             }
                         }
-                    },
-                    "403": {
-                        "description": "Rotating app password is not allowed",
-                        "content": {
-                            "text/plain": {
-                                "schema": {
-                                    "type": "string"
-                                }
-                            }
-                        }
                     }
                 }
             }
         },
-        "/ocs/v2.php/core/apppassword": {
-            "delete": {
-                "operationId": "app_password-delete-app-password",
-                "summary": "Delete app password",
+        "/ocs/v2.php/references/resolve": {
+            "get": {
+                "operationId": "reference_api-resolve-one",
+                "summary": "Resolve a reference",
                 "tags": [
-                    "app_password"
+                    "reference_api"
                 ],
                 "security": [
                     {
                     }
                 ],
                 "parameters": [
+                    {
+                        "name": "reference",
+                        "in": "query",
+                        "description": "Reference to resolve",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        }
+                    },
                     {
                         "name": "OCS-APIRequest",
                         "in": "header",
                 ],
                 "responses": {
                     "200": {
-                        "description": "App password deleted successfully",
+                        "description": "Reference returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "references"
+                                                    ],
+                                                    "properties": {
+                                                        "references": {
+                                                            "type": "object",
+                                                            "additionalProperties": {
+                                                                "$ref": "#/components/schemas/Reference",
+                                                                "nullable": true
+                                                            }
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
-                    },
-                    "403": {
-                        "description": "Deleting app password is not allowed",
-                        "content": {
-                            "text/plain": {
-                                "schema": {
-                                    "type": "string"
-                                }
-                            }
-                        }
                     }
                 }
-            }
-        },
-        "/ocs/v2.php/core/apppassword/confirm": {
-            "put": {
-                "operationId": "app_password-confirm-user-password",
-                "summary": "Confirm the user password",
+            },
+            "post": {
+                "operationId": "reference_api-resolve",
+                "summary": "Resolve multiple references",
                 "tags": [
-                    "app_password"
+                    "reference_api"
                 ],
                 "security": [
                     {
                 ],
                 "parameters": [
                     {
-                        "name": "password",
+                        "name": "references[]",
                         "in": "query",
-                        "description": "The password of the user",
+                        "description": "References to resolve",
                         "required": true,
                         "schema": {
-                            "type": "string"
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    {
+                        "name": "limit",
+                        "in": "query",
+                        "description": "Maximum amount of references to resolve",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64",
+                            "default": 1
                         }
                     },
                     {
                 ],
                 "responses": {
                     "200": {
-                        "description": "Password confirmation succeeded",
+                        "description": "References returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "data": {
                                                     "type": "object",
                                                     "required": [
-                                                        "lastLogin"
+                                                        "references"
                                                     ],
                                                     "properties": {
-                                                        "lastLogin": {
-                                                            "type": "integer",
-                                                            "format": "int64"
+                                                        "references": {
+                                                            "type": "object",
+                                                            "additionalProperties": {
+                                                                "$ref": "#/components/schemas/Reference",
+                                                                "nullable": true
+                                                            }
                                                         }
                                                     }
                                                 }
                                 }
                             }
                         }
+                    }
+                }
+            }
+        },
+        "/ocs/v2.php/references/providers": {
+            "get": {
+                "operationId": "reference_api-get-providers-info",
+                "summary": "Get the providers",
+                "tags": [
+                    "reference_api"
+                ],
+                "security": [
+                    {
+                        "bearer_auth": []
                     },
-                    "403": {
-                        "description": "Password confirmation failed",
+                    {
+                        "basic_auth": []
+                    }
+                ],
+                "parameters": [
+                    {
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
+                        "required": true,
+                        "schema": {
+                            "type": "boolean",
+                            "default": true
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Providers returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "array",
+                                                    "items": {
+                                                        "$ref": "#/components/schemas/ReferenceProvider"
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                 }
             }
         },
-        "/ocs/v2.php/hovercard/v1/{userId}": {
-            "get": {
-                "operationId": "hover_card-get-user",
-                "summary": "Get the account details for a hovercard",
+        "/ocs/v2.php/references/provider/{providerId}": {
+            "put": {
+                "operationId": "reference_api-touch-provider",
+                "summary": "Touch a provider",
                 "tags": [
-                    "hover_card"
+                    "reference_api"
                 ],
                 "security": [
                     {
                 ],
                 "parameters": [
                     {
-                        "name": "userId",
+                        "name": "timestamp",
+                        "in": "query",
+                        "description": "Timestamp of the last usage",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64",
+                            "nullable": true
+                        }
+                    },
+                    {
+                        "name": "providerId",
                         "in": "path",
-                        "description": "ID of the user",
+                        "description": "ID of the provider",
                         "required": true,
                         "schema": {
                             "type": "string"
                 ],
                 "responses": {
                     "200": {
-                        "description": "Account details returned",
+                        "description": "Provider touched",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "data": {
                                                     "type": "object",
                                                     "required": [
-                                                        "userId",
-                                                        "displayName",
-                                                        "actions"
+                                                        "success"
                                                     ],
                                                     "properties": {
-                                                        "userId": {
-                                                            "type": "string"
-                                                        },
-                                                        "displayName": {
-                                                            "type": "string"
-                                                        },
-                                                        "actions": {
-                                                            "type": "array",
-                                                            "items": {
-                                                                "$ref": "#/components/schemas/ContactsAction"
-                                                            }
+                                                        "success": {
+                                                            "type": "boolean"
                                                         }
                                                     }
                                                 }
                                 }
                             }
                         }
-                    },
-                    "404": {
-                        "description": "Account not found",
-                        "content": {
-                            "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {}
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
                     }
                 }
             }
         },
-        "/ocs/v2.php/collaboration/resources/collections/search/{filter}": {
+        "/ocs/v2.php/textprocessing/tasktypes": {
             "get": {
-                "operationId": "collaboration_resources-search-collections",
-                "summary": "Search for collections",
+                "operationId": "text_processing_api-task-types",
+                "summary": "This endpoint returns all available LanguageModel task types",
                 "tags": [
-                    "collaboration_resources"
+                    "text_processing_api"
                 ],
                 "security": [
+                    {},
                     {
                         "bearer_auth": []
                     },
                     }
                 ],
                 "parameters": [
-                    {
-                        "name": "filter",
-                        "in": "path",
-                        "description": "Filter collections",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
                     {
                         "name": "OCS-APIRequest",
                         "in": "header",
                 ],
                 "responses": {
                     "200": {
-                        "description": "Collections returned",
+                        "description": "Task types returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "type": "array",
-                                                    "items": {
-                                                        "$ref": "#/components/schemas/Collection"
+                                                    "type": "object",
+                                                    "required": [
+                                                        "types"
+                                                    ],
+                                                    "properties": {
+                                                        "types": {
+                                                            "type": "array",
+                                                            "items": {
+                                                                "type": "object",
+                                                                "required": [
+                                                                    "id",
+                                                                    "name",
+                                                                    "description"
+                                                                ],
+                                                                "properties": {
+                                                                    "id": {
+                                                                        "type": "string"
+                                                                    },
+                                                                    "name": {
+                                                                        "type": "string"
+                                                                    },
+                                                                    "description": {
+                                                                        "type": "string"
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
                                                     }
                                                 }
                                             }
                                 }
                             }
                         }
-                    },
-                    "404": {
-                        "description": "Collection not found",
-                        "content": {
-                            "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {}
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
                     }
                 }
             }
         },
-        "/ocs/v2.php/collaboration/resources/collections/{collectionId}": {
-            "get": {
-                "operationId": "collaboration_resources-list-collection",
-                "summary": "Get a collection",
+        "/ocs/v2.php/textprocessing/schedule": {
+            "post": {
+                "operationId": "text_processing_api-schedule",
+                "summary": "This endpoint allows scheduling a language model task",
                 "tags": [
-                    "collaboration_resources"
+                    "text_processing_api"
                 ],
                 "security": [
+                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "collectionId",
-                        "in": "path",
-                        "description": "ID of the collection",
+                        "name": "input",
+                        "in": "query",
+                        "description": "Input text",
                         "required": true,
                         "schema": {
-                            "type": "integer",
-                            "format": "int64"
+                            "type": "string"
+                        }
+                    },
+                    {
+                        "name": "type",
+                        "in": "query",
+                        "description": "Type of the task",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        }
+                    },
+                    {
+                        "name": "appId",
+                        "in": "query",
+                        "description": "ID of the app that will execute the task",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        }
+                    },
+                    {
+                        "name": "identifier",
+                        "in": "query",
+                        "description": "An arbitrary identifier for the task",
+                        "schema": {
+                            "type": "string",
+                            "default": ""
                         }
                     },
                     {
                 ],
                 "responses": {
                     "200": {
-                        "description": "Collection returned",
+                        "description": "Task scheduled successfully",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "$ref": "#/components/schemas/Collection"
+                                                    "type": "object",
+                                                    "required": [
+                                                        "task"
+                                                    ],
+                                                    "properties": {
+                                                        "task": {
+                                                            "$ref": "#/components/schemas/TextProcessingTask"
+                                                        }
+                                                    }
                                                 }
                                             }
                                         }
                             }
                         }
                     },
-                    "404": {
-                        "description": "Collection not found",
+                    "500": {
+                        "description": "",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                             }
                         }
                     },
-                    "500": {
-                        "description": "",
+                    "400": {
+                        "description": "Scheduling task is not possible",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
-                    }
-                }
-            },
-            "put": {
-                "operationId": "collaboration_resources-rename-collection",
-                "summary": "Rename a collection",
-                "tags": [
-                    "collaboration_resources"
-                ],
-                "security": [
+                    },
+                    "412": {
+                        "description": "Scheduling task is not possible",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        },
+        "/ocs/v2.php/textprocessing/task/{id}": {
+            "get": {
+                "operationId": "text_processing_api-get-task",
+                "summary": "This endpoint allows checking the status and results of a task. Tasks are removed 1 week after receiving their last update.",
+                "tags": [
+                    "text_processing_api"
+                ],
+                "security": [
+                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "collectionName",
-                        "in": "query",
-                        "description": "New name",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "collectionId",
+                        "name": "id",
                         "in": "path",
-                        "description": "ID of the collection",
+                        "description": "The id of the task",
                         "required": true,
                         "schema": {
                             "type": "integer",
                 ],
                 "responses": {
                     "200": {
-                        "description": "Collection returned",
+                        "description": "Task returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "$ref": "#/components/schemas/Collection"
+                                                    "type": "object",
+                                                    "required": [
+                                                        "task"
+                                                    ],
+                                                    "properties": {
+                                                        "task": {
+                                                            "$ref": "#/components/schemas/TextProcessingTask"
+                                                        }
+                                                    }
                                                 }
                                             }
                                         }
                         }
                     },
                     "404": {
-                        "description": "Collection not found",
+                        "description": "Task not found",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                     }
                 }
             },
-            "post": {
-                "operationId": "collaboration_resources-add-resource",
-                "summary": "Add a resource to a collection",
+            "delete": {
+                "operationId": "text_processing_api-delete-task",
+                "summary": "This endpoint allows to delete a scheduled task for a user",
                 "tags": [
-                    "collaboration_resources"
+                    "text_processing_api"
                 ],
                 "security": [
                     {
                 ],
                 "parameters": [
                     {
-                        "name": "resourceType",
-                        "in": "query",
-                        "description": "Name of the resource",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "resourceId",
-                        "in": "query",
-                        "description": "ID of the resource",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "collectionId",
+                        "name": "id",
                         "in": "path",
-                        "description": "ID of the collection",
+                        "description": "The id of the task",
                         "required": true,
                         "schema": {
                             "type": "integer",
                 ],
                 "responses": {
                     "200": {
-                        "description": "Collection returned",
+                        "description": "Task returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "$ref": "#/components/schemas/Collection"
+                                                    "type": "object",
+                                                    "required": [
+                                                        "task"
+                                                    ],
+                                                    "properties": {
+                                                        "task": {
+                                                            "$ref": "#/components/schemas/TextProcessingTask"
+                                                        }
+                                                    }
                                                 }
                                             }
                                         }
                         }
                     },
                     "404": {
-                        "description": "Collection not found or resource inaccessible",
+                        "description": "Task not found",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                         }
                     }
                 }
-            },
-            "delete": {
-                "operationId": "collaboration_resources-remove-resource",
-                "summary": "Remove a resource from a collection",
+            }
+        },
+        "/ocs/v2.php/textprocessing/tasks/app/{appId}": {
+            "get": {
+                "operationId": "text_processing_api-list-tasks-by-app",
+                "summary": "This endpoint returns a list of tasks of a user that are related with a specific appId and optionally with an identifier",
                 "tags": [
-                    "collaboration_resources"
+                    "text_processing_api"
                 ],
                 "security": [
                     {
                 ],
                 "parameters": [
                     {
-                        "name": "resourceType",
-                        "in": "query",
-                        "description": "Name of the resource",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "resourceId",
+                        "name": "identifier",
                         "in": "query",
-                        "description": "ID of the resource",
-                        "required": true,
+                        "description": "An arbitrary identifier for the task",
                         "schema": {
-                            "type": "string"
+                            "type": "string",
+                            "nullable": true
                         }
                     },
                     {
-                        "name": "collectionId",
+                        "name": "appId",
                         "in": "path",
-                        "description": "ID of the collection",
+                        "description": "ID of the app",
                         "required": true,
                         "schema": {
-                            "type": "integer",
-                            "format": "int64"
+                            "type": "string"
                         }
                     },
                     {
                 ],
                 "responses": {
                     "200": {
-                        "description": "Collection returned",
+                        "description": "Task list returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "$ref": "#/components/schemas/Collection"
+                                                    "type": "object",
+                                                    "required": [
+                                                        "tasks"
+                                                    ],
+                                                    "properties": {
+                                                        "tasks": {
+                                                            "type": "array",
+                                                            "items": {
+                                                                "$ref": "#/components/schemas/TextProcessingTask"
+                                                            }
+                                                        }
+                                                    }
                                                 }
                                             }
                                         }
                             }
                         }
                     },
-                    "404": {
-                        "description": "Collection or resource not found",
+                    "500": {
+                        "description": "",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
+                    }
+                }
+            }
+        },
+        "/ocs/v2.php/text2image/is_available": {
+            "get": {
+                "operationId": "text_to_image_api-is-available",
+                "summary": "Check whether this feature is available",
+                "tags": [
+                    "text_to_image_api"
+                ],
+                "security": [
+                    {},
+                    {
+                        "bearer_auth": []
                     },
-                    "500": {
-                        "description": "",
-                        "content": {
-                            "application/json": {
+                    {
+                        "basic_auth": []
+                    }
+                ],
+                "parameters": [
+                    {
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
+                        "required": true,
+                        "schema": {
+                            "type": "boolean",
+                            "default": true
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Returns availability status",
+                        "content": {
+                            "application/json": {
                                 "schema": {
                                     "type": "object",
                                     "required": [
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "isAvailable"
+                                                    ],
+                                                    "properties": {
+                                                        "isAvailable": {
+                                                            "type": "boolean"
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                 }
             }
         },
-        "/ocs/v2.php/collaboration/resources/{resourceType}/{resourceId}": {
-            "get": {
-                "operationId": "collaboration_resources-get-collections-by-resource",
-                "summary": "Get collections by resource",
+        "/ocs/v2.php/text2image/schedule": {
+            "post": {
+                "operationId": "text_to_image_api-schedule",
+                "summary": "This endpoint allows scheduling a text to image task",
                 "tags": [
-                    "collaboration_resources"
+                    "text_to_image_api"
                 ],
                 "security": [
+                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "resourceType",
-                        "in": "path",
-                        "description": "Type of the resource",
+                        "name": "input",
+                        "in": "query",
+                        "description": "Input text",
                         "required": true,
                         "schema": {
                             "type": "string"
                         }
                     },
                     {
-                        "name": "resourceId",
-                        "in": "path",
-                        "description": "ID of the resource",
+                        "name": "appId",
+                        "in": "query",
+                        "description": "ID of the app that will execute the task",
                         "required": true,
                         "schema": {
                             "type": "string"
                         }
                     },
+                    {
+                        "name": "identifier",
+                        "in": "query",
+                        "description": "An arbitrary identifier for the task",
+                        "schema": {
+                            "type": "string",
+                            "default": ""
+                        }
+                    },
+                    {
+                        "name": "numberOfImages",
+                        "in": "query",
+                        "description": "The number of images to generate",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64",
+                            "default": 8
+                        }
+                    },
                     {
                         "name": "OCS-APIRequest",
                         "in": "header",
                 ],
                 "responses": {
                     "200": {
-                        "description": "Collections returned",
+                        "description": "Task scheduled successfully",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "type": "array",
-                                                    "items": {
-                                                        "$ref": "#/components/schemas/Collection"
+                                                    "type": "object",
+                                                    "required": [
+                                                        "task"
+                                                    ],
+                                                    "properties": {
+                                                        "task": {
+                                                            "$ref": "#/components/schemas/TextToImageTask"
+                                                        }
                                                     }
                                                 }
                                             }
                             }
                         }
                     },
-                    "404": {
-                        "description": "Resource not accessible",
+                    "412": {
+                        "description": "Scheduling task is not possible",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                 }
             }
         },
-        "/ocs/v2.php/collaboration/resources/{baseResourceType}/{baseResourceId}": {
-            "post": {
-                "operationId": "collaboration_resources-create-collection-on-resource",
-                "summary": "Create a collection for a resource",
+        "/ocs/v2.php/text2image/task/{id}": {
+            "get": {
+                "operationId": "text_to_image_api-get-task",
+                "summary": "This endpoint allows checking the status and results of a task. Tasks are removed 1 week after receiving their last update.",
                 "tags": [
-                    "collaboration_resources"
+                    "text_to_image_api"
                 ],
                 "security": [
+                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "name",
-                        "in": "query",
-                        "description": "Name of the collection",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "baseResourceType",
-                        "in": "path",
-                        "description": "Type of the base resource",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "baseResourceId",
+                        "name": "id",
                         "in": "path",
-                        "description": "ID of the base resource",
+                        "description": "The id of the task",
                         "required": true,
                         "schema": {
-                            "type": "string"
+                            "type": "integer",
+                            "format": "int64"
                         }
                     },
                     {
                 ],
                 "responses": {
                     "200": {
-                        "description": "Collection returned",
+                        "description": "Task returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "$ref": "#/components/schemas/Collection"
+                                                    "type": "object",
+                                                    "required": [
+                                                        "task"
+                                                    ],
+                                                    "properties": {
+                                                        "task": {
+                                                            "$ref": "#/components/schemas/TextToImageTask"
+                                                        }
+                                                    }
                                                 }
                                             }
                                         }
                             }
                         }
                     },
-                    "400": {
-                        "description": "Creating collection is not possible",
-                        "content": {
-                            "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {}
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    },
                     "404": {
-                        "description": "Resource inaccessible",
+                        "description": "Task not found",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                         }
                     }
                 }
-            }
-        },
-        "/ocs/v2.php/references/resolve": {
-            "get": {
-                "operationId": "reference_api-resolve-one",
-                "summary": "Resolve a reference",
+            },
+            "delete": {
+                "operationId": "text_to_image_api-delete-task",
+                "summary": "This endpoint allows to delete a scheduled task for a user",
                 "tags": [
-                    "reference_api"
+                    "text_to_image_api"
                 ],
                 "security": [
                     {
                 ],
                 "parameters": [
                     {
-                        "name": "reference",
-                        "in": "query",
-                        "description": "Reference to resolve",
+                        "name": "id",
+                        "in": "path",
+                        "description": "The id of the task",
                         "required": true,
                         "schema": {
-                            "type": "string"
+                            "type": "integer",
+                            "format": "int64"
                         }
                     },
                     {
                 ],
                 "responses": {
                     "200": {
-                        "description": "Reference returned",
+                        "description": "Task returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "data": {
                                                     "type": "object",
                                                     "required": [
-                                                        "references"
+                                                        "task"
                                                     ],
                                                     "properties": {
-                                                        "references": {
-                                                            "type": "object",
-                                                            "additionalProperties": {
-                                                                "$ref": "#/components/schemas/Reference",
-                                                                "nullable": true
-                                                            }
+                                                        "task": {
+                                                            "$ref": "#/components/schemas/TextToImageTask"
                                                         }
                                                     }
                                                 }
                                 }
                             }
                         }
-                    }
-                }
-            },
-            "post": {
-                "operationId": "reference_api-resolve",
-                "summary": "Resolve multiple references",
-                "tags": [
-                    "reference_api"
-                ],
-                "security": [
-                    {
-                        "bearer_auth": []
                     },
-                    {
-                        "basic_auth": []
-                    }
-                ],
-                "parameters": [
-                    {
-                        "name": "references[]",
-                        "in": "query",
-                        "description": "References to resolve",
-                        "required": true,
-                        "schema": {
-                            "type": "array",
-                            "items": {
-                                "type": "string"
+                    "404": {
+                        "description": "Task not found",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
                             }
                         }
                     },
-                    {
-                        "name": "limit",
-                        "in": "query",
-                        "description": "Maximum amount of references to resolve",
-                        "schema": {
-                            "type": "integer",
-                            "format": "int64",
-                            "default": 1
-                        }
-                    },
-                    {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
-                        "required": true,
-                        "schema": {
-                            "type": "boolean",
-                            "default": true
-                        }
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "References returned",
+                    "500": {
+                        "description": "",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "data": {
                                                     "type": "object",
                                                     "required": [
-                                                        "references"
+                                                        "message"
                                                     ],
                                                     "properties": {
-                                                        "references": {
-                                                            "type": "object",
-                                                            "additionalProperties": {
-                                                                "$ref": "#/components/schemas/Reference",
-                                                                "nullable": true
-                                                            }
+                                                        "message": {
+                                                            "type": "string"
                                                         }
                                                     }
                                                 }
                 }
             }
         },
-        "/ocs/v2.php/references/extract": {
-            "post": {
-                "operationId": "reference_api-extract",
-                "summary": "Extract references from a text",
+        "/ocs/v2.php/text2image/task/{id}/image/{index}": {
+            "get": {
+                "operationId": "text_to_image_api-get-image",
+                "summary": "This endpoint allows downloading the resulting image of a task",
                 "tags": [
-                    "reference_api"
+                    "text_to_image_api"
                 ],
                 "security": [
+                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "text",
-                        "in": "query",
-                        "description": "Text to extract from",
+                        "name": "id",
+                        "in": "path",
+                        "description": "The id of the task",
                         "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "resolve",
-                        "in": "query",
-                        "description": "Resolve the references",
                         "schema": {
                             "type": "integer",
-                            "default": 0,
-                            "enum": [
-                                0,
-                                1
-                            ]
+                            "format": "int64"
                         }
                     },
                     {
-                        "name": "limit",
-                        "in": "query",
-                        "description": "Maximum amount of references to extract",
+                        "name": "index",
+                        "in": "path",
+                        "description": "The index of the image to retrieve",
+                        "required": true,
                         "schema": {
                             "type": "integer",
-                            "format": "int64",
-                            "default": 1
+                            "format": "int64"
                         }
                     },
                     {
                 ],
                 "responses": {
                     "200": {
-                        "description": "References returned",
+                        "description": "Image returned",
+                        "content": {
+                            "*/*": {
+                                "schema": {
+                                    "type": "string",
+                                    "format": "binary"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Task or image not found",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "data": {
                                                     "type": "object",
                                                     "required": [
-                                                        "references"
+                                                        "message"
                                                     ],
                                                     "properties": {
-                                                        "references": {
-                                                            "type": "object",
-                                                            "additionalProperties": {
-                                                                "$ref": "#/components/schemas/Reference",
-                                                                "nullable": true
-                                                            }
+                                                        "message": {
+                                                            "type": "string"
                                                         }
                                                     }
                                                 }
                                 }
                             }
                         }
-                    }
-                }
-            }
-        },
-        "/ocs/v2.php/references/providers": {
-            "get": {
-                "operationId": "reference_api-get-providers-info",
-                "summary": "Get the providers",
-                "tags": [
-                    "reference_api"
-                ],
-                "security": [
-                    {
-                        "bearer_auth": []
                     },
-                    {
-                        "basic_auth": []
-                    }
-                ],
-                "parameters": [
-                    {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
-                        "required": true,
-                        "schema": {
-                            "type": "boolean",
-                            "default": true
-                        }
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "Providers returned",
+                    "500": {
+                        "description": "",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "type": "array",
-                                                    "items": {
-                                                        "$ref": "#/components/schemas/ReferenceProvider"
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
                                                     }
                                                 }
                                             }
                 }
             }
         },
-        "/ocs/v2.php/references/provider/{providerId}": {
-            "put": {
-                "operationId": "reference_api-touch-provider",
-                "summary": "Touch a provider",
+        "/ocs/v2.php/text2image/tasks/app/{appId}": {
+            "get": {
+                "operationId": "text_to_image_api-list-tasks-by-app",
+                "summary": "This endpoint returns a list of tasks of a user that are related with a specific appId and optionally with an identifier",
                 "tags": [
-                    "reference_api"
+                    "text_to_image_api"
                 ],
                 "security": [
                     {
                 ],
                 "parameters": [
                     {
-                        "name": "timestamp",
+                        "name": "identifier",
                         "in": "query",
-                        "description": "Timestamp of the last usage",
+                        "description": "An arbitrary identifier for the task",
                         "schema": {
-                            "type": "integer",
-                            "format": "int64",
+                            "type": "string",
                             "nullable": true
                         }
                     },
                     {
-                        "name": "providerId",
+                        "name": "appId",
                         "in": "path",
-                        "description": "ID of the provider",
+                        "description": "ID of the app",
                         "required": true,
                         "schema": {
                             "type": "string"
                 ],
                 "responses": {
                     "200": {
-                        "description": "Provider touched",
+                        "description": "Task list returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "data": {
                                                     "type": "object",
                                                     "required": [
-                                                        "success"
+                                                        "tasks"
                                                     ],
                                                     "properties": {
-                                                        "success": {
-                                                            "type": "boolean"
-                                                        }
+                                                        "tasks": {
+                                                            "type": "array",
+                                                            "items": {
+                                                                "$ref": "#/components/schemas/TextToImageTask"
+                                                            }
+                                                        }
                                                     }
                                                 }
                                             }
                                 }
                             }
                         }
-                    }
-                }
-            }
-        },
-        "/ocs/v2.php/profile/{targetUserId}": {
-            "put": {
-                "operationId": "profile_api-set-visibility",
-                "summary": "Update the visibility of a parameter",
-                "tags": [
-                    "profile_api"
-                ],
-                "security": [
-                    {
-                        "bearer_auth": []
-                    },
-                    {
-                        "basic_auth": []
-                    }
-                ],
-                "parameters": [
-                    {
-                        "name": "paramId",
-                        "in": "query",
-                        "description": "ID of the parameter",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "visibility",
-                        "in": "query",
-                        "description": "New visibility",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "targetUserId",
-                        "in": "path",
-                        "description": "ID of the user",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
                     },
-                    {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
-                        "required": true,
-                        "schema": {
-                            "type": "boolean",
-                            "default": true
-                        }
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "Visibility updated successfully",
+                    "500": {
+                        "description": "",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {}
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
-                    },
-                    "400": {
-                        "description": "Updating visibility is not possible",
-                        "content": {
-                            "text/plain": {
-                                "schema": {
-                                    "type": "string"
-                                }
-                            }
-                        }
-                    },
-                    "403": {
-                        "description": "Not allowed to edit other users visibility",
-                        "content": {
-                            "text/plain": {
-                                "schema": {
-                                    "type": "string"
-                                }
-                            }
-                        }
-                    },
-                    "404": {
-                        "description": "Account not found",
-                        "content": {
-                            "text/plain": {
-                                "schema": {
-                                    "type": "string"
-                                }
-                            }
-                        }
                     }
                 }
             }
         },
-        "/ocs/v2.php/search/providers": {
+        "/ocs/v2.php/translation/languages": {
             "get": {
-                "operationId": "unified_search-get-providers",
-                "summary": "Get the providers for unified search",
+                "operationId": "translation_api-languages",
+                "summary": "Get the list of supported languages",
                 "tags": [
-                    "unified_search"
+                    "translation_api"
                 ],
                 "security": [
+                    {},
                     {
                         "bearer_auth": []
                     },
                     }
                 ],
                 "parameters": [
-                    {
-                        "name": "from",
-                        "in": "query",
-                        "description": "the url the user is currently at",
-                        "schema": {
-                            "type": "string",
-                            "default": ""
-                        }
-                    },
                     {
                         "name": "OCS-APIRequest",
                         "in": "header",
                 ],
                 "responses": {
                     "200": {
-                        "description": "Providers returned",
+                        "description": "Supported languages returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "type": "array",
-                                                    "items": {
-                                                        "$ref": "#/components/schemas/UnifiedSearchProvider"
+                                                    "type": "object",
+                                                    "required": [
+                                                        "languages",
+                                                        "languageDetection"
+                                                    ],
+                                                    "properties": {
+                                                        "languages": {
+                                                            "type": "array",
+                                                            "items": {
+                                                                "type": "object",
+                                                                "required": [
+                                                                    "from",
+                                                                    "fromLabel",
+                                                                    "to",
+                                                                    "toLabel"
+                                                                ],
+                                                                "properties": {
+                                                                    "from": {
+                                                                        "type": "string"
+                                                                    },
+                                                                    "fromLabel": {
+                                                                        "type": "string"
+                                                                    },
+                                                                    "to": {
+                                                                        "type": "string"
+                                                                    },
+                                                                    "toLabel": {
+                                                                        "type": "string"
+                                                                    }
+                                                                }
+                                                            }
+                                                        },
+                                                        "languageDetection": {
+                                                            "type": "boolean"
+                                                        }
                                                     }
                                                 }
                                             }
                 }
             }
         },
-        "/ocs/v2.php/search/providers/{providerId}/search": {
-            "get": {
-                "operationId": "unified_search-search",
-                "summary": "Launch a search for a specific search provider.",
-                "description": "Additional filters are available for each provider. Send a request to /providers endpoint to list providers with their available filters.",
+        "/ocs/v2.php/translation/translate": {
+            "post": {
+                "operationId": "translation_api-translate",
+                "summary": "Translate a text",
                 "tags": [
-                    "unified_search"
+                    "translation_api"
                 ],
                 "security": [
+                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "term",
-                        "in": "query",
-                        "description": "Term to search",
-                        "schema": {
-                            "type": "string",
-                            "default": ""
-                        }
-                    },
-                    {
-                        "name": "sortOrder",
+                        "name": "text",
                         "in": "query",
-                        "description": "Order of entries",
+                        "description": "Text to be translated",
+                        "required": true,
                         "schema": {
-                            "type": "integer",
-                            "format": "int64",
-                            "nullable": true
+                            "type": "string"
                         }
                     },
                     {
-                        "name": "limit",
+                        "name": "fromLanguage",
                         "in": "query",
-                        "description": "Maximum amount of entries",
+                        "description": "Language to translate from",
                         "schema": {
-                            "type": "integer",
-                            "format": "int64",
+                            "type": "string",
                             "nullable": true
                         }
                     },
                     {
-                        "name": "cursor",
-                        "in": "query",
-                        "description": "Offset for searching",
-                        "schema": {
-                            "nullable": true,
-                            "oneOf": [
-                                {
-                                    "type": "integer",
-                                    "format": "int64"
-                                },
-                                {
-                                    "type": "string"
-                                }
-                            ]
-                        }
-                    },
-                    {
-                        "name": "from",
+                        "name": "toLanguage",
                         "in": "query",
-                        "description": "The current user URL",
-                        "schema": {
-                            "type": "string",
-                            "default": ""
-                        }
-                    },
-                    {
-                        "name": "providerId",
-                        "in": "path",
-                        "description": "ID of the provider",
+                        "description": "Language to translate to",
                         "required": true,
                         "schema": {
                             "type": "string"
                 ],
                 "responses": {
                     "200": {
-                        "description": "Search entries returned",
+                        "description": "Translated text returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "$ref": "#/components/schemas/UnifiedSearchResult"
+                                                    "type": "object",
+                                                    "required": [
+                                                        "text",
+                                                        "from"
+                                                    ],
+                                                    "properties": {
+                                                        "text": {
+                                                            "type": "string"
+                                                        },
+                                                        "from": {
+                                                            "type": "string",
+                                                            "nullable": true
+                                                        }
+                                                    }
                                                 }
                                             }
                                         }
                         }
                     },
                     "400": {
-                        "description": "Searching is not possible",
+                        "description": "Language not detected or unable to translate",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "type": "string"
-                                                }
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        },
+                                                        "from": {
+                                                            "type": "string",
+                                                            "nullable": true
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    },
+                    "412": {
+                        "description": "Translating is not possible",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        },
+                                                        "from": {
+                                                            "type": "string",
+                                                            "nullable": true
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "ocs"
+                                    ],
+                                    "properties": {
+                                        "ocs": {
+                                            "type": "object",
+                                            "required": [
+                                                "meta",
+                                                "data"
+                                            ],
+                                            "properties": {
+                                                "meta": {
+                                                    "$ref": "#/components/schemas/OCSMeta"
+                                                },
+                                                "data": {
+                                                    "type": "object",
+                                                    "required": [
+                                                        "message"
+                                                    ],
+                                                    "properties": {
+                                                        "message": {
+                                                            "type": "string"
+                                                        },
+                                                        "from": {
+                                                            "type": "string",
+                                                            "nullable": true
+                                                        }
+                                                    }
+                                                }
                                             }
                                         }
                                     }
                 }
             }
         },
-        "/ocs/v2.php/translation/languages": {
+        "/ocs/v2.php/search/providers": {
             "get": {
-                "operationId": "translation_api-languages",
-                "summary": "Get the list of supported languages",
+                "operationId": "unified_search-get-providers",
+                "summary": "Get the providers for unified search",
                 "tags": [
-                    "translation_api"
+                    "unified_search"
                 ],
                 "security": [
-                    {},
                     {
                         "bearer_auth": []
                     },
                     }
                 ],
                 "parameters": [
+                    {
+                        "name": "from",
+                        "in": "query",
+                        "description": "the url the user is currently at",
+                        "schema": {
+                            "type": "string",
+                            "default": ""
+                        }
+                    },
                     {
                         "name": "OCS-APIRequest",
                         "in": "header",
                 ],
                 "responses": {
                     "200": {
-                        "description": "Supported languages returned",
+                        "description": "Providers returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "languages",
-                                                        "languageDetection"
-                                                    ],
-                                                    "properties": {
-                                                        "languages": {
-                                                            "type": "array",
-                                                            "items": {
-                                                                "type": "object",
-                                                                "required": [
-                                                                    "from",
-                                                                    "fromLabel",
-                                                                    "to",
-                                                                    "toLabel"
-                                                                ],
-                                                                "properties": {
-                                                                    "from": {
-                                                                        "type": "string"
-                                                                    },
-                                                                    "fromLabel": {
-                                                                        "type": "string"
-                                                                    },
-                                                                    "to": {
-                                                                        "type": "string"
-                                                                    },
-                                                                    "toLabel": {
-                                                                        "type": "string"
-                                                                    }
-                                                                }
-                                                            }
-                                                        },
-                                                        "languageDetection": {
-                                                            "type": "boolean"
-                                                        }
+                                                    "type": "array",
+                                                    "items": {
+                                                        "$ref": "#/components/schemas/UnifiedSearchProvider"
                                                     }
                                                 }
                                             }
                 }
             }
         },
-        "/ocs/v2.php/translation/translate": {
-            "post": {
-                "operationId": "translation_api-translate",
-                "summary": "Translate a text",
+        "/ocs/v2.php/search/providers/{providerId}/search": {
+            "get": {
+                "operationId": "unified_search-search",
+                "summary": "Launch a search for a specific search provider.",
+                "description": "Additional filters are available for each provider. Send a request to /providers endpoint to list providers with their available filters.",
                 "tags": [
-                    "translation_api"
+                    "unified_search"
                 ],
                 "security": [
-                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "text",
+                        "name": "term",
                         "in": "query",
-                        "description": "Text to be translated",
-                        "required": true,
+                        "description": "Term to search",
                         "schema": {
-                            "type": "string"
+                            "type": "string",
+                            "default": ""
                         }
                     },
                     {
-                        "name": "fromLanguage",
+                        "name": "sortOrder",
                         "in": "query",
-                        "description": "Language to translate from",
+                        "description": "Order of entries",
                         "schema": {
-                            "type": "string",
+                            "type": "integer",
+                            "format": "int64",
                             "nullable": true
                         }
                     },
                     {
-                        "name": "toLanguage",
+                        "name": "limit",
                         "in": "query",
-                        "description": "Language to translate to",
+                        "description": "Maximum amount of entries",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64",
+                            "nullable": true
+                        }
+                    },
+                    {
+                        "name": "cursor",
+                        "in": "query",
+                        "description": "Offset for searching",
+                        "schema": {
+                            "nullable": true,
+                            "oneOf": [
+                                {
+                                    "type": "integer",
+                                    "format": "int64"
+                                },
+                                {
+                                    "type": "string"
+                                }
+                            ]
+                        }
+                    },
+                    {
+                        "name": "from",
+                        "in": "query",
+                        "description": "The current user URL",
+                        "schema": {
+                            "type": "string",
+                            "default": ""
+                        }
+                    },
+                    {
+                        "name": "providerId",
+                        "in": "path",
+                        "description": "ID of the provider",
                         "required": true,
                         "schema": {
                             "type": "string"
                 ],
                 "responses": {
                     "200": {
-                        "description": "Translated text returned",
+                        "description": "Search entries returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "text",
-                                                        "from"
-                                                    ],
-                                                    "properties": {
-                                                        "text": {
-                                                            "type": "string"
-                                                        },
-                                                        "from": {
-                                                            "type": "string",
-                                                            "nullable": true
-                                                        }
-                                                    }
+                                                    "$ref": "#/components/schemas/UnifiedSearchResult"
                                                 }
                                             }
                                         }
                         }
                     },
                     "400": {
-                        "description": "Language not detected or unable to translate",
+                        "description": "Searching is not possible",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
                                                 "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        },
-                                                        "from": {
-                                                            "type": "string",
-                                                            "nullable": true
-                                                        }
-                                                    }
+                                                    "type": "string"
                                                 }
                                             }
                                         }
                                 }
                             }
                         }
+                    }
+                }
+            }
+        },
+        "/ocs/v2.php/core/whatsnew": {
+            "get": {
+                "operationId": "whats_new-get",
+                "summary": "Get the changes",
+                "tags": [
+                    "whats_new"
+                ],
+                "security": [
+                    {
+                        "bearer_auth": []
                     },
-                    "412": {
-                        "description": "Translating is not possible",
+                    {
+                        "basic_auth": []
+                    }
+                ],
+                "parameters": [
+                    {
+                        "name": "OCS-APIRequest",
+                        "in": "header",
+                        "description": "Required to be true for the API request to pass",
+                        "required": true,
+                        "schema": {
+                            "type": "boolean",
+                            "default": true
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Changes returned",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "data": {
                                                     "type": "object",
                                                     "required": [
-                                                        "message"
+                                                        "changelogURL",
+                                                        "product",
+                                                        "version"
                                                     ],
                                                     "properties": {
-                                                        "message": {
+                                                        "changelogURL": {
                                                             "type": "string"
                                                         },
-                                                        "from": {
-                                                            "type": "string",
-                                                            "nullable": true
+                                                        "product": {
+                                                            "type": "string"
+                                                        },
+                                                        "version": {
+                                                            "type": "string"
+                                                        },
+                                                        "whatsNew": {
+                                                            "type": "object",
+                                                            "required": [
+                                                                "regular",
+                                                                "admin"
+                                                            ],
+                                                            "properties": {
+                                                                "regular": {
+                                                                    "type": "array",
+                                                                    "items": {
+                                                                        "type": "string"
+                                                                    }
+                                                                },
+                                                                "admin": {
+                                                                    "type": "array",
+                                                                    "items": {
+                                                                        "type": "string"
+                                                                    }
+                                                                }
+                                                            }
                                                         }
                                                     }
                                                 }
                             }
                         }
                     },
-                    "500": {
-                        "description": "",
+                    "204": {
+                        "description": "No changes",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        },
-                                                        "from": {
-                                                            "type": "string",
-                                                            "nullable": true
-                                                        }
-                                                    }
-                                                }
+                                                "data": {}
                                             }
                                         }
                                     }
                         }
                     }
                 }
-            }
-        },
-        "/ocs/v2.php/textprocessing/tasktypes": {
-            "get": {
-                "operationId": "text_processing_api-task-types",
-                "summary": "This endpoint returns all available LanguageModel task types",
+            },
+            "post": {
+                "operationId": "whats_new-dismiss",
+                "summary": "Dismiss the changes",
                 "tags": [
-                    "text_processing_api"
+                    "whats_new"
                 ],
                 "security": [
-                    {},
                     {
                         "bearer_auth": []
                     },
                     }
                 ],
                 "parameters": [
+                    {
+                        "name": "version",
+                        "in": "query",
+                        "description": "Version to dismiss the changes for",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        }
+                    },
                     {
                         "name": "OCS-APIRequest",
                         "in": "header",
                 ],
                 "responses": {
                     "200": {
-                        "description": "Task types returned",
+                        "description": "Changes dismissed",
                         "content": {
                             "application/json": {
                                 "schema": {
                                                 "meta": {
                                                     "$ref": "#/components/schemas/OCSMeta"
                                                 },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "types"
-                                                    ],
-                                                    "properties": {
-                                                        "types": {
-                                                            "type": "array",
-                                                            "items": {
-                                                                "type": "object",
-                                                                "required": [
-                                                                    "id",
-                                                                    "name",
-                                                                    "description"
-                                                                ],
-                                                                "properties": {
-                                                                    "id": {
-                                                                        "type": "string"
-                                                                    },
-                                                                    "name": {
-                                                                        "type": "string"
-                                                                    },
-                                                                    "description": {
-                                                                        "type": "string"
-                                                                    }
-                                                                }
-                                                            }
-                                                        }
-                                                    }
-                                                }
+                                                "data": {}
                                             }
                                         }
                                     }
                                 }
                             }
                         }
+                    },
+                    "500": {
+                        "description": "",
+                        "content": {
+                            "text/plain": {
+                                "schema": {
+                                    "type": "string"
+                                }
+                            }
+                        }
                     }
                 }
             }
         },
-        "/ocs/v2.php/textprocessing/schedule": {
-            "post": {
-                "operationId": "text_processing_api-schedule",
-                "summary": "This endpoint allows scheduling a language model task",
+        "/index.php/avatar/{userId}/{size}/dark": {
+            "get": {
+                "operationId": "avatar-get-avatar-dark",
+                "summary": "Get the dark avatar",
                 "tags": [
-                    "text_processing_api"
+                    "avatar"
                 ],
                 "security": [
                     {},
                 ],
                 "parameters": [
                     {
-                        "name": "input",
-                        "in": "query",
-                        "description": "Input text",
+                        "name": "userId",
+                        "in": "path",
+                        "description": "ID of the user",
                         "required": true,
                         "schema": {
                             "type": "string"
                         }
                     },
                     {
-                        "name": "type",
-                        "in": "query",
-                        "description": "Type of the task",
+                        "name": "size",
+                        "in": "path",
+                        "description": "Size of the avatar",
                         "required": true,
                         "schema": {
-                            "type": "string"
+                            "type": "integer",
+                            "format": "int64"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Avatar returned",
+                        "headers": {
+                            "X-NC-IsCustomAvatar": {
+                                "schema": {
+                                    "type": "integer",
+                                    "format": "int64"
+                                }
+                            }
+                        },
+                        "content": {
+                            "*/*": {
+                                "schema": {
+                                    "type": "string",
+                                    "format": "binary"
+                                }
+                            }
                         }
                     },
-                    {
-                        "name": "appId",
-                        "in": "query",
-                        "description": "ID of the app that will execute the task",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
+                    "404": {
+                        "description": "Avatar not found",
+                        "content": {
+                            "application/json": {
+                                "schema": {}
+                            }
                         }
+                    }
+                }
+            }
+        },
+        "/index.php/avatar/{userId}/{size}": {
+            "get": {
+                "operationId": "avatar-get-avatar",
+                "summary": "Get the avatar",
+                "tags": [
+                    "avatar"
+                ],
+                "security": [
+                    {},
+                    {
+                        "bearer_auth": []
                     },
                     {
-                        "name": "identifier",
-                        "in": "query",
-                        "description": "An arbitrary identifier for the task",
+                        "basic_auth": []
+                    }
+                ],
+                "parameters": [
+                    {
+                        "name": "userId",
+                        "in": "path",
+                        "description": "ID of the user",
+                        "required": true,
                         "schema": {
-                            "type": "string",
-                            "default": ""
+                            "type": "string"
                         }
                     },
                     {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
+                        "name": "size",
+                        "in": "path",
+                        "description": "Size of the avatar",
                         "required": true,
                         "schema": {
-                            "type": "boolean",
-                            "default": true
+                            "type": "integer",
+                            "format": "int64"
                         }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Task scheduled successfully",
-                        "content": {
-                            "application/json": {
+                        "description": "Avatar returned",
+                        "headers": {
+                            "X-NC-IsCustomAvatar": {
                                 "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "task"
-                                                    ],
-                                                    "properties": {
-                                                        "task": {
-                                                            "$ref": "#/components/schemas/TextProcessingTask"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
+                                    "type": "integer",
+                                    "format": "int64"
+                                }
+                            }
+                        },
+                        "content": {
+                            "*/*": {
+                                "schema": {
+                                    "type": "string",
+                                    "format": "binary"
                                 }
                             }
                         }
                     },
-                    "500": {
-                        "description": "",
+                    "404": {
+                        "description": "Avatar not found",
                         "content": {
                             "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
+                                "schema": {}
                             }
                         }
+                    }
+                }
+            }
+        },
+        "/index.php/login/v2/poll": {
+            "post": {
+                "operationId": "client_flow_login_v2-poll",
+                "summary": "Poll the login flow credentials",
+                "tags": [
+                    "client_flow_login_v2"
+                ],
+                "security": [
+                    {},
+                    {
+                        "bearer_auth": []
                     },
-                    "400": {
-                        "description": "Scheduling task is not possible",
+                    {
+                        "basic_auth": []
+                    }
+                ],
+                "parameters": [
+                    {
+                        "name": "token",
+                        "in": "query",
+                        "description": "Token of the flow",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Login flow credentials returned",
                         "content": {
                             "application/json": {
                                 "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
+                                    "$ref": "#/components/schemas/LoginFlowV2Credentials"
                                 }
                             }
                         }
                     },
-                    "412": {
-                        "description": "Scheduling task is not possible",
+                    "404": {
+                        "description": "Login flow not found or completed",
+                        "content": {
+                            "application/json": {
+                                "schema": {}
+                            }
+                        }
+                    }
+                }
+            }
+        },
+        "/index.php/login/v2": {
+            "post": {
+                "operationId": "client_flow_login_v2-init",
+                "summary": "Init a login flow",
+                "tags": [
+                    "client_flow_login_v2"
+                ],
+                "security": [
+                    {},
+                    {
+                        "bearer_auth": []
+                    },
+                    {
+                        "basic_auth": []
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Login flow init returned",
                         "content": {
                             "application/json": {
                                 "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
+                                    "$ref": "#/components/schemas/LoginFlowV2"
                                 }
                             }
                         }
                 }
             }
         },
-        "/ocs/v2.php/textprocessing/task/{id}": {
+        "/index.php/avatar/guest/{guestName}/{size}": {
             "get": {
-                "operationId": "text_processing_api-get-task",
-                "summary": "This endpoint allows checking the status and results of a task. Tasks are removed 1 week after receiving their last update.",
+                "operationId": "guest_avatar-get-avatar",
+                "summary": "Returns a guest avatar image response",
                 "tags": [
-                    "text_processing_api"
+                    "guest_avatar"
                 ],
                 "security": [
                     {},
                 ],
                 "parameters": [
                     {
-                        "name": "id",
+                        "name": "darkTheme",
+                        "in": "query",
+                        "description": "Return dark avatar",
+                        "schema": {
+                            "type": "integer",
+                            "nullable": true,
+                            "default": 0,
+                            "enum": [
+                                0,
+                                1
+                            ]
+                        }
+                    },
+                    {
+                        "name": "guestName",
                         "in": "path",
-                        "description": "The id of the task",
+                        "description": "The guest name, e.g. \"Albert\"",
                         "required": true,
                         "schema": {
-                            "type": "integer",
-                            "format": "int64"
+                            "type": "string"
                         }
                     },
                     {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
+                        "name": "size",
+                        "in": "path",
+                        "description": "The desired avatar size, e.g. 64 for 64x64px",
                         "required": true,
                         "schema": {
-                            "type": "boolean",
-                            "default": true
+                            "type": "string"
                         }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Task returned",
+                        "description": "Custom avatar returned",
                         "content": {
-                            "application/json": {
+                            "*/*": {
                                 "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "task"
-                                                    ],
-                                                    "properties": {
-                                                        "task": {
-                                                            "$ref": "#/components/schemas/TextProcessingTask"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
+                                    "type": "string",
+                                    "format": "binary"
                                 }
                             }
                         }
                     },
-                    "404": {
-                        "description": "Task not found",
+                    "201": {
+                        "description": "Avatar returned",
                         "content": {
-                            "application/json": {
+                            "*/*": {
                                 "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
+                                    "type": "string",
+                                    "format": "binary"
                                 }
                             }
                         }
                     },
                     "500": {
-                        "description": "",
-                        "content": {
-                            "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
+                        "description": ""
                     }
                 }
-            },
-            "delete": {
-                "operationId": "text_processing_api-delete-task",
-                "summary": "This endpoint allows to delete a scheduled task for a user",
+            }
+        },
+        "/index.php/avatar/guest/{guestName}/{size}/dark": {
+            "get": {
+                "operationId": "guest_avatar-get-avatar-dark",
+                "summary": "Returns a dark guest avatar image response",
                 "tags": [
-                    "text_processing_api"
+                    "guest_avatar"
                 ],
                 "security": [
+                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "id",
+                        "name": "guestName",
                         "in": "path",
-                        "description": "The id of the task",
+                        "description": "The guest name, e.g. \"Albert\"",
                         "required": true,
                         "schema": {
-                            "type": "integer",
-                            "format": "int64"
+                            "type": "string"
                         }
                     },
                     {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
+                        "name": "size",
+                        "in": "path",
+                        "description": "The desired avatar size, e.g. 64 for 64x64px",
                         "required": true,
                         "schema": {
-                            "type": "boolean",
-                            "default": true
+                            "type": "string"
                         }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Task returned",
+                        "description": "Custom avatar returned",
                         "content": {
-                            "application/json": {
+                            "*/*": {
                                 "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "task"
-                                                    ],
-                                                    "properties": {
-                                                        "task": {
-                                                            "$ref": "#/components/schemas/TextProcessingTask"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
+                                    "type": "string",
+                                    "format": "binary"
                                 }
                             }
                         }
                     },
-                    "404": {
-                        "description": "Task not found",
+                    "201": {
+                        "description": "Avatar returned",
                         "content": {
-                            "application/json": {
+                            "*/*": {
                                 "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
+                                    "type": "string",
+                                    "format": "binary"
                                 }
                             }
                         }
                     },
                     "500": {
-                        "description": "",
-                        "content": {
-                            "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
+                        "description": ""
                     }
                 }
             }
         },
-        "/ocs/v2.php/textprocessing/tasks/app/{appId}": {
-            "get": {
-                "operationId": "text_processing_api-list-tasks-by-app",
-                "summary": "This endpoint returns a list of tasks of a user that are related with a specific appId and optionally with an identifier",
+        "/index.php/login/confirm": {
+            "post": {
+                "operationId": "login-confirm-password",
+                "summary": "Confirm the user password",
                 "tags": [
-                    "text_processing_api"
+                    "login"
                 ],
                 "security": [
                     {
                 ],
                 "parameters": [
                     {
-                        "name": "identifier",
+                        "name": "password",
                         "in": "query",
-                        "description": "An arbitrary identifier for the task",
+                        "description": "The password of the user",
+                        "required": true,
                         "schema": {
-                            "type": "string",
-                            "nullable": true
-                        }
-                    },
-                    {
-                        "name": "appId",
-                        "in": "path",
-                        "description": "ID of the app",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
-                        "required": true,
-                        "schema": {
-                            "type": "boolean",
-                            "default": true
+                            "type": "string"
                         }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Task list returned",
+                        "description": "Password confirmation succeeded",
                         "content": {
                             "application/json": {
                                 "schema": {
                                     "type": "object",
                                     "required": [
-                                        "ocs"
+                                        "lastLogin"
                                     ],
                                     "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "tasks"
-                                                    ],
-                                                    "properties": {
-                                                        "tasks": {
-                                                            "type": "array",
-                                                            "items": {
-                                                                "$ref": "#/components/schemas/TextProcessingTask"
-                                                            }
-                                                        }
-                                                    }
-                                                }
-                                            }
+                                        "lastLogin": {
+                                            "type": "integer",
+                                            "format": "int64"
                                         }
                                     }
                                 }
                             }
                         }
                     },
-                    "500": {
-                        "description": "",
+                    "403": {
+                        "description": "Password confirmation failed",
                         "content": {
                             "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
+                                "schema": {}
                             }
                         }
                     }
                 }
             }
         },
-        "/ocs/v2.php/text2image/is_available": {
+        "/index.php/ocm-provider": {
             "get": {
-                "operationId": "text_to_image_api-is-available",
-                "summary": "Check whether this feature is available",
+                "operationId": "ocm-discovery",
+                "summary": "generate a OCMProvider with local data and send it as DataResponse. This replaces the old PHP file ocm-provider/index.php",
                 "tags": [
-                    "text_to_image_api"
+                    "ocm"
                 ],
                 "security": [
                     {},
                         "basic_auth": []
                     }
                 ],
-                "parameters": [
-                    {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
-                        "required": true,
-                        "schema": {
-                            "type": "boolean",
-                            "default": true
-                        }
-                    }
-                ],
                 "responses": {
                     "200": {
-                        "description": "Returns availability status",
+                        "description": "OCM Provider details returned",
+                        "headers": {
+                            "X-NEXTCLOUD-OCM-PROVIDERS": {
+                                "schema": {
+                                    "type": "boolean",
+                                    "enum": [
+                                        true
+                                    ]
+                                }
+                            }
+                        },
                         "content": {
                             "application/json": {
                                 "schema": {
                                     "type": "object",
                                     "required": [
-                                        "ocs"
+                                        "enabled",
+                                        "apiVersion",
+                                        "endPoint",
+                                        "resourceTypes"
                                     ],
                                     "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "isAvailable"
-                                                    ],
-                                                    "properties": {
-                                                        "isAvailable": {
-                                                            "type": "boolean"
+                                        "enabled": {
+                                            "type": "boolean"
+                                        },
+                                        "apiVersion": {
+                                            "type": "string"
+                                        },
+                                        "endPoint": {
+                                            "type": "string"
+                                        },
+                                        "resourceTypes": {
+                                            "type": "array",
+                                            "items": {
+                                                "type": "object",
+                                                "required": [
+                                                    "name",
+                                                    "shareTypes",
+                                                    "protocols"
+                                                ],
+                                                "properties": {
+                                                    "name": {
+                                                        "type": "string"
+                                                    },
+                                                    "shareTypes": {
+                                                        "type": "array",
+                                                        "items": {
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "protocols": {
+                                                        "type": "object",
+                                                        "required": [
+                                                            "webdav"
+                                                        ],
+                                                        "properties": {
+                                                            "webdav": {
+                                                                "type": "string"
+                                                            }
                                                         }
                                                     }
                                                 }
                                 }
                             }
                         }
+                    },
+                    "500": {
+                        "description": "OCM not supported",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "type": "object",
+                                    "required": [
+                                        "message"
+                                    ],
+                                    "properties": {
+                                        "message": {
+                                            "type": "string"
+                                        }
+                                    }
+                                }
+                            }
+                        }
                     }
                 }
             }
         },
-        "/ocs/v2.php/text2image/schedule": {
-            "post": {
-                "operationId": "text_to_image_api-schedule",
-                "summary": "This endpoint allows scheduling a text to image task",
+        "/index.php/core/preview.png": {
+            "get": {
+                "operationId": "preview-get-preview",
+                "summary": "Get a preview by file path",
                 "tags": [
-                    "text_to_image_api"
+                    "preview"
                 ],
                 "security": [
-                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "input",
+                        "name": "file",
                         "in": "query",
-                        "description": "Input text",
-                        "required": true,
+                        "description": "Path of the file",
                         "schema": {
-                            "type": "string"
+                            "type": "string",
+                            "default": ""
                         }
                     },
                     {
-                        "name": "appId",
+                        "name": "x",
                         "in": "query",
-                        "description": "ID of the app that will execute the task",
-                        "required": true,
+                        "description": "Width of the preview",
                         "schema": {
-                            "type": "string"
+                            "type": "integer",
+                            "format": "int64",
+                            "default": 32
                         }
                     },
                     {
-                        "name": "identifier",
+                        "name": "y",
                         "in": "query",
-                        "description": "An arbitrary identifier for the task",
+                        "description": "Height of the preview",
                         "schema": {
-                            "type": "string",
-                            "default": ""
+                            "type": "integer",
+                            "format": "int64",
+                            "default": 32
                         }
                     },
                     {
-                        "name": "numberOfImages",
+                        "name": "a",
                         "in": "query",
-                        "description": "The number of images to generate",
+                        "description": "Whether to not crop the preview",
                         "schema": {
                             "type": "integer",
-                            "format": "int64",
-                            "default": 8
+                            "default": 0,
+                            "enum": [
+                                0,
+                                1
+                            ]
                         }
                     },
                     {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
-                        "required": true,
+                        "name": "forceIcon",
+                        "in": "query",
+                        "description": "Force returning an icon",
                         "schema": {
-                            "type": "boolean",
-                            "default": true
-                        }
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "Task scheduled successfully",
+                            "type": "integer",
+                            "default": 1,
+                            "enum": [
+                                0,
+                                1
+                            ]
+                        }
+                    },
+                    {
+                        "name": "mode",
+                        "in": "query",
+                        "description": "How to crop the image",
+                        "schema": {
+                            "type": "string",
+                            "default": "fill"
+                        }
+                    },
+                    {
+                        "name": "mimeFallback",
+                        "in": "query",
+                        "description": "Whether to fallback to the mime icon if no preview is available",
+                        "schema": {
+                            "type": "integer",
+                            "default": 0,
+                            "enum": [
+                                0,
+                                1
+                            ]
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Preview returned",
                         "content": {
-                            "application/json": {
+                            "*/*": {
                                 "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "task"
-                                                    ],
-                                                    "properties": {
-                                                        "task": {
-                                                            "$ref": "#/components/schemas/TextToImageTask"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
+                                    "type": "string",
+                                    "format": "binary"
                                 }
                             }
                         }
                     },
-                    "412": {
-                        "description": "Scheduling task is not possible",
+                    "400": {
+                        "description": "Getting preview is not possible",
                         "content": {
                             "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
+                                "schema": {}
                             }
                         }
                     },
-                    "500": {
-                        "description": "",
+                    "403": {
+                        "description": "Getting preview is not allowed",
                         "content": {
                             "application/json": {
+                                "schema": {}
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Preview not found",
+                        "content": {
+                            "application/json": {
+                                "schema": {}
+                            }
+                        }
+                    },
+                    "303": {
+                        "description": "Redirect to the mime icon url if mimeFallback is true",
+                        "headers": {
+                            "Location": {
                                 "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
+                                    "type": "string"
                                 }
                             }
                         }
                 }
             }
         },
-        "/ocs/v2.php/text2image/task/{id}": {
+        "/index.php/core/preview": {
             "get": {
-                "operationId": "text_to_image_api-get-task",
-                "summary": "This endpoint allows checking the status and results of a task. Tasks are removed 1 week after receiving their last update.",
+                "operationId": "preview-get-preview-by-file-id",
+                "summary": "Get a preview by file ID",
                 "tags": [
-                    "text_to_image_api"
+                    "preview"
                 ],
                 "security": [
-                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "id",
-                        "in": "path",
-                        "description": "The id of the task",
-                        "required": true,
+                        "name": "fileId",
+                        "in": "query",
+                        "description": "ID of the file",
                         "schema": {
                             "type": "integer",
-                            "format": "int64"
+                            "format": "int64",
+                            "default": -1
                         }
                     },
                     {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
-                        "required": true,
+                        "name": "x",
+                        "in": "query",
+                        "description": "Width of the preview",
                         "schema": {
-                            "type": "boolean",
-                            "default": true
-                        }
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "Task returned",
-                        "content": {
-                            "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "task"
-                                                    ],
-                                                    "properties": {
-                                                        "task": {
-                                                            "$ref": "#/components/schemas/TextToImageTask"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
+                            "type": "integer",
+                            "format": "int64",
+                            "default": 32
                         }
                     },
-                    "404": {
-                        "description": "Task not found",
-                        "content": {
-                            "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
+                    {
+                        "name": "y",
+                        "in": "query",
+                        "description": "Height of the preview",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64",
+                            "default": 32
                         }
                     },
-                    "500": {
-                        "description": "",
-                        "content": {
-                            "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            },
-            "delete": {
-                "operationId": "text_to_image_api-delete-task",
-                "summary": "This endpoint allows to delete a scheduled task for a user",
-                "tags": [
-                    "text_to_image_api"
-                ],
-                "security": [
                     {
-                        "bearer_auth": []
+                        "name": "a",
+                        "in": "query",
+                        "description": "Whether to not crop the preview",
+                        "schema": {
+                            "type": "integer",
+                            "default": 0,
+                            "enum": [
+                                0,
+                                1
+                            ]
+                        }
                     },
                     {
-                        "basic_auth": []
-                    }
-                ],
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "The id of the task",
-                        "required": true,
+                        "name": "forceIcon",
+                        "in": "query",
+                        "description": "Force returning an icon",
                         "schema": {
                             "type": "integer",
-                            "format": "int64"
+                            "default": 1,
+                            "enum": [
+                                0,
+                                1
+                            ]
                         }
                     },
                     {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
-                        "required": true,
+                        "name": "mode",
+                        "in": "query",
+                        "description": "How to crop the image",
                         "schema": {
-                            "type": "boolean",
-                            "default": true
+                            "type": "string",
+                            "default": "fill"
+                        }
+                    },
+                    {
+                        "name": "mimeFallback",
+                        "in": "query",
+                        "description": "Whether to fallback to the mime icon if no preview is available",
+                        "schema": {
+                            "type": "integer",
+                            "default": 0,
+                            "enum": [
+                                0,
+                                1
+                            ]
                         }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Task returned",
+                        "description": "Preview returned",
                         "content": {
-                            "application/json": {
+                            "*/*": {
                                 "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "task"
-                                                    ],
-                                                    "properties": {
-                                                        "task": {
-                                                            "$ref": "#/components/schemas/TextToImageTask"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
+                                    "type": "string",
+                                    "format": "binary"
                                 }
                             }
                         }
                     },
-                    "404": {
-                        "description": "Task not found",
+                    "400": {
+                        "description": "Getting preview is not possible",
                         "content": {
                             "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
+                                "schema": {}
                             }
                         }
                     },
-                    "500": {
-                        "description": "",
+                    "403": {
+                        "description": "Getting preview is not allowed",
                         "content": {
                             "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
+                                "schema": {}
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Preview not found",
+                        "content": {
+                            "application/json": {
+                                "schema": {}
+                            }
+                        }
+                    },
+                    "303": {
+                        "description": "Redirect to the mime icon url if mimeFallback is true",
+                        "headers": {
+                            "Location": {
+                                "schema": {
+                                    "type": "string"
                                 }
                             }
                         }
                 }
             }
         },
-        "/ocs/v2.php/text2image/task/{id}/image/{index}": {
+        "/index.php/core/references/preview/{referenceId}": {
             "get": {
-                "operationId": "text_to_image_api-get-image",
-                "summary": "This endpoint allows downloading the resulting image of a task",
+                "operationId": "reference-preview",
+                "summary": "Get a preview for a reference",
                 "tags": [
-                    "text_to_image_api"
+                    "reference"
                 ],
                 "security": [
                     {},
                 ],
                 "parameters": [
                     {
-                        "name": "id",
-                        "in": "path",
-                        "description": "The id of the task",
-                        "required": true,
-                        "schema": {
-                            "type": "integer",
-                            "format": "int64"
-                        }
-                    },
-                    {
-                        "name": "index",
+                        "name": "referenceId",
                         "in": "path",
-                        "description": "The index of the image to retrieve",
-                        "required": true,
-                        "schema": {
-                            "type": "integer",
-                            "format": "int64"
-                        }
-                    },
-                    {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
+                        "description": "the reference cache key",
                         "required": true,
                         "schema": {
-                            "type": "boolean",
-                            "default": true
+                            "type": "string"
                         }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Image returned",
+                        "description": "Preview returned",
                         "content": {
                             "*/*": {
                                 "schema": {
                         }
                     },
                     "404": {
-                        "description": "Task or image not found",
+                        "description": "Reference not found",
                         "content": {
                             "application/json": {
                                 "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
+                                    "type": "string"
                                 }
                             }
                         }
+                    }
+                }
+            }
+        },
+        "/index.php/core/wipe/check": {
+            "post": {
+                "operationId": "wipe-check-wipe",
+                "summary": "Check if the device should be wiped",
+                "tags": [
+                    "wipe"
+                ],
+                "security": [
+                    {},
+                    {
+                        "bearer_auth": []
                     },
-                    "500": {
-                        "description": "",
+                    {
+                        "basic_auth": []
+                    }
+                ],
+                "parameters": [
+                    {
+                        "name": "token",
+                        "in": "query",
+                        "description": "App password",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Device should be wiped",
                         "content": {
                             "application/json": {
                                 "schema": {
                                     "type": "object",
                                     "required": [
-                                        "ocs"
+                                        "wipe"
                                     ],
                                     "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
+                                        "wipe": {
+                                            "type": "boolean"
                                         }
                                     }
                                 }
                             }
                         }
+                    },
+                    "404": {
+                        "description": "Device should not be wiped",
+                        "content": {
+                            "application/json": {
+                                "schema": {}
+                            }
+                        }
                     }
                 }
             }
         },
-        "/ocs/v2.php/text2image/tasks/app/{appId}": {
-            "get": {
-                "operationId": "text_to_image_api-list-tasks-by-app",
-                "summary": "This endpoint returns a list of tasks of a user that are related with a specific appId and optionally with an identifier",
+        "/index.php/core/wipe/success": {
+            "post": {
+                "operationId": "wipe-wipe-done",
+                "summary": "Finish the wipe",
                 "tags": [
-                    "text_to_image_api"
+                    "wipe"
                 ],
                 "security": [
+                    {},
                     {
                         "bearer_auth": []
                     },
                 ],
                 "parameters": [
                     {
-                        "name": "identifier",
+                        "name": "token",
                         "in": "query",
-                        "description": "An arbitrary identifier for the task",
-                        "schema": {
-                            "type": "string",
-                            "nullable": true
-                        }
-                    },
-                    {
-                        "name": "appId",
-                        "in": "path",
-                        "description": "ID of the app",
+                        "description": "App password",
                         "required": true,
                         "schema": {
                             "type": "string"
                         }
-                    },
-                    {
-                        "name": "OCS-APIRequest",
-                        "in": "header",
-                        "description": "Required to be true for the API request to pass",
-                        "required": true,
-                        "schema": {
-                            "type": "boolean",
-                            "default": true
-                        }
                     }
                 ],
                 "responses": {
                     "200": {
-                        "description": "Task list returned",
+                        "description": "Wipe finished successfully",
                         "content": {
                             "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "tasks"
-                                                    ],
-                                                    "properties": {
-                                                        "tasks": {
-                                                            "type": "array",
-                                                            "items": {
-                                                                "$ref": "#/components/schemas/TextToImageTask"
-                                                            }
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
+                                "schema": {}
                             }
                         }
                     },
-                    "500": {
-                        "description": "",
+                    "404": {
+                        "description": "Device should not be wiped",
                         "content": {
                             "application/json": {
-                                "schema": {
-                                    "type": "object",
-                                    "required": [
-                                        "ocs"
-                                    ],
-                                    "properties": {
-                                        "ocs": {
-                                            "type": "object",
-                                            "required": [
-                                                "meta",
-                                                "data"
-                                            ],
-                                            "properties": {
-                                                "meta": {
-                                                    "$ref": "#/components/schemas/OCSMeta"
-                                                },
-                                                "data": {
-                                                    "type": "object",
-                                                    "required": [
-                                                        "message"
-                                                    ],
-                                                    "properties": {
-                                                        "message": {
-                                                            "type": "string"
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
+                                "schema": {}
                             }
                         }
                     }
index 9f8bc5c2c1e1ec94271a8a5d65ca28e7b45e096e..4397f8473dbb975fed7937332691a9711fd79196 100644 (file)
@@ -35,139 +35,6 @@ declare(strict_types=1);
  *
  */
 
-use OC\Core\Application;
-
-/** @var Application $application */
-$application = \OC::$server->query(Application::class);
-$application->registerRoutes($this, [
-       'routes' => [
-               ['name' => 'lost#email', 'url' => '/lostpassword/email', 'verb' => 'POST'],
-               ['name' => 'lost#resetform', 'url' => '/lostpassword/reset/form/{token}/{userId}', 'verb' => 'GET'],
-               ['name' => 'lost#setPassword', 'url' => '/lostpassword/set/{token}/{userId}', 'verb' => 'POST'],
-               ['name' => 'ProfilePage#index', 'url' => '/u/{targetUserId}', 'verb' => 'GET'],
-               ['name' => 'user#getDisplayNames', 'url' => '/displaynames', 'verb' => 'POST'],
-               ['name' => 'avatar#getAvatarDark', 'url' => '/avatar/{userId}/{size}/dark', 'verb' => 'GET'],
-               ['name' => 'avatar#getAvatar', 'url' => '/avatar/{userId}/{size}', 'verb' => 'GET'],
-               ['name' => 'avatar#deleteAvatar', 'url' => '/avatar/', 'verb' => 'DELETE'],
-               ['name' => 'avatar#postCroppedAvatar', 'url' => '/avatar/cropped', 'verb' => 'POST'],
-               ['name' => 'avatar#getTmpAvatar', 'url' => '/avatar/tmp', 'verb' => 'GET'],
-               ['name' => 'avatar#postAvatar', 'url' => '/avatar/', 'verb' => 'POST'],
-               ['name' => 'GuestAvatar#getAvatarDark', 'url' => '/avatar/guest/{guestName}/{size}/dark', 'verb' => 'GET'],
-               ['name' => 'GuestAvatar#getAvatar', 'url' => '/avatar/guest/{guestName}/{size}', 'verb' => 'GET'],
-               ['name' => 'CSRFToken#index', 'url' => '/csrftoken', 'verb' => 'GET'],
-               ['name' => 'login#tryLogin', 'url' => '/login', 'verb' => 'POST'],
-               ['name' => 'login#confirmPassword', 'url' => '/login/confirm', 'verb' => 'POST'],
-               ['name' => 'login#showLoginForm', 'url' => '/login', 'verb' => 'GET'],
-               ['name' => 'login#logout', 'url' => '/logout', 'verb' => 'GET'],
-
-               // Original login flow used by all clients
-               ['name' => 'ClientFlowLogin#showAuthPickerPage', 'url' => '/login/flow', 'verb' => 'GET'],
-               ['name' => 'ClientFlowLogin#generateAppPassword', 'url' => '/login/flow', 'verb' => 'POST'],
-               ['name' => 'ClientFlowLogin#grantPage', 'url' => '/login/flow/grant', 'verb' => 'GET'],
-               ['name' => 'ClientFlowLogin#apptokenRedirect', 'url' => '/login/flow/apptoken', 'verb' => 'POST'],
-
-               // NG login flow used by desktop client in case of Kerberos/fancy 2fa (smart cards for example)
-               ['name' => 'ClientFlowLoginV2#poll', 'url' => '/login/v2/poll', 'verb' => 'POST'],
-               ['name' => 'ClientFlowLoginV2#showAuthPickerPage', 'url' => '/login/v2/flow', 'verb' => 'GET'],
-               ['name' => 'ClientFlowLoginV2#landing', 'url' => '/login/v2/flow/{token}', 'verb' => 'GET'],
-               ['name' => 'ClientFlowLoginV2#grantPage', 'url' => '/login/v2/grant', 'verb' => 'GET'],
-               ['name' => 'ClientFlowLoginV2#generateAppPassword', 'url' => '/login/v2/grant', 'verb' => 'POST'],
-               ['name' => 'ClientFlowLoginV2#init', 'url' => '/login/v2', 'verb' => 'POST'],
-               ['name' => 'ClientFlowLoginV2#apptokenRedirect', 'url' => '/login/v2/apptoken', 'verb' => 'POST'],
-               ['name' => 'TwoFactorChallenge#selectChallenge', 'url' => '/login/selectchallenge', 'verb' => 'GET'],
-               ['name' => 'TwoFactorChallenge#showChallenge', 'url' => '/login/challenge/{challengeProviderId}', 'verb' => 'GET'],
-               ['name' => 'TwoFactorChallenge#solveChallenge', 'url' => '/login/challenge/{challengeProviderId}', 'verb' => 'POST'],
-               ['name' => 'TwoFactorChallenge#setupProviders', 'url' => 'login/setupchallenge', 'verb' => 'GET'],
-               ['name' => 'TwoFactorChallenge#setupProvider', 'url' => 'login/setupchallenge/{providerId}', 'verb' => 'GET'],
-               ['name' => 'TwoFactorChallenge#confirmProviderSetup', 'url' => 'login/setupchallenge/{providerId}', 'verb' => 'POST'],
-               ['name' => 'OCJS#getConfig', 'url' => '/core/js/oc.js', 'verb' => 'GET'],
-               ['name' => 'Preview#getPreviewByFileId', 'url' => '/core/preview', 'verb' => 'GET'],
-               ['name' => 'Preview#getPreview', 'url' => '/core/preview.png', 'verb' => 'GET'],
-               ['name' => 'RecommendedApps#index', 'url' => '/core/apps/recommended', 'verb' => 'GET'],
-               ['name' => 'Reference#preview', 'url' => '/core/references/preview/{referenceId}', 'verb' => 'GET'],
-               ['name' => 'Css#getCss', 'url' => '/css/{appName}/{fileName}', 'verb' => 'GET'],
-               ['name' => 'Js#getJs', 'url' => '/js/{appName}/{fileName}', 'verb' => 'GET'],
-               ['name' => 'contactsMenu#index', 'url' => '/contactsmenu/contacts', 'verb' => 'POST'],
-               ['name' => 'contactsMenu#findOne', 'url' => '/contactsmenu/findOne', 'verb' => 'POST'],
-               ['name' => 'WalledGarden#get', 'url' => '/204', 'verb' => 'GET'],
-               ['name' => 'Search#search', 'url' => '/core/search', 'verb' => 'GET'],
-               ['name' => 'Wipe#checkWipe', 'url' => '/core/wipe/check', 'verb' => 'POST'],
-               ['name' => 'Wipe#wipeDone', 'url' => '/core/wipe/success', 'verb' => 'POST'],
-
-               // Logins for passwordless auth
-               ['name' => 'WebAuthn#startAuthentication', 'url' => 'login/webauthn/start', 'verb' => 'POST'],
-               ['name' => 'WebAuthn#finishAuthentication', 'url' => 'login/webauthn/finish', 'verb' => 'POST'],
-
-               ['name' => 'Error#error404', 'url' => 'error/404'],
-               ['name' => 'Error#error403', 'url' => 'error/403'],
-
-               // Well known requests https://tools.ietf.org/html/rfc5785
-               ['name' => 'WellKnown#handle', 'url' => '.well-known/{service}'],
-
-               // OCM Provider requests https://github.com/cs3org/OCM-API
-               ['name' => 'OCM#discovery', 'url' => '/ocm-provider/'],
-
-               // Unsupported browser
-               ['name' => 'UnsupportedBrowser#index', 'url' => 'unsupported'],
-       ],
-       'ocs' => [
-               ['root' => '/cloud', 'name' => 'OCS#getCapabilities', 'url' => '/capabilities', 'verb' => 'GET'],
-               ['root' => '', 'name' => 'OCS#getConfig', 'url' => '/config', 'verb' => 'GET'],
-               ['root' => '/person', 'name' => 'OCS#personCheck', 'url' => '/check', 'verb' => 'POST'],
-               ['root' => '/identityproof', 'name' => 'OCS#getIdentityProof', 'url' => '/key/{cloudId}', 'verb' => 'GET'],
-               ['root' => '/core', 'name' => 'Navigation#getAppsNavigation', 'url' => '/navigation/apps', 'verb' => 'GET'],
-               ['root' => '/core', 'name' => 'Navigation#getSettingsNavigation', 'url' => '/navigation/settings', 'verb' => 'GET'],
-               ['root' => '/core', 'name' => 'AutoComplete#get', 'url' => '/autocomplete/get', 'verb' => 'GET'],
-               ['root' => '/core', 'name' => 'WhatsNew#get', 'url' => '/whatsnew', 'verb' => 'GET'],
-               ['root' => '/core', 'name' => 'WhatsNew#dismiss', 'url' => '/whatsnew', 'verb' => 'POST'],
-               ['root' => '/core', 'name' => 'AppPassword#getAppPassword', 'url' => '/getapppassword', 'verb' => 'GET'],
-               ['root' => '/core', 'name' => 'AppPassword#rotateAppPassword', 'url' => '/apppassword/rotate', 'verb' => 'POST'],
-               ['root' => '/core', 'name' => 'AppPassword#deleteAppPassword', 'url' => '/apppassword', 'verb' => 'DELETE'],
-               ['root' => '/core', 'name' => 'AppPassword#confirmUserPassword', 'url' => '/apppassword/confirm', 'verb' => 'PUT'],
-
-               ['root' => '/hovercard', 'name' => 'HoverCard#getUser', 'url' => '/v1/{userId}', 'verb' => 'GET'],
-
-               ['root' => '/collaboration', 'name' => 'CollaborationResources#searchCollections', 'url' => '/resources/collections/search/{filter}', 'verb' => 'GET'],
-               ['root' => '/collaboration', 'name' => 'CollaborationResources#listCollection', 'url' => '/resources/collections/{collectionId}', 'verb' => 'GET'],
-               ['root' => '/collaboration', 'name' => 'CollaborationResources#renameCollection', 'url' => '/resources/collections/{collectionId}', 'verb' => 'PUT'],
-               ['root' => '/collaboration', 'name' => 'CollaborationResources#addResource', 'url' => '/resources/collections/{collectionId}', 'verb' => 'POST'],
-
-               ['root' => '/collaboration', 'name' => 'CollaborationResources#removeResource', 'url' => '/resources/collections/{collectionId}', 'verb' => 'DELETE'],
-               ['root' => '/collaboration', 'name' => 'CollaborationResources#getCollectionsByResource', 'url' => '/resources/{resourceType}/{resourceId}', 'verb' => 'GET'],
-               ['root' => '/collaboration', 'name' => 'CollaborationResources#createCollectionOnResource', 'url' => '/resources/{baseResourceType}/{baseResourceId}', 'verb' => 'POST'],
-
-               ['root' => '/references', 'name' => 'ReferenceApi#resolveOne', 'url' => '/resolve', 'verb' => 'GET'],
-               ['root' => '/references', 'name' => 'ReferenceApi#extract', 'url' => '/extract', 'verb' => 'POST'],
-               ['root' => '/references', 'name' => 'ReferenceApi#resolve', 'url' => '/resolve', 'verb' => 'POST'],
-               ['root' => '/references', 'name' => 'ReferenceApi#getProvidersInfo', 'url' => '/providers', 'verb' => 'GET'],
-               ['root' => '/references', 'name' => 'ReferenceApi#touchProvider', 'url' => '/provider/{providerId}', 'verb' => 'PUT'],
-
-               ['root' => '/profile', 'name' => 'ProfileApi#setVisibility', 'url' => '/{targetUserId}', 'verb' => 'PUT'],
-
-               // Unified search
-               ['root' => '/search', 'name' => 'UnifiedSearch#getProviders', 'url' => '/providers', 'verb' => 'GET'],
-               ['root' => '/search', 'name' => 'UnifiedSearch#search', 'url' => '/providers/{providerId}/search', 'verb' => 'GET'],
-
-               ['root' => '/translation', 'name' => 'TranslationApi#languages', 'url' => '/languages', 'verb' => 'GET'],
-               ['root' => '/translation', 'name' => 'TranslationApi#translate', 'url' => '/translate', 'verb' => 'POST'],
-
-               ['root' => '/textprocessing', 'name' => 'TextProcessingApi#taskTypes', 'url' => '/tasktypes', 'verb' => 'GET'],
-               ['root' => '/textprocessing', 'name' => 'TextProcessingApi#schedule', 'url' => '/schedule', 'verb' => 'POST'],
-               ['root' => '/textprocessing', 'name' => 'TextProcessingApi#getTask', 'url' => '/task/{id}', 'verb' => 'GET'],
-               ['root' => '/textprocessing', 'name' => 'TextProcessingApi#deleteTask', 'url' => '/task/{id}', 'verb' => 'DELETE'],
-               ['root' => '/textprocessing', 'name' => 'TextProcessingApi#listTasksByApp', 'url' => '/tasks/app/{appId}', 'verb' => 'GET'],
-
-               ['root' => '/text2image', 'name' => 'TextToImageApi#isAvailable', 'url' => '/is_available', 'verb' => 'GET'],
-               ['root' => '/text2image', 'name' => 'TextToImageApi#schedule', 'url' => '/schedule', 'verb' => 'POST'],
-               ['root' => '/text2image', 'name' => 'TextToImageApi#getTask', 'url' => '/task/{id}', 'verb' => 'GET'],
-               ['root' => '/text2image', 'name' => 'TextToImageApi#getImage', 'url' => '/task/{id}/image/{index}', 'verb' => 'GET'],
-               ['root' => '/text2image', 'name' => 'TextToImageApi#deleteTask', 'url' => '/task/{id}', 'verb' => 'DELETE'],
-               ['root' => '/text2image', 'name' => 'TextToImageApi#listTasksByApp', 'url' => '/tasks/app/{appId}', 'verb' => 'GET'],
-       ],
-]);
-
-// Post installation check
-
 /** @var $this OCP\Route\IRouter */
 // Core ajax actions
 // Routing