private void ProcessRequest(Instance request)
        {
            try
            {
                var user = new User
                    {
                        Addresses = new List<UserAddress>
                            {
                                new UserAddress
                                    {
                                        Country = String.IsNullOrEmpty(Country) ? null : Country,
                                        CountryCode = String.IsNullOrEmpty(CountryCode) ? null : CountryCode,
                                        CustomType = String.IsNullOrEmpty(CustomType) ? null : CustomType,
                                        ExtendedAddress = String.IsNullOrEmpty(ExtendedAddress) ? null : ExtendedAddress,
                                        Locality = String.IsNullOrEmpty(Locality) ? null : Locality,
                                        PoBox = String.IsNullOrEmpty(PoBox) ? null : PoBox,
                                        Primary = Primary,
                                        Region = String.IsNullOrEmpty(Region) ? null : Region,
                                        SourceIsStructured = SourceIsStructured,
                                        StreetAddress = String.IsNullOrEmpty(StreetAddress) ? null : StreetAddress,
                                        Type = String.IsNullOrEmpty(Type) ? null : Type
                                    }
                            }
                    };

                var service = request.DirectoryService.Users.Update(user, UserId);

                service.Execute();
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed to Update User Address!");
                Console.WriteLine("Error: " + e);
            }
        }
        private void ProcessRequest(Instance request)
        {
            try
            {
                var names = new UserName
                    {
                        FamilyName = String.IsNullOrEmpty(FamilyName) ? null : FamilyName,
                        GivenName = String.IsNullOrEmpty(GivenName) ? null : GivenName
                    };

                var user = new User
                    {
                        PrimaryEmail = String.IsNullOrEmpty(PrimaryEmail) ? null : PrimaryEmail,
                        Name = names,
                        Suspended = Suspended,
                        Password = String.IsNullOrEmpty(Password) ? null : Password,
                        HashFunction = String.IsNullOrEmpty(HashFunction) ? null : HashFunction,
                        ChangePasswordAtNextLogin = ChangePasswordAtNextLogon,
                        IpWhitelisted = IpWhiteListed,
                        OrgUnitPath = String.IsNullOrEmpty(OrgUnitPath) ? null : OrgUnitPath,
                        IncludeInGlobalAddressList = IncludeInGlobalAddressList
                    };

                var service = request.DirectoryService.Users.Update(user, UserId);

                WriteObject(service.Execute());
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed to Update User!");
                Console.WriteLine("Error: " + e);
                WriteObject(false);
            }
        }
        private void ProcessRequest(Instance request)
        {
            try
            {
                var user = new User
                    {
                        Ims = new List<UserIm>
                            {
                                new UserIm
                                    {
                                        CustomProtocol = String.IsNullOrEmpty(CustomProtocol) ? null : CustomProtocol,
                                        CustomType = String.IsNullOrEmpty(CustomType) ? null : CustomType,
                                        Im = String.IsNullOrEmpty(Im) ? null : Im,
                                        Primary = Primary,
                                        Protocol = String.IsNullOrEmpty(Protocol) ? null : Protocol,
                                        Type = String.IsNullOrEmpty(Type) ? null : Type
                                    }
                            }
                    };

                var service = request.DirectoryService.Users.Update(user, UserId);

                service.Execute();
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed to Update User IMS!");
                Console.WriteLine("Error: " + e);
            }
        }
        private void ProcessRequest(Instance request)
        {
            try
            {
                var user = new User
                    {
                        ExternalIds = new List<UserExternalId>
                            {
                                new UserExternalId
                                    {
                                        CustomType = String.IsNullOrEmpty(CustomType) ? null : CustomType,
                                        Type = String.IsNullOrEmpty(Type) ? null : Type,
                                        Value = String.IsNullOrEmpty(Value) ? null : Value
                                    }
                            }
                    };

                var service = request.DirectoryService.Users.Update(user, UserId);

                service.Execute();
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed to Update User External Id!");
                Console.WriteLine("Error: " + e);
            }
        }
        private void ProcessRequest(Instance request)
        {
            try
            {
                var user = new User();

                user.Organizations = new List<UserOrganization>();

                user.Organizations.Add(new UserOrganization
                    {
                        CostCenter = String.IsNullOrEmpty(CostCenter) ? null : CostCenter,
                        CustomType = String.IsNullOrEmpty(CustomType) ? null : CustomType,
                        Department = String.IsNullOrEmpty(Department) ? null : Department,
                        Domain = String.IsNullOrEmpty(Domain) ? null : Domain,
                        Location = String.IsNullOrEmpty(Location) ? null : Location,
                        Name = String.IsNullOrEmpty(Name) ? null : Name,
                        Primary = Primary,
                        Symbol = String.IsNullOrEmpty(Symbol) ? null : Symbol,
                        Title = String.IsNullOrEmpty(Title) ? null : Title,
                        Type = String.IsNullOrEmpty(Type) ? null : Type
                    });

                var service = request.DirectoryService.Users.Update(user, UserId);

                service.Execute();
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed to Update User Organization!");
                Console.WriteLine("Error: " + e);
            }
        }
        private void ProcessRequest(Instance request)
        {
            try
            {
                var user = new User
                    {
                        Emails = new List<UserEmail>
                            {
                                new UserEmail
                                    {
                                        CustomType = String.IsNullOrEmpty(CustomType) ? null : CustomType,
                                        Primary = Primary,
                                        Type = String.IsNullOrEmpty(Type) ? null : Type,
                                        Address = String.IsNullOrEmpty(Address) ? null : Address
                                    }
                            }
                    };

                var service = request.DirectoryService.Users.Update(user, UserId);

                service.Execute();
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed to Update User Email!");
                Console.WriteLine("Error: " + e);
            }
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.DriveService.About.Get();

            var driveRequest = service.Execute();

            WriteObject(driveRequest);
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.DirectoryService.Users.Photos.Get(UserId);

            var userPhoto = service.Execute();

            WriteObject(userPhoto);
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.DriveService.Apps.List();

            var apps = service.Execute();

            WriteObject(apps);
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.LicensingService.LicenseAssignments.Get(ProductId, SkuId, UserId);

            var license = service.Execute();

            if (license == null) return;

            WriteObject(license);
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.DirectoryService.Groups.Aliases.List(GroupId);

            var aliases = service.Execute();

            if (aliases == null) return;

            WriteObject(aliases);
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.DriveService.Revisions.List(FileId);

            var revisions = service.Execute();

            if (revisions == null) return;

            WriteObject(revisions);
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.DirectoryService.Chromeosdevices.List("my_customer");

            //Query Parameters
            service.MaxResults = 500;
            service.OrderBy = ChromeosdevicesResource.ListRequest.OrderByEnum.SerialNumber;
            service.SortOrder = ChromeosdevicesResource.ListRequest.SortOrderEnum.ASCENDING;

            var chromeDevices = service.Execute();

            if (chromeDevices == null) return;

            Int64 totalresults = 0;
            var allChromeDevices = new List<ChromeOsDevice>();

            //Single Page Results
            if (String.IsNullOrEmpty(chromeDevices.NextPageToken))
            {
                service.PageToken = chromeDevices.NextPageToken;

                allChromeDevices.AddRange(chromeDevices.ChromeosdevicesValue);

                totalresults = (totalresults + chromeDevices.ChromeosdevicesValue.Count);

                Console.Write(totalresults + "...");
            }

            //Multiple Page Results
            while (!String.IsNullOrEmpty(chromeDevices.NextPageToken))
            {
                service.PageToken = chromeDevices.NextPageToken;

                allChromeDevices.AddRange(chromeDevices.ChromeosdevicesValue);

                totalresults = (totalresults + chromeDevices.ChromeosdevicesValue.Count);

                Console.Write(totalresults + "...");
                chromeDevices = service.Execute();

                if (String.IsNullOrEmpty(chromeDevices.NextPageToken))
                {
                    service.PageToken = chromeDevices.NextPageToken;

                    allChromeDevices.AddRange(chromeDevices.ChromeosdevicesValue);

                    totalresults = (totalresults + chromeDevices.ChromeosdevicesValue.Count);

                    Console.Write(totalresults + "...");
                }
            }

            WriteObject(allChromeDevices);
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.DriveService.Changes.List();

            service.MaxResults = 1000;
            service.IncludeDeleted = IncludeDeleted;
            service.IncludeSubscribed = IncludeSubscribed;
            service.StartChangeId = String.IsNullOrEmpty(StartChangeId) ? null : StartChangeId;

            var changes = service.Execute();

            if (changes == null) return;

            Int64 totalresults = 0;
            var allChanges = new List<Change>();

            //Single Page Results
            if (String.IsNullOrEmpty(changes.NextPageToken))
            {
                service.PageToken = changes.NextPageToken;

                allChanges.AddRange(changes.Items);

                totalresults = (totalresults + changes.Items.Count);

                Console.Write(totalresults + "...");
            }

            //Multiple Page Results
            while (!String.IsNullOrEmpty(changes.NextPageToken))
            {
                service.PageToken = changes.NextPageToken;

                allChanges.AddRange(changes.Items);

                totalresults = (totalresults + changes.Items.Count);

                Console.Write(totalresults + "...");
                changes = service.Execute();

                if (String.IsNullOrEmpty(changes.NextPageToken))
                {
                    service.PageToken = changes.NextPageToken;

                    allChanges.AddRange(changes.Items);

                    totalresults = (totalresults + changes.Items.Count);

                    Console.Write(totalresults + "...");
                }
            }

            WriteObject(allChanges);
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.GroupSettingsService.Groups.Get(groupId);

            //Query Parameters
            service.Alt = GroupssettingsBaseServiceRequest<Groups>.AltEnum.Json;

            var settings = service.Execute();

            WriteObject(settings);
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.DirectoryService.Members.List(GroupId);

            //Query Parameters
            service.MaxResults = 500;
            service.Roles = Roles;

            var members = service.Execute();

            if (members == null) return;

            Int64 totalresults = 0;
            var allMembers = new List<Member>();

            //Single Page Results
            if (String.IsNullOrEmpty(members.NextPageToken))
            {
                service.PageToken = members.NextPageToken;

                allMembers.AddRange(members.MembersValue);

                totalresults = (totalresults + members.MembersValue.Count);

                Console.Write(totalresults + "...");
            }

            //Multiple Page Results
            while (!String.IsNullOrEmpty(members.NextPageToken))
            {
                service.PageToken = members.NextPageToken;

                allMembers.AddRange(members.MembersValue);

                totalresults = (totalresults + members.MembersValue.Count);

                Console.Write(totalresults + "...");
                members = service.Execute();

                if (String.IsNullOrEmpty(members.NextPageToken))
                {
                    service.PageToken = members.NextPageToken;

                    allMembers.AddRange(members.MembersValue);

                    totalresults = (totalresults + members.MembersValue.Count);

                    Console.Write(totalresults + "...");
                }
            }

            WriteObject(allMembers);
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.DriveService.Files.List();

            service.MaxResults = 500;
            service.Projection = FilesResource.ListRequest.ProjectionEnum.FULL;

            var files = service.Execute();

            if (files == null) return;

            Int64 totalresults = 0;
            var allFiles = new List<File>();

            //Single Page Results
            if (String.IsNullOrEmpty(files.NextPageToken))
            {
                service.PageToken = files.NextPageToken;

                allFiles.AddRange(files.Items);

                totalresults = (totalresults + files.Items.Count);

                Console.Write(totalresults + "...");
            }

            //Multiple Page Results
            while (!String.IsNullOrEmpty(files.NextPageToken))
            {
                service.PageToken = files.NextPageToken;

                allFiles.AddRange(files.Items);

                totalresults = (totalresults + files.Items.Count);

                Console.Write(totalresults + "...");
                files = service.Execute();

                if (String.IsNullOrEmpty(files.NextPageToken))
                {
                    service.PageToken = files.NextPageToken;

                    allFiles.AddRange(files.Items);

                    totalresults = (totalresults + files.Items.Count);

                    Console.Write(totalresults + "...");
                }
            }

            WriteObject(allFiles);
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.CalendarService.CalendarList.List();

            service.MaxResults = 500;

            var calendars = service.Execute();

            if (calendars == null) return;

            Int64 totalresults = 0;
            var allCalendars = new List<CalendarListEntry>();

            //Single Page Results
            if (String.IsNullOrEmpty(calendars.NextPageToken))
            {
                service.PageToken = calendars.NextPageToken;

                allCalendars.AddRange(calendars.Items);

                totalresults = (totalresults + calendars.Items.Count);

                Console.Write(totalresults + "...");
            }

            //Multiple Page Results
            while (!String.IsNullOrEmpty(calendars.NextPageToken))
            {
                service.PageToken = calendars.NextPageToken;

                allCalendars.AddRange(calendars.Items);

                totalresults = (totalresults + calendars.Items.Count);

                Console.Write(totalresults + "...");
                calendars = service.Execute();

                if (String.IsNullOrEmpty(calendars.NextPageToken))
                {
                    service.PageToken = calendars.NextPageToken;

                    allCalendars.AddRange(calendars.Items);

                    totalresults = (totalresults + calendars.Items.Count);

                    Console.Write(totalresults + "...");
                }
            }

            WriteObject(allCalendars);
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.TasksService.Tasks.List(TaskListId);

            service.MaxResults = "500";

            var tasks = service.Execute();

            if (tasks == null) return;

            Int64 totalresults = 0;
            var allTaskLists = new List<Task>();

            //Single Page Results
            if (String.IsNullOrEmpty(tasks.NextPageToken))
            {
                service.PageToken = tasks.NextPageToken;

                allTaskLists.AddRange(tasks.Items);

                totalresults = (totalresults + tasks.Items.Count);

                Console.Write(totalresults + "...");
            }

            //Multiple Page Results
            while (!String.IsNullOrEmpty(tasks.NextPageToken))
            {
                service.PageToken = tasks.NextPageToken;

                allTaskLists.AddRange(tasks.Items);

                totalresults = (totalresults + tasks.Items.Count);

                Console.Write(totalresults + "...");
                tasks = service.Execute();

                if (String.IsNullOrEmpty(tasks.NextPageToken))
                {
                    service.PageToken = tasks.NextPageToken;

                    allTaskLists.AddRange(tasks.Items);

                    totalresults = (totalresults + tasks.Items.Count);

                    Console.Write(totalresults + "...");
                }
            }

            WriteObject(allTaskLists);
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.AuditService.Activities.List(CustomerId, ApplicationId);

            service.MaxResults = 500;
            service.ActorEmail = String.IsNullOrEmpty(ActorEmail) ? null : ActorEmail;
            service.StartTime = String.IsNullOrEmpty(StartTime) ? null : StartTime;

            var activities = service.Execute();

            if (activities == null) return;

            WriteObject(activities);
        }
        private void ProcessRequest(Instance request)
        {
            try
            {
                var service = request.DirectoryService.Mobiledevices.Delete("my_customer", DeviceId);

                WriteObject(service.Execute());
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed to Delete Mobile Device!");
                Console.WriteLine("Error: " + e);
            }
        }
        private void ProcessRequest(Instance request)
        {
            try
            {
                var service = request.LicensingService.LicenseAssignments.Delete(ProductId, SkuId, UserId);

                WriteObject(service.Execute());
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed to Delete User License!");
                Console.WriteLine("Error: " + e);
            }
        }
        private void ProcessRequest(Instance request)
        {
            try
            {
                var service = request.TasksService.Tasklists.Delete(TaskListId);

                WriteObject(service.Execute());
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed to Delete Tasks List!");
                Console.WriteLine("Error: " + e);
            }
        }
        private void ProcessRequest(Instance request)
        {
            try
            {
                var service = request.DirectoryService.Orgunits.Delete("my_customer", OrgUnitPath);

                WriteObject(service.Execute());
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed to Delete OrgUnit!");
                Console.WriteLine("Error: " + e);
            }
        }
        private void ProcessRequest(Instance request)
        {
            try
            {
                var service = request.DirectoryService.Groups.Aliases.Delete(GroupId, Alias);

                WriteObject(service.Execute());
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed to Delete Group Alias!");
                Console.WriteLine("Error: " + e);
            }
        }
        private void ProcessRequest(Instance request)
        {
            try
            {
                var service = request.DirectoryService.Users.Delete(UserId);

                WriteObject(service.Execute());
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed to Delete User!");
                Console.WriteLine("Error: " + e);
            }
        }
        private void ProcessRequest(Instance request)
        {
            var service = request.DirectoryService.Users.Aliases.List(UserId);

            var aliases = service.Execute();

            if (aliases == null) return;

            var allAliases = new List<Alias>();

            allAliases.AddRange(aliases.AliasesValue);
            Console.WriteLine(aliases.AliasesValue.Count + "...");

            WriteObject(allAliases);
        }
        private void ProcessRequest(Instance request)
        {
            var file = new File
                {
                    Description = String.IsNullOrEmpty(Description) ? null : Description,
                    Title = String.IsNullOrEmpty(Title) ? null : Title,
                    MimeType = String.IsNullOrEmpty(MimeType) ? null : MimeType
                    //TODO: Add Additional Fields to Update
                };

            var service = request.DriveService.Files.Update(file, FileId);

            var fileRequest = service.Execute();
            WriteObject(fileRequest);
        }
        private void ProcessRequest(Instance request)
        {
            try
            {
                var member = new Member { Email = null, Role = null };

                var service = request.DirectoryService.Members.Insert(member, GroupId);
                WriteObject(service.Execute());
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed to Add Group Member!");
                Console.WriteLine("Error: " + e);
                WriteObject(false);
            }
        }
        private void ProcessRequest(Instance request)
        {
            try
            {
                var member = new Member
                    {
                        Role = String.IsNullOrEmpty(Role) ? null : Role
                    };

                var service = request.DirectoryService.Members.Update(member, GroupId, UserId);

                service.Execute();
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed to Update Group Member!");
                Console.WriteLine("Error: " + e);
            }
        }