/// <summary> /// Creates the entity. /// </summary> /// <typeparam name="U">Return type.</typeparam> /// <typeparam name="T">Type on behalf of which the request is being called.</typeparam> /// <param name="path">The path.</param> /// <param name="entity">The entity.</param> /// <returns></returns> protected async Task <U> CreateEntity <U, T>(string path, T entity, string idempotencyKey = null) where U : EntityBase, new() where T : EntityPostBase { var token = await _auth.GetAuthToken(); if (token != null) { using var client = new HttpClient(); client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.access_token}"); using var httpContent = CreateHttpContent(entity); using var request = new HttpRequestMessage(HttpMethod.Post, path) { Content = httpContent }; if (!string.IsNullOrWhiteSpace(idempotencyKey)) { request.Headers.Add(Constants.IDEMPOTENCY_KEY, idempotencyKey); } using var response = await client .SendAsync(request, HttpCompletionOption.ResponseHeadersRead) .ConfigureAwait(false); var stream = await response.Content.ReadAsStreamAsync(); if (response.IsSuccessStatusCode) { return(DeserializeJsonFromStream <U>(stream)); } else { await HandleApiError(response, stream); } } return(null); }