You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2017/08/07 14:01:09 UTC

[33/51] [abbrv] [partial] airavata git commit: AIRAVATA-2505 Upgrade Airavata to Thrift 0.10.0

http://git-wip-us.apache.org/repos/asf/airavata/blob/14ff0916/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/ttypes.py
index 81f5788..c1d6071 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/sharing/ttypes.py
@@ -1,1722 +1,1612 @@
 #
-# Autogenerated by Thrift Compiler (0.9.3)
+# Autogenerated by Thrift Compiler (0.10.0)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 #
 #  options string: py
 #
 
-from thrift.Thrift import TType, TMessageType, TException, TApplicationException
+from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
+from thrift.protocol.TProtocol import TProtocolException
+import sys
 
 from thrift.transport import TTransport
-from thrift.protocol import TBinaryProtocol, TProtocol
-try:
-  from thrift.protocol import fastbinary
-except:
-  fastbinary = None
-
-
-class GroupCardinality:
-  """
-  <p>This is an system internal enum used to define single user groups and multi users groups. Every user is also
-  considered as a group in it's own right for implementation ease</p>
-
-  """
-  SINGLE_USER = 0
-  MULTI_USER = 1
-
-  _VALUES_TO_NAMES = {
-    0: "SINGLE_USER",
-    1: "MULTI_USER",
-  }
-
-  _NAMES_TO_VALUES = {
-    "SINGLE_USER": 0,
-    "MULTI_USER": 1,
-  }
-
-class GroupType:
-  """
-  <p>Group types can be either user level or domain level groups.</p>
-
-  """
-  DOMAIN_LEVEL_GROUP = 0
-  USER_LEVEL_GROUP = 1
-
-  _VALUES_TO_NAMES = {
-    0: "DOMAIN_LEVEL_GROUP",
-    1: "USER_LEVEL_GROUP",
-  }
-
-  _NAMES_TO_VALUES = {
-    "DOMAIN_LEVEL_GROUP": 0,
-    "USER_LEVEL_GROUP": 1,
-  }
-
-class GroupChildType:
-  """
-  <p>System internal data type to match group child types</p>
-
-  """
-  USER = 0
-  GROUP = 1
-
-  _VALUES_TO_NAMES = {
-    0: "USER",
-    1: "GROUP",
-  }
-
-  _NAMES_TO_VALUES = {
-    "USER": 0,
-    "GROUP": 1,
-  }
-
-class EntitySearchField:
-  """
-  <p>This list of fields that can be used to search entities</p>
-  <li>NAME : Name of the entity</li>
-  <li>DESCRIPTION : Description of the entity</li>
-  <li>FULL_TEXT : Full text field of the entity</li>
-  <li>PARENT_ENTITY_ID : Parent entity id of the entity</li>
-  <li>OWNER_ID : Owner of the entity</li>
-  <li>CREATED_TIME : Created time of the entity</li>
-  <li>UPDATED_TIME : Updated time of the entity</li>
-  <li>SHARED_COUNT : Number of directly shared users and groups</li>
-
-  """
-  NAME = 0
-  DESCRIPTION = 1
-  FULL_TEXT = 2
-  PARRENT_ENTITY_ID = 3
-  OWNER_ID = 4
-  PERMISSION_TYPE_ID = 5
-  CREATED_TIME = 6
-  UPDATED_TIME = 7
-  ENTITY_TYPE_ID = 8
-  SHARED_COUNT = 9
-
-  _VALUES_TO_NAMES = {
-    0: "NAME",
-    1: "DESCRIPTION",
-    2: "FULL_TEXT",
-    3: "PARRENT_ENTITY_ID",
-    4: "OWNER_ID",
-    5: "PERMISSION_TYPE_ID",
-    6: "CREATED_TIME",
-    7: "UPDATED_TIME",
-    8: "ENTITY_TYPE_ID",
-    9: "SHARED_COUNT",
-  }
-
-  _NAMES_TO_VALUES = {
-    "NAME": 0,
-    "DESCRIPTION": 1,
-    "FULL_TEXT": 2,
-    "PARRENT_ENTITY_ID": 3,
-    "OWNER_ID": 4,
-    "PERMISSION_TYPE_ID": 5,
-    "CREATED_TIME": 6,
-    "UPDATED_TIME": 7,
-    "ENTITY_TYPE_ID": 8,
-    "SHARED_COUNT": 9,
-  }
-
-class SearchCondition:
-  """
-  <p>Different search operators that can be used with the entity search fields</p>
-  <li>EQUAL : Simply matches for equality. Applicable for name, and parent entity id</li>
-  <li>LIKE : Check for the condition %$FIELD% condition. Applicable for name, and description</li>
-  <li>FULL_TEXT : Does a full text search. Only applicable for the FULL_TEXT field.</li>
-  <li>GTE : Greater than or equal. Only applicable for created time, updated time and shared count.</li>
-  <li>LTE : Less than or equal. Only applicable for created time, updated time and shared count.</li>
-
-  """
-  EQUAL = 0
-  LIKE = 1
-  FULL_TEXT = 2
-  GTE = 3
-  LTE = 4
-  NOT = 5
-
-  _VALUES_TO_NAMES = {
-    0: "EQUAL",
-    1: "LIKE",
-    2: "FULL_TEXT",
-    3: "GTE",
-    4: "LTE",
-    5: "NOT",
-  }
-
-  _NAMES_TO_VALUES = {
-    "EQUAL": 0,
-    "LIKE": 1,
-    "FULL_TEXT": 2,
-    "GTE": 3,
-    "LTE": 4,
-    "NOT": 5,
-  }
-
-class SharingType:
-  """
-  <p>This is an internal enum type for managing sharings</p>
-
-  """
-  DIRECT_NON_CASCADING = 0
-  DIRECT_CASCADING = 1
-  INDIRECT_CASCADING = 2
-
-  _VALUES_TO_NAMES = {
-    0: "DIRECT_NON_CASCADING",
-    1: "DIRECT_CASCADING",
-    2: "INDIRECT_CASCADING",
-  }
-
-  _NAMES_TO_VALUES = {
-    "DIRECT_NON_CASCADING": 0,
-    "DIRECT_CASCADING": 1,
-    "INDIRECT_CASCADING": 2,
-  }
-
-
-class Domain:
-  """
-  <p>Domain is the entity that enables multi-tenency in this componenet. Every tenant will be
-  operating separately it's own silo which is identified by the domain id. In the current implementation domain id
-  will be same as the domain name</p>
-  <li>domainId : Will be generated by the server based on the domain name</li>
-  <li><b>name</b> : A single word name that identifies the domain e.g seagrid, ultrascan</li>
-  <li>description : A short description for the domain</li>
-  <li>createdTime : Will be set by the system</li>
-  <li>updatedTime : Will be set by the system</li>
-
-
-  Attributes:
-   - domainId
-   - name
-   - description
-   - createdTime
-   - updatedTime
-  """
-
-  thrift_spec = (
-    None, # 0
-    (1, TType.STRING, 'domainId', None, "DO_NOT_SET_AT_CLIENTS_ID", ), # 1
-    (2, TType.STRING, 'name', None, None, ), # 2
-    (3, TType.STRING, 'description', None, None, ), # 3
-    (4, TType.I64, 'createdTime', None, None, ), # 4
-    (5, TType.I64, 'updatedTime', None, None, ), # 5
-  )
-
-  def __init__(self, domainId=thrift_spec[1][4], name=None, description=None, createdTime=None, updatedTime=None,):
-    self.domainId = domainId
-    self.name = name
-    self.description = description
-    self.createdTime = createdTime
-    self.updatedTime = updatedTime
-
-  def read(self, iprot):
-    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
-      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
-      return
-    iprot.readStructBegin()
-    while True:
-      (fname, ftype, fid) = iprot.readFieldBegin()
-      if ftype == TType.STOP:
-        break
-      if fid == 1:
-        if ftype == TType.STRING:
-          self.domainId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 2:
-        if ftype == TType.STRING:
-          self.name = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.STRING:
-          self.description = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 4:
-        if ftype == TType.I64:
-          self.createdTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.I64:
-          self.updatedTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      else:
-        iprot.skip(ftype)
-      iprot.readFieldEnd()
-    iprot.readStructEnd()
-
-  def write(self, oprot):
-    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
-      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
-      return
-    oprot.writeStructBegin('Domain')
-    if self.domainId is not None:
-      oprot.writeFieldBegin('domainId', TType.STRING, 1)
-      oprot.writeString(self.domainId)
-      oprot.writeFieldEnd()
-    if self.name is not None:
-      oprot.writeFieldBegin('name', TType.STRING, 2)
-      oprot.writeString(self.name)
-      oprot.writeFieldEnd()
-    if self.description is not None:
-      oprot.writeFieldBegin('description', TType.STRING, 3)
-      oprot.writeString(self.description)
-      oprot.writeFieldEnd()
-    if self.createdTime is not None:
-      oprot.writeFieldBegin('createdTime', TType.I64, 4)
-      oprot.writeI64(self.createdTime)
-      oprot.writeFieldEnd()
-    if self.updatedTime is not None:
-      oprot.writeFieldBegin('updatedTime', TType.I64, 5)
-      oprot.writeI64(self.updatedTime)
-      oprot.writeFieldEnd()
-    oprot.writeFieldStop()
-    oprot.writeStructEnd()
-
-  def validate(self):
-    return
-
-
-  def __hash__(self):
-    value = 17
-    value = (value * 31) ^ hash(self.domainId)
-    value = (value * 31) ^ hash(self.name)
-    value = (value * 31) ^ hash(self.description)
-    value = (value * 31) ^ hash(self.createdTime)
-    value = (value * 31) ^ hash(self.updatedTime)
-    return value
-
-  def __repr__(self):
-    L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
-    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
-
-  def __eq__(self, other):
-    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
-
-  def __ne__(self, other):
-    return not (self == other)
-
-class User:
-  """
-  <p>User is the model used to register a user in the system. Minimal user information will be required to provide
-  regarding the user.</p>
-  <li><b>userId</b> : User id provided by the client</li>
-  <li><b>domainId</b> : Domain id for that user</li>
-  <li><b>userName</b> : User name for the user</li>
-  <li><b>firstName</b> : First name of the user</li>
-  <li><b>lastName</b> : Last name of the user</li>
-  <li><b>email</b> : Email address of the user</li>
-  <li>icon : A binary field for storing the user icon</li>
-  <li>createdTime : If client provides this value then the system will use it if not the current time will be set</li>
-  <li>updatedTime : If client provides this value then the system will use it if not the current time will be set</li>
-
-
-  Attributes:
-   - userId
-   - domainId
-   - userName
-   - firstName
-   - lastName
-   - email
-   - icon
-   - createdTime
-   - updatedTime
-  """
-
-  thrift_spec = (
-    None, # 0
-    (1, TType.STRING, 'userId', None, None, ), # 1
-    (2, TType.STRING, 'domainId', None, None, ), # 2
-    (3, TType.STRING, 'userName', None, None, ), # 3
-    (4, TType.STRING, 'firstName', None, None, ), # 4
-    (5, TType.STRING, 'lastName', None, None, ), # 5
-    (6, TType.STRING, 'email', None, None, ), # 6
-    (7, TType.STRING, 'icon', None, None, ), # 7
-    (8, TType.I64, 'createdTime', None, None, ), # 8
-    (9, TType.I64, 'updatedTime', None, None, ), # 9
-  )
-
-  def __init__(self, userId=None, domainId=None, userName=None, firstName=None, lastName=None, email=None, icon=None, createdTime=None, updatedTime=None,):
-    self.userId = userId
-    self.domainId = domainId
-    self.userName = userName
-    self.firstName = firstName
-    self.lastName = lastName
-    self.email = email
-    self.icon = icon
-    self.createdTime = createdTime
-    self.updatedTime = updatedTime
-
-  def read(self, iprot):
-    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
-      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
-      return
-    iprot.readStructBegin()
-    while True:
-      (fname, ftype, fid) = iprot.readFieldBegin()
-      if ftype == TType.STOP:
-        break
-      if fid == 1:
-        if ftype == TType.STRING:
-          self.userId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 2:
-        if ftype == TType.STRING:
-          self.domainId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.STRING:
-          self.userName = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 4:
-        if ftype == TType.STRING:
-          self.firstName = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.STRING:
-          self.lastName = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 6:
-        if ftype == TType.STRING:
-          self.email = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 7:
-        if ftype == TType.STRING:
-          self.icon = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 8:
-        if ftype == TType.I64:
-          self.createdTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 9:
-        if ftype == TType.I64:
-          self.updatedTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      else:
-        iprot.skip(ftype)
-      iprot.readFieldEnd()
-    iprot.readStructEnd()
-
-  def write(self, oprot):
-    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
-      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
-      return
-    oprot.writeStructBegin('User')
-    if self.userId is not None:
-      oprot.writeFieldBegin('userId', TType.STRING, 1)
-      oprot.writeString(self.userId)
-      oprot.writeFieldEnd()
-    if self.domainId is not None:
-      oprot.writeFieldBegin('domainId', TType.STRING, 2)
-      oprot.writeString(self.domainId)
-      oprot.writeFieldEnd()
-    if self.userName is not None:
-      oprot.writeFieldBegin('userName', TType.STRING, 3)
-      oprot.writeString(self.userName)
-      oprot.writeFieldEnd()
-    if self.firstName is not None:
-      oprot.writeFieldBegin('firstName', TType.STRING, 4)
-      oprot.writeString(self.firstName)
-      oprot.writeFieldEnd()
-    if self.lastName is not None:
-      oprot.writeFieldBegin('lastName', TType.STRING, 5)
-      oprot.writeString(self.lastName)
-      oprot.writeFieldEnd()
-    if self.email is not None:
-      oprot.writeFieldBegin('email', TType.STRING, 6)
-      oprot.writeString(self.email)
-      oprot.writeFieldEnd()
-    if self.icon is not None:
-      oprot.writeFieldBegin('icon', TType.STRING, 7)
-      oprot.writeString(self.icon)
-      oprot.writeFieldEnd()
-    if self.createdTime is not None:
-      oprot.writeFieldBegin('createdTime', TType.I64, 8)
-      oprot.writeI64(self.createdTime)
-      oprot.writeFieldEnd()
-    if self.updatedTime is not None:
-      oprot.writeFieldBegin('updatedTime', TType.I64, 9)
-      oprot.writeI64(self.updatedTime)
-      oprot.writeFieldEnd()
-    oprot.writeFieldStop()
-    oprot.writeStructEnd()
-
-  def validate(self):
-    return
-
-
-  def __hash__(self):
-    value = 17
-    value = (value * 31) ^ hash(self.userId)
-    value = (value * 31) ^ hash(self.domainId)
-    value = (value * 31) ^ hash(self.userName)
-    value = (value * 31) ^ hash(self.firstName)
-    value = (value * 31) ^ hash(self.lastName)
-    value = (value * 31) ^ hash(self.email)
-    value = (value * 31) ^ hash(self.icon)
-    value = (value * 31) ^ hash(self.createdTime)
-    value = (value * 31) ^ hash(self.updatedTime)
-    return value
-
-  def __repr__(self):
-    L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
-    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
-
-  def __eq__(self, other):
-    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
-
-  def __ne__(self, other):
-    return not (self == other)
-
-class UserGroup:
-  """
-  <p>User group is a collection of users.</p>
-   <li><b>groupId</b> : Group id provided by the client</li>
-   <li><b>domainId</b> : Domain id for this user group</li>
-   <li><b>name</b> : Name for the user group. should be one word</li>
-   <li>description : Short description for the group.</li>
-   <li><b>ownerId</b> : Owner id of this group.</li>
-   <li><b>groupType</b> : Group type (DOMAIN_LEVEL_GROUP, USER_LEVEL_GROUP)</li>
-   <li><b>groupCardinality</b> : Group cardinality (SINGLE_USER, MULTI_USER)</li>
-   <li>createdTime : Will be set by the system</li>
-   <li>updatedTime : Will be set by the system</li>
-   
-
-  Attributes:
-   - groupId
-   - domainId
-   - name
-   - description
-   - ownerId
-   - groupType
-   - groupCardinality
-   - createdTime
-   - updatedTime
-  """
-
-  thrift_spec = (
-    None, # 0
-    (1, TType.STRING, 'groupId', None, None, ), # 1
-    (2, TType.STRING, 'domainId', None, None, ), # 2
-    (3, TType.STRING, 'name', None, None, ), # 3
-    (4, TType.STRING, 'description', None, None, ), # 4
-    (5, TType.STRING, 'ownerId', None, None, ), # 5
-    (6, TType.I32, 'groupType', None, None, ), # 6
-    (7, TType.I32, 'groupCardinality', None, None, ), # 7
-    (8, TType.I64, 'createdTime', None, None, ), # 8
-    (9, TType.I64, 'updatedTime', None, None, ), # 9
-  )
-
-  def __init__(self, groupId=None, domainId=None, name=None, description=None, ownerId=None, groupType=None, groupCardinality=None, createdTime=None, updatedTime=None,):
-    self.groupId = groupId
-    self.domainId = domainId
-    self.name = name
-    self.description = description
-    self.ownerId = ownerId
-    self.groupType = groupType
-    self.groupCardinality = groupCardinality
-    self.createdTime = createdTime
-    self.updatedTime = updatedTime
-
-  def read(self, iprot):
-    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
-      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
-      return
-    iprot.readStructBegin()
-    while True:
-      (fname, ftype, fid) = iprot.readFieldBegin()
-      if ftype == TType.STOP:
-        break
-      if fid == 1:
-        if ftype == TType.STRING:
-          self.groupId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 2:
-        if ftype == TType.STRING:
-          self.domainId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.STRING:
-          self.name = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 4:
-        if ftype == TType.STRING:
-          self.description = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.STRING:
-          self.ownerId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 6:
-        if ftype == TType.I32:
-          self.groupType = iprot.readI32()
-        else:
-          iprot.skip(ftype)
-      elif fid == 7:
-        if ftype == TType.I32:
-          self.groupCardinality = iprot.readI32()
-        else:
-          iprot.skip(ftype)
-      elif fid == 8:
-        if ftype == TType.I64:
-          self.createdTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 9:
-        if ftype == TType.I64:
-          self.updatedTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      else:
-        iprot.skip(ftype)
-      iprot.readFieldEnd()
-    iprot.readStructEnd()
-
-  def write(self, oprot):
-    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
-      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
-      return
-    oprot.writeStructBegin('UserGroup')
-    if self.groupId is not None:
-      oprot.writeFieldBegin('groupId', TType.STRING, 1)
-      oprot.writeString(self.groupId)
-      oprot.writeFieldEnd()
-    if self.domainId is not None:
-      oprot.writeFieldBegin('domainId', TType.STRING, 2)
-      oprot.writeString(self.domainId)
-      oprot.writeFieldEnd()
-    if self.name is not None:
-      oprot.writeFieldBegin('name', TType.STRING, 3)
-      oprot.writeString(self.name)
-      oprot.writeFieldEnd()
-    if self.description is not None:
-      oprot.writeFieldBegin('description', TType.STRING, 4)
-      oprot.writeString(self.description)
-      oprot.writeFieldEnd()
-    if self.ownerId is not None:
-      oprot.writeFieldBegin('ownerId', TType.STRING, 5)
-      oprot.writeString(self.ownerId)
-      oprot.writeFieldEnd()
-    if self.groupType is not None:
-      oprot.writeFieldBegin('groupType', TType.I32, 6)
-      oprot.writeI32(self.groupType)
-      oprot.writeFieldEnd()
-    if self.groupCardinality is not None:
-      oprot.writeFieldBegin('groupCardinality', TType.I32, 7)
-      oprot.writeI32(self.groupCardinality)
-      oprot.writeFieldEnd()
-    if self.createdTime is not None:
-      oprot.writeFieldBegin('createdTime', TType.I64, 8)
-      oprot.writeI64(self.createdTime)
-      oprot.writeFieldEnd()
-    if self.updatedTime is not None:
-      oprot.writeFieldBegin('updatedTime', TType.I64, 9)
-      oprot.writeI64(self.updatedTime)
-      oprot.writeFieldEnd()
-    oprot.writeFieldStop()
-    oprot.writeStructEnd()
-
-  def validate(self):
-    return
-
-
-  def __hash__(self):
-    value = 17
-    value = (value * 31) ^ hash(self.groupId)
-    value = (value * 31) ^ hash(self.domainId)
-    value = (value * 31) ^ hash(self.name)
-    value = (value * 31) ^ hash(self.description)
-    value = (value * 31) ^ hash(self.ownerId)
-    value = (value * 31) ^ hash(self.groupType)
-    value = (value * 31) ^ hash(self.groupCardinality)
-    value = (value * 31) ^ hash(self.createdTime)
-    value = (value * 31) ^ hash(self.updatedTime)
-    return value
-
-  def __repr__(self):
-    L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
-    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
-
-  def __eq__(self, other):
-    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
-
-  def __ne__(self, other):
-    return not (self == other)
-
-class GroupMembership:
-  """
-  <p>System internal data type to map group memberships</p>
-
-
-  Attributes:
-   - parentId
-   - childId
-   - domainId
-   - childType
-   - createdTime
-   - updatedTime
-  """
-
-  thrift_spec = (
-    None, # 0
-    (1, TType.STRING, 'parentId', None, None, ), # 1
-    (2, TType.STRING, 'childId', None, None, ), # 2
-    (3, TType.STRING, 'domainId', None, None, ), # 3
-    (4, TType.I32, 'childType', None, None, ), # 4
-    (5, TType.I64, 'createdTime', None, None, ), # 5
-    (6, TType.I64, 'updatedTime', None, None, ), # 6
-  )
-
-  def __init__(self, parentId=None, childId=None, domainId=None, childType=None, createdTime=None, updatedTime=None,):
-    self.parentId = parentId
-    self.childId = childId
-    self.domainId = domainId
-    self.childType = childType
-    self.createdTime = createdTime
-    self.updatedTime = updatedTime
-
-  def read(self, iprot):
-    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
-      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
-      return
-    iprot.readStructBegin()
-    while True:
-      (fname, ftype, fid) = iprot.readFieldBegin()
-      if ftype == TType.STOP:
-        break
-      if fid == 1:
-        if ftype == TType.STRING:
-          self.parentId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 2:
-        if ftype == TType.STRING:
-          self.childId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.STRING:
-          self.domainId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 4:
-        if ftype == TType.I32:
-          self.childType = iprot.readI32()
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.I64:
-          self.createdTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 6:
-        if ftype == TType.I64:
-          self.updatedTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      else:
-        iprot.skip(ftype)
-      iprot.readFieldEnd()
-    iprot.readStructEnd()
-
-  def write(self, oprot):
-    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
-      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
-      return
-    oprot.writeStructBegin('GroupMembership')
-    if self.parentId is not None:
-      oprot.writeFieldBegin('parentId', TType.STRING, 1)
-      oprot.writeString(self.parentId)
-      oprot.writeFieldEnd()
-    if self.childId is not None:
-      oprot.writeFieldBegin('childId', TType.STRING, 2)
-      oprot.writeString(self.childId)
-      oprot.writeFieldEnd()
-    if self.domainId is not None:
-      oprot.writeFieldBegin('domainId', TType.STRING, 3)
-      oprot.writeString(self.domainId)
-      oprot.writeFieldEnd()
-    if self.childType is not None:
-      oprot.writeFieldBegin('childType', TType.I32, 4)
-      oprot.writeI32(self.childType)
-      oprot.writeFieldEnd()
-    if self.createdTime is not None:
-      oprot.writeFieldBegin('createdTime', TType.I64, 5)
-      oprot.writeI64(self.createdTime)
-      oprot.writeFieldEnd()
-    if self.updatedTime is not None:
-      oprot.writeFieldBegin('updatedTime', TType.I64, 6)
-      oprot.writeI64(self.updatedTime)
-      oprot.writeFieldEnd()
-    oprot.writeFieldStop()
-    oprot.writeStructEnd()
-
-  def validate(self):
-    return
-
-
-  def __hash__(self):
-    value = 17
-    value = (value * 31) ^ hash(self.parentId)
-    value = (value * 31) ^ hash(self.childId)
-    value = (value * 31) ^ hash(self.domainId)
-    value = (value * 31) ^ hash(self.childType)
-    value = (value * 31) ^ hash(self.createdTime)
-    value = (value * 31) ^ hash(self.updatedTime)
-    return value
-
-  def __repr__(self):
-    L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
-    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
-
-  def __eq__(self, other):
-    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
-
-  def __ne__(self, other):
-    return not (self == other)
-
-class EntityType:
-  """
-  <p>client defined entity types</p>
-  <li><b>entityTypeId</b> : Entity type id provided by the client</li>
-  <li><b>domainId</b> : Domain id of the domain.</li>
-  <li><b>name</b> : Name for the entity type. Should be a single word.</li>
-  <li>description : Short description for the entity type.</li>
-  <li>createdTime : Will be set by the system</li>
-  <li>updatedTime : Will be set by the system</li>
-
-
-  Attributes:
-   - entityTypeId
-   - domainId
-   - name
-   - description
-   - createdTime
-   - updatedTime
-  """
-
-  thrift_spec = (
-    None, # 0
-    (1, TType.STRING, 'entityTypeId', None, None, ), # 1
-    (2, TType.STRING, 'domainId', None, None, ), # 2
-    (3, TType.STRING, 'name', None, None, ), # 3
-    (4, TType.STRING, 'description', None, None, ), # 4
-    (5, TType.I64, 'createdTime', None, None, ), # 5
-    (6, TType.I64, 'updatedTime', None, None, ), # 6
-  )
-
-  def __init__(self, entityTypeId=None, domainId=None, name=None, description=None, createdTime=None, updatedTime=None,):
-    self.entityTypeId = entityTypeId
-    self.domainId = domainId
-    self.name = name
-    self.description = description
-    self.createdTime = createdTime
-    self.updatedTime = updatedTime
-
-  def read(self, iprot):
-    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
-      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
-      return
-    iprot.readStructBegin()
-    while True:
-      (fname, ftype, fid) = iprot.readFieldBegin()
-      if ftype == TType.STOP:
-        break
-      if fid == 1:
-        if ftype == TType.STRING:
-          self.entityTypeId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 2:
-        if ftype == TType.STRING:
-          self.domainId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.STRING:
-          self.name = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 4:
-        if ftype == TType.STRING:
-          self.description = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.I64:
-          self.createdTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 6:
-        if ftype == TType.I64:
-          self.updatedTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      else:
-        iprot.skip(ftype)
-      iprot.readFieldEnd()
-    iprot.readStructEnd()
-
-  def write(self, oprot):
-    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
-      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
-      return
-    oprot.writeStructBegin('EntityType')
-    if self.entityTypeId is not None:
-      oprot.writeFieldBegin('entityTypeId', TType.STRING, 1)
-      oprot.writeString(self.entityTypeId)
-      oprot.writeFieldEnd()
-    if self.domainId is not None:
-      oprot.writeFieldBegin('domainId', TType.STRING, 2)
-      oprot.writeString(self.domainId)
-      oprot.writeFieldEnd()
-    if self.name is not None:
-      oprot.writeFieldBegin('name', TType.STRING, 3)
-      oprot.writeString(self.name)
-      oprot.writeFieldEnd()
-    if self.description is not None:
-      oprot.writeFieldBegin('description', TType.STRING, 4)
-      oprot.writeString(self.description)
-      oprot.writeFieldEnd()
-    if self.createdTime is not None:
-      oprot.writeFieldBegin('createdTime', TType.I64, 5)
-      oprot.writeI64(self.createdTime)
-      oprot.writeFieldEnd()
-    if self.updatedTime is not None:
-      oprot.writeFieldBegin('updatedTime', TType.I64, 6)
-      oprot.writeI64(self.updatedTime)
-      oprot.writeFieldEnd()
-    oprot.writeFieldStop()
-    oprot.writeStructEnd()
-
-  def validate(self):
-    return
-
-
-  def __hash__(self):
-    value = 17
-    value = (value * 31) ^ hash(self.entityTypeId)
-    value = (value * 31) ^ hash(self.domainId)
-    value = (value * 31) ^ hash(self.name)
-    value = (value * 31) ^ hash(self.description)
-    value = (value * 31) ^ hash(self.createdTime)
-    value = (value * 31) ^ hash(self.updatedTime)
-    return value
-
-  def __repr__(self):
-    L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
-    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
-
-  def __eq__(self, other):
-    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
-
-  def __ne__(self, other):
-    return not (self == other)
-
-class SearchCriteria:
-  """
-  <p>Container object for search criteria</p>
-  <li><b>searchField</b> : Entity search field</li>
-  <li><b>value</b> : Search value</li>
-  <li><b>searchCondition</b> : EQUAL, LIKE etc..</li>
-
-
-  Attributes:
-   - searchField
-   - value
-   - searchCondition
-  """
-
-  thrift_spec = (
-    None, # 0
-    (1, TType.I32, 'searchField', None, None, ), # 1
-    (2, TType.STRING, 'value', None, None, ), # 2
-    (3, TType.I32, 'searchCondition', None, None, ), # 3
-  )
-
-  def __init__(self, searchField=None, value=None, searchCondition=None,):
-    self.searchField = searchField
-    self.value = value
-    self.searchCondition = searchCondition
-
-  def read(self, iprot):
-    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
-      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
-      return
-    iprot.readStructBegin()
-    while True:
-      (fname, ftype, fid) = iprot.readFieldBegin()
-      if ftype == TType.STOP:
-        break
-      if fid == 1:
-        if ftype == TType.I32:
-          self.searchField = iprot.readI32()
-        else:
-          iprot.skip(ftype)
-      elif fid == 2:
-        if ftype == TType.STRING:
-          self.value = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.I32:
-          self.searchCondition = iprot.readI32()
-        else:
-          iprot.skip(ftype)
-      else:
-        iprot.skip(ftype)
-      iprot.readFieldEnd()
-    iprot.readStructEnd()
-
-  def write(self, oprot):
-    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
-      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
-      return
-    oprot.writeStructBegin('SearchCriteria')
-    if self.searchField is not None:
-      oprot.writeFieldBegin('searchField', TType.I32, 1)
-      oprot.writeI32(self.searchField)
-      oprot.writeFieldEnd()
-    if self.value is not None:
-      oprot.writeFieldBegin('value', TType.STRING, 2)
-      oprot.writeString(self.value)
-      oprot.writeFieldEnd()
-    if self.searchCondition is not None:
-      oprot.writeFieldBegin('searchCondition', TType.I32, 3)
-      oprot.writeI32(self.searchCondition)
-      oprot.writeFieldEnd()
-    oprot.writeFieldStop()
-    oprot.writeStructEnd()
-
-  def validate(self):
-    return
-
-
-  def __hash__(self):
-    value = 17
-    value = (value * 31) ^ hash(self.searchField)
-    value = (value * 31) ^ hash(self.value)
-    value = (value * 31) ^ hash(self.searchCondition)
-    return value
-
-  def __repr__(self):
-    L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
-    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
-
-  def __eq__(self, other):
-    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
-
-  def __ne__(self, other):
-    return not (self == other)
-
-class Entity:
-  """
-  <p>Entity object which is used to register an entity in the system.</p>
-  <li><b>entityId</b> : Entity id provided by the client</li>
-  <li><b>domainId</b> : Domain id</li>
-  <li><b>entityTypeId</b> : Entity type id</li>
-  <li><b>ownerId</b> : Owner id</li>
-  <li>parentEntityId : Parent entity id</li>
-  <li><b>name</b> : Name</li>
-  <li>description : Short description for the entity</li>
-  <li>binaryData : Any information stored in binary format</li>
-  <li>fullText : A string which will be considered for full text search</li>
-  <li><b>originalEntityCreationTime</b> : When registering old records what is the original entity creation time. If not
-  set will be default to current time</li>
-  <li>createdTime : Will be set by the system</li>
-  <li>updatedTime : Will be set by the system</li>
-
-
-  Attributes:
-   - entityId
-   - domainId
-   - entityTypeId
-   - ownerId
-   - parentEntityId
-   - name
-   - description
-   - binaryData
-   - fullText
-   - sharedCount
-   - originalEntityCreationTime
-   - createdTime
-   - updatedTime
-  """
-
-  thrift_spec = (
-    None, # 0
-    (1, TType.STRING, 'entityId', None, None, ), # 1
-    (2, TType.STRING, 'domainId', None, None, ), # 2
-    (3, TType.STRING, 'entityTypeId', None, None, ), # 3
-    (4, TType.STRING, 'ownerId', None, None, ), # 4
-    (5, TType.STRING, 'parentEntityId', None, None, ), # 5
-    (6, TType.STRING, 'name', None, None, ), # 6
-    (7, TType.STRING, 'description', None, None, ), # 7
-    (8, TType.STRING, 'binaryData', None, None, ), # 8
-    (9, TType.STRING, 'fullText', None, None, ), # 9
-    (10, TType.I64, 'sharedCount', None, 0, ), # 10
-    (11, TType.I64, 'originalEntityCreationTime', None, None, ), # 11
-    (12, TType.I64, 'createdTime', None, None, ), # 12
-    (13, TType.I64, 'updatedTime', None, None, ), # 13
-  )
-
-  def __init__(self, entityId=None, domainId=None, entityTypeId=None, ownerId=None, parentEntityId=None, name=None, description=None, binaryData=None, fullText=None, sharedCount=thrift_spec[10][4], originalEntityCreationTime=None, createdTime=None, updatedTime=None,):
-    self.entityId = entityId
-    self.domainId = domainId
-    self.entityTypeId = entityTypeId
-    self.ownerId = ownerId
-    self.parentEntityId = parentEntityId
-    self.name = name
-    self.description = description
-    self.binaryData = binaryData
-    self.fullText = fullText
-    self.sharedCount = sharedCount
-    self.originalEntityCreationTime = originalEntityCreationTime
-    self.createdTime = createdTime
-    self.updatedTime = updatedTime
-
-  def read(self, iprot):
-    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
-      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
-      return
-    iprot.readStructBegin()
-    while True:
-      (fname, ftype, fid) = iprot.readFieldBegin()
-      if ftype == TType.STOP:
-        break
-      if fid == 1:
-        if ftype == TType.STRING:
-          self.entityId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 2:
-        if ftype == TType.STRING:
-          self.domainId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.STRING:
-          self.entityTypeId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 4:
-        if ftype == TType.STRING:
-          self.ownerId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.STRING:
-          self.parentEntityId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 6:
-        if ftype == TType.STRING:
-          self.name = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 7:
-        if ftype == TType.STRING:
-          self.description = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 8:
-        if ftype == TType.STRING:
-          self.binaryData = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 9:
-        if ftype == TType.STRING:
-          self.fullText = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 10:
-        if ftype == TType.I64:
-          self.sharedCount = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 11:
-        if ftype == TType.I64:
-          self.originalEntityCreationTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 12:
-        if ftype == TType.I64:
-          self.createdTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 13:
-        if ftype == TType.I64:
-          self.updatedTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      else:
-        iprot.skip(ftype)
-      iprot.readFieldEnd()
-    iprot.readStructEnd()
-
-  def write(self, oprot):
-    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
-      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
-      return
-    oprot.writeStructBegin('Entity')
-    if self.entityId is not None:
-      oprot.writeFieldBegin('entityId', TType.STRING, 1)
-      oprot.writeString(self.entityId)
-      oprot.writeFieldEnd()
-    if self.domainId is not None:
-      oprot.writeFieldBegin('domainId', TType.STRING, 2)
-      oprot.writeString(self.domainId)
-      oprot.writeFieldEnd()
-    if self.entityTypeId is not None:
-      oprot.writeFieldBegin('entityTypeId', TType.STRING, 3)
-      oprot.writeString(self.entityTypeId)
-      oprot.writeFieldEnd()
-    if self.ownerId is not None:
-      oprot.writeFieldBegin('ownerId', TType.STRING, 4)
-      oprot.writeString(self.ownerId)
-      oprot.writeFieldEnd()
-    if self.parentEntityId is not None:
-      oprot.writeFieldBegin('parentEntityId', TType.STRING, 5)
-      oprot.writeString(self.parentEntityId)
-      oprot.writeFieldEnd()
-    if self.name is not None:
-      oprot.writeFieldBegin('name', TType.STRING, 6)
-      oprot.writeString(self.name)
-      oprot.writeFieldEnd()
-    if self.description is not None:
-      oprot.writeFieldBegin('description', TType.STRING, 7)
-      oprot.writeString(self.description)
-      oprot.writeFieldEnd()
-    if self.binaryData is not None:
-      oprot.writeFieldBegin('binaryData', TType.STRING, 8)
-      oprot.writeString(self.binaryData)
-      oprot.writeFieldEnd()
-    if self.fullText is not None:
-      oprot.writeFieldBegin('fullText', TType.STRING, 9)
-      oprot.writeString(self.fullText)
-      oprot.writeFieldEnd()
-    if self.sharedCount is not None:
-      oprot.writeFieldBegin('sharedCount', TType.I64, 10)
-      oprot.writeI64(self.sharedCount)
-      oprot.writeFieldEnd()
-    if self.originalEntityCreationTime is not None:
-      oprot.writeFieldBegin('originalEntityCreationTime', TType.I64, 11)
-      oprot.writeI64(self.originalEntityCreationTime)
-      oprot.writeFieldEnd()
-    if self.createdTime is not None:
-      oprot.writeFieldBegin('createdTime', TType.I64, 12)
-      oprot.writeI64(self.createdTime)
-      oprot.writeFieldEnd()
-    if self.updatedTime is not None:
-      oprot.writeFieldBegin('updatedTime', TType.I64, 13)
-      oprot.writeI64(self.updatedTime)
-      oprot.writeFieldEnd()
-    oprot.writeFieldStop()
-    oprot.writeStructEnd()
-
-  def validate(self):
-    return
-
-
-  def __hash__(self):
-    value = 17
-    value = (value * 31) ^ hash(self.entityId)
-    value = (value * 31) ^ hash(self.domainId)
-    value = (value * 31) ^ hash(self.entityTypeId)
-    value = (value * 31) ^ hash(self.ownerId)
-    value = (value * 31) ^ hash(self.parentEntityId)
-    value = (value * 31) ^ hash(self.name)
-    value = (value * 31) ^ hash(self.description)
-    value = (value * 31) ^ hash(self.binaryData)
-    value = (value * 31) ^ hash(self.fullText)
-    value = (value * 31) ^ hash(self.sharedCount)
-    value = (value * 31) ^ hash(self.originalEntityCreationTime)
-    value = (value * 31) ^ hash(self.createdTime)
-    value = (value * 31) ^ hash(self.updatedTime)
-    return value
-
-  def __repr__(self):
-    L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
-    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
-
-  def __eq__(self, other):
-    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
-
-  def __ne__(self, other):
-    return not (self == other)
-
-class PermissionType:
-  """
-  <p>Object for creating client defined permission type</p>
-  <li><b>permissionTypeId</b> : Permission type id provided by the client</li>
-  <li><b>domainId</b> : Domain id</li>
-  <li><b>name</b> : Single word name for the permission</li>
-  <li>description : Short description for the permission type</li>
-  <li>createdTime : Will be set by the system</li>
-  <li>updatedTime : Will be set by the system</li>
-
-
-  Attributes:
-   - permissionTypeId
-   - domainId
-   - name
-   - description
-   - createdTime
-   - updatedTime
-  """
-
-  thrift_spec = (
-    None, # 0
-    (1, TType.STRING, 'permissionTypeId', None, None, ), # 1
-    (2, TType.STRING, 'domainId', None, None, ), # 2
-    (3, TType.STRING, 'name', None, None, ), # 3
-    (4, TType.STRING, 'description', None, None, ), # 4
-    (5, TType.I64, 'createdTime', None, None, ), # 5
-    (6, TType.I64, 'updatedTime', None, None, ), # 6
-  )
-
-  def __init__(self, permissionTypeId=None, domainId=None, name=None, description=None, createdTime=None, updatedTime=None,):
-    self.permissionTypeId = permissionTypeId
-    self.domainId = domainId
-    self.name = name
-    self.description = description
-    self.createdTime = createdTime
-    self.updatedTime = updatedTime
-
-  def read(self, iprot):
-    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
-      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
-      return
-    iprot.readStructBegin()
-    while True:
-      (fname, ftype, fid) = iprot.readFieldBegin()
-      if ftype == TType.STOP:
-        break
-      if fid == 1:
-        if ftype == TType.STRING:
-          self.permissionTypeId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 2:
-        if ftype == TType.STRING:
-          self.domainId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.STRING:
-          self.name = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 4:
-        if ftype == TType.STRING:
-          self.description = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.I64:
-          self.createdTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 6:
-        if ftype == TType.I64:
-          self.updatedTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      else:
-        iprot.skip(ftype)
-      iprot.readFieldEnd()
-    iprot.readStructEnd()
-
-  def write(self, oprot):
-    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
-      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
-      return
-    oprot.writeStructBegin('PermissionType')
-    if self.permissionTypeId is not None:
-      oprot.writeFieldBegin('permissionTypeId', TType.STRING, 1)
-      oprot.writeString(self.permissionTypeId)
-      oprot.writeFieldEnd()
-    if self.domainId is not None:
-      oprot.writeFieldBegin('domainId', TType.STRING, 2)
-      oprot.writeString(self.domainId)
-      oprot.writeFieldEnd()
-    if self.name is not None:
-      oprot.writeFieldBegin('name', TType.STRING, 3)
-      oprot.writeString(self.name)
-      oprot.writeFieldEnd()
-    if self.description is not None:
-      oprot.writeFieldBegin('description', TType.STRING, 4)
-      oprot.writeString(self.description)
-      oprot.writeFieldEnd()
-    if self.createdTime is not None:
-      oprot.writeFieldBegin('createdTime', TType.I64, 5)
-      oprot.writeI64(self.createdTime)
-      oprot.writeFieldEnd()
-    if self.updatedTime is not None:
-      oprot.writeFieldBegin('updatedTime', TType.I64, 6)
-      oprot.writeI64(self.updatedTime)
-      oprot.writeFieldEnd()
-    oprot.writeFieldStop()
-    oprot.writeStructEnd()
-
-  def validate(self):
-    return
-
-
-  def __hash__(self):
-    value = 17
-    value = (value * 31) ^ hash(self.permissionTypeId)
-    value = (value * 31) ^ hash(self.domainId)
-    value = (value * 31) ^ hash(self.name)
-    value = (value * 31) ^ hash(self.description)
-    value = (value * 31) ^ hash(self.createdTime)
-    value = (value * 31) ^ hash(self.updatedTime)
-    return value
-
-  def __repr__(self):
-    L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
-    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
-
-  def __eq__(self, other):
-    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
-
-  def __ne__(self, other):
-    return not (self == other)
-
-class Sharing:
-  """
-  <p>This is an internal enum type for managing sharings</p>
-
-
-  Attributes:
-   - permissionTypeId
-   - entityId
-   - groupId
-   - sharingType
-   - domainId
-   - inheritedParentId
-   - createdTime
-   - updatedTime
-  """
-
-  thrift_spec = (
-    None, # 0
-    (1, TType.STRING, 'permissionTypeId', None, None, ), # 1
-    (2, TType.STRING, 'entityId', None, None, ), # 2
-    (3, TType.STRING, 'groupId', None, None, ), # 3
-    (4, TType.I32, 'sharingType', None, None, ), # 4
-    (5, TType.STRING, 'domainId', None, None, ), # 5
-    (6, TType.STRING, 'inheritedParentId', None, None, ), # 6
-    (7, TType.I64, 'createdTime', None, None, ), # 7
-    (8, TType.I64, 'updatedTime', None, None, ), # 8
-  )
-
-  def __init__(self, permissionTypeId=None, entityId=None, groupId=None, sharingType=None, domainId=None, inheritedParentId=None, createdTime=None, updatedTime=None,):
-    self.permissionTypeId = permissionTypeId
-    self.entityId = entityId
-    self.groupId = groupId
-    self.sharingType = sharingType
-    self.domainId = domainId
-    self.inheritedParentId = inheritedParentId
-    self.createdTime = createdTime
-    self.updatedTime = updatedTime
-
-  def read(self, iprot):
-    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
-      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
-      return
-    iprot.readStructBegin()
-    while True:
-      (fname, ftype, fid) = iprot.readFieldBegin()
-      if ftype == TType.STOP:
-        break
-      if fid == 1:
-        if ftype == TType.STRING:
-          self.permissionTypeId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 2:
-        if ftype == TType.STRING:
-          self.entityId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.STRING:
-          self.groupId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 4:
-        if ftype == TType.I32:
-          self.sharingType = iprot.readI32()
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.STRING:
-          self.domainId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 6:
-        if ftype == TType.STRING:
-          self.inheritedParentId = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 7:
-        if ftype == TType.I64:
-          self.createdTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 8:
-        if ftype == TType.I64:
-          self.updatedTime = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      else:
-        iprot.skip(ftype)
-      iprot.readFieldEnd()
-    iprot.readStructEnd()
-
-  def write(self, oprot):
-    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
-      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
-      return
-    oprot.writeStructBegin('Sharing')
-    if self.permissionTypeId is not None:
-      oprot.writeFieldBegin('permissionTypeId', TType.STRING, 1)
-      oprot.writeString(self.permissionTypeId)
-      oprot.writeFieldEnd()
-    if self.entityId is not None:
-      oprot.writeFieldBegin('entityId', TType.STRING, 2)
-      oprot.writeString(self.entityId)
-      oprot.writeFieldEnd()
-    if self.groupId is not None:
-      oprot.writeFieldBegin('groupId', TType.STRING, 3)
-      oprot.writeString(self.groupId)
-      oprot.writeFieldEnd()
-    if self.sharingType is not None:
-      oprot.writeFieldBegin('sharingType', TType.I32, 4)
-      oprot.writeI32(self.sharingType)
-      oprot.writeFieldEnd()
-    if self.domainId is not None:
-      oprot.writeFieldBegin('domainId', TType.STRING, 5)
-      oprot.writeString(self.domainId)
-      oprot.writeFieldEnd()
-    if self.inheritedParentId is not None:
-      oprot.writeFieldBegin('inheritedParentId', TType.STRING, 6)
-      oprot.writeString(self.inheritedParentId)
-      oprot.writeFieldEnd()
-    if self.createdTime is not None:
-      oprot.writeFieldBegin('createdTime', TType.I64, 7)
-      oprot.writeI64(self.createdTime)
-      oprot.writeFieldEnd()
-    if self.updatedTime is not None:
-      oprot.writeFieldBegin('updatedTime', TType.I64, 8)
-      oprot.writeI64(self.updatedTime)
-      oprot.writeFieldEnd()
-    oprot.writeFieldStop()
-    oprot.writeStructEnd()
-
-  def validate(self):
-    return
-
-
-  def __hash__(self):
-    value = 17
-    value = (value * 31) ^ hash(self.permissionTypeId)
-    value = (value * 31) ^ hash(self.entityId)
-    value = (value * 31) ^ hash(self.groupId)
-    value = (value * 31) ^ hash(self.sharingType)
-    value = (value * 31) ^ hash(self.domainId)
-    value = (value * 31) ^ hash(self.inheritedParentId)
-    value = (value * 31) ^ hash(self.createdTime)
-    value = (value * 31) ^ hash(self.updatedTime)
-    return value
-
-  def __repr__(self):
-    L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
-    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
-
-  def __eq__(self, other):
-    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
-
-  def __ne__(self, other):
-    return not (self == other)
+
+
+class GroupCardinality(object):
+    """
+    <p>This is an system internal enum used to define single user groups and multi users groups. Every user is also
+    considered as a group in it's own right for implementation ease</p>
+
+    """
+    SINGLE_USER = 0
+    MULTI_USER = 1
+
+    _VALUES_TO_NAMES = {
+        0: "SINGLE_USER",
+        1: "MULTI_USER",
+    }
+
+    _NAMES_TO_VALUES = {
+        "SINGLE_USER": 0,
+        "MULTI_USER": 1,
+    }
+
+
+class GroupType(object):
+    """
+    <p>Group types can be either user level or domain level groups.</p>
+
+    """
+    DOMAIN_LEVEL_GROUP = 0
+    USER_LEVEL_GROUP = 1
+
+    _VALUES_TO_NAMES = {
+        0: "DOMAIN_LEVEL_GROUP",
+        1: "USER_LEVEL_GROUP",
+    }
+
+    _NAMES_TO_VALUES = {
+        "DOMAIN_LEVEL_GROUP": 0,
+        "USER_LEVEL_GROUP": 1,
+    }
+
+
+class GroupChildType(object):
+    """
+    <p>System internal data type to match group child types</p>
+
+    """
+    USER = 0
+    GROUP = 1
+
+    _VALUES_TO_NAMES = {
+        0: "USER",
+        1: "GROUP",
+    }
+
+    _NAMES_TO_VALUES = {
+        "USER": 0,
+        "GROUP": 1,
+    }
+
+
+class EntitySearchField(object):
+    """
+    <p>This list of fields that can be used to search entities</p>
+    <li>NAME : Name of the entity</li>
+    <li>DESCRIPTION : Description of the entity</li>
+    <li>FULL_TEXT : Full text field of the entity</li>
+    <li>PARENT_ENTITY_ID : Parent entity id of the entity</li>
+    <li>OWNER_ID : Owner of the entity</li>
+    <li>CREATED_TIME : Created time of the entity</li>
+    <li>UPDATED_TIME : Updated time of the entity</li>
+    <li>SHARED_COUNT : Number of directly shared users and groups</li>
+
+    """
+    NAME = 0
+    DESCRIPTION = 1
+    FULL_TEXT = 2
+    PARRENT_ENTITY_ID = 3
+    OWNER_ID = 4
+    PERMISSION_TYPE_ID = 5
+    CREATED_TIME = 6
+    UPDATED_TIME = 7
+    ENTITY_TYPE_ID = 8
+    SHARED_COUNT = 9
+
+    _VALUES_TO_NAMES = {
+        0: "NAME",
+        1: "DESCRIPTION",
+        2: "FULL_TEXT",
+        3: "PARRENT_ENTITY_ID",
+        4: "OWNER_ID",
+        5: "PERMISSION_TYPE_ID",
+        6: "CREATED_TIME",
+        7: "UPDATED_TIME",
+        8: "ENTITY_TYPE_ID",
+        9: "SHARED_COUNT",
+    }
+
+    _NAMES_TO_VALUES = {
+        "NAME": 0,
+        "DESCRIPTION": 1,
+        "FULL_TEXT": 2,
+        "PARRENT_ENTITY_ID": 3,
+        "OWNER_ID": 4,
+        "PERMISSION_TYPE_ID": 5,
+        "CREATED_TIME": 6,
+        "UPDATED_TIME": 7,
+        "ENTITY_TYPE_ID": 8,
+        "SHARED_COUNT": 9,
+    }
+
+
+class SearchCondition(object):
+    """
+    <p>Different search operators that can be used with the entity search fields</p>
+    <li>EQUAL : Simply matches for equality. Applicable for name, and parent entity id</li>
+    <li>LIKE : Check for the condition %$FIELD% condition. Applicable for name, and description</li>
+    <li>FULL_TEXT : Does a full text search. Only applicable for the FULL_TEXT field.</li>
+    <li>GTE : Greater than or equal. Only applicable for created time, updated time and shared count.</li>
+    <li>LTE : Less than or equal. Only applicable for created time, updated time and shared count.</li>
+
+    """
+    EQUAL = 0
+    LIKE = 1
+    FULL_TEXT = 2
+    GTE = 3
+    LTE = 4
+    NOT = 5
+
+    _VALUES_TO_NAMES = {
+        0: "EQUAL",
+        1: "LIKE",
+        2: "FULL_TEXT",
+        3: "GTE",
+        4: "LTE",
+        5: "NOT",
+    }
+
+    _NAMES_TO_VALUES = {
+        "EQUAL": 0,
+        "LIKE": 1,
+        "FULL_TEXT": 2,
+        "GTE": 3,
+        "LTE": 4,
+        "NOT": 5,
+    }
+
+
+class SharingType(object):
+    """
+    <p>This is an internal enum type for managing sharings</p>
+
+    """
+    DIRECT_NON_CASCADING = 0
+    DIRECT_CASCADING = 1
+    INDIRECT_CASCADING = 2
+
+    _VALUES_TO_NAMES = {
+        0: "DIRECT_NON_CASCADING",
+        1: "DIRECT_CASCADING",
+        2: "INDIRECT_CASCADING",
+    }
+
+    _NAMES_TO_VALUES = {
+        "DIRECT_NON_CASCADING": 0,
+        "DIRECT_CASCADING": 1,
+        "INDIRECT_CASCADING": 2,
+    }
+
+
+class Domain(object):
+    """
+    <p>Domain is the entity that enables multi-tenency in this componenet. Every tenant will be
+    operating separately it's own silo which is identified by the domain id. In the current implementation domain id
+    will be same as the domain name</p>
+    <li>domainId : Will be generated by the server based on the domain name</li>
+    <li><b>name</b> : A single word name that identifies the domain e.g seagrid, ultrascan</li>
+    <li>description : A short description for the domain</li>
+    <li>createdTime : Will be set by the system</li>
+    <li>updatedTime : Will be set by the system</li>
+
+
+    Attributes:
+     - domainId
+     - name
+     - description
+     - createdTime
+     - updatedTime
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'domainId', 'UTF8', "DO_NOT_SET_AT_CLIENTS_ID", ),  # 1
+        (2, TType.STRING, 'name', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'description', 'UTF8', None, ),  # 3
+        (4, TType.I64, 'createdTime', None, None, ),  # 4
+        (5, TType.I64, 'updatedTime', None, None, ),  # 5
+    )
+
+    def __init__(self, domainId=thrift_spec[1][4], name=None, description=None, createdTime=None, updatedTime=None,):
+        self.domainId = domainId
+        self.name = name
+        self.description = description
+        self.createdTime = createdTime
+        self.updatedTime = updatedTime
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.domainId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.description = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.I64:
+                    self.createdTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.I64:
+                    self.updatedTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('Domain')
+        if self.domainId is not None:
+            oprot.writeFieldBegin('domainId', TType.STRING, 1)
+            oprot.writeString(self.domainId.encode('utf-8') if sys.version_info[0] == 2 else self.domainId)
+            oprot.writeFieldEnd()
+        if self.name is not None:
+            oprot.writeFieldBegin('name', TType.STRING, 2)
+            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
+            oprot.writeFieldEnd()
+        if self.description is not None:
+            oprot.writeFieldBegin('description', TType.STRING, 3)
+            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
+            oprot.writeFieldEnd()
+        if self.createdTime is not None:
+            oprot.writeFieldBegin('createdTime', TType.I64, 4)
+            oprot.writeI64(self.createdTime)
+            oprot.writeFieldEnd()
+        if self.updatedTime is not None:
+            oprot.writeFieldBegin('updatedTime', TType.I64, 5)
+            oprot.writeI64(self.updatedTime)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class User(object):
+    """
+    <p>User is the model used to register a user in the system. Minimal user information will be required to provide
+    regarding the user.</p>
+    <li><b>userId</b> : User id provided by the client</li>
+    <li><b>domainId</b> : Domain id for that user</li>
+    <li><b>userName</b> : User name for the user</li>
+    <li><b>firstName</b> : First name of the user</li>
+    <li><b>lastName</b> : Last name of the user</li>
+    <li><b>email</b> : Email address of the user</li>
+    <li>icon : A binary field for storing the user icon</li>
+    <li>createdTime : If client provides this value then the system will use it if not the current time will be set</li>
+    <li>updatedTime : If client provides this value then the system will use it if not the current time will be set</li>
+
+
+    Attributes:
+     - userId
+     - domainId
+     - userName
+     - firstName
+     - lastName
+     - email
+     - icon
+     - createdTime
+     - updatedTime
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'userId', 'UTF8', None, ),  # 1
+        (2, TType.STRING, 'domainId', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'userName', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'firstName', 'UTF8', None, ),  # 4
+        (5, TType.STRING, 'lastName', 'UTF8', None, ),  # 5
+        (6, TType.STRING, 'email', 'UTF8', None, ),  # 6
+        (7, TType.STRING, 'icon', 'BINARY', None, ),  # 7
+        (8, TType.I64, 'createdTime', None, None, ),  # 8
+        (9, TType.I64, 'updatedTime', None, None, ),  # 9
+    )
+
+    def __init__(self, userId=None, domainId=None, userName=None, firstName=None, lastName=None, email=None, icon=None, createdTime=None, updatedTime=None,):
+        self.userId = userId
+        self.domainId = domainId
+        self.userName = userName
+        self.firstName = firstName
+        self.lastName = lastName
+        self.email = email
+        self.icon = icon
+        self.createdTime = createdTime
+        self.updatedTime = updatedTime
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.userId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.domainId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.userName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRING:
+                    self.firstName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.STRING:
+                    self.lastName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.STRING:
+                    self.email = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 7:
+                if ftype == TType.STRING:
+                    self.icon = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 8:
+                if ftype == TType.I64:
+                    self.createdTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 9:
+                if ftype == TType.I64:
+                    self.updatedTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('User')
+        if self.userId is not None:
+            oprot.writeFieldBegin('userId', TType.STRING, 1)
+            oprot.writeString(self.userId.encode('utf-8') if sys.version_info[0] == 2 else self.userId)
+            oprot.writeFieldEnd()
+        if self.domainId is not None:
+            oprot.writeFieldBegin('domainId', TType.STRING, 2)
+            oprot.writeString(self.domainId.encode('utf-8') if sys.version_info[0] == 2 else self.domainId)
+            oprot.writeFieldEnd()
+        if self.userName is not None:
+            oprot.writeFieldBegin('userName', TType.STRING, 3)
+            oprot.writeString(self.userName.encode('utf-8') if sys.version_info[0] == 2 else self.userName)
+            oprot.writeFieldEnd()
+        if self.firstName is not None:
+            oprot.writeFieldBegin('firstName', TType.STRING, 4)
+            oprot.writeString(self.firstName.encode('utf-8') if sys.version_info[0] == 2 else self.firstName)
+            oprot.writeFieldEnd()
+        if self.lastName is not None:
+            oprot.writeFieldBegin('lastName', TType.STRING, 5)
+            oprot.writeString(self.lastName.encode('utf-8') if sys.version_info[0] == 2 else self.lastName)
+            oprot.writeFieldEnd()
+        if self.email is not None:
+            oprot.writeFieldBegin('email', TType.STRING, 6)
+            oprot.writeString(self.email.encode('utf-8') if sys.version_info[0] == 2 else self.email)
+            oprot.writeFieldEnd()
+        if self.icon is not None:
+            oprot.writeFieldBegin('icon', TType.STRING, 7)
+            oprot.writeBinary(self.icon)
+            oprot.writeFieldEnd()
+        if self.createdTime is not None:
+            oprot.writeFieldBegin('createdTime', TType.I64, 8)
+            oprot.writeI64(self.createdTime)
+            oprot.writeFieldEnd()
+        if self.updatedTime is not None:
+            oprot.writeFieldBegin('updatedTime', TType.I64, 9)
+            oprot.writeI64(self.updatedTime)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class UserGroup(object):
+    """
+    <p>User group is a collection of users.</p>
+     <li><b>groupId</b> : Group id provided by the client</li>
+     <li><b>domainId</b> : Domain id for this user group</li>
+     <li><b>name</b> : Name for the user group. should be one word</li>
+     <li>description : Short description for the group.</li>
+     <li><b>ownerId</b> : Owner id of this group.</li>
+     <li><b>groupType</b> : Group type (DOMAIN_LEVEL_GROUP, USER_LEVEL_GROUP)</li>
+     <li><b>groupCardinality</b> : Group cardinality (SINGLE_USER, MULTI_USER)</li>
+     <li>createdTime : Will be set by the system</li>
+     <li>updatedTime : Will be set by the system</li>
+     
+
+    Attributes:
+     - groupId
+     - domainId
+     - name
+     - description
+     - ownerId
+     - groupType
+     - groupCardinality
+     - createdTime
+     - updatedTime
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'groupId', 'UTF8', None, ),  # 1
+        (2, TType.STRING, 'domainId', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'name', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'description', 'UTF8', None, ),  # 4
+        (5, TType.STRING, 'ownerId', 'UTF8', None, ),  # 5
+        (6, TType.I32, 'groupType', None, None, ),  # 6
+        (7, TType.I32, 'groupCardinality', None, None, ),  # 7
+        (8, TType.I64, 'createdTime', None, None, ),  # 8
+        (9, TType.I64, 'updatedTime', None, None, ),  # 9
+    )
+
+    def __init__(self, groupId=None, domainId=None, name=None, description=None, ownerId=None, groupType=None, groupCardinality=None, createdTime=None, updatedTime=None,):
+        self.groupId = groupId
+        self.domainId = domainId
+        self.name = name
+        self.description = description
+        self.ownerId = ownerId
+        self.groupType = groupType
+        self.groupCardinality = groupCardinality
+        self.createdTime = createdTime
+        self.updatedTime = updatedTime
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.groupId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.domainId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRING:
+                    self.description = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.STRING:
+                    self.ownerId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.I32:
+                    self.groupType = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 7:
+                if ftype == TType.I32:
+                    self.groupCardinality = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 8:
+                if ftype == TType.I64:
+                    self.createdTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 9:
+                if ftype == TType.I64:
+                    self.updatedTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('UserGroup')
+        if self.groupId is not None:
+            oprot.writeFieldBegin('groupId', TType.STRING, 1)
+            oprot.writeString(self.groupId.encode('utf-8') if sys.version_info[0] == 2 else self.groupId)
+            oprot.writeFieldEnd()
+        if self.domainId is not None:
+            oprot.writeFieldBegin('domainId', TType.STRING, 2)
+            oprot.writeString(self.domainId.encode('utf-8') if sys.version_info[0] == 2 else self.domainId)
+            oprot.writeFieldEnd()
+        if self.name is not None:
+            oprot.writeFieldBegin('name', TType.STRING, 3)
+            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
+            oprot.writeFieldEnd()
+        if self.description is not None:
+            oprot.writeFieldBegin('description', TType.STRING, 4)
+            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
+            oprot.writeFieldEnd()
+        if self.ownerId is not None:
+            oprot.writeFieldBegin('ownerId', TType.STRING, 5)
+            oprot.writeString(self.ownerId.encode('utf-8') if sys.version_info[0] == 2 else self.ownerId)
+            oprot.writeFieldEnd()
+        if self.groupType is not None:
+            oprot.writeFieldBegin('groupType', TType.I32, 6)
+            oprot.writeI32(self.groupType)
+            oprot.writeFieldEnd()
+        if self.groupCardinality is not None:
+            oprot.writeFieldBegin('groupCardinality', TType.I32, 7)
+            oprot.writeI32(self.groupCardinality)
+            oprot.writeFieldEnd()
+        if self.createdTime is not None:
+            oprot.writeFieldBegin('createdTime', TType.I64, 8)
+            oprot.writeI64(self.createdTime)
+            oprot.writeFieldEnd()
+        if self.updatedTime is not None:
+            oprot.writeFieldBegin('updatedTime', TType.I64, 9)
+            oprot.writeI64(self.updatedTime)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class GroupMembership(object):
+    """
+    <p>System internal data type to map group memberships</p>
+
+
+    Attributes:
+     - parentId
+     - childId
+     - domainId
+     - childType
+     - createdTime
+     - updatedTime
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'parentId', 'UTF8', None, ),  # 1
+        (2, TType.STRING, 'childId', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'domainId', 'UTF8', None, ),  # 3
+        (4, TType.I32, 'childType', None, None, ),  # 4
+        (5, TType.I64, 'createdTime', None, None, ),  # 5
+        (6, TType.I64, 'updatedTime', None, None, ),  # 6
+    )
+
+    def __init__(self, parentId=None, childId=None, domainId=None, childType=None, createdTime=None, updatedTime=None,):
+        self.parentId = parentId
+        self.childId = childId
+        self.domainId = domainId
+        self.childType = childType
+        self.createdTime = createdTime
+        self.updatedTime = updatedTime
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.parentId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.childId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.domainId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.I32:
+                    self.childType = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.I64:
+                    self.createdTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.I64:
+                    self.updatedTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('GroupMembership')
+        if self.parentId is not None:
+            oprot.writeFieldBegin('parentId', TType.STRING, 1)
+            oprot.writeString(self.parentId.encode('utf-8') if sys.version_info[0] == 2 else self.parentId)
+            oprot.writeFieldEnd()
+        if self.childId is not None:
+            oprot.writeFieldBegin('childId', TType.STRING, 2)
+            oprot.writeString(self.childId.encode('utf-8') if sys.version_info[0] == 2 else self.childId)
+            oprot.writeFieldEnd()
+        if self.domainId is not None:
+            oprot.writeFieldBegin('domainId', TType.STRING, 3)
+            oprot.writeString(self.domainId.encode('utf-8') if sys.version_info[0] == 2 else self.domainId)
+            oprot.writeFieldEnd()
+        if self.childType is not None:
+            oprot.writeFieldBegin('childType', TType.I32, 4)
+            oprot.writeI32(self.childType)
+            oprot.writeFieldEnd()
+        if self.createdTime is not None:
+            oprot.writeFieldBegin('createdTime', TType.I64, 5)
+            oprot.writeI64(self.createdTime)
+            oprot.writeFieldEnd()
+        if self.updatedTime is not None:
+            oprot.writeFieldBegin('updatedTime', TType.I64, 6)
+            oprot.writeI64(self.updatedTime)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class EntityType(object):
+    """
+    <p>client defined entity types</p>
+    <li><b>entityTypeId</b> : Entity type id provided by the client</li>
+    <li><b>domainId</b> : Domain id of the domain.</li>
+    <li><b>name</b> : Name for the entity type. Should be a single word.</li>
+    <li>description : Short description for the entity type.</li>
+    <li>createdTime : Will be set by the system</li>
+    <li>updatedTime : Will be set by the system</li>
+
+
+    Attributes:
+     - entityTypeId
+     - domainId
+     - name
+     - description
+     - createdTime
+     - updatedTime
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'entityTypeId', 'UTF8', None, ),  # 1
+        (2, TType.STRING, 'domainId', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'name', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'description', 'UTF8', None, ),  # 4
+        (5, TType.I64, 'createdTime', None, None, ),  # 5
+        (6, TType.I64, 'updatedTime', None, None, ),  # 6
+    )
+
+    def __init__(self, entityTypeId=None, domainId=None, name=None, description=None, createdTime=None, updatedTime=None,):
+        self.entityTypeId = entityTypeId
+        self.domainId = domainId
+        self.name = name
+        self.description = description
+        self.createdTime = createdTime
+        self.updatedTime = updatedTime
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.entityTypeId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.domainId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRING:
+                    self.description = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.I64:
+                    self.createdTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.I64:
+                    self.updatedTime = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, self.thrift_spec)))
+            return
+        oprot.writeStructBegin('EntityType')
+        if self.entityTypeId is not None:
+            oprot.writeFieldBegin('entityTypeId', TType.STRING, 1)
+            oprot.writeString(self.entityTypeId.encode('utf-8') if sys.version_info[0] == 2 else self.entityTypeId)
+            oprot.writeFieldEnd()
+        if self.domainId is not None:
+            oprot.writeFieldBegin('domainId', TType.STRING, 2)
+            oprot.writeString(self.domainId.encode('utf-8') if sys.version_info[0] == 2 else self.domainId)
+            oprot.writeFieldEnd()
+        if self.name is not None:
+            oprot.writeFieldBegin('name', TType.STRING, 3)
+            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
+            oprot.writeFieldEnd()
+        if self.description is not None:
+            oprot.writeFieldBegin('description', TType.STRING, 4)
+            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
+            oprot.writeFieldEnd()
+        if self.createdTime is not None:
+            oprot.writeFieldBegin('createdTime', TType.I64, 5)
+            oprot.writeI64(self.createdTime)
+            oprot.writeFieldEnd()
+        if self.updatedTime is not None:
+            oprot.writeFieldBegin('updatedTime', TType.I64, 6)
+            oprot.writeI64(self.updatedTime)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class SearchCriteria(object):
+    """
+    <p>Container object for search criteria</p>
+    <li><b>searchField</b> : Entity search field</li>
+    <li><b>value</b> : Search value</li>
+    <li><b>searchCondition</b> : EQUAL, LIKE etc..</li>
+
+
+    Attributes:
+     - searchField
+     - value
+     - searchCondition
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.I32, 'searchField', None, None, ),  # 1
+        (2, TType.STRING, 'value', 'UTF8', None, ),  # 2
+        (3, TType.I32, 'searchCondition', None, None, ),  # 3
+    )
+
+    def __init__(self, searchField=None, value=None, searchCondition=None,):
+        self.searchField = searchField
+        self.value = value
+        self.searchCondition = searchCondition
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.I32:
+                    self.searchField = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.value

<TRUNCATED>