anchor.diff:      yield (String.Format("-sL -w \"{0}%{{http_code}}{0}\"", Regex.Escape(nl)))
       yield sprintf "-H \"X-HockeyAppToken:%s\"" param.ApiToken
       yield sprintf "-F \"ipa=@%s\"" param.File
  +    if not (String.IsNullOrEmpty param.Dsym) then yield sprintf "-F \"dsym=@%s\"" param.Dsym
       yield sprintf "-F \"notes=%s\"" param.Notes
  +    yield sprintf "-F \"notes_type=%i\"" (int param.NotesType)
       yield sprintf "-F \"release_type=%i\"" (int param.ReleaseType)
  +    yield sprintf "-F \"notify=%i\"" (int param.Notify)
  +    yield sprintf "-F \"mandatory=%i\"" (int param.Mandatory)
  +    yield sprintf "-F \"private=%b\"" param.Private
       if not (String.IsNullOrEmpty param.OwnerId) then yield sprintf "-F \"owner_id=%s\"" param.OwnerId
  +    if not (String.IsNullOrEmpty param.CommitSHA) then yield sprintf "-F \"commit_sha=%s\"" param.CommitSHA
  +    if not (String.IsNullOrEmpty param.BuildServerUrl) then yield sprintf "-F \"build_server_url=%s\"" param.BuildServerUrl
  +    if not (String.IsNullOrEmpty param.RepositoryUrl) then yield sprintf "-F \"repository_url=%s\"" param.RepositoryUrl
       yield "https://rink.hockeyapp.net/api/2/apps/upload"
   }
   
  
positive.code: open Newtonsoft.Json
  
  /// The release type of the app
  type ReleaseType = Beta = 0 | Store = 1 | Alpha = 2 | Enterprise = 3
  
  /// HockeyApp's success response
  type HockeyResponse = {
  
negative.code: }
  
  /// The HockeyApp parameter type
  /// Based on http://support.hockeyapp.net/kb/api/api-apps#upload-app
  type HockeyAppUploadParams = {
      /// (Required) API token
      ApiToken: string
  