docs: def createGroup(self,
                      title,
                      tags,
                      description="",
                      snippet="",
                      phone="",
                      access="org",
                      sortField="title",
                      sortOrder="asc",
                      isViewOnly=False,
                      isInvitationOnly=False,
                      thumbnail=None):
          """
          The Create Group operation (POST only) creates a new group in the
          Portal community. Only authenticated users can create groups. The
          user who creates the group automatically becomes the owner of the
          group. The owner of the group is automatically an administrator of
          the group. The calling user provides the title for the group, while
          the group ID is generated by the system.
  
          Inputs:
             title - The group title must be unique for the username, and the
                     character limit is 250.
             tags - Tags are words or short phrases that describe the group.
                    Separate terms with commas.
             description -  A description of the group that can be any length
             snippet - Snippet or summary of the group that has a character
                       limit of 250 characters.
             phone - group contact information
             access - Sets the access level for the group. private is the
                      default. Setting to org restricts group access to
                      members of your organization. If public, all users can
                      access the group.
                      Values: private | org |public
             sortField -  Sets sort field for group items.
                          Values: title | owner | avgRating |numViews
                                  | created | modified
             sortOrder - sets sort order for group items. Values: asc or desc
             isViewOnly -  Allows the group owner or dmin to create view-only
                           groups where members are not able to share items.
                           If members try to share, view-only groups are
                           returned in the notshared response property. false
                           is the default.
             isInvitationOnly - If true, this group will not accept join
                                requests. If false, this group does not
                                require an invitation to join. Only group
                                owners and admins can invite users to the
                                group. false is the default.
             thumbnail - Enter the pathname to the thumbnail image to be used
                         for the group. The recommended image size is 200
                         pixels wide by 133 pixels high. Acceptable image
                         formats are PNG, GIF, and JPEG. The maximum file size
                         for an image is 1 MB. This is not a reference to
                         the file but the file itself, which will be stored
                         in the Portal.
          """
          params = {
              "f" : "json",
              "title" : title,
              "description" : description,
              "snippet" : snippet,
              "tags" : tags,
              "phone" : phone,
              "access" : access,
              "sortField" : sortField,
              "sortOrder" : sortOrder,
              "isViewOnly" : isViewOnly,
              "isInvitationOnly" : isInvitationOnly
          }
          url = self._url + "/createGroup"
  
          groups = self.groups
          if thumbnail is not None and \
             os.path.isfile(thumbnail):
              res = self._post(url=url,
                               param_dict=params,
                               files={'thumbnail': thumbnail},
                               securityHandler=self._securityHandler,
                               proxy_url=self._proxy_url,
                               proxy_port=self._proxy_port)
          else:
              res = self._post(url=url, param_dict=params,
                                   securityHandler=self._securityHandler,
                                   proxy_url=self._proxy_url,
                                   proxy_port=self._proxy_port)
  
          if "group" not in res:
              raise Exception("%s" % res)
          if "id" not in res['group']:
              raise Exception("%s" % res)
          groupId = res['group']['id']
          url = "%s/groups/%s" % (self.root, groupId)
          return Group(url=url,
                       securityHandler=self._securityHandler,
                       proxy_url=self._proxy_url,
                       proxy_port=self._proxy_port,
                       initalize=False)