using Newtonsoft.Json; namespace SabreTools.Data.Models.Xbox { /// /// Metadata about each package on disc, in catalog.js /// Packages are stored within /MSXC/ /// public class Package { /// /// "packageName": /// Package name of variant /// Matches MSXC/ and MSXC/Metdata/ /// Known Versions Present: 2.0, 2.1, 4.0 /// [JsonProperty("packageName", NullValueHandling = NullValueHandling.Ignore)] public string? PackageName { get; set; } /// /// "productId": /// Hex identifier for package Product ID /// Known Versions Present: 2.0, 2.1 /// [JsonProperty("productId", NullValueHandling = NullValueHandling.Ignore)] public string? ProductID { get; set; } /// /// "contentId": /// Hex content identifier /// Known Versions present: 2.0, 2.1 /// [JsonProperty("contentId", NullValueHandling = NullValueHandling.Ignore)] public string? ContentID { get; set; } /// /// "xboxProductId": /// Hex product identifier /// Known Versions Present: 4.0 /// [JsonProperty("xboxProductId", NullValueHandling = NullValueHandling.Ignore)] public string? XboxProductID { get; set; } /// /// "oneStoreProductId": /// Partner Center Product ID /// 12 character uppercase alphanumeric /// Known Versions Present: 4.0 /// [JsonProperty("oneStoreProductId", NullValueHandling = NullValueHandling.Ignore)] public string? OneStoreProductID { get; set; } /// /// "allowedOneStoreProductIds": /// List of OneStoreProductID that this package is associated with /// Used for DLC packages only (Type = "Durable") /// Known Versions Present: 4.0 /// [JsonProperty("allowedOneStoreProductIds", NullValueHandling = NullValueHandling.Ignore)] public string[]? AllowedOneStoreProductIDs { get; set; } /// /// "franchiseGameHubId": /// Hex identifier /// Optionally used to mark package as game hub /// Known Versions Present: 4.1 /// [JsonProperty("franchiseGameHubId", NullValueHandling = NullValueHandling.Ignore)] public string? FranchiseGameHubID { get; set; } /// /// "associatedFranchiseGameHubId": /// Hex identifier /// Marks corresponding FranchiseGameHubID that this package is launched with /// Known Versions Present: 4.1 /// [JsonProperty("associatedFranchiseGameHubId", NullValueHandling = NullValueHandling.Ignore)] public string? AssociatedFranchiseGameHubID { get; set; } /// /// "titleId": /// 8 hex character package Title ID /// Known Versions Present: 2.0, 2.1, 4.0 /// [JsonProperty("titleId", NullValueHandling = NullValueHandling.Ignore)] public string? TitleID { get; set; } /// /// "titles" /// List of name of package for each locale /// Known Versions Present: 2.0, 2.1, 4.0 /// [JsonProperty("titles", NullValueHandling = NullValueHandling.Ignore)] public Title[]? Titles { get; set; } /// /// "vui": /// List of Voice User Interface packages titles for each locale /// Known Versions Present: 2.0, 2.1, 4.0 /// [JsonProperty("vui", NullValueHandling = NullValueHandling.Ignore)] public Title[]? VUI { get; set; } /// /// "images": /// List of paths to each image in MSXC/Metadata// /// Known Versions Present: 2.0, 2.1, 4.0 /// [JsonProperty("images", NullValueHandling = NullValueHandling.Ignore)] public Image[]? Images { get; set; } /// /// "ratings": /// List of package age ratings for each relevant rating system /// Known Versions Present: 2.0, 2.1, 4.0 /// [JsonProperty("ratings", NullValueHandling = NullValueHandling.Ignore)] public Rating[]? Ratings { get; set; } /// /// "attributes": /// Extra attributes associated with this package /// Known Versions Present: 2.1, 4.0 /// [JsonProperty("attributes", NullValueHandling = NullValueHandling.Ignore)] public Attribute[]? Attributes { get; set; } /// /// "variants": /// Alternative packages /// Known Versions Present: 4.0 /// [JsonProperty("variants", NullValueHandling = NullValueHandling.Ignore)] public Package[]? Variants { get; set; } /// /// "generation": /// Console generation the package is for /// Known values: "8" (XboxOne), "9" (Xbox Series X|S) /// Known Versions Present: 4.0 /// [JsonProperty("generation", NullValueHandling = NullValueHandling.Ignore)] public string? Generation { get; set; } /// /// "size": /// Size of package in bytes /// Known Versions Present: 2.0, 2.1 /// [JsonProperty("size", NullValueHandling = NullValueHandling.Ignore)] public long? Size { get; set; } /// /// "type": /// Package Type /// Known values: "Game" (Game package), "Durable" (DLC package) /// Known Versions Present: 2.0, 2.1, 4.0 /// [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)] public string? Type { get; set; } } }