/// <summary> /// Gets all response types that are associated with the endpoint /// </summary> /// <returns></returns> public IEnumerable <ResponseType> GetResponseTypes() { var responseTypes = GetChildren().OfType <ResponseType>(); var groupedResponses = responseTypes.GroupBy(x => x.Status); List <ResponseType> prioritizedResponseTypes = new List <ResponseType>(); foreach (var responseGroup in groupedResponses) { if (responseGroup.Count() > 1) { if (ResponseTypes.Count(x => x.Status == responseGroup.Key) == 1) { var endpointResponse = ResponseTypes.SingleOrDefault(x => x.Status == responseGroup.Key); prioritizedResponseTypes.Add(endpointResponse); } else { //This will fail, we will let it. prioritizedResponseTypes.AddRange(responseGroup); } } else { prioritizedResponseTypes.Add(responseGroup.Single()); } } return(prioritizedResponseTypes.OrderBy(x => x.SortOrder)); }