public static async Task GenerateSingleAPIWithRevisionsTemplates(ExtractorConfig exc, string apiName, FileNameGenerator fileNameGenerator, FileWriter fileWriter, FileNames fileNames) { Console.WriteLine("Extracting singleAPI {0} with revisions", apiName); APIExtractor apiExtractor = new APIExtractor(fileWriter); // Get all revisions for this api string revisions = await apiExtractor.GetAPIRevisionsAsync(exc.sourceApimName, exc.resourceGroup, apiName); JObject revs = JObject.Parse(revisions); string currentRevision = null; List <string> revList = new List <string>(); // Generate seperate folder for each API revision for (int i = 0; i < ((JContainer)revs["value"]).Count; i++) { string apiID = ((JValue)revs["value"][i]["apiId"]).Value.ToString(); string singleApiName = apiID.Split("/")[2]; if (((JValue)revs["value"][i]["isCurrent"]).Value.ToString().Equals("True")) { currentRevision = singleApiName; } string revFileFolder = String.Concat(@exc.fileFolder, $@"/{singleApiName}"); System.IO.Directory.CreateDirectory(revFileFolder); await GenerateTemplates(new Extractor(exc, revFileFolder), singleApiName, null, fileNameGenerator, fileNames, fileWriter, null); revList.Add(singleApiName); } if (currentRevision == null) { throw new Exception($"Revision {apiName} doesn't exist, something went wrong!"); } // generate revisions master folder string revMasterFolder = String.Concat(@exc.fileFolder, fileNames.revisionMasterFolder); System.IO.Directory.CreateDirectory(revMasterFolder); Extractor revExc = new Extractor(exc, revMasterFolder); Template apiRevisionTemplate = await apiExtractor.GenerateAPIRevisionTemplateAsync(currentRevision, revList, apiName, revExc); await GenerateTemplates(revExc, null, null, fileNameGenerator, fileNames, fileWriter, apiRevisionTemplate); }