public static SwaggerGenOptions AddElectSwaggerGenOptions([NotNull] SwaggerGenOptions swaggerGenOptions, [NotNull] Action <ElectSwaggerOptions> configuration) { var options = configuration.GetValue(); // Doc Info swaggerGenOptions.SwaggerDoc(options.Version, new Info { Title = options.Title, Version = options.Version, Contact = !string.IsNullOrWhiteSpace(options.AuthorName) && !string.IsNullOrWhiteSpace(options.AuthorWebsite) && !string.IsNullOrWhiteSpace(options.AuthorEmail) ? new Contact { Name = options.AuthorName, Url = options.AuthorWebsite, Email = options.AuthorEmail } : null }); // XML IncludeXmlCommentsIfExists(swaggerGenOptions, Assembly.GetEntryAssembly()); // Filers swaggerGenOptions.OperationFilter <ApiDocGroupOperationFilter>(); swaggerGenOptions.OperationFilter <GlobalParameterOperationFilter>(); swaggerGenOptions.OperationFilter <ParameterOperationFilter>(); swaggerGenOptions.DocumentFilter <ShowHideInApiDocDocumentFilter>(); swaggerGenOptions.IgnoreObsoleteProperties(); swaggerGenOptions.IgnoreObsoleteActions(); // Type / Properties if (options.IsFullSchemaForType) { swaggerGenOptions.CustomSchemaIds(type => type.FullName); } if (options.IsDescribeAllParametersInCamelCase) { swaggerGenOptions.DescribeAllParametersInCamelCase(); } if (options.IsDescribeAllEnumsAsString) { swaggerGenOptions.DescribeAllEnumsAsStrings(); if (options.IsDescribeAllParametersInCamelCase) { swaggerGenOptions.DescribeStringEnumsInCamelCase(); } } // Order swaggerGenOptions.OrderActionsBy(apiDesc => apiDesc.ActionDescriptor.DisplayName); return(swaggerGenOptions); }