Index: samples/groupssettings/client_secrets.json
===================================================================
new file mode 100644
diff --git a/samples/groupssettings/groupsettings.py b/samples/groupssettings/groupsettings.py
new file mode 100644
index 0000000..0e91bac
--- /dev/null
+++ b/samples/groupssettings/groupsettings.py
@@ -0,0 +1,169 @@
+#!/usr/bin/python
+#
+# Copyright 2011 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Sample for the Group Settings API demonstrates get and update method.
+
+Usage:
+  $ python groupsettings.py
+
+You can also get help on all the command-line flags the program understands
+by running:
+
+  $ python groupsettings.py --help
+"""
+
+__author__ = 'Shraddha Gupta <shraddhag@google.com>'
+
+from optparse import OptionParser
+import os
+
+import pprint
+import sys
+from apiclient.discovery import build
+import httplib2
+from oauth2client.client import flow_from_clientsecrets
+from oauth2client.file import Storage
+from oauth2client.tools import run
+
+
+# CLIENT_SECRETS, name of a file containing the OAuth 2.0 information for this
+# application, including client_id and client_secret, which are found
+# on the API Access tab on the Google APIs
+# Console <http://code.google.com/apis/console>
+CLIENT_SECRETS = 'client_secrets.json'
+
+# Helpful message to display in the browser if the CLIENT_SECRETS file
+# is missing.
+MISSING_CLIENT_SECRETS_MESSAGE = """
+WARNING: Please configure OAuth 2.0
+
+To make this sample run you will need to populate the client_secrets.json file
+found at:
+
+   %s
+
+with information from the APIs Console <https://code.google.com/apis/console>.
+
+""" % os.path.join(os.path.dirname(__file__), CLIENT_SECRETS)
+
+
+def access_settings(service, groupId, settings):
+  """Retrieves a group's settings and updates the access permissions to it.
+
+  Args:
+    service: object service for the Group Settings API.
+    groupId: string identifier of the group@domain.
+    settings: dictionary key-value pairs of properties of group.
+  """
+
+  # Get the resource 'group' from the set of resources of the API.
+  # The Group Settings API has only one resource 'group'.
+  group = service.groups()
+
+  # Retrieve the group properties
+  g = group.get(groupUniqueId=groupId).execute()
+  print '\nGroup properties for group %s\n' % g['name']
+  pprint.pprint(g)
+
+  # If dictionary is empty, return without updating the properties.
+  if not settings.keys():
+    print '\nGive access parameters to update group access permissions\n'
+    return
+
+  body = {}
+
+  # Settings might contain null value for some keys(properties). 
+  # Extract the properties with values and add to dictionary body.
+  for key in settings.iterkeys():
+    if settings[key] is not None:
+      body[key] = settings[key]
+
+  # Update the properties of group
+  g1 = group.update(groupUniqueId=groupId, body=body).execute()
+
+  print '\nUpdated Access Permissions to the group\n'
+  pprint.pprint(g1)
+
+
+def main(argv):
+  """Demos the setting of the access properties by the Groups Settings API."""
+  usage = 'usage: %prog [options]'
+  parser = OptionParser(usage=usage)
+  parser.add_option('--groupId',
+                    help='Group email address')
+  parser.add_option('--whoCanInvite',
+                    help='Possible values: ALL_MANAGERS_CAN_INVITE, '
+                    'ALL_MEMBERS_CAN_INVITE')
+  parser.add_option('--whoCanJoin',
+                    help='Possible values: ALL_IN_DOMAIN_CAN_JOIN, '
+                    'ANYONE_CAN_JOIN, CAN_REQUEST_TO_JOIN, '
+                    'CAN_REQUEST_TO_JOIN')
+  parser.add_option('--whoCanPostMessage',
+                    help='Possible values: ALL_IN_DOMAIN_CAN_POST, '
+                    'ALL_MANAGERS_CAN_POST, ALL_MEMBERS_CAN_POST, '
+                    'ANYONE_CAN_POST, NONE_CAN_POST')
+  parser.add_option('--whoCanViewGroup',
+                    help='Possible values: ALL_IN_DOMAIN_CAN_VIEW, '
+                    'ALL_MANAGERS_CAN_VIEW, ALL_MEMBERS_CAN_VIEW, '
+                    'ANYONE_CAN_VIEW')
+  parser.add_option('--whoCanViewMembership',
+                    help='Possible values: ALL_IN_DOMAIN_CAN_VIEW, '
+                    'ALL_MANAGERS_CAN_VIEW, ALL_MEMBERS_CAN_VIEW, '
+                    'ANYONE_CAN_VIEW')
+  (options, args) = parser.parse_args()
+
+  if options.groupId is None:
+    print 'Give the groupId for the group'
+    parser.print_help()
+    return
+
+  settings = {}
+
+  if (options.whoCanInvite or options.whoCanJoin or options.whoCanPostMessage
+      or options.whoCanPostMessage or options.whoCanViewMembership) is None:
+    print 'No access parameters given in input to update access permissions'
+    parser.print_help()
+  else:
+    settings = {'whoCanInvite': options.whoCanInvite,
+                'whoCanJoin': options.whoCanJoin,
+                'whoCanPostMessage': options.whoCanPostMessage,
+                'whoCanViewGroup': options.whoCanViewGroup,
+                'whoCanViewMembership': options.whoCanViewMembership}
+
+  # Set up a Flow object to be used if we need to authenticate.
+  FLOW = flow_from_clientsecrets(CLIENT_SECRETS,
+      scope='https://www.googleapis.com/auth/apps.groups.settings',
+      message=MISSING_CLIENT_SECRETS_MESSAGE)
+
+  storage = Storage('groupsettings.dat')
+  credentials = storage.get()
+
+  if credentials is None or credentials.invalid:
+    print 'invalid credentials'
+    # Save the credentials in storage to be used in subsequent runs.
+    credentials = run(FLOW, storage)
+
+  # Create an httplib2.Http object to handle our HTTP requests and authorize it
+  # with our good Credentials.
+  http = httplib2.Http()
+  http = credentials.authorize(http)
+
+  service = build('groupssettings', 'v1', http=http)
+
+  access_settings(service=service, groupId=options.groupId, settings=settings)
+
+if __name__ == '__main__':
+  main(sys.argv)