int OnExecute(IConsole console, IConfig config, IConfiguration appConfiguration, IMicrosoftCustomTranslatorAPIPreview10 sdk, IAccessTokenClient atc)
            {
                console.WriteLine("Getting Import Status...");

                int pageIndex = 1;
                List <ImportJobFileStatusInfo> jobStatus = new List <ImportJobFileStatusInfo>();

                while (true)
                {
                    var res = CallApi <ImportJobStatusResponse>(() => sdk.GetImportJobsByJobId(atc.GetToken(), new Guid(JobId), pageIndex, 100));
                    if (res == null)
                    {
                        throw new Exception("GetImportJobsByJobId returned null response");
                    }

                    jobStatus.AddRange(res.FileProcessingStatus);

                    pageIndex++;
                    if (pageIndex > res.TotalPageCount)
                    {
                        break;
                    }
                }

                console.WriteLine(SafeJsonConvert.SerializeObject(jobStatus, new Newtonsoft.Json.JsonSerializerSettings()
                {
                    Formatting = Newtonsoft.Json.Formatting.Indented
                }));

                return(0);
            }
            int OnExecute(IConsole console, IConfig config, IConfiguration appConfiguration, IMicrosoftCustomTranslatorAPIPreview10 sdk, IAccessTokenClient atc)
            {
                _sdk     = sdk;
                _atc     = atc;
                _console = console;

                // Get the supported language pairs
                var languagePairs = CallApi <IList <LanguagePair> >(() => sdk.GetSupportedLanguagePairs(atc.GetToken()));

                if (languagePairs == null)
                {
                    return(-1);
                }

                var languagePairId = (from lp in languagePairs
                                      where lp.SourceLanguage.LanguageCode == LanguagePair.Split(":")[0] &&
                                      (lp.TargetLanguage.LanguageCode == LanguagePair.Split(":")[1])
                                      select lp.Id).FirstOrDefault();

                if (languagePairId == null)
                {
                    console.WriteLine("Invalid or unsupported LanguagePair.");
                    return(-1);
                }

                // Validate arg combinations
                if (!string.IsNullOrEmpty(ComboFile) && !string.IsNullOrEmpty(SourceFile))
                {
                    console.WriteLine("--ComboFile and --SourceFile cannot be specified together.");
                    return(-1);
                }
                if (!string.IsNullOrEmpty(ComboFile) && !string.IsNullOrEmpty(TargetFile))
                {
                    console.WriteLine("--ComboFile and --TargetFile cannot be specified together.");
                    return(-1);
                }
                if (!string.IsNullOrEmpty(SourceFile) && string.IsNullOrEmpty(TargetFile))
                {
                    console.WriteLine("--SourceFile and --TargetFile must be specified together.");
                    return(-1);
                }
                if (string.IsNullOrEmpty(SourceFile) && !string.IsNullOrEmpty(TargetFile))
                {
                    console.WriteLine("--SourceFile and --TargetFile must be specified together.");
                    return(-1);
                }
                if (!string.IsNullOrEmpty(SourceFile) && !string.IsNullOrEmpty(TargetFile) && string.IsNullOrEmpty(ParallelName))
                {
                    console.WriteLine("--ParallelName must be specified with --SourceFile and --TargetFile.");
                    return(-1);
                }

                // Build request data
                if (!Json.HasValue)
                {
                    console.WriteLine("Uploading documents...");
                }

                var documentDetails = new DocumentDetailsForImportRequest()
                {
                    DocumentName = ParallelName,
                    DocumentType = DocumentTypeLookup.Types[DocumentType.ToLowerInvariant()],
                    FileDetails  = new List <FileForImportRequest>()
                };

                if (!string.IsNullOrEmpty(ComboFile))
                {
                    documentDetails.FileDetails.Add(new FileForImportRequest()
                    {
                        Name              = Path.GetFileName(ComboFile),
                        LanguageCode      = LanguagePair.Split(":")[1],
                        OverwriteIfExists = Override.HasValue ? true : false
                    });
                    documentDetails.IsParallel = false;
                }
                else
                {
                    documentDetails.FileDetails.Add(new FileForImportRequest()
                    {
                        Name              = Path.GetFileName(SourceFile),
                        LanguageCode      = LanguagePair.Split(":")[0],
                        OverwriteIfExists = Override.HasValue ? true : false
                    });
                    documentDetails.FileDetails.Add(new FileForImportRequest()
                    {
                        Name              = Path.GetFileName(TargetFile),
                        LanguageCode      = LanguagePair.Split(":")[1],
                        OverwriteIfExists = Override.HasValue ? true : false
                    });
                    documentDetails.IsParallel = true;
                }
                var details = new List <DocumentDetailsForImportRequest>()
                {
                    documentDetails
                };

                var files = string.Empty;

                if (!string.IsNullOrEmpty(ComboFile))
                {
                    files = ComboFile;
                }
                else
                {
                    files = SourceFile + "|" + TargetFile;
                }

                var importFilesJobResponse = CallApi <ImportFilesResponse>(() => sdk.ImportDocuments(atc.GetToken(), files, JsonConvert.SerializeObject(details, Formatting.Indented), WorkspaceId));

                if (importFilesJobResponse == null)
                {
                    return(-1);
                }

                if (!Wait)
                {
                    console.WriteLine(SafeJsonConvert.SerializeObject(importFilesJobResponse, new Newtonsoft.Json.JsonSerializerSettings()
                    {
                        Formatting = Newtonsoft.Json.Formatting.Indented
                    }));
                }
                else
                {
                    Guid jobId = importFilesJobResponse.JobId.Value;
                    CreateAndWait(() => sdk.GetImportJobsByJobId(atc.GetToken(), jobId, 1, 100), jobId, true, (jobId) => IsUploaded(jobId), Json.HasValue ? false : true);

                    var jobStatusResponse = CallApi <ImportJobStatusResponse>(() => sdk.GetImportJobsByJobId(atc.GetToken(), jobId, 1, 100));
                    console.WriteLine(SafeJsonConvert.SerializeObject(jobStatusResponse, new Newtonsoft.Json.JsonSerializerSettings()
                    {
                        Formatting = Newtonsoft.Json.Formatting.Indented
                    }));
                }

                return(0);
            }