public Task <ActionResult <SearchResponse> > SearchAsync( [FromQuery(Name = "q")] string query = null, [FromQuery] int skip = 0, [FromQuery] int take = 20, [FromQuery] bool prerelease = false, [FromQuery] string semVerLevel = null, // These are unofficial parameters [FromQuery] string packageType = null, [FromQuery] string framework = null, CancellationToken cancellationToken = default) { var includeSemVer2 = semVerLevel == "2.0.0"; var cachedTask = _searchService.SearchAsync( query ?? string.Empty, skip, take, prerelease, includeSemVer2, packageType, framework, cancellationToken); var nugetTask = _mirrorService.SearchAsync( query ?? string.Empty, skip, take, prerelease, includeSemVer2, packageType, framework, cancellationToken); return(Merge(cachedTask, nugetTask)); }