diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php
index 208ea79c2aef2c54157f436d8ce58538d4fa8045..1dac86a95142320e6d8b78a293f2e7f352ba24c6 100644
--- a/apps/files_sharing/lib/Controller/ShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareAPIController.php
@@ -759,15 +759,18 @@ class ShareAPIController extends OCSController {
 
 		$shares = $this->getSharesFromNode($viewer, $node, $reShares);
 
-		$formatted = $miniFormatted = [];
+		$known = $formatted = $miniFormatted = [];
 		$resharingRight = false;
 		foreach ($shares as $share) {
+			if (in_array($share->getId(), $known) || $share->getSharedWith() === $this->currentUser) {
+				continue;
+			}
+
+			$known[] = $share->getId();
 			try {
 				/** @var IShare $share */
 				$format = $this->formatShare($share, $node);
-				if ($share->getSharedWith() !== $this->currentUser) {
-					$formatted[] = $format;
-				}
+				$formatted[] = $format;
 
 				// let's also build a list of shares created
 				// by the current user only, in case
diff --git a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php
index ae7fc54599cfaed1dbf428271b16cf0a7030f75f..90238d64274acc3e1ad901b03ff4e4861deed7bb 100644
--- a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php
+++ b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php
@@ -106,6 +106,9 @@ class ShareAPIControllerTest extends TestCase {
 			->expects($this->any())
 			->method('shareApiEnabled')
 			->willReturn(true);
+		$this->shareManager
+			->expects($this->any())
+		->method('shareProviderExists')->willReturn(true);
 		$this->groupManager = $this->createMock(IGroupManager::class);
 		$this->userManager = $this->createMock(IUserManager::class);
 		$this->request = $this->createMock(IRequest::class);
@@ -170,10 +173,10 @@ class ShareAPIControllerTest extends TestCase {
 		$this->expectExceptionMessage('Wrong share ID, share doesn\'t exist');
 
 		$this->shareManager
-			->expects($this->exactly(3))
+			->expects($this->exactly(5))
 			->method('getShareById')
 			->will($this->returnCallback(function($id) {
-				if ($id === 'ocinternal:42' || $id === 'ocRoomShare:42' || $id === 'ocFederatedSharing:42') {
+				if ($id === 'ocinternal:42' || $id === 'ocRoomShare:42' || $id === 'ocFederatedSharing:42' || $id === 'ocCircleShare:42' || $id === 'ocMailShare:42') {
 					throw new \OCP\Share\Exceptions\ShareNotFound();
 				} else {
 					throw new \Exception();
@@ -1008,9 +1011,7 @@ class ShareAPIControllerTest extends TestCase {
 				[
 				],
 				[
-					$file1UserShareOwnerExpected,
-					$file1UserShareOwnerExpected,
-					$file1UserShareOwnerExpected,
+					$file1UserShareOwnerExpected
 				]
 			],
 			[