📄 YouTubeId.cs
using System.Text.Json.Serialization;

namespace MSearch.SearchProviders.YouTube;

[JsonPolymorphic(
    TypeDiscriminatorPropertyName = "kind",
    IgnoreUnrecognizedTypeDiscriminators = true,
    UnknownDerivedTypeHandling = JsonUnknownDerivedTypeHandling.FallBackToBaseType
)]
[JsonDerivedType(typeof(Channel), "youtube#channel")]
[JsonDerivedType(typeof(Video), "youtube#video")]
internal record YouTubeId
{
    private YouTubeId() { }

    public sealed record Channel([property: JsonPropertyName("channelId")] string Id) : YouTubeId();

    public sealed record Video([property: JsonPropertyName("videoId")] string Id) : YouTubeId();
}