diff --git a/modules/structs/repo.go b/modules/structs/repo.go
index a2e66266a..2aa413659 100644
--- a/modules/structs/repo.go
+++ b/modules/structs/repo.go
@@ -114,6 +114,7 @@ type Repository struct {
 	// swagger:strfmt date-time
 	MirrorUpdated time.Time     `json:"mirror_updated,omitempty"`
 	RepoTransfer  *RepoTransfer `json:"repo_transfer"`
+	Topics        []string      `json:"topics"`
 }
 
 // GetName implements the gitrepo.Repository interface
diff --git a/services/convert/repository.go b/services/convert/repository.go
index 35becd96d..2fb6f6d7c 100644
--- a/services/convert/repository.go
+++ b/services/convert/repository.go
@@ -237,6 +237,7 @@ func innerToRepo(ctx context.Context, repo *repo_model.Repository, permissionInR
 		MirrorInterval:                mirrorInterval,
 		MirrorUpdated:                 mirrorUpdated,
 		RepoTransfer:                  transfer,
+		Topics:                        repo.Topics,
 		ObjectFormatName:              repo.ObjectFormatName,
 	}
 }
diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl
index 67c3f498b..6a488559a 100644
--- a/templates/swagger/v1_json.tmpl
+++ b/templates/swagger/v1_json.tmpl
@@ -24234,6 +24234,13 @@
           "type": "boolean",
           "x-go-name": "Template"
         },
+        "topics": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          },
+          "x-go-name": "Topics"
+        },
         "updated_at": {
           "type": "string",
           "format": "date-time",