public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "post", Route = "otp/validate")] HttpRequest req) { _logger.LogInformation($"{nameof(OtpSendApi)} processed a request."); try { var request = await req.ParseAndThrow <OtpValidateRequest>(); // validation var validationResult = await _validation.ValidateAsync(req, request.User); if (!validationResult.IsValid) { return(validationResult.ErrorActionResult); } var validOtp = await _otpService.ValidateAsync(request); return(new OkObjectResult(new { valid = validOtp })); } catch (ArgumentException argumentException) { return(new BadRequestObjectResult(argumentException.Message)); } catch (UnauthorizedAccessException unauthorizedAccessException) { return(new NotFoundObjectResult(unauthorizedAccessException.Message)); } catch (Exception exception) { Console.Write(exception); return(new InternalServerErrorResult()); } }