/// <summary>
        /// Returns strongly typed asset.
        /// </summary>
        /// <param name="identifier">The identifier of the asset.</param>
        /// <returns>The <see cref="AssetModel"/> instance that represents requested asset.</returns>
        public async Task <AssetModel> GetAssetAsync(AssetIdentifier identifier)
        {
            if (identifier == null)
            {
                throw new ArgumentNullException(nameof(identifier));
            }

            var endpointUrl = _urlBuilder.BuildAssetsUrl(identifier);
            var response    = await _actionInvoker.InvokeReadOnlyMethodAsync <AssetModel>(endpointUrl, HttpMethod.Get);

            return(response);
        }
        /// <summary>
        /// Deletes given asset.
        /// </summary>
        /// <param name="identifier">The identifier of the asset.</param>
        public async Task DeleteAssetAsync(AssetIdentifier identifier)
        {
            if (identifier == null)
            {
                throw new ArgumentNullException(nameof(identifier));
            }

            var endpointUrl = _urlBuilder.BuildAssetsUrl(identifier);
            await _actionInvoker.InvokeMethodAsync(endpointUrl, HttpMethod.Delete);
        }