diff --git a/arkindex/dataimport/serializers/git.py b/arkindex/dataimport/serializers/git.py
index 2180a984a976f43375f5f5d8eed9a2546c28b054..123a03d7a3b2ca31a3e091213a1beeb5563a56bc 100644
--- a/arkindex/dataimport/serializers/git.py
+++ b/arkindex/dataimport/serializers/git.py
@@ -68,6 +68,12 @@ class RepositorySerializer(serializers.ModelSerializer):
     Serialize a repository
     """
     enabled = serializers.BooleanField(read_only=True)
+    gitlab_token = serializers.SerializerMethodField()
+
+    def get_gitlab_token(self, repository):
+        if self.context['request'].user.is_internal:
+            return repository.credentials.token
+        return None
 
     class Meta:
         model = Repository
@@ -76,6 +82,7 @@ class RepositorySerializer(serializers.ModelSerializer):
             'url',
             'enabled',
             'corpus',
+            'gitlab_token',
         )
         extra_kwargs = {
             'id': {'read_only': True},
diff --git a/arkindex/dataimport/tests/test_repos.py b/arkindex/dataimport/tests/test_repos.py
index 951af071c13904770ce9ad7b8113275bf1b1f182..42d193ce6563f5fc25fd7133d26c104d54f5d29c 100644
--- a/arkindex/dataimport/tests/test_repos.py
+++ b/arkindex/dataimport/tests/test_repos.py
@@ -5,6 +5,7 @@ from ponos.models import Workflow
 from arkindex_common.enums import DataImportMode
 from arkindex.project.tests import FixtureTestCase
 from arkindex.dataimport.models import Repository, DataImport
+from arkindex.users.models import User
 
 
 class TestRepositories(FixtureTestCase):
@@ -61,6 +62,55 @@ class TestRepositories(FixtureTestCase):
         self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
         self.assertEqual(Workflow.objects.count(), 0)
 
+    def test_repository_retrieve_requires_login(self):
+        response = self.client.get(
+            reverse('api:repository-retrieve', kwargs={'pk': str(self.repo.id)})
+        )
+        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
+
+    def test_repository_retrieve_wrong_id(self):
+        self.client.force_login(self.user)
+        response = self.client.get(
+            reverse('api:repository-retrieve', kwargs={'pk': '12341234-1234-1234-1234-123412341234'})
+        )
+        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
+        self.assertEqual(response.json(), {'detail': 'Not found.'})
+
+    def test_repository_retrieve_external_user(self):
+        self.client.force_login(self.user)
+        self.assertFalse(self.user.is_internal)
+        response = self.client.get(
+            reverse('api:repository-retrieve', kwargs={'pk': str(self.repo.id)})
+        )
+        self.assertEqual(response.status_code, status.HTTP_200_OK)
+        data = response.json()
+        self.assertDictEqual(data, {
+            'id': str(self.repo.id),
+            'corpus': str(self.repo.corpus.id),
+            'enabled': True,
+            'gitlab_token': None,
+            'url': self.repo.url,
+        })
+
+    def test_repository_retrieve_internal_user(self):
+        internal_user = User.objects.create_internal_user('internal@test.com')
+        internal_user.verified_email = True
+        internal_user.save()
+        self.assertTrue(internal_user.is_internal)
+        self.client.force_login(internal_user)
+        response = self.client.get(
+            reverse('api:repository-retrieve', kwargs={'pk': str(self.repo.id)})
+        )
+        self.assertEqual(response.status_code, status.HTTP_200_OK)
+        data = response.json()
+        self.assertDictEqual(data, {
+            'id': str(self.repo.id),
+            'corpus': str(self.repo.corpus.id),
+            'enabled': True,
+            'gitlab_token': 'oauth-token',
+            'url': self.repo.url,
+        })
+
     def test_revision_retrieve_requires_login(self):
         response = self.client.get(
             reverse('api:revision-retrieve', kwargs={'pk': str(self.rev.id)})
@@ -82,9 +132,12 @@ class TestRepositories(FixtureTestCase):
         )
         self.assertEqual(response.status_code, status.HTTP_200_OK)
         data = response.json()
-        self.assertEqual(data['id'], str(self.rev.id))
-        self.assertEqual(data['hash'], self.rev.hash)
-        self.assertEqual(data['author'], self.rev.author)
-        self.assertEqual(data['message'], self.rev.message)
-        self.assertEqual(data['commit_url'], self.rev.commit_url)
-        self.assertEqual(data['repo_id'], str(self.repo.id))
+        del data['date']
+        self.assertDictEqual(data, {
+            'id': str(self.rev.id),
+            'hash': self.rev.hash,
+            'author': self.rev.author,
+            'message': self.rev.message,
+            'commit_url': self.rev.commit_url,
+            'repo_id': str(self.repo.id),
+        })