| | | 1 | | using System.Text.Json.Serialization; |
| | | 2 | | using ArturRios.Mediator.Command; |
| | | 3 | | |
| | | 4 | | namespace ArturRios.Heimdall.Command.Input; |
| | | 5 | | |
| | | 6 | | /// <summary> |
| | | 7 | | /// Intent to update an existing scope's name and description (UC-03). The scope is addressed by |
| | | 8 | | /// its <c>PublicId</c> (GUID), bound from the route. PUT semantics: both <see cref="Name" /> and |
| | | 9 | | /// <see cref="Description" /> are replaced; a null <see cref="Description" /> clears it. |
| | | 10 | | /// <see cref="Id" /> is <c>[JsonIgnore]</c>, so it is not deserialized from the body and does not |
| | | 11 | | /// appear in the request schema. |
| | | 12 | | /// </summary> |
| | | 13 | | public class UpdateScopeCommand : BaseCommand |
| | | 14 | | { |
| | | 15 | | /// <summary>Public identifier of the scope to update (bound from the route).</summary> |
| | | 16 | | [JsonIgnore] |
| | 42 | 17 | | public Guid Id { get; set; } |
| | | 18 | | |
| | | 19 | | /// <summary>New scope display name. Required and must be unique across all scopes.</summary> |
| | 121 | 20 | | public string Name { get; set; } = string.Empty; |
| | | 21 | | |
| | | 22 | | /// <summary>New description of the scope's purpose. Null clears any existing description.</summary> |
| | 45 | 23 | | public string? Description { get; set; } |
| | | 24 | | |
| | | 25 | | /// <summary> |
| | | 26 | | /// The lawful basis this tenant processes its users' data on (see <c>LegalBases</c>), or |
| | | 27 | | /// <c>null</c> to take the deployment default of contract performance (NFR-23). |
| | | 28 | | /// </summary> |
| | | 29 | | /// <remarks> |
| | | 30 | | /// <c>Consent</c> is refused. It is withdrawable at any moment and withdrawal must be as |
| | | 31 | | /// easy as giving it, which needs a path that does not exist here — accepting the value |
| | | 32 | | /// would let a tenant record a basis the system could not honour. |
| | | 33 | | /// </remarks> |
| | 67 | 34 | | public int? DefaultLegalBasis { get; set; } |
| | | 35 | | |
| | | 36 | | /// <summary> |
| | | 37 | | /// Where this tenant publishes its own privacy notice, or <c>null</c> if it has none |
| | | 38 | | /// distinct from Heimdall's. |
| | | 39 | | /// </summary> |
| | 66 | 40 | | public string? PrivacyNoticeUri { get; set; } |
| | | 41 | | } |