public async Task <HttpResponseData> Add( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "users")] HttpRequestData req) { // Verify authenticated user is present var subject = await authorize.TryGetSubject(req.Headers); if (subject == null) { return(req.CreateResponse(HttpStatusCode.Unauthorized)); } var existingUser = await usersTable.GetSingle(subject); if (existingUser != null) { return(await CreateConflictError(req, $"User already registered.")); } // Deserialize and verify DTO var(user, errorResponse) = await DeserializeAndValidateBody <UserRegisterDto>(req); if (user == null) { return(errorResponse !); } if (user.PublicUrl == string.Empty) { user = user with { PublicUrl = null } } ; var validationError = ValidateModel(user); if (validationError != null) { return(await CreateValidationError(req, validationError)); } // Create data object from DTO var userToAdd = mapper.Map <UserRegisterDto, User>(user); userToAdd.RowKey = subject; // Store user await usersTable.Add(userToAdd); // Convert added user into DTO var userToReturn = mapper.Map <User, UserGetDto>(userToAdd); return(await CreateResponse(req, userToReturn, HttpStatusCode.Created)); }