/// <summary>
        /// Get variations via asin
        /// </summary>
        /// <param name="variationsRequest"></param>
        /// <returns></returns>
        public async Task <GetVariationsResponse> GetVariationsAsync(VariationsRequest variationsRequest)
        {
            var request = new GetVariationsRequest
            {
                ASIN        = variationsRequest.Asin,
                Merchant    = variationsRequest.Merchant,
                PartnerTag  = this._partnerTag,
                PartnerType = "Associates",
                Marketplace = $"www.{this._amazonEndpointConfig.Host}",
                Resources   = variationsRequest.Resources
            };

            if (!this._amazonResourceValidator.IsResourcesValid(request.Resources, "GetVariations"))
            {
                return(new GetVariationsResponse {
                    Successful = false, ErrorMessage = "Resources has wrong values"
                });
            }

            var json = JsonConvert.SerializeObject(request, this._jsonSerializerSettingsRequest);

            if (string.IsNullOrEmpty(json))
            {
                return(new GetVariationsResponse {
                    Successful = false, ErrorMessage = "Cannot serialize object"
                });
            }

            var response = await this.RequestAsync("GetVariations", json);

            return(this.DeserializeObject <GetVariationsResponse>(response));
        }
        /// <summary>
        /// Get variations via asin
        /// </summary>
        /// <param name="asin"></param>
        /// <returns></returns>
        public async Task <GetVariationsResponse> GetVariationsAsync(string asin)
        {
            var request = new GetVariationsRequest
            {
                ASIN        = asin,
                PartnerTag  = this._partnerTag,
                PartnerType = "Associates",
                Marketplace = $"www.{this._amazonEndpointConfig.Host}",
                Resources   = new[]
                {
                    "VariationSummary.VariationDimension",

                    "Images.Primary.Small",
                    "Images.Primary.Medium",
                    "Images.Primary.Large",

                    "Images.Variants.Small",
                    "Images.Variants.Medium",
                    "Images.Variants.Large",
                }
            };

            if (!this._amazonResourceValidator.IsResourcesValid(request.Resources, "GetVariations"))
            {
                return(new GetVariationsResponse {
                    Successful = false, ErrorMessage = "Resources has wrong values"
                });
            }

            var json = JsonConvert.SerializeObject(request, this._jsonSerializerSettingsRequest);

            if (string.IsNullOrEmpty(json))
            {
                return(new GetVariationsResponse {
                    Successful = false, ErrorMessage = "Cannot serialize object"
                });
            }

            var response = await this.RequestAsync("GetVariations", json);

            return(this.DeserializeObject <GetVariationsResponse>(response));
        }