public async Task <Result <GameDetailsResponse> > GetGameDetails(int gameId)
        {
            if (gameId <= 0)
            {
                return(Result.Failure <GameDetailsResponse>($"{nameof(gameId)} is invalid."));
            }

            var detailsResult = await _apiClient.SendGameDetailsRequest(new List <int> {
                gameId
            });

            if (detailsResult.IsFailure)
            {
                return(Result.Failure <GameDetailsResponse>($"Unable to retrieve game details - {detailsResult.Error}"));
            }

            var details = detailsResult.Value.Item.FirstOrDefault();

            var response = new GameDetailsResponse
            {
                Id             = details.Id,
                Developer      = string.Join(", ", details.Links.Where(l => l.Type.ToLower() == _configuration.DeveloperLinkType.ToLower()).Select(l => l.Value)),
                GameCategory   = GameCategoryReference.BoardGame,
                Genre          = string.Join(", ", details.Links.Where(l => l.Type.ToLower() == _configuration.GenreLinkType.ToLower()).Select(l => l.Value)),
                ImageUrl       = details.Image,
                Publisher      = string.Join(", ", details.Links.Where(l => l.Type.ToLower() == _configuration.PublisherLinkType.ToLower()).Select(l => l.Value)),
                Title          = details.Name.Value,
                YearReleasedOn = details.YearPublished.Value
            };

            return(Result.Success(response));
        }