diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index ee585dd6e..52cf12b4a 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -1067,7 +1067,6 @@ App::delete('/v1/account') ->label('sdk.method', 'delete') ->label('sdk.description', '/docs/references/account/delete.md') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->inject('request') ->inject('response') @@ -1134,7 +1133,6 @@ App::delete('/v1/account/sessions/:sessionId') ->label('sdk.method', 'deleteSession') ->label('sdk.description', '/docs/references/account/delete-session.md') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->label('abuse-limit', 100) ->param('sessionId', null, new UID(), 'Session unique ID. Use the string \'current\' to delete the current device session.') @@ -1209,7 +1207,6 @@ App::delete('/v1/account/sessions') ->label('sdk.method', 'deleteSessions') ->label('sdk.description', '/docs/references/account/delete-sessions.md') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->label('abuse-limit', 100) ->inject('request') diff --git a/app/controllers/api/database.php b/app/controllers/api/database.php index ad32e8011..77de5953a 100644 --- a/app/controllers/api/database.php +++ b/app/controllers/api/database.php @@ -240,7 +240,6 @@ App::delete('/v1/database/collections/:collectionId') ->label('sdk.method', 'deleteCollection') ->label('sdk.description', '/docs/references/database/delete-collection.md') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('collectionId', '', new UID(), 'Collection unique ID.') ->inject('response') @@ -584,7 +583,6 @@ App::delete('/v1/database/collections/:collectionId/documents/:documentId') ->label('sdk.method', 'deleteDocument') ->label('sdk.description', '/docs/references/database/delete-document.md') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('collectionId', null, new UID(), 'Collection unique ID. You can create a new collection with validation rules using the Database service [server integration](/docs/server/database#createCollection).') ->param('documentId', null, new UID(), 'Document unique ID.') diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index fe2b1cef3..e51fdd044 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -392,7 +392,6 @@ App::delete('/v1/functions/:functionId') ->label('sdk.method', 'delete') ->label('sdk.description', '/docs/references/functions/delete-function.md') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('functionId', '', new UID(), 'Function unique ID.') ->inject('response') @@ -607,7 +606,6 @@ App::delete('/v1/functions/:functionId/tags/:tagId') ->label('sdk.method', 'deleteTag') ->label('sdk.description', '/docs/references/functions/delete-tag.md') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('functionId', '', new UID(), 'Function unique ID.') ->param('tagId', '', new UID(), 'Tag unique ID.') diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 04ff45383..ef8694625 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -448,7 +448,6 @@ App::delete('/v1/projects/:projectId') ->label('sdk.namespace', 'projects') ->label('sdk.method', 'delete') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('projectId', '', new UID(), 'Project unique ID.') ->param('password', '', new UID(), 'Your user password for confirmation. Must be between 6 to 32 chars.') @@ -684,7 +683,6 @@ App::delete('/v1/projects/:projectId/webhooks/:webhookId') ->label('sdk.namespace', 'projects') ->label('sdk.method', 'deleteWebhook') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('projectId', null, new UID(), 'Project unique ID.') ->param('webhookId', null, new UID(), 'Webhook unique ID.') @@ -877,7 +875,6 @@ App::delete('/v1/projects/:projectId/keys/:keyId') ->label('sdk.namespace', 'projects') ->label('sdk.method', 'deleteKey') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('projectId', null, new UID(), 'Project unique ID.') ->param('keyId', null, new UID(), 'Key unique ID.') @@ -1126,7 +1123,6 @@ App::delete('/v1/projects/:projectId/tasks/:taskId') ->label('sdk.namespace', 'projects') ->label('sdk.method', 'deleteTask') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('projectId', null, new UID(), 'Project unique ID.') ->param('taskId', null, new UID(), 'Task unique ID.') @@ -1334,7 +1330,6 @@ App::delete('/v1/projects/:projectId/platforms/:platformId') ->label('sdk.namespace', 'projects') ->label('sdk.method', 'deletePlatform') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('projectId', null, new UID(), 'Project unique ID.') ->param('platformId', null, new UID(), 'Platform unique ID.') @@ -1566,7 +1561,6 @@ App::delete('/v1/projects/:projectId/domains/:domainId') ->label('sdk.namespace', 'projects') ->label('sdk.method', 'deleteDomain') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('projectId', null, new UID(), 'Project unique ID.') ->param('domainId', null, new UID(), 'Domain unique ID.') diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 18e023347..98980fd6b 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -541,7 +541,6 @@ App::delete('/v1/storage/files/:fileId') ->label('sdk.method', 'deleteFile') ->label('sdk.description', '/docs/references/storage/delete-file.md') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('fileId', '', new UID(), 'File unique ID.') ->inject('response') diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 5ebeb6366..38918b384 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -207,7 +207,6 @@ App::delete('/v1/teams/:teamId') ->label('sdk.method', 'delete') ->label('sdk.description', '/docs/references/teams/delete-team.md') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('teamId', '', new UID(), 'Team unique ID.') ->inject('response') @@ -701,7 +700,6 @@ App::delete('/v1/teams/:teamId/memberships/:inviteId') ->label('sdk.method', 'deleteMembership') ->label('sdk.description', '/docs/references/teams/delete-team-membership.md') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('teamId', '', new UID(), 'Team unique ID.') ->param('inviteId', '', new UID(), 'Invite unique ID.') diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index a0cff9723..efb0041ce 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -416,7 +416,6 @@ App::delete('/v1/users/:userId/sessions/:sessionId') ->label('sdk.method', 'deleteSession') ->label('sdk.description', '/docs/references/users/delete-user-session.md') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('userId', '', new UID(), 'User unique ID.') ->param('sessionId', null, new UID(), 'User unique session ID.') @@ -462,7 +461,6 @@ App::delete('/v1/users/:userId/sessions') ->label('sdk.method', 'deleteSessions') ->label('sdk.description', '/docs/references/users/delete-user-sessions.md') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('userId', '', new UID(), 'User unique ID.') ->inject('response') @@ -505,7 +503,6 @@ App::delete('/v1/users/:userId') ->label('sdk.method', 'deleteUser') ->label('sdk.description', '/docs/references/users/delete-user.md') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) - ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('userId', '', function () {return new UID();}, 'User unique ID.') ->inject('response') diff --git a/app/controllers/general.php b/app/controllers/general.php index 3d9ed7a7e..751ee522e 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -241,7 +241,7 @@ App::options(function ($request, $response) { ->addHeader('Access-Control-Expose-Headers', 'X-Fallback-Cookies') ->addHeader('Access-Control-Allow-Origin', $origin) ->addHeader('Access-Control-Allow-Credentials', 'true') - ->send(); + ->noContent(); }, ['request', 'response']); App::error(function ($error, $utopia, $request, $response, $layout, $project) { diff --git a/src/Appwrite/Specification/Format/OpenAPI3.php b/src/Appwrite/Specification/Format/OpenAPI3.php index 1398ed37f..3c62daf5f 100644 --- a/src/Appwrite/Specification/Format/OpenAPI3.php +++ b/src/Appwrite/Specification/Format/OpenAPI3.php @@ -95,7 +95,7 @@ class OpenAPI3 extends Format $id = $route->getLabel('sdk.method', \uniqid()); $desc = (!empty($route->getLabel('sdk.description', ''))) ? \realpath(__DIR__.'/../../../../'.$route->getLabel('sdk.description', '')) : null; - $produces = $route->getLabel('sdk.response.type', 'application/json'); + $produces = $route->getLabel('sdk.response.type', null); $model = $route->getLabel('sdk.response.model', 'none'); $temp = [ diff --git a/src/Appwrite/Specification/Format/Swagger2.php b/src/Appwrite/Specification/Format/Swagger2.php index e13be224a..4dd040608 100644 --- a/src/Appwrite/Specification/Format/Swagger2.php +++ b/src/Appwrite/Specification/Format/Swagger2.php @@ -93,14 +93,14 @@ class Swagger2 extends Format $id = $route->getLabel('sdk.method', \uniqid()); $desc = (!empty($route->getLabel('sdk.description', ''))) ? \realpath(__DIR__.'/../../../../'.$route->getLabel('sdk.description', '')) : null; - $produces = $route->getLabel('sdk.response.type', 'application/json'); + $produces = $route->getLabel('sdk.response.type', null); $model = $route->getLabel('sdk.response.model', 'none'); $temp = [ 'summary' => $route->getDesc(), 'operationId' => $route->getLabel('sdk.namespace', 'default').ucfirst($id), 'consumes' => [], - 'produces' => [$produces], + 'produces' => [], 'tags' => [$route->getLabel('sdk.namespace', 'default')], 'description' => ($desc) ? \file_get_contents($desc) : '', 'responses' => [], @@ -120,6 +120,10 @@ class Swagger2 extends Format ], ]; + if($produces) { + $temp['produces'][] = $produces; + } + foreach ($this->models as $key => $value) { if($value->getType() === $model) { $model = $value; diff --git a/tests/e2e/General/HTTPTest.php b/tests/e2e/General/HTTPTest.php index df234f1e1..e33c46e3a 100644 --- a/tests/e2e/General/HTTPTest.php +++ b/tests/e2e/General/HTTPTest.php @@ -23,7 +23,7 @@ class HTTPTest extends Scope 'content-type' => 'application/json', ]), []); - $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals(204, $response['headers']['status-code']); $this->assertEquals('Appwrite', $response['headers']['server']); $this->assertEquals('GET, POST, PUT, PATCH, DELETE', $response['headers']['access-control-allow-methods']); $this->assertEquals('Origin, Cookie, Set-Cookie, X-Requested-With, Content-Type, Access-Control-Allow-Origin, Access-Control-Request-Headers, Accept, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-SDK-Version, Cache-Control, Expires, Pragma, X-Fallback-Cookies', $response['headers']['access-control-allow-headers']);