diff --git a/src/Umbraco.Cms.ManagementApi/Controllers/Server/ServerControllerBase.cs b/src/Umbraco.Cms.ManagementApi/Controllers/Server/ServerControllerBase.cs new file mode 100644 index 0000000000..cdb4921ba3 --- /dev/null +++ b/src/Umbraco.Cms.ManagementApi/Controllers/Server/ServerControllerBase.cs @@ -0,0 +1,13 @@ +using Microsoft.AspNetCore.Mvc; +using NSwag.Annotations; +using Umbraco.New.Cms.Web.Common.Routing; + +namespace Umbraco.Cms.ManagementApi.Controllers.Server; + +[ApiController] +[BackOfficeRoute("api/v{version:apiVersion}/server")] +[OpenApiTag("Server")] +public abstract class ServerControllerBase : Controller +{ + +} diff --git a/src/Umbraco.Cms.ManagementApi/Controllers/Server/StatusServerController.cs b/src/Umbraco.Cms.ManagementApi/Controllers/Server/StatusServerController.cs new file mode 100644 index 0000000000..875e685c27 --- /dev/null +++ b/src/Umbraco.Cms.ManagementApi/Controllers/Server/StatusServerController.cs @@ -0,0 +1,21 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Umbraco.Cms.Core.Services; +using Umbraco.Cms.ManagementApi.ViewModels.Server; + +namespace Umbraco.Cms.ManagementApi.Controllers.Server; + +[ApiVersion("1.0")] +public class StatusServerController : ServerControllerBase +{ + private readonly IRuntimeState _runtimeState; + + public StatusServerController(IRuntimeState runtimeState) => _runtimeState = runtimeState; + + [HttpGet("status")] + [MapToApiVersion("1.0")] + [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)] + [ProducesResponseType(typeof(ServerStatusViewModel), StatusCodes.Status200OK)] + public async Task> Get() => + new ServerStatusViewModel { ServerStatus = _runtimeState.Level }; +} diff --git a/src/Umbraco.Cms.ManagementApi/Controllers/Server/VersionServerController.cs b/src/Umbraco.Cms.ManagementApi/Controllers/Server/VersionServerController.cs new file mode 100644 index 0000000000..fbd4f271e7 --- /dev/null +++ b/src/Umbraco.Cms.ManagementApi/Controllers/Server/VersionServerController.cs @@ -0,0 +1,22 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Umbraco.Cms.Core.Configuration; +using Umbraco.Cms.ManagementApi.ViewModels.Server; +using Umbraco.Extensions; + +namespace Umbraco.Cms.ManagementApi.Controllers.Server; + +[ApiVersion("1.0")] +public class VersionServerController : ServerControllerBase +{ + private readonly IUmbracoVersion _umbracoVersion; + + public VersionServerController(IUmbracoVersion umbracoVersion) => _umbracoVersion = umbracoVersion; + + [HttpGet("version")] + [MapToApiVersion("1.0")] + [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)] + [ProducesResponseType(typeof(VersionViewModel), StatusCodes.Status200OK)] + public async Task> Get() => + new VersionViewModel { Version = _umbracoVersion.SemanticVersion.ToSemanticStringWithoutBuild() }; +} diff --git a/src/Umbraco.Cms.ManagementApi/ViewModels/Server/ServerStatusViewModel.cs b/src/Umbraco.Cms.ManagementApi/ViewModels/Server/ServerStatusViewModel.cs new file mode 100644 index 0000000000..48cfed65c4 --- /dev/null +++ b/src/Umbraco.Cms.ManagementApi/ViewModels/Server/ServerStatusViewModel.cs @@ -0,0 +1,10 @@ +using System.Text.Json.Serialization; +using Umbraco.Cms.Core; + +namespace Umbraco.Cms.ManagementApi.ViewModels.Server; + +public class ServerStatusViewModel +{ + [JsonConverter(typeof(JsonStringEnumConverter))] + public RuntimeLevel ServerStatus { get; set; } +} diff --git a/src/Umbraco.Cms.ManagementApi/ViewModels/Server/VersionViewModel.cs b/src/Umbraco.Cms.ManagementApi/ViewModels/Server/VersionViewModel.cs new file mode 100644 index 0000000000..41a55e64b7 --- /dev/null +++ b/src/Umbraco.Cms.ManagementApi/ViewModels/Server/VersionViewModel.cs @@ -0,0 +1,6 @@ +namespace Umbraco.Cms.ManagementApi.ViewModels.Server; + +public class VersionViewModel +{ + public string Version { get; set; } = null!; +}