public async Task <IActionResult> GetAlbums([FromQuery] PagingOptions pagingOptions, CancellationToken cancellationToken) { if (!ModelState.IsValid) { return(BadRequest(new ApiError() { Message = "Invalid arguments provided.", Details = ModelState.FirstOrDefault(k => k.Value.Errors.Any()).Value.Errors.FirstOrDefault().ErrorMessage })); } pagingOptions.Limit = pagingOptions.Limit ?? _defaultPagingOptions.Limit; pagingOptions.Offset = pagingOptions.Offset ?? _defaultPagingOptions.Offset; var albums = await _albumsService.GetAlbumsAsync(pagingOptions, cancellationToken); var link = Link.CreateCollection(nameof(GetAlbums)); var collection = PagedCollection <AlbumResource> .CreatePagedCollection(link, albums.Items, albums.TotalSize, pagingOptions); return(Ok(collection)); }