diff options
author | jld3103 <jld3103yt@gmail.com> | 2023-06-14 09:50:40 +0200 |
---|---|---|
committer | jld3103 <jld3103yt@gmail.com> | 2023-07-10 15:29:07 +0200 |
commit | d8ce744403165fc17fd0b270168dcdc4e4ca21d8 (patch) | |
tree | 52c2ee33a417b5eb579cd8ac154b4063f9ee927c /apps/federation | |
parent | a84fa17c7324599f9b872967e7b96d8a504a89b0 (diff) | |
download | nextcloud-server-d8ce744403165fc17fd0b270168dcdc4e4ca21d8.tar.gz nextcloud-server-d8ce744403165fc17fd0b270168dcdc4e4ca21d8.zip |
federation: Add OpenAPI spec
Signed-off-by: jld3103 <jld3103yt@gmail.com>
Diffstat (limited to 'apps/federation')
-rw-r--r-- | apps/federation/lib/Controller/OCSAuthAPIController.php | 33 | ||||
-rw-r--r-- | apps/federation/openapi.json | 423 |
2 files changed, 452 insertions, 4 deletions
diff --git a/apps/federation/lib/Controller/OCSAuthAPIController.php b/apps/federation/lib/Controller/OCSAuthAPIController.php index 5a976720b04..8fa33fa48ef 100644 --- a/apps/federation/lib/Controller/OCSAuthAPIController.php +++ b/apps/federation/lib/Controller/OCSAuthAPIController.php @@ -30,6 +30,7 @@ namespace OCA\Federation\Controller; use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; +use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\OCS\OCSForbiddenException; use OCP\AppFramework\OCSController; @@ -79,7 +80,13 @@ class OCSAuthAPIController extends OCSController { * * @NoCSRFRequired * @PublicPage - * @throws OCSForbiddenException + * + * @param string $url URL of the server + * @param string $token Token of the server + * @return DataResponse<Http::STATUS_OK, array<empty>, array{}> + * @throws OCSForbiddenException Requesting shared secret is not allowed + * + * 200: Shared secret requested successfully */ public function requestSharedSecretLegacy(string $url, string $token): DataResponse { return $this->requestSharedSecret($url, $token); @@ -91,7 +98,13 @@ class OCSAuthAPIController extends OCSController { * * @NoCSRFRequired * @PublicPage - * @throws OCSForbiddenException + * + * @param string $url URL of the server + * @param string $token Token of the server + * @return DataResponse<Http::STATUS_OK, array{sharedSecret: string}, array{}> + * @throws OCSForbiddenException Getting shared secret is not allowed + * + * 200: Shared secret returned */ public function getSharedSecretLegacy(string $url, string $token): DataResponse { return $this->getSharedSecret($url, $token); @@ -102,7 +115,13 @@ class OCSAuthAPIController extends OCSController { * * @NoCSRFRequired * @PublicPage - * @throws OCSForbiddenException + * + * @param string $url URL of the server + * @param string $token Token of the server + * @return DataResponse<Http::STATUS_OK, array<empty>, array{}> + * @throws OCSForbiddenException Requesting shared secret is not allowed + * + * 200: Shared secret requested successfully */ public function requestSharedSecret(string $url, string $token): DataResponse { if ($this->trustedServers->isTrustedServer($url) === false) { @@ -138,7 +157,13 @@ class OCSAuthAPIController extends OCSController { * * @NoCSRFRequired * @PublicPage - * @throws OCSForbiddenException + * + * @param string $url URL of the server + * @param string $token Token of the server + * @return DataResponse<Http::STATUS_OK, array{sharedSecret: string}, array{}> + * @throws OCSForbiddenException Getting shared secret is not allowed + * + * 200: Shared secret returned */ public function getSharedSecret(string $url, string $token): DataResponse { if ($this->trustedServers->isTrustedServer($url) === false) { diff --git a/apps/federation/openapi.json b/apps/federation/openapi.json new file mode 100644 index 00000000000..f6f21d1dfb3 --- /dev/null +++ b/apps/federation/openapi.json @@ -0,0 +1,423 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "federation", + "version": "0.0.1", + "description": "Federation allows you to connect with other trusted servers to exchange the user directory.", + "license": { + "name": "agpl" + } + }, + "components": { + "securitySchemes": { + "basic_auth": { + "type": "http", + "scheme": "basic" + }, + "bearer_auth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "OCSMeta": { + "type": "object", + "required": [ + "status", + "statuscode" + ], + "properties": { + "status": { + "type": "string" + }, + "statuscode": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "totalitems": { + "type": "string" + }, + "itemsperpage": { + "type": "string" + } + } + } + } + }, + "paths": { + "/ocs/v2.php/apps/federation/api/v1/shared-secret": { + "get": { + "operationId": "ocs_authapi-get-shared-secret-legacy", + "summary": "Create shared secret and return it, for legacy end-points", + "tags": [ + "ocs_authapi" + ], + "security": [ + {}, + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "url", + "in": "query", + "description": "URL of the server", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "Token of the server", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "required": true, + "schema": { + "type": "string", + "default": "true" + } + } + ], + "responses": { + "200": { + "description": "Shared secret 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": [ + "sharedSecret" + ], + "properties": { + "sharedSecret": { + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "403": { + "description": "Getting shared secret is not allowed", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/ocs/v2.php/apps/federation/api/v1/request-shared-secret": { + "post": { + "operationId": "ocs_authapi-request-shared-secret-legacy", + "summary": "Request received to ask remote server for a shared secret, for legacy end-points", + "tags": [ + "ocs_authapi" + ], + "security": [ + {}, + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "url", + "in": "query", + "description": "URL of the server", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "Token of the server", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "required": true, + "schema": { + "type": "string", + "default": "true" + } + } + ], + "responses": { + "200": { + "description": "Shared secret requested successfully", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + }, + "403": { + "description": "Requesting shared secret is not allowed", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/shared-secret": { + "get": { + "operationId": "ocs_authapi-get-shared-secret", + "summary": "Create shared secret and return it", + "tags": [ + "ocs_authapi" + ], + "security": [ + {}, + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "url", + "in": "query", + "description": "URL of the server", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "Token of the server", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "required": true, + "schema": { + "type": "string", + "default": "true" + } + } + ], + "responses": { + "200": { + "description": "Shared secret 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": [ + "sharedSecret" + ], + "properties": { + "sharedSecret": { + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "403": { + "description": "Getting shared secret is not allowed", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + }, + "post": { + "operationId": "ocs_authapi-request-shared-secret", + "summary": "Request received to ask remote server for a shared secret", + "tags": [ + "ocs_authapi" + ], + "security": [ + {}, + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "url", + "in": "query", + "description": "URL of the server", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "Token of the server", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "required": true, + "schema": { + "type": "string", + "default": "true" + } + } + ], + "responses": { + "200": { + "description": "Shared secret requested successfully", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": {} + } + } + } + } + } + } + }, + "403": { + "description": "Requesting shared secret is not allowed", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + } + }, + "tags": [ + { + "name": "ocs_authapi", + "description": "Class OCSAuthAPI\nOCS API end-points to exchange shared secret between two connected Nextclouds" + } + ] +}
\ No newline at end of file |