/// <summary>
 /// Get a list of differences
 /// </summary>
 /// <param name="repoId"></param>
 /// <param name="baseVersionType"></param>
 /// <param name="baseVersion"></param>
 /// <param name="targetVersionType"></param>
 /// <param name="targetVersion"></param>
 /// <param name="top"></param>
 /// <param name="skip"></param>
 /// <returns></returns>
 public async Task<GitDiff> GetDiffs(string repoId, 
     GitVersionType? baseVersionType = null, string baseVersion = null,
     GitVersionType? targetVersionType = null, string targetVersion = null,
     int? top = null, int? skip = null)
 {
     string response = await GetResponse(string.Format("repositories/{0}/diffs/commits", repoId),
          new Dictionary<string, object>() { 
             { "baseVersionType", baseVersionType != null ? baseVersionType.Value.ToString() :  null},
             { "baseVersion", baseVersion},
             { "targetVersionType", targetVersionType != null ? targetVersionType.Value.ToString() :  null},
             { "targetVersion", targetVersion},
             { "$top", top }, { "$skip", skip }
          });
     return JsonConvert.DeserializeObject<GitDiff>(response);
 }
 /// <summary>
 /// A version of a branch
 /// </summary>
 /// <param name="repoId"></param>
 /// <param name="branchName"></param>
 /// <param name="type"></param>
 /// <param name="baseVersion"></param>
 /// <returns></returns>
 public async Task<GitBranchInfo> GetBranchStatistics(string repoId, string branchName, GitVersionType? type = null, string baseVersion = null)
 {
     string response = await GetResponse(string.Format("repositories/{0}/stats/branches/{1}", repoId, branchName),
          new Dictionary<string, object>() { 
             { "baseVersionType", type != null ? type.Value.ToString() :  null},
             { "baseVersion", baseVersion}});
     return JsonConvert.DeserializeObject<GitBranchInfo>(response);
 }