public string BuildExternalRef()
        {
            switch (this.AssetType)
            {
            case AssetType.MasterCoverArt:
            case AssetType.MasterArtistArt:
            case AssetType.MasterLabelArt:
            {
                return(String.Format("{0}/{1}", this.AssetType, this.MasterSha256Checksum).ToLower());
            }

            case AssetType.TrackProduct:
            case AssetType.TrackPreview:
            {
                var externalOwnerRef = Urn.Parse(this.ExternalOwnerUrn).IdValue;
                return(String.Format("{0}/{1}/{2}/{3}/{4}/{5}", this.AssetType, this.MasterSha256Checksum, externalOwnerRef, this.FileExtension.ToLower(), this.BitRateKbps ?? 0, this.DurationMs ?? 0).ToLower());
            }

            default:
            {
                var message = String.Format("AssetType not supported: {0}-{1}-{2}", AssetType, FileExtension.ToLower(), MasterSha256Checksum);
                throw new Exception(message);
            }
            }
        }