using System.Text.Json.Serialization; namespace ForgejoReleaseSync.DTOs.Forgejo; public sealed record ForgejoReleaseResponseDto( [property: JsonPropertyName("archive_download_count")] ArchiveDownloadCount ArchiveDownloadCount, [property: JsonPropertyName("assets")] ForgejoReleaseAsset[] Assets, [property: JsonPropertyName("author")] ForgejoUser Author, [property: JsonPropertyName("body")] string Body, [property: JsonPropertyName("created_at")] DateTimeOffset CreatedAt, [property: JsonPropertyName("draft")] bool Draft, [property: JsonPropertyName("hide_archive_links")] bool HideArchiveLinks, [property: JsonPropertyName("html_url")] string HtmlUrl, [property: JsonPropertyName("id")] long Id, [property: JsonPropertyName("name")] string Name, [property: JsonPropertyName("prerelease")] bool Prerelease, [property: JsonPropertyName("published_at")] DateTimeOffset PublishedAt, [property: JsonPropertyName("tag_name")] string TagName, [property: JsonPropertyName("tarball_url")] string TarballUrl, [property: JsonPropertyName("target_commitish")] string TargetCommitish, [property: JsonPropertyName("upload_url")] string UploadUrl, [property: JsonPropertyName("url")] string Url, [property: JsonPropertyName("zipball_url")] string ZipballUrl ); public sealed record ArchiveDownloadCount( [property: JsonPropertyName("tar_gz")] long TarGz, [property: JsonPropertyName("zip")] long Zip ); public sealed record ForgejoReleaseAsset( [property: JsonPropertyName("browser_download_url")] string BrowserDownloadUrl, [property: JsonPropertyName("created_at")] DateTimeOffset CreatedAt, [property: JsonPropertyName("download_count")] long DownloadCount, [property: JsonPropertyName("id")] long Id, [property: JsonPropertyName("name")] string Name, [property: JsonPropertyName("size")] long Size, [property: JsonPropertyName("type")] string Type, [property: JsonPropertyName("uuid")] string Uuid ); public sealed record ForgejoUser( [property: JsonPropertyName("active")] bool Active, [property: JsonPropertyName("avatar_url")] string AvatarUrl, [property: JsonPropertyName("created")] DateTimeOffset Created, [property: JsonPropertyName("description")] string Description, [property: JsonPropertyName("email")] string Email, [property: JsonPropertyName("followers_count")] long FollowersCount, [property: JsonPropertyName("following_count")] long FollowingCount, [property: JsonPropertyName("full_name")] string FullName, [property: JsonPropertyName("html_url")] string HtmlUrl, [property: JsonPropertyName("id")] long Id, [property: JsonPropertyName("is_admin")] bool IsAdmin, [property: JsonPropertyName("language")] string Language, [property: JsonPropertyName("last_login")] DateTimeOffset LastLogin, [property: JsonPropertyName("location")] string Location, [property: JsonPropertyName("login")] string Login, [property: JsonPropertyName("login_name")] string LoginName, [property: JsonPropertyName("prohibit_login")] bool ProhibitLogin, [property: JsonPropertyName("pronouns")] string Pronouns, [property: JsonPropertyName("restricted")] bool Restricted, [property: JsonPropertyName("source_id")] long SourceId, [property: JsonPropertyName("starred_repos_count")] long StarredReposCount, [property: JsonPropertyName("visibility")] string Visibility, [property: JsonPropertyName("website")] string Website );