summary refs log tree commit diff
path: root/extra/admin-api/Models/Spacebar.Models.Generic/Role.cs
diff options
context:
space:
mode:
Diffstat (limited to 'extra/admin-api/Models/Spacebar.Models.Generic/Role.cs')
-rw-r--r--extra/admin-api/Models/Spacebar.Models.Generic/Role.cs62
1 files changed, 62 insertions, 0 deletions
diff --git a/extra/admin-api/Models/Spacebar.Models.Generic/Role.cs b/extra/admin-api/Models/Spacebar.Models.Generic/Role.cs
new file mode 100644

index 00000000..6c49f85e --- /dev/null +++ b/extra/admin-api/Models/Spacebar.Models.Generic/Role.cs
@@ -0,0 +1,62 @@ +using System.Text.Json.Serialization; +using Spacebar.Models.Generic.Constants; + +namespace Spacebar.Models.Generic; + +public class Role { + [JsonPropertyName("id"), JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)] + public required long Id { get; set; } + + [JsonPropertyName("color"), Obsolete("See Colors instead")] + public int Color { get; set; } + + [JsonPropertyName("colors")] + public RoleColors Colors { get; set; } + + [JsonPropertyName("flags")] + public int Flags { get; set; } + + [JsonPropertyName("guild_id"), JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)] + public required long GuildId { get; set; } + + [JsonPropertyName("hoist")] + public bool Hoist { get; set; } + + [JsonPropertyName("icon")] + public string Icon { get; set; } + + [JsonPropertyName("managed")] + public bool Managed { get; set; } + + [JsonPropertyName("mentionable")] + public bool Mentionable { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } + + [JsonPropertyName("permissions"), JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)] + public required ulong RawPermissions { get; set; } + + [JsonIgnore] + public Permissions Permissions { + get => (Permissions)RawPermissions; + set => RawPermissions = (ulong)value; + } + + [JsonPropertyName("position")] + public int Position { get; set; } + + [JsonPropertyName("unicode_emoji")] + public string UnicodeEmoji { get; set; } + + public class RoleColors { + [JsonPropertyName("primary_color")] + public required int PrimaryColor { get; set; } + + [JsonPropertyName("secondary_color")] + public int? SecondaryColor { get; set; } + + [JsonPropertyName("tertiary_color")] + public int? TertiaryColor { get; set; } + } +} \ No newline at end of file