diff --git a/apps/provisioning_api/lib/Controller/AppConfigController.php b/apps/provisioning_api/lib/Controller/AppConfigController.php index 929676be16ec1..6779e111a03e6 100644 --- a/apps/provisioning_api/lib/Controller/AppConfigController.php +++ b/apps/provisioning_api/lib/Controller/AppConfigController.php @@ -24,6 +24,7 @@ * along with this program. If not, see . * */ + namespace OCA\Provisioning_API\Controller; use OC\AppFramework\Middleware\Security\Exceptions\NotAdminException; @@ -67,13 +68,13 @@ class AppConfigController extends OCSController { * @param IAppConfig $appConfig */ public function __construct(string $appName, - IRequest $request, - IConfig $config, - IAppConfig $appConfig, - IUserSession $userSession, - IL10N $l10n, - IGroupManager $groupManager, - IManager $settingManager) { + IRequest $request, + IConfig $config, + IAppConfig $appConfig, + IUserSession $userSession, + IL10N $l10n, + IGroupManager $groupManager, + IManager $settingManager) { parent::__construct($appName, $request); $this->config = $config; $this->appConfig = $appConfig; @@ -84,7 +85,7 @@ public function __construct(string $appName, } /** - * @return DataResponse + * @return DataResponse 200 */ public function getApps(): DataResponse { return new DataResponse([ @@ -94,7 +95,8 @@ public function getApps(): DataResponse { /** * @param string $app - * @return DataResponse + * @return DataResponse 200 + * @return DataResponse 403 */ public function getKeys(string $app): DataResponse { try { @@ -111,7 +113,8 @@ public function getKeys(string $app): DataResponse { * @param string $app * @param string $key * @param string $defaultValue - * @return DataResponse + * @return DataResponse 200 + * @return DataResponse 403 */ public function getValue(string $app, string $key, string $defaultValue = ''): DataResponse { try { @@ -131,7 +134,8 @@ public function getValue(string $app, string $key, string $defaultValue = ''): D * @param string $app * @param string $key * @param string $value - * @return DataResponse + * @return DataResponse 200 + * @return DataResponse 403 */ public function setValue(string $app, string $key, string $value): DataResponse { $user = $this->userSession->getUser(); @@ -158,7 +162,8 @@ public function setValue(string $app, string $key, string $value): DataResponse * @PasswordConfirmationRequired * @param string $app * @param string $key - * @return DataResponse + * @return DataResponse 200 + * @return DataResponse 403 */ public function deleteKey(string $app, string $key): DataResponse { try { diff --git a/apps/provisioning_api/lib/Controller/AppsController.php b/apps/provisioning_api/lib/Controller/AppsController.php index fa0f2597e7fde..2b58d0382ccdc 100644 --- a/apps/provisioning_api/lib/Controller/AppsController.php +++ b/apps/provisioning_api/lib/Controller/AppsController.php @@ -26,9 +26,11 @@ * along with this program. If not, see * */ + namespace OCA\Provisioning_API\Controller; use OC_App; +use OCA\Files_Sharing\ResponseDefinitions; use OCP\App\AppPathNotFoundException; use OCP\App\IAppManager; use OCP\AppFramework\Http\DataResponse; @@ -52,7 +54,7 @@ public function __construct( /** * @param string|null $filter - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function getApps(string $filter = null): DataResponse { @@ -81,7 +83,8 @@ public function getApps(string $filter = null): DataResponse { /** * @param string $app - * @return DataResponse + * @psalm-import-type AppInfo from ResponseDefinitions + * @return DataResponse 200 * @throws OCSException */ public function getAppInfo(string $app): DataResponse { @@ -96,7 +99,7 @@ public function getAppInfo(string $app): DataResponse { /** * @PasswordConfirmationRequired * @param string $app - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function enable(string $app): DataResponse { @@ -111,7 +114,7 @@ public function enable(string $app): DataResponse { /** * @PasswordConfirmationRequired * @param string $app - * @return DataResponse + * @return DataResponse 200 */ public function disable(string $app): DataResponse { $this->appManager->disableApp($app); diff --git a/apps/provisioning_api/lib/Controller/GroupsController.php b/apps/provisioning_api/lib/Controller/GroupsController.php index e7e2a666b7bb4..ba2cb1678a5a8 100644 --- a/apps/provisioning_api/lib/Controller/GroupsController.php +++ b/apps/provisioning_api/lib/Controller/GroupsController.php @@ -32,6 +32,7 @@ */ namespace OCA\Provisioning_API\Controller; +use OCA\Files_Sharing\ResponseDefinitions; use OCP\Accounts\IAccountManager; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\OCS\OCSException; @@ -83,7 +84,7 @@ public function __construct(string $appName, * @param string $search * @param int $limit * @param int $offset - * @return DataResponse + * @return DataResponse 200 */ public function getGroups(string $search = '', int $limit = null, int $offset = 0): DataResponse { $groups = $this->groupManager->search($search, $limit, $offset); @@ -104,7 +105,8 @@ public function getGroups(string $search = '', int $limit = null, int $offset = * @param string $search * @param int $limit * @param int $offset - * @return DataResponse + * @psalm-import-type GroupDetails from ResponseDefinitions + * @return DataResponse 200 */ public function getGroupsDetails(string $search = '', int $limit = null, int $offset = 0): DataResponse { $groups = $this->groupManager->search($search, $limit, $offset); @@ -127,7 +129,7 @@ public function getGroupsDetails(string $search = '', int $limit = null, int $of * @NoAdminRequired * * @param string $groupId - * @return DataResponse + * @return DataResponse 200 * @throws OCSException * * @deprecated 14 Use getGroupUsers @@ -142,8 +144,10 @@ public function getGroup(string $groupId): DataResponse { * @NoAdminRequired * * @param string $groupId - * @return DataResponse + * @return DataResponse 200 * @throws OCSException + * @throws OCSNotFoundException + * @throws OCSForbiddenException */ public function getGroupUsers(string $groupId): DataResponse { $groupId = urldecode($groupId); @@ -183,7 +187,9 @@ public function getGroupUsers(string $groupId): DataResponse { * @param string $search * @param int $limit * @param int $offset - * @return DataResponse + * + * @psalm-import-type UserDetails from ResponseDefinitions + * @return DataResponse}> 200 * @throws OCSException */ public function getGroupUsersDetails(string $groupId, string $search = '', int $limit = null, int $offset = 0): DataResponse { @@ -234,7 +240,7 @@ public function getGroupUsersDetails(string $groupId, string $search = '', int $ * * @param string $groupid * @param string $displayname - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function addGroup(string $groupid, string $displayname = ''): DataResponse { @@ -263,7 +269,7 @@ public function addGroup(string $groupid, string $displayname = ''): DataRespons * @param string $groupId * @param string $key * @param string $value - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function updateGroup(string $groupId, string $key, string $value): DataResponse { @@ -285,7 +291,7 @@ public function updateGroup(string $groupId, string $key, string $value): DataRe * @PasswordConfirmationRequired * * @param string $groupId - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function deleteGroup(string $groupId): DataResponse { @@ -304,7 +310,7 @@ public function deleteGroup(string $groupId): DataResponse { /** * @param string $groupId - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function getSubAdminsOfGroup(string $groupId): DataResponse { diff --git a/apps/provisioning_api/lib/Controller/PreferencesController.php b/apps/provisioning_api/lib/Controller/PreferencesController.php index 2dba8b86eb6fc..130e89b6d1a4d 100644 --- a/apps/provisioning_api/lib/Controller/PreferencesController.php +++ b/apps/provisioning_api/lib/Controller/PreferencesController.php @@ -58,6 +58,9 @@ public function __construct( /** * @NoAdminRequired * @NoSubAdminRequired + * + * @return DataResponse 200 + * @return DataResponse 400 */ public function setMultiplePreferences(string $appId, array $configs): DataResponse { $userId = $this->userSession->getUser()->getUID(); @@ -93,6 +96,9 @@ public function setMultiplePreferences(string $appId, array $configs): DataRespo /** * @NoAdminRequired * @NoSubAdminRequired + * + * @return DataResponse 200 + * @return DataResponse 400 */ public function setPreference(string $appId, string $configKey, string $configValue): DataResponse { $userId = $this->userSession->getUser()->getUID(); @@ -124,6 +130,9 @@ public function setPreference(string $appId, string $configKey, string $configVa /** * @NoAdminRequired * @NoSubAdminRequired + * + * @return DataResponse 200 + * @return DataResponse 400 */ public function deleteMultiplePreference(string $appId, array $configKeys): DataResponse { $userId = $this->userSession->getUser()->getUID(); @@ -157,6 +166,9 @@ public function deleteMultiplePreference(string $appId, array $configKeys): Data /** * @NoAdminRequired * @NoSubAdminRequired + * + * @return DataResponse 200 + * @return DataResponse 400 */ public function deletePreference(string $appId, string $configKey): DataResponse { $userId = $this->userSession->getUser()->getUID(); diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php index 97d66acd2e0bb..174c69ba3e81a 100644 --- a/apps/provisioning_api/lib/Controller/UsersController.php +++ b/apps/provisioning_api/lib/Controller/UsersController.php @@ -24,6 +24,7 @@ * @author Thomas Müller * @author Tom Needham * @author Vincent Petry + * @author Kate Döen * * @license AGPL-3.0 * @@ -51,6 +52,7 @@ use OC\Authentication\Token\RemoteWipe; use OC\KnownUser\KnownUserService; use OC\User\Backend; +use OCA\Files_Sharing\ResponseDefinitions; use OCA\Settings\Mailer\NewUserMailHelper; use OCP\Accounts\IAccountManager; use OCP\Accounts\IAccountProperty; @@ -141,7 +143,7 @@ public function __construct( * @param string $search * @param int $limit * @param int $offset - * @return DataResponse + * @return DataResponse 200 */ public function getUsers(string $search = '', int $limit = null, int $offset = 0): DataResponse { $user = $this->userSession->getUser(); @@ -175,6 +177,8 @@ public function getUsers(string $search = '', int $limit = null, int $offset = 0 * @NoAdminRequired * * returns a list of users and their data + * @psalm-import-type UserDetails from ResponseDefinitions + * @return DataResponse}> 200 */ public function getUsersDetails(string $search = '', int $limit = null, int $offset = 0): DataResponse { $currentUser = $this->userSession->getUser(); @@ -225,7 +229,9 @@ public function getUsersDetails(string $search = '', int $limit = null, int $off * * @param string $location * @param array $search - * @return DataResponse + * @psalm-import-type UserDetails from ResponseDefinitions + * @return DataResponse}> 200 + * @return DataResponse 400 */ public function searchByPhoneNumbers(string $location, array $search): DataResponse { $phoneUtil = PhoneNumberUtil::getInstance(); @@ -327,8 +333,9 @@ private function createNewUserId(): string { * @param array $subadmin * @param string $quota * @param string $language - * @return DataResponse + * @return DataResponse 200 * @throws OCSException + * @throws OCSForbiddenException */ public function addUser( string $userid, @@ -515,7 +522,8 @@ public function addUser( * gets user info * * @param string $userId - * @return DataResponse + * @psalm-import-type UserDetails from ResponseDefinitions + * @return DataResponse 200 * @throws OCSException */ public function getUser(string $userId): DataResponse { @@ -539,7 +547,8 @@ public function getUser(string $userId): DataResponse { * * gets user info from the currently logged in user * - * @return DataResponse + * @psalm-import-type UserDetails from ResponseDefinitions + * @return DataResponse 200 * @throws OCSException */ public function getCurrentUser(): DataResponse { @@ -560,7 +569,7 @@ public function getCurrentUser(): DataResponse { * @NoAdminRequired * @NoSubAdminRequired * - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function getEditableFields(): DataResponse { @@ -577,7 +586,7 @@ public function getEditableFields(): DataResponse { * @NoSubAdminRequired * * @param string $userId - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function getEditableFieldsForUser(string $userId): DataResponse { @@ -636,6 +645,7 @@ public function getEditableFieldsForUser(string $userId): DataResponse { * @NoSubAdminRequired * @PasswordConfirmationRequired * + * @return DataResponse 200 * @throws OCSException */ public function editUserMultiValue( @@ -733,7 +743,7 @@ public function editUserMultiValue( * @param string $userId * @param string $key * @param string $value - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function editUser(string $userId, string $key, string $value): DataResponse { @@ -1035,7 +1045,7 @@ public function editUser(string $userId, string $key, string $value): DataRespon * * @param string $userId * - * @return DataResponse + * @return DataResponse 200 * * @throws OCSException */ @@ -1069,7 +1079,7 @@ public function wipeUserDevices(string $userId): DataResponse { * @NoAdminRequired * * @param string $userId - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function deleteUser(string $userId): DataResponse { @@ -1104,7 +1114,7 @@ public function deleteUser(string $userId): DataResponse { * @NoAdminRequired * * @param string $userId - * @return DataResponse + * @return DataResponse 200 * @throws OCSException * @throws OCSForbiddenException */ @@ -1117,7 +1127,7 @@ public function disableUser(string $userId): DataResponse { * @NoAdminRequired * * @param string $userId - * @return DataResponse + * @return DataResponse 200 * @throws OCSException * @throws OCSForbiddenException */ @@ -1155,7 +1165,7 @@ private function setEnabled(string $userId, bool $value): DataResponse { * @NoSubAdminRequired * * @param string $userId - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function getUsersGroups(string $userId): DataResponse { @@ -1200,7 +1210,7 @@ public function getUsersGroups(string $userId): DataResponse { * * @param string $userId * @param string $groupid - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function addToGroup(string $userId, string $groupid = ''): DataResponse { @@ -1235,7 +1245,7 @@ public function addToGroup(string $userId, string $groupid = ''): DataResponse { * * @param string $userId * @param string $groupid - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function removeFromGroup(string $userId, string $groupid): DataResponse { @@ -1298,7 +1308,7 @@ public function removeFromGroup(string $userId, string $groupid): DataResponse { * * @param string $userId * @param string $groupid - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function addSubAdmin(string $userId, string $groupid): DataResponse { @@ -1336,7 +1346,7 @@ public function addSubAdmin(string $userId, string $groupid): DataResponse { * * @param string $userId * @param string $groupid - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function removeSubAdmin(string $userId, string $groupid): DataResponse { @@ -1366,7 +1376,7 @@ public function removeSubAdmin(string $userId, string $groupid): DataResponse { * Get the groups a user is a subadmin of * * @param string $userId - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function getUserSubAdminGroups(string $userId): DataResponse { @@ -1381,7 +1391,7 @@ public function getUserSubAdminGroups(string $userId): DataResponse { * resend welcome message * * @param string $userId - * @return DataResponse + * @return DataResponse 200 * @throws OCSException */ public function resendWelcomeMessage(string $userId): DataResponse { diff --git a/apps/provisioning_api/lib/ResponseDefinitions.php b/apps/provisioning_api/lib/ResponseDefinitions.php new file mode 100644 index 0000000000000..3df163037369a --- /dev/null +++ b/apps/provisioning_api/lib/ResponseDefinitions.php @@ -0,0 +1,135 @@ + + * + * @author Kate Döen + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Files_Sharing; + +/** + * @psalm-type UserDetails = array{ + * additional_mail: string[], + * additional_mailScope: string[]|null, + * address: string, + * addressScope: string|null, + * avatarScope: string|null, + * backend: string, + * backendCapabilities: array{ + * setDisplayName: bool, + * setPassword: bool + * }, + * biography: string, + * biographyScope: string|null, + * displayname: string|null, + * display-name: string|null, + * displaynameScope: string|null, + * email: string|null, + * emailScope: string|null, + * enabled: bool|null, + * fediverse: string|null, + * fediverseScope: string|null, + * groups: string[], + * headline: string, + * headlineScope: string|null, + * id: string, + * language: string, + * lastLogin: int, + * locale: string, + * notify_email: string|null, + * organisation: string, + * organisationScope: string|null, + * phone: string, + * phoneScope: string|null, + * profile_enabled: string, + * profile_enabledScope: string|null, + * quota: array{ + * free: int|null, + * quota: string|int|bool, + * relative: float|null, + * total: int|null, + * used: int, + * }, + * role: string, + * roleScope: string|null, + * storageLocation: string|null, + * subadmin: string[], + * twitter: string, + * twitterScope: string|null, + * website: string, + * websiteScope: string|null, + * } + * + * @psalm-type AppInfoValue = string|array{}|array + * + * @psalm-type AppInfo = array{ + * active: bool|null, + * activity: AppInfoValue|null, + * author: AppInfoValue|null, + * background-jobs: AppInfoValue|null, + * bugs: AppInfoValue|null, + * category: AppInfoValue|null, + * collaboration: AppInfoValue|null, + * commands: AppInfoValue|null, + * default_enable: AppInfoValue|null, + * dependencies: AppInfoValue|null, + * description: string, + * discussion: AppInfoValue|null, + * documentation: AppInfoValue|null, + * groups: AppInfoValue|null, + * id: string, + * info: AppInfoValue|null, + * internal: bool|null, + * level: int|null, + * licence: AppInfoValue|null, + * name: string, + * namespace: AppInfoValue|null, + * navigations: AppInfoValue|null, + * preview: AppInfoValue|null, + * previewAsIcon: bool|null, + * public: AppInfoValue|null, + * remote: AppInfoValue|null, + * removable: bool|null, + * repair-steps: AppInfoValue|null, + * repository: AppInfoValue|null, + * sabre: AppInfoValue|null, + * screenshot: AppInfoValue|null, + * settings: AppInfoValue|null, + * summary: string, + * trash: AppInfoValue|null, + * two-factor-providers: AppInfoValue|null, + * types: AppInfoValue|null, + * version: string, + * versions: AppInfoValue|null, + * website: AppInfoValue|null, + * } + * + * @psalm-type GroupDetails = array{ + * id: string, + * displayname: string, + * usercount: bool|int, + * disabled: bool|int, + * canAdd: bool, + * canRemove: bool, + * } + */ +class ResponseDefinitions { +} diff --git a/apps/provisioning_api/openapi.json b/apps/provisioning_api/openapi.json new file mode 100644 index 0000000000000..33d3e65ebbc6f --- /dev/null +++ b/apps/provisioning_api/openapi.json @@ -0,0 +1,3402 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "Provisioning API", + "description": "This application enables a set of APIs that external systems can use to manage users, groups and apps.", + "license": { + "name": "agpl" + }, + "version": "1.16.0" + }, + "paths": { + "/ocs/v2.php/cloud/apps": { + "get": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "get-apps", + "parameters": [ + { + "name": "filter", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "apps" + ], + "type": "object", + "properties": { + "apps": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/apps/{app}": { + "parameters": [ + { + "name": "app", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "apps-get-app-info", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "$ref": "#/components/schemas/AppInfo" + } + } + } + } + } + } + } + } + } + }, + "post": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "enable-apps", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "disable-apps", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/groups": { + "get": { + "tags": [ + "provisioning_api" + ], + "description": "returns a list of groups", + "operationId": "get-groups", + "parameters": [ + { + "name": "search", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "offset", + "in": "query", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "groups" + ], + "type": "object", + "properties": { + "groups": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + }, + "post": { + "tags": [ + "provisioning_api" + ], + "description": "creates a new group", + "operationId": "groups-add-group", + "parameters": [ + { + "name": "groupid", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "displayname", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/groups/details": { + "get": { + "tags": [ + "provisioning_api" + ], + "description": "Returns a list of groups details with ids and displaynames", + "operationId": "get-groups-details", + "parameters": [ + { + "name": "search", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "offset", + "in": "query", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "groups" + ], + "type": "object", + "properties": { + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupDetails" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/groups/{groupId}/users": { + "parameters": [ + { + "name": "groupId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "provisioning_api" + ], + "description": "returns an array of users in the specified group", + "operationId": "groups-get-group-users", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "users" + ], + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "404": { + "description": "", + "content": { + "text/plain": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "string" + } + } + } + } + } + } + } + }, + "403": { + "description": "", + "content": { + "text/plain": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/groups/{groupId}/users/details": { + "parameters": [ + { + "name": "groupId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "provisioning_api" + ], + "description": "returns an array of users details in the specified group", + "operationId": "groups-get-group-users-details", + "parameters": [ + { + "name": "search", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "offset", + "in": "query", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "users" + ], + "type": "object", + "properties": { + "users": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/components/schemas/UserDetails" + }, + { + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + } + ] + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/groups/{groupId}/subadmins": { + "parameters": [ + { + "name": "groupId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "groups-get-sub-admins-of-group", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/groups/{groupId}": { + "parameters": [ + { + "name": "groupId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "groups-get-group", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "users" + ], + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + }, + "put": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "groups-update-group", + "parameters": [ + { + "name": "key", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "value", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "groups-delete-group", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/users": { + "get": { + "tags": [ + "provisioning_api" + ], + "description": "returns a list of users", + "operationId": "get-users", + "parameters": [ + { + "name": "search", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "offset", + "in": "query", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "users" + ], + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + }, + "post": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "users-add-user", + "parameters": [ + { + "name": "userid", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "password", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "displayName", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "email", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "groups", + "in": "query", + "required": true, + "schema": { + "type": "array" + } + }, + { + "name": "subadmin", + "in": "query", + "required": true, + "schema": { + "type": "array" + } + }, + { + "name": "quota", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "language", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "403": { + "description": "", + "content": { + "text/plain": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/users/details": { + "get": { + "tags": [ + "provisioning_api" + ], + "description": "returns a list of users and their data", + "operationId": "get-users-details", + "parameters": [ + { + "name": "search", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "offset", + "in": "query", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "users" + ], + "type": "object", + "properties": { + "users": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/components/schemas/UserDetails" + }, + { + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + } + ] + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/users/search/by-phone": { + "post": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "users-search-by-phone-numbers", + "parameters": [ + { + "name": "location", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "search", + "in": "query", + "required": true, + "schema": { + "type": "array" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "users" + ], + "type": "object", + "properties": { + "users": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/components/schemas/UserDetails" + }, + { + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + } + ] + } + } + } + } + } + } + } + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/users/{userId}": { + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "provisioning_api" + ], + "description": "gets user info", + "operationId": "users-get-user", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "$ref": "#/components/schemas/UserDetails" + } + } + } + } + } + } + } + } + } + }, + "put": { + "tags": [ + "provisioning_api" + ], + "description": "edit users", + "operationId": "users-edit-user", + "parameters": [ + { + "name": "key", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "value", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "users-delete-user", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/user": { + "get": { + "tags": [ + "provisioning_api" + ], + "description": "gets user info from the currently logged in user", + "operationId": "users-get-current-user", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "$ref": "#/components/schemas/UserDetails" + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/user/fields": { + "get": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "users-get-editable-fields", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/user/fields/{userId}": { + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "users-get-editable-fields-for-user", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/users/{userId}/{collectionName}": { + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "collectionName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "put": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "users-edit-user-multi-value", + "parameters": [ + { + "name": "key", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "value", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/users/{userId}/wipe": { + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "users-wipe-user-devices", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/users/{userId}/enable": { + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "put": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "users-enable-user", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + }, + "403": { + "description": "", + "content": { + "text/plain": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/users/{userId}/disable": { + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "put": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "users-disable-user", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + }, + "403": { + "description": "", + "content": { + "text/plain": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/users/{userId}/groups": { + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "get-users-groups", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "groups" + ], + "type": "object", + "properties": { + "groups": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + }, + "post": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "users-add-to-group", + "parameters": [ + { + "name": "groupid", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "users-remove-from-group", + "parameters": [ + { + "name": "groupid", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/users/{userId}/subadmins": { + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "provisioning_api" + ], + "description": "Get the groups a user is a subadmin of", + "operationId": "users-get-user-sub-admin-groups", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "post": { + "tags": [ + "provisioning_api" + ], + "description": "Creates a subadmin", + "operationId": "users-add-sub-admin", + "parameters": [ + { + "name": "groupid", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "provisioning_api" + ], + "description": "Removes a subadmin from a group", + "operationId": "users-remove-sub-admin", + "parameters": [ + { + "name": "groupid", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/users/{userId}/welcome": { + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "tags": [ + "provisioning_api" + ], + "description": "resend welcome message", + "operationId": "users-resend-welcome-message", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/apps/provisioning_api/api/v1/config/apps": { + "get": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "app-config-get-apps", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "data" + ], + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/apps/provisioning_api/api/v1/config/apps/{app}": { + "parameters": [ + { + "name": "app", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "app-config-get-keys", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "data" + ], + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "data" + ], + "type": "object", + "properties": { + "data": { + "required": [ + "message" + ], + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/apps/provisioning_api/api/v1/config/apps/{app}/{key}": { + "parameters": [ + { + "name": "app", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "key", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "app-config-get-value", + "parameters": [ + { + "name": "defaultValue", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "data" + ], + "type": "object", + "properties": { + "data": { + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "data" + ], + "type": "object", + "properties": { + "data": { + "required": [ + "message" + ], + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "post": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "app-config-set-value", + "parameters": [ + { + "name": "value", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "data" + ], + "type": "object", + "properties": { + "data": { + "required": [ + "message" + ], + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "app-config-delete-key", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "required": [ + "data" + ], + "type": "object", + "properties": { + "data": { + "required": [ + "message" + ], + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}": { + "parameters": [ + { + "name": "appId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "configKey", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "preferences-set-preference", + "parameters": [ + { + "name": "configValue", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "preferences-delete-preference", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/apps/provisioning_api/api/v1/config/users/{appId}": { + "parameters": [ + { + "name": "appId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "set-multiple-preferences", + "parameters": [ + { + "name": "configs", + "in": "query", + "required": true, + "schema": { + "type": "array" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "provisioning_api" + ], + "description": "", + "operationId": "preferences-delete-multiple-preference", + "parameters": [ + { + "name": "configKeys", + "in": "query", + "required": true, + "schema": { + "type": "array" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "ocs" + ], + "type": "object", + "properties": { + "ocs": { + "required": [ + "meta", + "data" + ], + "type": "object", + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "AppInfo": { + "required": [ + "description", + "id", + "name", + "summary", + "version" + ], + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "activity": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "author": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "background-jobs": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "bugs": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "category": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "collaboration": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "commands": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "default_enable": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "dependencies": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "description": { + "type": "string" + }, + "discussion": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "documentation": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "groups": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "id": { + "type": "string" + }, + "info": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "internal": { + "type": "boolean" + }, + "level": { + "type": "integer" + }, + "licence": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "name": { + "type": "string" + }, + "namespace": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "navigations": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "preview": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "previewAsIcon": { + "type": "boolean" + }, + "public": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "remote": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "removable": { + "type": "boolean" + }, + "repair-steps": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "repository": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "sabre": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "screenshot": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "settings": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "summary": { + "type": "string" + }, + "trash": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "two-factor-providers": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "types": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "version": { + "type": "string" + }, + "versions": { + "$ref": "#/components/schemas/AppInfoValue" + }, + "website": { + "$ref": "#/components/schemas/AppInfoValue" + } + } + }, + "AppInfoValue": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "additionalProperties": true + }, + { + "type": "array" + } + ] + }, + "GroupDetails": { + "required": [ + "id", + "displayname", + "usercount", + "disabled", + "canAdd", + "canRemove" + ], + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "displayname": { + "type": "string" + }, + "usercount": { + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "integer" + } + ] + }, + "disabled": { + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "integer" + } + ] + }, + "canAdd": { + "type": "boolean" + }, + "canRemove": { + "type": "boolean" + } + } + }, + "OCSMeta": { + "type": "object", + "required": [ + "status", + "statuscode" + ], + "properties": { + "status": { + "type": "string" + }, + "statuscode": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "totalitems": { + "type": "string" + }, + "itemsperpage": { + "type": "string" + } + } + }, + "UserDetails": { + "required": [ + "additional_mail", + "address", + "backend", + "backendCapabilities", + "biography", + "groups", + "headline", + "id", + "language", + "lastLogin", + "locale", + "organisation", + "phone", + "profile_enabled", + "quota", + "role", + "subadmin", + "twitter", + "website" + ], + "type": "object", + "properties": { + "additional_mail": { + "type": "array", + "items": { + "type": "string" + } + }, + "additional_mailScope": { + "type": "array", + "items": { + "type": "string" + } + }, + "address": { + "type": "string" + }, + "addressScope": { + "type": "string" + }, + "avatarScope": { + "type": "string" + }, + "backend": { + "type": "string" + }, + "backendCapabilities": { + "required": [ + "setDisplayName", + "setPassword" + ], + "type": "object", + "properties": { + "setDisplayName": { + "type": "boolean" + }, + "setPassword": { + "type": "boolean" + } + } + }, + "biography": { + "type": "string" + }, + "biographyScope": { + "type": "string" + }, + "displayname": { + "type": "string" + }, + "display-name": { + "type": "string" + }, + "displaynameScope": { + "type": "string" + }, + "email": { + "type": "string" + }, + "emailScope": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fediverse": { + "type": "string" + }, + "fediverseScope": { + "type": "string" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + } + }, + "headline": { + "type": "string" + }, + "headlineScope": { + "type": "string" + }, + "id": { + "type": "string" + }, + "language": { + "type": "string" + }, + "lastLogin": { + "type": "integer" + }, + "locale": { + "type": "string" + }, + "notify_email": { + "type": "string" + }, + "organisation": { + "type": "string" + }, + "organisationScope": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "phoneScope": { + "type": "string" + }, + "profile_enabled": { + "type": "string" + }, + "profile_enabledScope": { + "type": "string" + }, + "quota": { + "required": [ + "quota", + "used" + ], + "type": "object", + "properties": { + "free": { + "type": "integer" + }, + "quota": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + } + ] + }, + "relative": { + "type": "number", + "format": "float" + }, + "total": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + }, + "role": { + "type": "string" + }, + "roleScope": { + "type": "string" + }, + "storageLocation": { + "type": "string" + }, + "subadmin": { + "type": "array", + "items": { + "type": "string" + } + }, + "twitter": { + "type": "string" + }, + "twitterScope": { + "type": "string" + }, + "website": { + "type": "string" + }, + "websiteScope": { + "type": "string" + } + } + } + }, + "securitySchemes": { + "basic_auth": { + "type": "http", + "scheme": "basic" + } + } + }, + "security": [ + { + "basic_auth": [] + } + ], + "tags": [ + { + "name": "provisioning_api" + } + ] +} \ No newline at end of file