static bool GetDocumentSecurity(string url, Credentials c, string documentId)
        {
            Console.WriteLine("Getting document security...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };
            GetDocumentSecurityRequest request = new GetDocumentSecurityRequest
            {
                Credentials = c,
                DocumentID  = documentId
            };

            GetDocumentSecurityResponse response = ao.GetDocumentSecurity(request);

            if (response.Success)
            {
                Console.WriteLine("Privacy: {0}", response.PrivacyOption);
                Console.WriteLine("Allowed users & groups: ");
                foreach (string allowedAccountId in response.AllowedAccountIDs)
                {
                    Console.WriteLine("\t" + allowedAccountId);
                }
            }

            return(response.Success);
        }
        static bool GetGroupInformation(string url, Credentials c, string groupId)
        {
            Console.WriteLine("Get group information...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };
            GetGroupInformationRequest request = new GetGroupInformationRequest
            {
                Credentials = c,
                GroupID     = groupId
            };
            GetGroupInformationResponse response = ao.GetGroupInformation(request);

            if (response.Success)
            {
                Console.WriteLine("{0} {1} {2}", response.Group.GroupID, response.Group.Name, response.Group.Description);
                Console.WriteLine("Group members:");
                foreach (string userId in response.UserMemberIDs)
                {
                    Console.WriteLine("\t" + userId);
                }
            }
            return(response.Success);
        }
        static bool GetUserInformation(string url, Credentials c, string userId)
        {
            Console.WriteLine("Get user information...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };
            GetUserInformationRequest request = new GetUserInformationRequest
            {
                Credentials = c,
                UserID      = userId
            };
            GetUserInformationResponse response = ao.GetUserInformation(request);

            if (response.Success)
            {
                Console.WriteLine("{0} {1} {2}", response.Profile.EmailAddress, response.Profile.FirstName, response.Profile.LastName);

                Console.WriteLine("Member of:");
                foreach (string groupId in response.MemberOfGroupIDs)
                {
                    Console.WriteLine("\t" + groupId);
                }
            }

            return(response.Success);
        }
        static bool DeleteGroup(string url, Credentials c, string groupId)
        {
            Console.WriteLine("Deleting group...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };
            DeleteGroupRequest request = new DeleteGroupRequest
            {
                Credentials = c,
                GroupID     = groupId
            };

            return(ao.DeleteGroup(request).Success);
        }
        static bool DeleteUser(string url, Credentials c, string userId)
        {
            Console.WriteLine("Deleting user...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };
            DeleteUserRequest request = new DeleteUserRequest
            {
                Credentials = c,
                UserID      = userId
            };

            return(ao.DeleteUser(request).Success);
        }
        static bool SetUserPassword(string url, Credentials c, string userId, string password)
        {
            Console.WriteLine("Set user password...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };
            SetUserPasswordRequest request = new SetUserPasswordRequest
            {
                Credentials = c,
                UserID      = userId,
                Password    = password
            };

            return(ao.SetUserPassword(request).Success);
        }
        static bool RemoveUserFromGroup(string url, Credentials c, string userId, string groupId)
        {
            Console.WriteLine("Removing user from group...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };
            RemoveUserFromGroupRequest request = new RemoveUserFromGroupRequest
            {
                Credentials = c,
                UserID      = userId,
                GroupID     = groupId
            };

            return(ao.RemoveUserFromGroup(request).Success);
        }
        static bool UpdateGroup(string url, Credentials c, string groupId, string name, string description)
        {
            Console.WriteLine("Update group...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };

            UpdateGroupRequest request = new UpdateGroupRequest
            {
                Credentials = c,
                GroupID     = groupId,
                Name        = name,
                Description = description
            };

            return(ao.UpdateGroup(request).Success);
        }
        static bool CreateGroup(string url, Credentials c, string name, string description)
        {
            Console.WriteLine("Creating group...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };
            CreateGroupRequest request = new CreateGroupRequest
            {
                Credentials = c,
                Name        = name,
                Description = description
            };

            CreateGroupResponse response = ao.CreateGroup(request);

            return(response.Success);
        }
        static bool UpdateDocumentSecurity(string url, Credentials c, string documentId, PrivacyOption privacyOption, string[] allowedAccountIds)
        {
            Console.WriteLine("Updating document security...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };
            UpdateDocumentSecurityRequest request = new UpdateDocumentSecurityRequest
            {
                Credentials       = c,
                DocumentID        = documentId,
                AllowedAccountIDs = allowedAccountIds,
                PrivacyOption     = privacyOption
            };

            UpdateDocumentSecurityResponse response = ao.UpdateDocumentSecurity(request);

            return(response.Success);
        }
        static bool AddUserToGroup(string url, Credentials c, string userId, string groupId)
        {
            Console.WriteLine("Adding user to group...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };
            AddUserToGroupRequest request = new AddUserToGroupRequest
            {
                Credentials = c,
                UserID      = userId,
                GroupID     = groupId
            };


            AddUserToGroupResponse response = ao.AddUserToGroup(request);

            Console.WriteLine("Error: " + response.ErrorMessage);
            return(response.Success);
        }
        static bool ListDocuments(string url, Credentials c)
        {
            Console.WriteLine("Listing documents...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };
            ListDocumentsRequest request = new ListDocumentsRequest {
                Credentials = c
            };
            ListDocumentsResponse response = ao.ListDocuments(request);

            if (response.Success)
            {
                foreach (DocumentSummary ds in response.Documents)
                {
                    Console.WriteLine("{0} {1} {2}", ds.DocumentID, ds.Name, ds.Description);
                }
            }
            return(response.Success);
        }
        static bool AutoLogin(string url, Credentials c, string autoLoginUrl)
        {
            Console.WriteLine("Getting AutoLogin Link...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };
            AutoLoginRequest request = new AutoLoginRequest
            {
                Credentials = c,
                Url         = autoLoginUrl
            };

            AutoLoginResponse response = ao.GetAutoLoginUrl(request);

            if (response.Success)
            {
                Console.WriteLine(response.Url);
            }
            return(response.Success);
        }
        static bool ListGroups(string url, Credentials c)
        {
            Console.WriteLine("Listing groups...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };
            ListGroupsRequest request = new ListGroupsRequest {
                Credentials = c
            };
            ListGroupsResponse response = ao.ListGroups(request);

            if (response.Success)
            {
                foreach (GroupSummary gs in response.Groups)
                {
                    Console.WriteLine("{0} {1} {2}", gs.GroupID, gs.Name, gs.Description);
                }
            }
            return(response.Success);
        }
        static bool ListUsers(string url, Credentials c)
        {
            Console.WriteLine("Listing users...");

            ArticulateOnline ao = new ArticulateOnline {
                Url = url
            };
            ListUsersRequest request = new ListUsersRequest {
                Credentials = c
            };
            ListUsersResponse response = ao.ListUsers(request);

            if (response.Success)
            {
                foreach (UserProfile up in response.Profiles)
                {
                    Console.WriteLine("{0} {1} {2} {3}", up.UserID, up.EmailAddress, up.FirstName, up.LastName);
                }
            }
            return(response.Success);
        }