diff --git a/apps/files/lib/Controller/ApiController.php b/apps/files/lib/Controller/ApiController.php
index d6f88581b9621a5ea5d2d6f140d0ab9186e8dd9c..138b68601cb7b43e070a59e9d7647b74b989e5c5 100644
--- a/apps/files/lib/Controller/ApiController.php
+++ b/apps/files/lib/Controller/ApiController.php
@@ -200,7 +200,8 @@ class ApiController extends Controller {
 			\OCP\Share::SHARE_TYPE_USER,
 			\OCP\Share::SHARE_TYPE_GROUP,
 			\OCP\Share::SHARE_TYPE_LINK,
-			\OCP\Share::SHARE_TYPE_REMOTE
+			\OCP\Share::SHARE_TYPE_REMOTE,
+			\OCP\Share::SHARE_TYPE_EMAIL
 		];
 		foreach ($requestedShareTypes as $requestedShareType) {
 			// one of each type is enough to find out about the types
diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php
index ef22b473189565e21ae6d035db769b090f89d114..f9c7d69cf5f04200c1044fba91b295f837bc2a05 100644
--- a/apps/files_sharing/lib/Controller/ShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareAPIController.php
@@ -405,7 +405,14 @@ class ShareAPIController extends OCSController {
 			$share->setSharedWith($shareWith);
 			$share->setPermissions($permissions);
 		} else if ($shareType === \OCP\Share::SHARE_TYPE_EMAIL) {
-			$share->setPermissions(\OCP\Constants::PERMISSION_READ);
+			if ($share->getNodeType() === 'file') {
+				$share->setPermissions(\OCP\Constants::PERMISSION_READ);
+			} else {
+				$share->setPermissions(
+					\OCP\Constants::PERMISSION_READ |
+					\OCP\Constants::PERMISSION_CREATE |
+					\OCP\Constants::PERMISSION_UPDATE);
+			}
 			$share->setSharedWith($shareWith);
 		} else {
 			throw new OCSBadRequestException($this->l->t('Unknown share type'));