public async Task <CreateUserResponse> Handle(PrivateSession session, CreateUserRequest request, Func <PrivateConnection> connectionFactory) { var csrfToken = await session.CallAsync(MetaDataRequest.GetCrlfToken("mycompany/agents")); var createUserRequestEquivalentData = new JsonUser.CreateUserRequestEquivalentData { Name = request.Name, AdminNewsMailFlg = request.AdminNewsMailFlg ? 1 : 0, ApprovalFlg = request.ApprovalFlg ? 1 : 0, DeptId = request.DeptId, EndDate = request.EndDate, Language = request.Language, Mail = request.Mail, Mobile = request.Mobile, MobileMail = request.MobileMail, NewsMailFlg = request.NewsMailFlg ? 1 : 0, StartDate = request.StartDate, Tel = request.Tel, TimeZone = request.TimeZone, Username = request.Username, Role = request.Administrator ? "admin" : "user" }; var requestModel = new JsonUser.CreateUserRequestEquivalent { User = createUserRequestEquivalentData, CsrfToken = csrfToken }; using (var connection = connectionFactory().AppendHook(PrivateConnectionHooks.ForceQuery(USER)).Method(PrivateConnectionMethod.Create)) { try { using (var response = await connection.SendAsync(requestModel)) { var result = await response.ReadAsync <JsonUser.CreateEquivalentUserResponse>(); return(new CreateUserResponse(result.Id)); } } catch (ConnectionResponseException e) { //FIXME this will not work correctly because response is not in privateapi format. throw e.ToRequestException("Could not create a user", requestModel); } } }