private Operation CreateOperation(ApiDescription apiDescription, ISchemaRegistry schemaRegistry) { var groupName = _options.GroupNameSelector(apiDescription); var parameters = apiDescription.ParameterDescriptions .Where(paramDesc => paramDesc.Source.IsFromRequest) .Select(paramDesc => CreateParameter(paramDesc, schemaRegistry)) .ToList(); var responses = new Dictionary<string, Response>(); if (apiDescription.ResponseType == typeof(void)) responses.Add("204", new Response { Description = "No Content" }); else responses.Add("200", CreateSuccessResponse(apiDescription.ResponseType, schemaRegistry)); var operation = new Operation { Tags = (groupName != null) ? new[] { groupName } : null, OperationId = apiDescription.ActionDescriptor.DisplayName, Produces = apiDescription.Produces().ToList(), //consumes = apiDescription.Consumes().ToList(), Parameters = parameters.Any() ? parameters : null, // parameters can be null but not empty Responses = responses, Deprecated = apiDescription.IsObsolete() }; var filterContext = new OperationFilterContext(apiDescription, schemaRegistry); foreach (var filter in _options.OperationFilters) { filter.Apply(operation, filterContext); } return operation; }