diff --git a/backend/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs b/backend/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs
index d9865c2eb..366a24738 100644
--- a/backend/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs
+++ b/backend/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs
@@ -218,6 +218,41 @@ namespace Squidex.Areas.Api.Controllers.Contents
return Ok(response);
}
+ ///
+ /// Get a content by version V2.
+ ///
+ /// The name of the app.
+ /// The name of the schema.
+ /// The ID of the content to fetch.
+ /// The version fo the content to fetch.
+ ///
+ /// 200 => Content version returned.
+ /// 404 => Content, schema or app not found.
+ ///
+ ///
+ /// You can read the generated documentation for your app at /api/content/{appName}/docs.
+ ///
+ [HttpGet]
+ [Route("content/{app}/{schema}/{id}/v/{version}/")]
+ [ApiPermissionOrAnonymous(PermissionIds.AppContentsReadOwn)]
+ [ApiCosts(1)]
+ public async Task GetContentVersionV2(string app, string schema, DomainId id, int version)
+ {
+ var content = await contentQuery.FindAsync(Context, schema, id, version, HttpContext.RequestAborted);
+
+ if (content == null)
+ {
+ return NotFound();
+ }
+
+ var response = Deferred.Response(() =>
+ {
+ return ContentDto.FromDomain(content, Resources);
+ });
+
+ return Ok(response);
+ }
+
///
/// Get a content by version.
///
@@ -245,9 +280,12 @@ namespace Squidex.Areas.Api.Controllers.Contents
return NotFound();
}
- var response = ContentDto.FromDomain(content, Resources);
+ var response = Deferred.Response(() =>
+ {
+ return ContentDto.FromDomain(content, Resources).Data;
+ });
- return Ok(response.Data);
+ return Ok(response);
}
///
diff --git a/backend/src/Squidex/Areas/Api/Controllers/Contents/Generator/SchemasOpenApiGenerator.cs b/backend/src/Squidex/Areas/Api/Controllers/Contents/Generator/SchemasOpenApiGenerator.cs
index c3e8d3e93..5202dbfd7 100644
--- a/backend/src/Squidex/Areas/Api/Controllers/Contents/Generator/SchemasOpenApiGenerator.cs
+++ b/backend/src/Squidex/Areas/Api/Controllers/Contents/Generator/SchemasOpenApiGenerator.cs
@@ -142,6 +142,14 @@ namespace Squidex.Areas.Api.Controllers.Contents.Generator
.OperationSummary("Get a [schema] content item by id and version.")
.HasPath("version", JsonObjectType.Number, FieldDescriptions.EntityVersion)
.HasId()
+ .Responds(200, "Content item returned.", builder.DataSchema);
+
+ builder.AddOperation(OpenApiOperationMethod.Get, "/{id}/v/{version}")
+ .RequirePermission(PermissionIds.AppContentsReadOwn)
+ .Operation("GetVersionedV2")
+ .OperationSummary("Get a [schema] content item by id and version.")
+ .HasPath("version", JsonObjectType.Number, FieldDescriptions.EntityVersion)
+ .HasId()
.Responds(200, "Content item returned.", builder.ContentSchema);
builder.AddOperation(OpenApiOperationMethod.Get, "/{id}/validity")