diff --git a/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/DocumentEto.cs b/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/DocumentEto.cs
new file mode 100644
index 0000000000..342ad59bcb
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/DocumentEto.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+
+namespace Volo.Docs.Documents
+{
+ public class DocumentEto
+ {
+ public Guid Id { get; set; }
+
+ public Guid ProjectId { get; set; }
+
+ public string Name { get; set; }
+
+ public string Version { get; set; }
+
+ public string LanguageCode { get; set; }
+
+ public string FileName { get; set; }
+
+ public string Content { get; set; }
+
+ public string Format { get; set; }
+
+ public string EditLink { get; set; }
+
+ public string RootUrl { get; set; }
+
+ public string RawRootUrl { get; set; }
+
+ public string LocalDirectory { get; set; }
+
+ public DateTime CreationTime { get; set; }
+
+ public DateTime LastUpdatedTime { get; set; }
+
+ public DateTime? LastSignificantUpdateTime { get; set; }
+
+ public DateTime LastCachedTime { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Projects/ProjectEto.cs b/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Projects/ProjectEto.cs
new file mode 100644
index 0000000000..110e497b43
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Projects/ProjectEto.cs
@@ -0,0 +1,29 @@
+using System;
+
+namespace Volo.Docs.Projects
+{
+ public class ProjectEto
+ {
+ public Guid Id { get; set; }
+
+ public string Name { get; set; }
+
+ public string ShortName { get; set; }
+
+ public string Format { get; set; }
+
+ public string DefaultDocumentName { get; set; }
+
+ public string NavigationDocumentName { get; set; }
+
+ public string ParametersDocumentName { get; set; }
+
+ public string MinimumVersion { get; set; }
+
+ public string DocumentStoreType { get; set; }
+
+ public string MainWebsiteUrl { get; set; }
+
+ public string LatestVersionBranchName { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj b/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj
index c2540754a3..3fc2eafb9d 100644
--- a/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj
+++ b/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj
@@ -25,6 +25,7 @@
+
diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainMappingProfile.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainMappingProfile.cs
new file mode 100644
index 0000000000..74f7224ea6
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainMappingProfile.cs
@@ -0,0 +1,15 @@
+using AutoMapper;
+using Volo.Docs.Documents;
+using Volo.Docs.Projects;
+
+namespace Volo.Docs
+{
+ public class DocsDomainMappingProfile : Profile
+ {
+ public DocsDomainMappingProfile()
+ {
+ CreateMap();
+ CreateMap();
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainModule.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainModule.cs
index ba2ee6018d..f392ca8875 100644
--- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainModule.cs
+++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainModule.cs
@@ -2,7 +2,9 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Volo.Abp;
+using Volo.Abp.AutoMapper;
using Volo.Abp.Domain;
+using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.Threading;
@@ -12,6 +14,7 @@ using Volo.Docs.Documents.FullSearch.Elastic;
using Volo.Docs.FileSystem.Documents;
using Volo.Docs.GitHub.Documents;
using Volo.Docs.Localization;
+using Volo.Docs.Projects;
namespace Volo.Docs
{
@@ -23,6 +26,18 @@ namespace Volo.Docs
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
+ Configure(options =>
+ {
+ options.EtoMappings.Add();
+ options.EtoMappings.Add();
+ });
+
+
+ Configure(options =>
+ {
+ options.AddProfile(validate: true);
+ });
+
Configure(options =>
{
options.FileSets