public async Task <HttpResponseData> Approval(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "marker/{markerId:int}/approval/{approved:bool}")] HttpRequestData req,
            int markerId,
            bool approved,
            FunctionContext executionContext)
        {
            var query = HttpUtility.ParseQueryString(req.Url.Query);
            var otp   = query["otp"];

            var result = await approvalService.ApproveOrReject(approved, markerId, otp);

            var resp = req.CreateResponse(HttpStatusCode.OK);

            resp.Headers.Add("Content-Type", "text/plain");
            switch (result)
            {
            case ApprovalResultType.Accepted:
                resp.WriteString("The submisssion was approved.");
                break;

            case ApprovalResultType.Rejected:
                resp.WriteString("The submisssion was rejected.");
                break;

            case ApprovalResultType.Unauthenticated:
                resp.WriteString("The token has expired or is invalid.");
                break;

            default:
                throw new ArgumentOutOfRangeException($"Unexpected result type: ${result}");
            }
            return(resp);
        }