diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Content/ContentCollectionControllerBase.cs b/src/Umbraco.Cms.Api.Management/Controllers/Content/ContentCollectionControllerBase.cs index 95f4bb5498bd..8012da466936 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Content/ContentCollectionControllerBase.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Content/ContentCollectionControllerBase.cs @@ -14,7 +14,7 @@ namespace Umbraco.Cms.Api.Management.Controllers.Content; public abstract class ContentCollectionControllerBase : ManagementApiControllerBase where TContent : class, IContentBase where TCollectionResponseModel : ContentResponseModelBase - where TValueResponseModelBase : ValueModelBase + where TValueResponseModelBase : ValueResponseModelBase where TVariantResponseModel : VariantResponseModelBase { private readonly IUmbracoMapper _mapper; diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Document/Collection/DocumentCollectionControllerBase.cs b/src/Umbraco.Cms.Api.Management/Controllers/Document/Collection/DocumentCollectionControllerBase.cs index 71dfc75fb151..b4ac5a86da1e 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Document/Collection/DocumentCollectionControllerBase.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Document/Collection/DocumentCollectionControllerBase.cs @@ -15,7 +15,7 @@ namespace Umbraco.Cms.Api.Management.Controllers.Document.Collection; [VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Collection}/{Constants.UdiEntityType.Document}")] [ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Document))] [Authorize(Policy = AuthorizationPolicies.TreeAccessDocuments)] -public abstract class DocumentCollectionControllerBase : ContentCollectionControllerBase +public abstract class DocumentCollectionControllerBase : ContentCollectionControllerBase { protected DocumentCollectionControllerBase(IUmbracoMapper mapper) : base(mapper) diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Media/Collection/MediaCollectionControllerBase.cs b/src/Umbraco.Cms.Api.Management/Controllers/Media/Collection/MediaCollectionControllerBase.cs index c6bf7eadda93..cf6b05d8b96c 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Media/Collection/MediaCollectionControllerBase.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Media/Collection/MediaCollectionControllerBase.cs @@ -15,7 +15,7 @@ namespace Umbraco.Cms.Api.Management.Controllers.Media.Collection; [VersionedApiBackOfficeRoute($"{Constants.Web.RoutePath.Collection}/{Constants.UdiEntityType.Media}")] [ApiExplorerSettings(GroupName = nameof(Constants.UdiEntityType.Media))] [Authorize(Policy = AuthorizationPolicies.SectionAccessMedia)] -public abstract class MediaCollectionControllerBase : ContentCollectionControllerBase +public abstract class MediaCollectionControllerBase : ContentCollectionControllerBase { protected MediaCollectionControllerBase(IUmbracoMapper mapper) : base(mapper) diff --git a/src/Umbraco.Cms.Api.Management/Mapping/Content/ContentMapDefinition.cs b/src/Umbraco.Cms.Api.Management/Mapping/Content/ContentMapDefinition.cs index bba23ea98d0f..038e3fbf8ba9 100644 --- a/src/Umbraco.Cms.Api.Management/Mapping/Content/ContentMapDefinition.cs +++ b/src/Umbraco.Cms.Api.Management/Mapping/Content/ContentMapDefinition.cs @@ -8,7 +8,7 @@ namespace Umbraco.Cms.Api.Management.Mapping.Content; public abstract class ContentMapDefinition where TContent : IContentBase - where TValueViewModel : ValueModelBase, new() + where TValueViewModel : ValueResponseModelBase, new() where TVariantViewModel : VariantResponseModelBase, new() { private readonly PropertyEditorCollection _propertyEditorCollection; @@ -36,7 +36,8 @@ protected IEnumerable MapValueViewModels(IEnumerable Culture = propertyValue.Culture, Segment = propertyValue.Segment, Alias = property.Alias, - Value = propertyEditor.GetValueEditor().ToEditor(property, propertyValue.Culture, propertyValue.Segment) + Value = propertyEditor.GetValueEditor().ToEditor(property, propertyValue.Culture, propertyValue.Segment), + EditorAlias = propertyEditor.Alias }; additionalPropertyMapping?.Invoke(propertyEditor, variantViewModel); return variantViewModel; diff --git a/src/Umbraco.Cms.Api.Management/Mapping/Document/DocumentMapDefinition.cs b/src/Umbraco.Cms.Api.Management/Mapping/Document/DocumentMapDefinition.cs index ce0991208225..494631fe1c26 100644 --- a/src/Umbraco.Cms.Api.Management/Mapping/Document/DocumentMapDefinition.cs +++ b/src/Umbraco.Cms.Api.Management/Mapping/Document/DocumentMapDefinition.cs @@ -11,7 +11,7 @@ namespace Umbraco.Cms.Api.Management.Mapping.Document; -public class DocumentMapDefinition : ContentMapDefinition, IMapDefinition +public class DocumentMapDefinition : ContentMapDefinition, IMapDefinition { private readonly CommonMapper _commonMapper; diff --git a/src/Umbraco.Cms.Api.Management/Mapping/Document/DocumentVersionMapDefinition.cs b/src/Umbraco.Cms.Api.Management/Mapping/Document/DocumentVersionMapDefinition.cs index 40359b08c5c4..5e12e245bd6c 100644 --- a/src/Umbraco.Cms.Api.Management/Mapping/Document/DocumentVersionMapDefinition.cs +++ b/src/Umbraco.Cms.Api.Management/Mapping/Document/DocumentVersionMapDefinition.cs @@ -9,7 +9,7 @@ namespace Umbraco.Cms.Api.Management.Mapping.Document; -public class DocumentVersionMapDefinition : ContentMapDefinition, IMapDefinition +public class DocumentVersionMapDefinition : ContentMapDefinition, IMapDefinition { public DocumentVersionMapDefinition(PropertyEditorCollection propertyEditorCollection) : base(propertyEditorCollection) diff --git a/src/Umbraco.Cms.Api.Management/Mapping/Media/MediaMapDefinition.cs b/src/Umbraco.Cms.Api.Management/Mapping/Media/MediaMapDefinition.cs index d4760abe2dc2..df1743d235f5 100644 --- a/src/Umbraco.Cms.Api.Management/Mapping/Media/MediaMapDefinition.cs +++ b/src/Umbraco.Cms.Api.Management/Mapping/Media/MediaMapDefinition.cs @@ -10,7 +10,7 @@ namespace Umbraco.Cms.Api.Management.Mapping.Media; -public class MediaMapDefinition : ContentMapDefinition, IMapDefinition +public class MediaMapDefinition : ContentMapDefinition, IMapDefinition { private readonly CommonMapper _commonMapper; diff --git a/src/Umbraco.Cms.Api.Management/Mapping/Member/MemberMapDefinition.cs b/src/Umbraco.Cms.Api.Management/Mapping/Member/MemberMapDefinition.cs index a6e16c8c7b96..fedc8e4ecaea 100644 --- a/src/Umbraco.Cms.Api.Management/Mapping/Member/MemberMapDefinition.cs +++ b/src/Umbraco.Cms.Api.Management/Mapping/Member/MemberMapDefinition.cs @@ -7,7 +7,7 @@ namespace Umbraco.Cms.Api.Management.Mapping.Member; -public class MemberMapDefinition : ContentMapDefinition, IMapDefinition +public class MemberMapDefinition : ContentMapDefinition, IMapDefinition { public MemberMapDefinition(PropertyEditorCollection propertyEditorCollection) : base(propertyEditorCollection) diff --git a/src/Umbraco.Cms.Api.Management/OpenApi.json b/src/Umbraco.Cms.Api.Management/OpenApi.json index 1bcf48be971d..8dc6cf911c6b 100644 --- a/src/Umbraco.Cms.Api.Management/OpenApi.json +++ b/src/Umbraco.Cms.Api.Management/OpenApi.json @@ -36314,7 +36314,7 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/DocumentValueModel" + "$ref": "#/components/schemas/DocumentValueResponseModel" } ] } @@ -36399,7 +36399,7 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/DocumentValueModel" + "$ref": "#/components/schemas/DocumentValueResponseModel" } ] } @@ -36652,7 +36652,7 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/DocumentValueModel" + "$ref": "#/components/schemas/DocumentValueResponseModel" } ] } @@ -37334,6 +37334,35 @@ }, "additionalProperties": false }, + "DocumentValueResponseModel": { + "required": [ + "alias", + "editorAlias" + ], + "type": "object", + "properties": { + "culture": { + "type": "string", + "nullable": true + }, + "segment": { + "type": "string", + "nullable": true + }, + "alias": { + "minLength": 1, + "type": "string" + }, + "value": { + "nullable": true + }, + "editorAlias": { + "minLength": 1, + "type": "string" + } + }, + "additionalProperties": false + }, "DocumentVariantItemResponseModel": { "required": [ "name", @@ -37492,7 +37521,7 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/DocumentValueModel" + "$ref": "#/components/schemas/DocumentValueResponseModel" } ] } @@ -38534,7 +38563,7 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/MediaValueModel" + "$ref": "#/components/schemas/MediaValueResponseModel" } ] } @@ -38717,7 +38746,7 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/MediaValueModel" + "$ref": "#/components/schemas/MediaValueResponseModel" } ] } @@ -39305,6 +39334,35 @@ }, "additionalProperties": false }, + "MediaValueResponseModel": { + "required": [ + "alias", + "editorAlias" + ], + "type": "object", + "properties": { + "culture": { + "type": "string", + "nullable": true + }, + "segment": { + "type": "string", + "nullable": true + }, + "alias": { + "minLength": 1, + "type": "string" + }, + "value": { + "nullable": true + }, + "editorAlias": { + "minLength": 1, + "type": "string" + } + }, + "additionalProperties": false + }, "MediaVariantRequestModel": { "required": [ "name" @@ -39473,7 +39531,7 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/MemberValueModel" + "$ref": "#/components/schemas/MemberValueResponseModel" } ] } @@ -39958,6 +40016,35 @@ }, "additionalProperties": false }, + "MemberValueResponseModel": { + "required": [ + "alias", + "editorAlias" + ], + "type": "object", + "properties": { + "culture": { + "type": "string", + "nullable": true + }, + "segment": { + "type": "string", + "nullable": true + }, + "alias": { + "minLength": 1, + "type": "string" + }, + "value": { + "nullable": true + }, + "editorAlias": { + "minLength": 1, + "type": "string" + } + }, + "additionalProperties": false + }, "MemberVariantRequestModel": { "required": [ "name" diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Content/ContentCollectionResponseModelBase.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Content/ContentCollectionResponseModelBase.cs index 735e448fb268..2426abbecd55 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Content/ContentCollectionResponseModelBase.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Content/ContentCollectionResponseModelBase.cs @@ -4,7 +4,7 @@ namespace Umbraco.Cms.Api.Management.ViewModels.Content; public abstract class ContentCollectionResponseModelBase : ContentResponseModelBase - where TValueResponseModelBase : ValueModelBase + where TValueResponseModelBase : ValueResponseModelBase where TVariantResponseModel : VariantResponseModelBase { public string? Creator { get; set; } diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Document/Collection/DocumentCollectionResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Document/Collection/DocumentCollectionResponseModel.cs index 453f2ee72a6b..b67f4088ce8d 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Document/Collection/DocumentCollectionResponseModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Document/Collection/DocumentCollectionResponseModel.cs @@ -3,7 +3,7 @@ namespace Umbraco.Cms.Api.Management.ViewModels.Document.Collection; -public class DocumentCollectionResponseModel : ContentCollectionResponseModelBase +public class DocumentCollectionResponseModel : ContentCollectionResponseModelBase { public DocumentTypeCollectionReferenceResponseModel DocumentType { get; set; } = new(); diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentResponseModel.cs index d2eeb2e6afb0..2854a533202c 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentResponseModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentResponseModel.cs @@ -1,6 +1,6 @@ namespace Umbraco.Cms.Api.Management.ViewModels.Document; -public class DocumentResponseModel : DocumentResponseModelBase +public class DocumentResponseModel : DocumentResponseModelBase { public IEnumerable Urls { get; set; } = Enumerable.Empty(); diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentValueResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentValueResponseModel.cs new file mode 100644 index 000000000000..c112da394c7d --- /dev/null +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentValueResponseModel.cs @@ -0,0 +1,7 @@ +using Umbraco.Cms.Core.Models.ContentEditing; + +namespace Umbraco.Cms.Api.Management.ViewModels.Document; + +public class DocumentValueResponseModel : ValueResponseModelBase +{ +} diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentVersionResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentVersionResponseModel.cs index 486bee306f64..5068ab3f407f 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentVersionResponseModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentVersionResponseModel.cs @@ -1,6 +1,6 @@ namespace Umbraco.Cms.Api.Management.ViewModels.Document; -public class DocumentVersionResponseModel : DocumentResponseModelBase +public class DocumentVersionResponseModel : DocumentResponseModelBase { public ReferenceByIdModel? Document { get; set; } } diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/DocumentBlueprint/DocumentBlueprintResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/DocumentBlueprint/DocumentBlueprintResponseModel.cs index e23cb10f413d..7b8a60b6e201 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/DocumentBlueprint/DocumentBlueprintResponseModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/DocumentBlueprint/DocumentBlueprintResponseModel.cs @@ -2,6 +2,6 @@ namespace Umbraco.Cms.Api.Management.ViewModels.DocumentBlueprint; -public class DocumentBlueprintResponseModel : DocumentResponseModelBase +public class DocumentBlueprintResponseModel : DocumentResponseModelBase { } diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Media/Collection/MediaCollectionResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Media/Collection/MediaCollectionResponseModel.cs index fb772f858fa1..72891a9bd109 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Media/Collection/MediaCollectionResponseModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Media/Collection/MediaCollectionResponseModel.cs @@ -3,7 +3,7 @@ namespace Umbraco.Cms.Api.Management.ViewModels.Media.Collection; -public class MediaCollectionResponseModel : ContentCollectionResponseModelBase +public class MediaCollectionResponseModel : ContentCollectionResponseModelBase { public MediaTypeCollectionReferenceResponseModel MediaType { get; set; } = new(); } diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Media/MediaResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Media/MediaResponseModel.cs index dc6bc6da4015..8b78b98f2c54 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Media/MediaResponseModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Media/MediaResponseModel.cs @@ -3,7 +3,7 @@ namespace Umbraco.Cms.Api.Management.ViewModels.Media; -public class MediaResponseModel : ContentResponseModelBase +public class MediaResponseModel : ContentResponseModelBase { public IEnumerable Urls { get; set; } = Enumerable.Empty(); diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Media/MediaValueResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Media/MediaValueResponseModel.cs new file mode 100644 index 000000000000..10ffd04bd05d --- /dev/null +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Media/MediaValueResponseModel.cs @@ -0,0 +1,7 @@ +using Umbraco.Cms.Core.Models.ContentEditing; + +namespace Umbraco.Cms.Api.Management.ViewModels.Media; + +public class MediaValueResponseModel : ValueResponseModelBase +{ +} diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Member/MemberResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Member/MemberResponseModel.cs index df5f9c9a2217..626d5e6b8e1e 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Member/MemberResponseModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Member/MemberResponseModel.cs @@ -4,7 +4,7 @@ namespace Umbraco.Cms.Api.Management.ViewModels.Member; -public class MemberResponseModel : ContentResponseModelBase +public class MemberResponseModel : ContentResponseModelBase { public string Email { get; set; } = string.Empty; diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Member/MemberValueResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Member/MemberValueResponseModel.cs new file mode 100644 index 000000000000..1db8190ecbea --- /dev/null +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Member/MemberValueResponseModel.cs @@ -0,0 +1,7 @@ +using Umbraco.Cms.Core.Models.ContentEditing; + +namespace Umbraco.Cms.Api.Management.ViewModels.Member; + +public class MemberValueResponseModel : ValueResponseModelBase +{ +} diff --git a/src/Umbraco.Core/Models/ContentEditing/ValueResponseModelBase.cs b/src/Umbraco.Core/Models/ContentEditing/ValueResponseModelBase.cs new file mode 100644 index 000000000000..65e61cfaba36 --- /dev/null +++ b/src/Umbraco.Core/Models/ContentEditing/ValueResponseModelBase.cs @@ -0,0 +1,9 @@ +using System.ComponentModel.DataAnnotations; + +namespace Umbraco.Cms.Core.Models.ContentEditing; + +public abstract class ValueResponseModelBase : ValueModelBase +{ + [Required] + public string EditorAlias { get; set; } = string.Empty; +}