# -*- coding: utf-8 -*-
# Auto-generated by Stone, do not modify.
# @generated
# flake8: noqa
# pylint: skip-file
try:
    from . import stone_validators as bv
    from . import stone_base as bb
except (ImportError, SystemError, ValueError):
    # Catch errors raised when importing a relative module when not in a package.
    # This makes testing this file directly (outside of a package) easier.
    import stone_validators as bv
    import stone_base as bb

try:
    from . import (
        common,
        file_requests,
        files,
        sharing,
        team,
        team_common,
        team_policies,
        users_common,
    )
except (ImportError, SystemError, ValueError):
    import common
    import file_requests
    import files
    import sharing
    import team
    import team_common
    import team_policies
    import users_common

class AccessMethodLogInfo(bb.Union):
    """
    Indicates the method in which the action was performed.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar SessionLogInfo AccessMethodLogInfo.end_user: End user session details.
    :ivar WebSessionLogInfo AccessMethodLogInfo.sign_in_as: Sign in as session
        details.
    :ivar WebSessionLogInfo AccessMethodLogInfo.content_manager: Content manager
        session details.
    :ivar WebSessionLogInfo AccessMethodLogInfo.admin_console: Admin console
        session details.
    :ivar ApiSessionLogInfo AccessMethodLogInfo.api: Api session details.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def end_user(cls, val):
        """
        Create an instance of this class set to the ``end_user`` tag with value
        ``val``.

        :param SessionLogInfo val:
        :rtype: AccessMethodLogInfo
        """
        return cls('end_user', val)

    @classmethod
    def sign_in_as(cls, val):
        """
        Create an instance of this class set to the ``sign_in_as`` tag with
        value ``val``.

        :param WebSessionLogInfo val:
        :rtype: AccessMethodLogInfo
        """
        return cls('sign_in_as', val)

    @classmethod
    def content_manager(cls, val):
        """
        Create an instance of this class set to the ``content_manager`` tag with
        value ``val``.

        :param WebSessionLogInfo val:
        :rtype: AccessMethodLogInfo
        """
        return cls('content_manager', val)

    @classmethod
    def admin_console(cls, val):
        """
        Create an instance of this class set to the ``admin_console`` tag with
        value ``val``.

        :param WebSessionLogInfo val:
        :rtype: AccessMethodLogInfo
        """
        return cls('admin_console', val)

    @classmethod
    def api(cls, val):
        """
        Create an instance of this class set to the ``api`` tag with value
        ``val``.

        :param ApiSessionLogInfo val:
        :rtype: AccessMethodLogInfo
        """
        return cls('api', val)

    def is_end_user(self):
        """
        Check if the union tag is ``end_user``.

        :rtype: bool
        """
        return self._tag == 'end_user'

    def is_sign_in_as(self):
        """
        Check if the union tag is ``sign_in_as``.

        :rtype: bool
        """
        return self._tag == 'sign_in_as'

    def is_content_manager(self):
        """
        Check if the union tag is ``content_manager``.

        :rtype: bool
        """
        return self._tag == 'content_manager'

    def is_admin_console(self):
        """
        Check if the union tag is ``admin_console``.

        :rtype: bool
        """
        return self._tag == 'admin_console'

    def is_api(self):
        """
        Check if the union tag is ``api``.

        :rtype: bool
        """
        return self._tag == 'api'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_end_user(self):
        """
        End user session details.

        Only call this if :meth:`is_end_user` is true.

        :rtype: SessionLogInfo
        """
        if not self.is_end_user():
            raise AttributeError("tag 'end_user' not set")
        return self._value

    def get_sign_in_as(self):
        """
        Sign in as session details.

        Only call this if :meth:`is_sign_in_as` is true.

        :rtype: WebSessionLogInfo
        """
        if not self.is_sign_in_as():
            raise AttributeError("tag 'sign_in_as' not set")
        return self._value

    def get_content_manager(self):
        """
        Content manager session details.

        Only call this if :meth:`is_content_manager` is true.

        :rtype: WebSessionLogInfo
        """
        if not self.is_content_manager():
            raise AttributeError("tag 'content_manager' not set")
        return self._value

    def get_admin_console(self):
        """
        Admin console session details.

        Only call this if :meth:`is_admin_console` is true.

        :rtype: WebSessionLogInfo
        """
        if not self.is_admin_console():
            raise AttributeError("tag 'admin_console' not set")
        return self._value

    def get_api(self):
        """
        Api session details.

        Only call this if :meth:`is_api` is true.

        :rtype: ApiSessionLogInfo
        """
        if not self.is_api():
            raise AttributeError("tag 'api' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AccessMethodLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AccessMethodLogInfo(%r, %r)' % (self._tag, self._value)

AccessMethodLogInfo_validator = bv.Union(AccessMethodLogInfo)

class AccountCaptureAvailability(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    unavailable = None
    # Attribute is overwritten below the class definition
    available = None
    # Attribute is overwritten below the class definition
    other = None

    def is_unavailable(self):
        """
        Check if the union tag is ``unavailable``.

        :rtype: bool
        """
        return self._tag == 'unavailable'

    def is_available(self):
        """
        Check if the union tag is ``available``.

        :rtype: bool
        """
        return self._tag == 'available'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AccountCaptureAvailability, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AccountCaptureAvailability(%r, %r)' % (self._tag, self._value)

AccountCaptureAvailability_validator = bv.Union(AccountCaptureAvailability)

class AccountCaptureChangeAvailabilityDetails(bb.Struct):
    """
    Granted/revoked option to enable account capture on team domains.

    :ivar team_log.AccountCaptureChangeAvailabilityDetails.new_value: New
        account capture availabilty value.
    :ivar team_log.AccountCaptureChangeAvailabilityDetails.previous_value:
        Previous account capture availabilty value. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New account capture availabilty value.

        :rtype: AccountCaptureAvailability
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous account capture availabilty value. Might be missing due to
        historical data gap.

        :rtype: AccountCaptureAvailability
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AccountCaptureChangeAvailabilityDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AccountCaptureChangeAvailabilityDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

AccountCaptureChangeAvailabilityDetails_validator = bv.Struct(AccountCaptureChangeAvailabilityDetails)

class AccountCaptureChangeAvailabilityType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AccountCaptureChangeAvailabilityType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AccountCaptureChangeAvailabilityType(description={!r})'.format(
            self._description_value,
        )

AccountCaptureChangeAvailabilityType_validator = bv.Struct(AccountCaptureChangeAvailabilityType)

class AccountCaptureChangePolicyDetails(bb.Struct):
    """
    Changed account capture setting on team domain.

    :ivar team_log.AccountCaptureChangePolicyDetails.new_value: New account
        capture policy.
    :ivar team_log.AccountCaptureChangePolicyDetails.previous_value: Previous
        account capture policy. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New account capture policy.

        :rtype: AccountCapturePolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous account capture policy. Might be missing due to historical data
        gap.

        :rtype: AccountCapturePolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AccountCaptureChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AccountCaptureChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

AccountCaptureChangePolicyDetails_validator = bv.Struct(AccountCaptureChangePolicyDetails)

class AccountCaptureChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AccountCaptureChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AccountCaptureChangePolicyType(description={!r})'.format(
            self._description_value,
        )

AccountCaptureChangePolicyType_validator = bv.Struct(AccountCaptureChangePolicyType)

class AccountCaptureMigrateAccountDetails(bb.Struct):
    """
    Account-captured user migrated account to team.

    :ivar team_log.AccountCaptureMigrateAccountDetails.domain_name: Domain name.
    """

    __slots__ = [
        '_domain_name_value',
        '_domain_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 domain_name=None):
        self._domain_name_value = None
        self._domain_name_present = False
        if domain_name is not None:
            self.domain_name = domain_name

    @property
    def domain_name(self):
        """
        Domain name.

        :rtype: str
        """
        if self._domain_name_present:
            return self._domain_name_value
        else:
            raise AttributeError("missing required field 'domain_name'")

    @domain_name.setter
    def domain_name(self, val):
        val = self._domain_name_validator.validate(val)
        self._domain_name_value = val
        self._domain_name_present = True

    @domain_name.deleter
    def domain_name(self):
        self._domain_name_value = None
        self._domain_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AccountCaptureMigrateAccountDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AccountCaptureMigrateAccountDetails(domain_name={!r})'.format(
            self._domain_name_value,
        )

AccountCaptureMigrateAccountDetails_validator = bv.Struct(AccountCaptureMigrateAccountDetails)

class AccountCaptureMigrateAccountType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AccountCaptureMigrateAccountType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AccountCaptureMigrateAccountType(description={!r})'.format(
            self._description_value,
        )

AccountCaptureMigrateAccountType_validator = bv.Struct(AccountCaptureMigrateAccountType)

class AccountCaptureNotificationEmailsSentDetails(bb.Struct):
    """
    Sent proactive account capture email to all unmanaged members.

    :ivar team_log.AccountCaptureNotificationEmailsSentDetails.domain_name:
        Domain name.
    """

    __slots__ = [
        '_domain_name_value',
        '_domain_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 domain_name=None):
        self._domain_name_value = None
        self._domain_name_present = False
        if domain_name is not None:
            self.domain_name = domain_name

    @property
    def domain_name(self):
        """
        Domain name.

        :rtype: str
        """
        if self._domain_name_present:
            return self._domain_name_value
        else:
            raise AttributeError("missing required field 'domain_name'")

    @domain_name.setter
    def domain_name(self, val):
        val = self._domain_name_validator.validate(val)
        self._domain_name_value = val
        self._domain_name_present = True

    @domain_name.deleter
    def domain_name(self):
        self._domain_name_value = None
        self._domain_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AccountCaptureNotificationEmailsSentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AccountCaptureNotificationEmailsSentDetails(domain_name={!r})'.format(
            self._domain_name_value,
        )

AccountCaptureNotificationEmailsSentDetails_validator = bv.Struct(AccountCaptureNotificationEmailsSentDetails)

class AccountCaptureNotificationEmailsSentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AccountCaptureNotificationEmailsSentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AccountCaptureNotificationEmailsSentType(description={!r})'.format(
            self._description_value,
        )

AccountCaptureNotificationEmailsSentType_validator = bv.Struct(AccountCaptureNotificationEmailsSentType)

class AccountCapturePolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    invited_users = None
    # Attribute is overwritten below the class definition
    all_users = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_invited_users(self):
        """
        Check if the union tag is ``invited_users``.

        :rtype: bool
        """
        return self._tag == 'invited_users'

    def is_all_users(self):
        """
        Check if the union tag is ``all_users``.

        :rtype: bool
        """
        return self._tag == 'all_users'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AccountCapturePolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AccountCapturePolicy(%r, %r)' % (self._tag, self._value)

AccountCapturePolicy_validator = bv.Union(AccountCapturePolicy)

class AccountCaptureRelinquishAccountDetails(bb.Struct):
    """
    Account-captured user changed account email to personal email.

    :ivar team_log.AccountCaptureRelinquishAccountDetails.domain_name: Domain
        name.
    """

    __slots__ = [
        '_domain_name_value',
        '_domain_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 domain_name=None):
        self._domain_name_value = None
        self._domain_name_present = False
        if domain_name is not None:
            self.domain_name = domain_name

    @property
    def domain_name(self):
        """
        Domain name.

        :rtype: str
        """
        if self._domain_name_present:
            return self._domain_name_value
        else:
            raise AttributeError("missing required field 'domain_name'")

    @domain_name.setter
    def domain_name(self, val):
        val = self._domain_name_validator.validate(val)
        self._domain_name_value = val
        self._domain_name_present = True

    @domain_name.deleter
    def domain_name(self):
        self._domain_name_value = None
        self._domain_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AccountCaptureRelinquishAccountDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AccountCaptureRelinquishAccountDetails(domain_name={!r})'.format(
            self._domain_name_value,
        )

AccountCaptureRelinquishAccountDetails_validator = bv.Struct(AccountCaptureRelinquishAccountDetails)

class AccountCaptureRelinquishAccountType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AccountCaptureRelinquishAccountType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AccountCaptureRelinquishAccountType(description={!r})'.format(
            self._description_value,
        )

AccountCaptureRelinquishAccountType_validator = bv.Struct(AccountCaptureRelinquishAccountType)

class ActionDetails(bb.Union):
    """
    Additional information indicating the action taken that caused status
    change.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar JoinTeamDetails ActionDetails.team_join_details: Additional
        information relevant when a new member joins the team.
    :ivar MemberRemoveActionType ActionDetails.remove_action: Define how the
        user was removed from the team.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def team_join_details(cls, val):
        """
        Create an instance of this class set to the ``team_join_details`` tag
        with value ``val``.

        :param JoinTeamDetails val:
        :rtype: ActionDetails
        """
        return cls('team_join_details', val)

    @classmethod
    def remove_action(cls, val):
        """
        Create an instance of this class set to the ``remove_action`` tag with
        value ``val``.

        :param MemberRemoveActionType val:
        :rtype: ActionDetails
        """
        return cls('remove_action', val)

    def is_team_join_details(self):
        """
        Check if the union tag is ``team_join_details``.

        :rtype: bool
        """
        return self._tag == 'team_join_details'

    def is_remove_action(self):
        """
        Check if the union tag is ``remove_action``.

        :rtype: bool
        """
        return self._tag == 'remove_action'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_team_join_details(self):
        """
        Additional information relevant when a new member joins the team.

        Only call this if :meth:`is_team_join_details` is true.

        :rtype: JoinTeamDetails
        """
        if not self.is_team_join_details():
            raise AttributeError("tag 'team_join_details' not set")
        return self._value

    def get_remove_action(self):
        """
        Define how the user was removed from the team.

        Only call this if :meth:`is_remove_action` is true.

        :rtype: MemberRemoveActionType
        """
        if not self.is_remove_action():
            raise AttributeError("tag 'remove_action' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ActionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ActionDetails(%r, %r)' % (self._tag, self._value)

ActionDetails_validator = bv.Union(ActionDetails)

class ActorLogInfo(bb.Union):
    """
    The entity who performed the action.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar UserLogInfo ActorLogInfo.user: The user who did the action.
    :ivar UserLogInfo ActorLogInfo.admin: The admin who did the action.
    :ivar AppLogInfo ActorLogInfo.app: The application who did the action.
    :ivar ResellerLogInfo ActorLogInfo.reseller: Action done by reseller.
    :ivar team_log.ActorLogInfo.dropbox: Action done by Dropbox.
    :ivar team_log.ActorLogInfo.anonymous: Anonymous actor.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    dropbox = None
    # Attribute is overwritten below the class definition
    anonymous = None
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def user(cls, val):
        """
        Create an instance of this class set to the ``user`` tag with value
        ``val``.

        :param UserLogInfo val:
        :rtype: ActorLogInfo
        """
        return cls('user', val)

    @classmethod
    def admin(cls, val):
        """
        Create an instance of this class set to the ``admin`` tag with value
        ``val``.

        :param UserLogInfo val:
        :rtype: ActorLogInfo
        """
        return cls('admin', val)

    @classmethod
    def app(cls, val):
        """
        Create an instance of this class set to the ``app`` tag with value
        ``val``.

        :param AppLogInfo val:
        :rtype: ActorLogInfo
        """
        return cls('app', val)

    @classmethod
    def reseller(cls, val):
        """
        Create an instance of this class set to the ``reseller`` tag with value
        ``val``.

        :param ResellerLogInfo val:
        :rtype: ActorLogInfo
        """
        return cls('reseller', val)

    def is_user(self):
        """
        Check if the union tag is ``user``.

        :rtype: bool
        """
        return self._tag == 'user'

    def is_admin(self):
        """
        Check if the union tag is ``admin``.

        :rtype: bool
        """
        return self._tag == 'admin'

    def is_app(self):
        """
        Check if the union tag is ``app``.

        :rtype: bool
        """
        return self._tag == 'app'

    def is_reseller(self):
        """
        Check if the union tag is ``reseller``.

        :rtype: bool
        """
        return self._tag == 'reseller'

    def is_dropbox(self):
        """
        Check if the union tag is ``dropbox``.

        :rtype: bool
        """
        return self._tag == 'dropbox'

    def is_anonymous(self):
        """
        Check if the union tag is ``anonymous``.

        :rtype: bool
        """
        return self._tag == 'anonymous'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_user(self):
        """
        The user who did the action.

        Only call this if :meth:`is_user` is true.

        :rtype: UserLogInfo
        """
        if not self.is_user():
            raise AttributeError("tag 'user' not set")
        return self._value

    def get_admin(self):
        """
        The admin who did the action.

        Only call this if :meth:`is_admin` is true.

        :rtype: UserLogInfo
        """
        if not self.is_admin():
            raise AttributeError("tag 'admin' not set")
        return self._value

    def get_app(self):
        """
        The application who did the action.

        Only call this if :meth:`is_app` is true.

        :rtype: AppLogInfo
        """
        if not self.is_app():
            raise AttributeError("tag 'app' not set")
        return self._value

    def get_reseller(self):
        """
        Action done by reseller.

        Only call this if :meth:`is_reseller` is true.

        :rtype: ResellerLogInfo
        """
        if not self.is_reseller():
            raise AttributeError("tag 'reseller' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ActorLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ActorLogInfo(%r, %r)' % (self._tag, self._value)

ActorLogInfo_validator = bv.Union(ActorLogInfo)

class AdminRole(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    team_admin = None
    # Attribute is overwritten below the class definition
    user_management_admin = None
    # Attribute is overwritten below the class definition
    support_admin = None
    # Attribute is overwritten below the class definition
    limited_admin = None
    # Attribute is overwritten below the class definition
    member_only = None
    # Attribute is overwritten below the class definition
    other = None

    def is_team_admin(self):
        """
        Check if the union tag is ``team_admin``.

        :rtype: bool
        """
        return self._tag == 'team_admin'

    def is_user_management_admin(self):
        """
        Check if the union tag is ``user_management_admin``.

        :rtype: bool
        """
        return self._tag == 'user_management_admin'

    def is_support_admin(self):
        """
        Check if the union tag is ``support_admin``.

        :rtype: bool
        """
        return self._tag == 'support_admin'

    def is_limited_admin(self):
        """
        Check if the union tag is ``limited_admin``.

        :rtype: bool
        """
        return self._tag == 'limited_admin'

    def is_member_only(self):
        """
        Check if the union tag is ``member_only``.

        :rtype: bool
        """
        return self._tag == 'member_only'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AdminRole, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AdminRole(%r, %r)' % (self._tag, self._value)

AdminRole_validator = bv.Union(AdminRole)

class AllowDownloadDisabledDetails(bb.Struct):
    """
    Disabled downloads.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AllowDownloadDisabledDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AllowDownloadDisabledDetails()'

AllowDownloadDisabledDetails_validator = bv.Struct(AllowDownloadDisabledDetails)

class AllowDownloadDisabledType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AllowDownloadDisabledType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AllowDownloadDisabledType(description={!r})'.format(
            self._description_value,
        )

AllowDownloadDisabledType_validator = bv.Struct(AllowDownloadDisabledType)

class AllowDownloadEnabledDetails(bb.Struct):
    """
    Enabled downloads.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AllowDownloadEnabledDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AllowDownloadEnabledDetails()'

AllowDownloadEnabledDetails_validator = bv.Struct(AllowDownloadEnabledDetails)

class AllowDownloadEnabledType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AllowDownloadEnabledType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AllowDownloadEnabledType(description={!r})'.format(
            self._description_value,
        )

AllowDownloadEnabledType_validator = bv.Struct(AllowDownloadEnabledType)

class ApiSessionLogInfo(bb.Struct):
    """
    Api session.

    :ivar team_log.ApiSessionLogInfo.request_id: Api request ID.
    """

    __slots__ = [
        '_request_id_value',
        '_request_id_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 request_id=None):
        self._request_id_value = None
        self._request_id_present = False
        if request_id is not None:
            self.request_id = request_id

    @property
    def request_id(self):
        """
        Api request ID.

        :rtype: str
        """
        if self._request_id_present:
            return self._request_id_value
        else:
            raise AttributeError("missing required field 'request_id'")

    @request_id.setter
    def request_id(self, val):
        val = self._request_id_validator.validate(val)
        self._request_id_value = val
        self._request_id_present = True

    @request_id.deleter
    def request_id(self):
        self._request_id_value = None
        self._request_id_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ApiSessionLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ApiSessionLogInfo(request_id={!r})'.format(
            self._request_id_value,
        )

ApiSessionLogInfo_validator = bv.Struct(ApiSessionLogInfo)

class AppLinkTeamDetails(bb.Struct):
    """
    Linked app for team.

    :ivar team_log.AppLinkTeamDetails.app_info: Relevant application details.
    """

    __slots__ = [
        '_app_info_value',
        '_app_info_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 app_info=None):
        self._app_info_value = None
        self._app_info_present = False
        if app_info is not None:
            self.app_info = app_info

    @property
    def app_info(self):
        """
        Relevant application details.

        :rtype: AppLogInfo
        """
        if self._app_info_present:
            return self._app_info_value
        else:
            raise AttributeError("missing required field 'app_info'")

    @app_info.setter
    def app_info(self, val):
        self._app_info_validator.validate_type_only(val)
        self._app_info_value = val
        self._app_info_present = True

    @app_info.deleter
    def app_info(self):
        self._app_info_value = None
        self._app_info_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AppLinkTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AppLinkTeamDetails(app_info={!r})'.format(
            self._app_info_value,
        )

AppLinkTeamDetails_validator = bv.Struct(AppLinkTeamDetails)

class AppLinkTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AppLinkTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AppLinkTeamType(description={!r})'.format(
            self._description_value,
        )

AppLinkTeamType_validator = bv.Struct(AppLinkTeamType)

class AppLinkUserDetails(bb.Struct):
    """
    Linked app for member.

    :ivar team_log.AppLinkUserDetails.app_info: Relevant application details.
    """

    __slots__ = [
        '_app_info_value',
        '_app_info_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 app_info=None):
        self._app_info_value = None
        self._app_info_present = False
        if app_info is not None:
            self.app_info = app_info

    @property
    def app_info(self):
        """
        Relevant application details.

        :rtype: AppLogInfo
        """
        if self._app_info_present:
            return self._app_info_value
        else:
            raise AttributeError("missing required field 'app_info'")

    @app_info.setter
    def app_info(self, val):
        self._app_info_validator.validate_type_only(val)
        self._app_info_value = val
        self._app_info_present = True

    @app_info.deleter
    def app_info(self):
        self._app_info_value = None
        self._app_info_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AppLinkUserDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AppLinkUserDetails(app_info={!r})'.format(
            self._app_info_value,
        )

AppLinkUserDetails_validator = bv.Struct(AppLinkUserDetails)

class AppLinkUserType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AppLinkUserType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AppLinkUserType(description={!r})'.format(
            self._description_value,
        )

AppLinkUserType_validator = bv.Struct(AppLinkUserType)

class AppLogInfo(bb.Struct):
    """
    App's logged information.

    :ivar team_log.AppLogInfo.app_id: App unique ID. Might be missing due to
        historical data gap.
    :ivar team_log.AppLogInfo.display_name: App display name. Might be missing
        due to historical data gap.
    """

    __slots__ = [
        '_app_id_value',
        '_app_id_present',
        '_display_name_value',
        '_display_name_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 app_id=None,
                 display_name=None):
        self._app_id_value = None
        self._app_id_present = False
        self._display_name_value = None
        self._display_name_present = False
        if app_id is not None:
            self.app_id = app_id
        if display_name is not None:
            self.display_name = display_name

    @property
    def app_id(self):
        """
        App unique ID. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._app_id_present:
            return self._app_id_value
        else:
            return None

    @app_id.setter
    def app_id(self, val):
        if val is None:
            del self.app_id
            return
        val = self._app_id_validator.validate(val)
        self._app_id_value = val
        self._app_id_present = True

    @app_id.deleter
    def app_id(self):
        self._app_id_value = None
        self._app_id_present = False

    @property
    def display_name(self):
        """
        App display name. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._display_name_present:
            return self._display_name_value
        else:
            return None

    @display_name.setter
    def display_name(self, val):
        if val is None:
            del self.display_name
            return
        val = self._display_name_validator.validate(val)
        self._display_name_value = val
        self._display_name_present = True

    @display_name.deleter
    def display_name(self):
        self._display_name_value = None
        self._display_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AppLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AppLogInfo(app_id={!r}, display_name={!r})'.format(
            self._app_id_value,
            self._display_name_value,
        )

AppLogInfo_validator = bv.StructTree(AppLogInfo)

class AppUnlinkTeamDetails(bb.Struct):
    """
    Unlinked app for team.

    :ivar team_log.AppUnlinkTeamDetails.app_info: Relevant application details.
    """

    __slots__ = [
        '_app_info_value',
        '_app_info_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 app_info=None):
        self._app_info_value = None
        self._app_info_present = False
        if app_info is not None:
            self.app_info = app_info

    @property
    def app_info(self):
        """
        Relevant application details.

        :rtype: AppLogInfo
        """
        if self._app_info_present:
            return self._app_info_value
        else:
            raise AttributeError("missing required field 'app_info'")

    @app_info.setter
    def app_info(self, val):
        self._app_info_validator.validate_type_only(val)
        self._app_info_value = val
        self._app_info_present = True

    @app_info.deleter
    def app_info(self):
        self._app_info_value = None
        self._app_info_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AppUnlinkTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AppUnlinkTeamDetails(app_info={!r})'.format(
            self._app_info_value,
        )

AppUnlinkTeamDetails_validator = bv.Struct(AppUnlinkTeamDetails)

class AppUnlinkTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AppUnlinkTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AppUnlinkTeamType(description={!r})'.format(
            self._description_value,
        )

AppUnlinkTeamType_validator = bv.Struct(AppUnlinkTeamType)

class AppUnlinkUserDetails(bb.Struct):
    """
    Unlinked app for member.

    :ivar team_log.AppUnlinkUserDetails.app_info: Relevant application details.
    """

    __slots__ = [
        '_app_info_value',
        '_app_info_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 app_info=None):
        self._app_info_value = None
        self._app_info_present = False
        if app_info is not None:
            self.app_info = app_info

    @property
    def app_info(self):
        """
        Relevant application details.

        :rtype: AppLogInfo
        """
        if self._app_info_present:
            return self._app_info_value
        else:
            raise AttributeError("missing required field 'app_info'")

    @app_info.setter
    def app_info(self, val):
        self._app_info_validator.validate_type_only(val)
        self._app_info_value = val
        self._app_info_present = True

    @app_info.deleter
    def app_info(self):
        self._app_info_value = None
        self._app_info_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AppUnlinkUserDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AppUnlinkUserDetails(app_info={!r})'.format(
            self._app_info_value,
        )

AppUnlinkUserDetails_validator = bv.Struct(AppUnlinkUserDetails)

class AppUnlinkUserType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AppUnlinkUserType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AppUnlinkUserType(description={!r})'.format(
            self._description_value,
        )

AppUnlinkUserType_validator = bv.Struct(AppUnlinkUserType)

class AssetLogInfo(bb.Union):
    """
    Asset details.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar FileLogInfo AssetLogInfo.file: File's details.
    :ivar FolderLogInfo AssetLogInfo.folder: Folder's details.
    :ivar PaperDocumentLogInfo AssetLogInfo.paper_document: Paper document's
        details.
    :ivar PaperFolderLogInfo AssetLogInfo.paper_folder: Paper folder's details.
    :ivar ShowcaseDocumentLogInfo AssetLogInfo.showcase_document: Showcase
        document's details.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def file(cls, val):
        """
        Create an instance of this class set to the ``file`` tag with value
        ``val``.

        :param FileLogInfo val:
        :rtype: AssetLogInfo
        """
        return cls('file', val)

    @classmethod
    def folder(cls, val):
        """
        Create an instance of this class set to the ``folder`` tag with value
        ``val``.

        :param FolderLogInfo val:
        :rtype: AssetLogInfo
        """
        return cls('folder', val)

    @classmethod
    def paper_document(cls, val):
        """
        Create an instance of this class set to the ``paper_document`` tag with
        value ``val``.

        :param PaperDocumentLogInfo val:
        :rtype: AssetLogInfo
        """
        return cls('paper_document', val)

    @classmethod
    def paper_folder(cls, val):
        """
        Create an instance of this class set to the ``paper_folder`` tag with
        value ``val``.

        :param PaperFolderLogInfo val:
        :rtype: AssetLogInfo
        """
        return cls('paper_folder', val)

    @classmethod
    def showcase_document(cls, val):
        """
        Create an instance of this class set to the ``showcase_document`` tag
        with value ``val``.

        :param ShowcaseDocumentLogInfo val:
        :rtype: AssetLogInfo
        """
        return cls('showcase_document', val)

    def is_file(self):
        """
        Check if the union tag is ``file``.

        :rtype: bool
        """
        return self._tag == 'file'

    def is_folder(self):
        """
        Check if the union tag is ``folder``.

        :rtype: bool
        """
        return self._tag == 'folder'

    def is_paper_document(self):
        """
        Check if the union tag is ``paper_document``.

        :rtype: bool
        """
        return self._tag == 'paper_document'

    def is_paper_folder(self):
        """
        Check if the union tag is ``paper_folder``.

        :rtype: bool
        """
        return self._tag == 'paper_folder'

    def is_showcase_document(self):
        """
        Check if the union tag is ``showcase_document``.

        :rtype: bool
        """
        return self._tag == 'showcase_document'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_file(self):
        """
        File's details.

        Only call this if :meth:`is_file` is true.

        :rtype: FileLogInfo
        """
        if not self.is_file():
            raise AttributeError("tag 'file' not set")
        return self._value

    def get_folder(self):
        """
        Folder's details.

        Only call this if :meth:`is_folder` is true.

        :rtype: FolderLogInfo
        """
        if not self.is_folder():
            raise AttributeError("tag 'folder' not set")
        return self._value

    def get_paper_document(self):
        """
        Paper document's details.

        Only call this if :meth:`is_paper_document` is true.

        :rtype: PaperDocumentLogInfo
        """
        if not self.is_paper_document():
            raise AttributeError("tag 'paper_document' not set")
        return self._value

    def get_paper_folder(self):
        """
        Paper folder's details.

        Only call this if :meth:`is_paper_folder` is true.

        :rtype: PaperFolderLogInfo
        """
        if not self.is_paper_folder():
            raise AttributeError("tag 'paper_folder' not set")
        return self._value

    def get_showcase_document(self):
        """
        Showcase document's details.

        Only call this if :meth:`is_showcase_document` is true.

        :rtype: ShowcaseDocumentLogInfo
        """
        if not self.is_showcase_document():
            raise AttributeError("tag 'showcase_document' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(AssetLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'AssetLogInfo(%r, %r)' % (self._tag, self._value)

AssetLogInfo_validator = bv.Union(AssetLogInfo)

class CameraUploadsPolicy(bb.Union):
    """
    Policy for controlling if team members can activate camera uploads

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(CameraUploadsPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'CameraUploadsPolicy(%r, %r)' % (self._tag, self._value)

CameraUploadsPolicy_validator = bv.Union(CameraUploadsPolicy)

class CameraUploadsPolicyChangedDetails(bb.Struct):
    """
    Changed camera uploads setting for team.

    :ivar team_log.CameraUploadsPolicyChangedDetails.new_value: New camera
        uploads setting.
    :ivar team_log.CameraUploadsPolicyChangedDetails.previous_value: Previous
        camera uploads setting.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New camera uploads setting.

        :rtype: CameraUploadsPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous camera uploads setting.

        :rtype: CameraUploadsPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(CameraUploadsPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'CameraUploadsPolicyChangedDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

CameraUploadsPolicyChangedDetails_validator = bv.Struct(CameraUploadsPolicyChangedDetails)

class CameraUploadsPolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(CameraUploadsPolicyChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'CameraUploadsPolicyChangedType(description={!r})'.format(
            self._description_value,
        )

CameraUploadsPolicyChangedType_validator = bv.Struct(CameraUploadsPolicyChangedType)

class Certificate(bb.Struct):
    """
    Certificate details.

    :ivar team_log.Certificate.subject: Certificate subject.
    :ivar team_log.Certificate.issuer: Certificate issuer.
    :ivar team_log.Certificate.issue_date: Certificate issue date.
    :ivar team_log.Certificate.expiration_date: Certificate expiration date.
    :ivar team_log.Certificate.serial_number: Certificate serial number.
    :ivar team_log.Certificate.sha1_fingerprint: Certificate sha1 fingerprint.
    :ivar team_log.Certificate.common_name: Certificate common name.
    """

    __slots__ = [
        '_subject_value',
        '_subject_present',
        '_issuer_value',
        '_issuer_present',
        '_issue_date_value',
        '_issue_date_present',
        '_expiration_date_value',
        '_expiration_date_present',
        '_serial_number_value',
        '_serial_number_present',
        '_sha1_fingerprint_value',
        '_sha1_fingerprint_present',
        '_common_name_value',
        '_common_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 subject=None,
                 issuer=None,
                 issue_date=None,
                 expiration_date=None,
                 serial_number=None,
                 sha1_fingerprint=None,
                 common_name=None):
        self._subject_value = None
        self._subject_present = False
        self._issuer_value = None
        self._issuer_present = False
        self._issue_date_value = None
        self._issue_date_present = False
        self._expiration_date_value = None
        self._expiration_date_present = False
        self._serial_number_value = None
        self._serial_number_present = False
        self._sha1_fingerprint_value = None
        self._sha1_fingerprint_present = False
        self._common_name_value = None
        self._common_name_present = False
        if subject is not None:
            self.subject = subject
        if issuer is not None:
            self.issuer = issuer
        if issue_date is not None:
            self.issue_date = issue_date
        if expiration_date is not None:
            self.expiration_date = expiration_date
        if serial_number is not None:
            self.serial_number = serial_number
        if sha1_fingerprint is not None:
            self.sha1_fingerprint = sha1_fingerprint
        if common_name is not None:
            self.common_name = common_name

    @property
    def subject(self):
        """
        Certificate subject.

        :rtype: str
        """
        if self._subject_present:
            return self._subject_value
        else:
            raise AttributeError("missing required field 'subject'")

    @subject.setter
    def subject(self, val):
        val = self._subject_validator.validate(val)
        self._subject_value = val
        self._subject_present = True

    @subject.deleter
    def subject(self):
        self._subject_value = None
        self._subject_present = False

    @property
    def issuer(self):
        """
        Certificate issuer.

        :rtype: str
        """
        if self._issuer_present:
            return self._issuer_value
        else:
            raise AttributeError("missing required field 'issuer'")

    @issuer.setter
    def issuer(self, val):
        val = self._issuer_validator.validate(val)
        self._issuer_value = val
        self._issuer_present = True

    @issuer.deleter
    def issuer(self):
        self._issuer_value = None
        self._issuer_present = False

    @property
    def issue_date(self):
        """
        Certificate issue date.

        :rtype: str
        """
        if self._issue_date_present:
            return self._issue_date_value
        else:
            raise AttributeError("missing required field 'issue_date'")

    @issue_date.setter
    def issue_date(self, val):
        val = self._issue_date_validator.validate(val)
        self._issue_date_value = val
        self._issue_date_present = True

    @issue_date.deleter
    def issue_date(self):
        self._issue_date_value = None
        self._issue_date_present = False

    @property
    def expiration_date(self):
        """
        Certificate expiration date.

        :rtype: str
        """
        if self._expiration_date_present:
            return self._expiration_date_value
        else:
            raise AttributeError("missing required field 'expiration_date'")

    @expiration_date.setter
    def expiration_date(self, val):
        val = self._expiration_date_validator.validate(val)
        self._expiration_date_value = val
        self._expiration_date_present = True

    @expiration_date.deleter
    def expiration_date(self):
        self._expiration_date_value = None
        self._expiration_date_present = False

    @property
    def serial_number(self):
        """
        Certificate serial number.

        :rtype: str
        """
        if self._serial_number_present:
            return self._serial_number_value
        else:
            raise AttributeError("missing required field 'serial_number'")

    @serial_number.setter
    def serial_number(self, val):
        val = self._serial_number_validator.validate(val)
        self._serial_number_value = val
        self._serial_number_present = True

    @serial_number.deleter
    def serial_number(self):
        self._serial_number_value = None
        self._serial_number_present = False

    @property
    def sha1_fingerprint(self):
        """
        Certificate sha1 fingerprint.

        :rtype: str
        """
        if self._sha1_fingerprint_present:
            return self._sha1_fingerprint_value
        else:
            raise AttributeError("missing required field 'sha1_fingerprint'")

    @sha1_fingerprint.setter
    def sha1_fingerprint(self, val):
        val = self._sha1_fingerprint_validator.validate(val)
        self._sha1_fingerprint_value = val
        self._sha1_fingerprint_present = True

    @sha1_fingerprint.deleter
    def sha1_fingerprint(self):
        self._sha1_fingerprint_value = None
        self._sha1_fingerprint_present = False

    @property
    def common_name(self):
        """
        Certificate common name.

        :rtype: str
        """
        if self._common_name_present:
            return self._common_name_value
        else:
            return None

    @common_name.setter
    def common_name(self, val):
        if val is None:
            del self.common_name
            return
        val = self._common_name_validator.validate(val)
        self._common_name_value = val
        self._common_name_present = True

    @common_name.deleter
    def common_name(self):
        self._common_name_value = None
        self._common_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(Certificate, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'Certificate(subject={!r}, issuer={!r}, issue_date={!r}, expiration_date={!r}, serial_number={!r}, sha1_fingerprint={!r}, common_name={!r})'.format(
            self._subject_value,
            self._issuer_value,
            self._issue_date_value,
            self._expiration_date_value,
            self._serial_number_value,
            self._sha1_fingerprint_value,
            self._common_name_value,
        )

Certificate_validator = bv.Struct(Certificate)

class CollectionShareDetails(bb.Struct):
    """
    Shared album.

    :ivar team_log.CollectionShareDetails.album_name: Album name.
    """

    __slots__ = [
        '_album_name_value',
        '_album_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 album_name=None):
        self._album_name_value = None
        self._album_name_present = False
        if album_name is not None:
            self.album_name = album_name

    @property
    def album_name(self):
        """
        Album name.

        :rtype: str
        """
        if self._album_name_present:
            return self._album_name_value
        else:
            raise AttributeError("missing required field 'album_name'")

    @album_name.setter
    def album_name(self, val):
        val = self._album_name_validator.validate(val)
        self._album_name_value = val
        self._album_name_present = True

    @album_name.deleter
    def album_name(self):
        self._album_name_value = None
        self._album_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(CollectionShareDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'CollectionShareDetails(album_name={!r})'.format(
            self._album_name_value,
        )

CollectionShareDetails_validator = bv.Struct(CollectionShareDetails)

class CollectionShareType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(CollectionShareType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'CollectionShareType(description={!r})'.format(
            self._description_value,
        )

CollectionShareType_validator = bv.Struct(CollectionShareType)

class ContentPermanentDeletePolicy(bb.Union):
    """
    Policy for pemanent content deletion

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ContentPermanentDeletePolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ContentPermanentDeletePolicy(%r, %r)' % (self._tag, self._value)

ContentPermanentDeletePolicy_validator = bv.Union(ContentPermanentDeletePolicy)

class ContextLogInfo(bb.Union):
    """
    The primary entity on which the action was done.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar TeamMemberLogInfo ContextLogInfo.team_member: Action was done on
        behalf of a team member.
    :ivar NonTeamMemberLogInfo ContextLogInfo.non_team_member: Action was done
        on behalf of a non team member.
    :ivar team_log.ContextLogInfo.anonymous: Anonymous context.
    :ivar team_log.ContextLogInfo.team: Action was done on behalf of the team.
    :ivar TrustedNonTeamMemberLogInfo ContextLogInfo.trusted_non_team_member:
        Action was done on behalf of a trusted non team member.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    anonymous = None
    # Attribute is overwritten below the class definition
    team = None
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def team_member(cls, val):
        """
        Create an instance of this class set to the ``team_member`` tag with
        value ``val``.

        :param TeamMemberLogInfo val:
        :rtype: ContextLogInfo
        """
        return cls('team_member', val)

    @classmethod
    def non_team_member(cls, val):
        """
        Create an instance of this class set to the ``non_team_member`` tag with
        value ``val``.

        :param NonTeamMemberLogInfo val:
        :rtype: ContextLogInfo
        """
        return cls('non_team_member', val)

    @classmethod
    def trusted_non_team_member(cls, val):
        """
        Create an instance of this class set to the ``trusted_non_team_member``
        tag with value ``val``.

        :param TrustedNonTeamMemberLogInfo val:
        :rtype: ContextLogInfo
        """
        return cls('trusted_non_team_member', val)

    def is_team_member(self):
        """
        Check if the union tag is ``team_member``.

        :rtype: bool
        """
        return self._tag == 'team_member'

    def is_non_team_member(self):
        """
        Check if the union tag is ``non_team_member``.

        :rtype: bool
        """
        return self._tag == 'non_team_member'

    def is_anonymous(self):
        """
        Check if the union tag is ``anonymous``.

        :rtype: bool
        """
        return self._tag == 'anonymous'

    def is_team(self):
        """
        Check if the union tag is ``team``.

        :rtype: bool
        """
        return self._tag == 'team'

    def is_trusted_non_team_member(self):
        """
        Check if the union tag is ``trusted_non_team_member``.

        :rtype: bool
        """
        return self._tag == 'trusted_non_team_member'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_team_member(self):
        """
        Action was done on behalf of a team member.

        Only call this if :meth:`is_team_member` is true.

        :rtype: TeamMemberLogInfo
        """
        if not self.is_team_member():
            raise AttributeError("tag 'team_member' not set")
        return self._value

    def get_non_team_member(self):
        """
        Action was done on behalf of a non team member.

        Only call this if :meth:`is_non_team_member` is true.

        :rtype: NonTeamMemberLogInfo
        """
        if not self.is_non_team_member():
            raise AttributeError("tag 'non_team_member' not set")
        return self._value

    def get_trusted_non_team_member(self):
        """
        Action was done on behalf of a trusted non team member.

        Only call this if :meth:`is_trusted_non_team_member` is true.

        :rtype: TrustedNonTeamMemberLogInfo
        """
        if not self.is_trusted_non_team_member():
            raise AttributeError("tag 'trusted_non_team_member' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ContextLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ContextLogInfo(%r, %r)' % (self._tag, self._value)

ContextLogInfo_validator = bv.Union(ContextLogInfo)

class CreateFolderDetails(bb.Struct):
    """
    Created folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(CreateFolderDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'CreateFolderDetails()'

CreateFolderDetails_validator = bv.Struct(CreateFolderDetails)

class CreateFolderType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(CreateFolderType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'CreateFolderType(description={!r})'.format(
            self._description_value,
        )

CreateFolderType_validator = bv.Struct(CreateFolderType)

class DataPlacementRestrictionChangePolicyDetails(bb.Struct):
    """
    Set restrictions on data center locations where team data resides.

    :ivar team_log.DataPlacementRestrictionChangePolicyDetails.previous_value:
        Previous placement restriction.
    :ivar team_log.DataPlacementRestrictionChangePolicyDetails.new_value: New
        placement restriction.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous placement restriction.

        :rtype: PlacementRestriction
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New placement restriction.

        :rtype: PlacementRestriction
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DataPlacementRestrictionChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DataPlacementRestrictionChangePolicyDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

DataPlacementRestrictionChangePolicyDetails_validator = bv.Struct(DataPlacementRestrictionChangePolicyDetails)

class DataPlacementRestrictionChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DataPlacementRestrictionChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DataPlacementRestrictionChangePolicyType(description={!r})'.format(
            self._description_value,
        )

DataPlacementRestrictionChangePolicyType_validator = bv.Struct(DataPlacementRestrictionChangePolicyType)

class DataPlacementRestrictionSatisfyPolicyDetails(bb.Struct):
    """
    Completed restrictions on data center locations where team data resides.

    :ivar
        team_log.DataPlacementRestrictionSatisfyPolicyDetails.placement_restriction:
        Placement restriction.
    """

    __slots__ = [
        '_placement_restriction_value',
        '_placement_restriction_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 placement_restriction=None):
        self._placement_restriction_value = None
        self._placement_restriction_present = False
        if placement_restriction is not None:
            self.placement_restriction = placement_restriction

    @property
    def placement_restriction(self):
        """
        Placement restriction.

        :rtype: PlacementRestriction
        """
        if self._placement_restriction_present:
            return self._placement_restriction_value
        else:
            raise AttributeError("missing required field 'placement_restriction'")

    @placement_restriction.setter
    def placement_restriction(self, val):
        self._placement_restriction_validator.validate_type_only(val)
        self._placement_restriction_value = val
        self._placement_restriction_present = True

    @placement_restriction.deleter
    def placement_restriction(self):
        self._placement_restriction_value = None
        self._placement_restriction_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DataPlacementRestrictionSatisfyPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DataPlacementRestrictionSatisfyPolicyDetails(placement_restriction={!r})'.format(
            self._placement_restriction_value,
        )

DataPlacementRestrictionSatisfyPolicyDetails_validator = bv.Struct(DataPlacementRestrictionSatisfyPolicyDetails)

class DataPlacementRestrictionSatisfyPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DataPlacementRestrictionSatisfyPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DataPlacementRestrictionSatisfyPolicyType(description={!r})'.format(
            self._description_value,
        )

DataPlacementRestrictionSatisfyPolicyType_validator = bv.Struct(DataPlacementRestrictionSatisfyPolicyType)

class DeviceSessionLogInfo(bb.Struct):
    """
    Device's session logged information.

    :ivar team_log.DeviceSessionLogInfo.ip_address: The IP address of the last
        activity from this session. Might be missing due to historical data gap.
    :ivar team_log.DeviceSessionLogInfo.created: The time this session was
        created. Might be missing due to historical data gap.
    :ivar team_log.DeviceSessionLogInfo.updated: The time of the last activity
        from this session. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_ip_address_value',
        '_ip_address_present',
        '_created_value',
        '_created_present',
        '_updated_value',
        '_updated_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 ip_address=None,
                 created=None,
                 updated=None):
        self._ip_address_value = None
        self._ip_address_present = False
        self._created_value = None
        self._created_present = False
        self._updated_value = None
        self._updated_present = False
        if ip_address is not None:
            self.ip_address = ip_address
        if created is not None:
            self.created = created
        if updated is not None:
            self.updated = updated

    @property
    def ip_address(self):
        """
        The IP address of the last activity from this session. Might be missing
        due to historical data gap.

        :rtype: str
        """
        if self._ip_address_present:
            return self._ip_address_value
        else:
            return None

    @ip_address.setter
    def ip_address(self, val):
        if val is None:
            del self.ip_address
            return
        val = self._ip_address_validator.validate(val)
        self._ip_address_value = val
        self._ip_address_present = True

    @ip_address.deleter
    def ip_address(self):
        self._ip_address_value = None
        self._ip_address_present = False

    @property
    def created(self):
        """
        The time this session was created. Might be missing due to historical
        data gap.

        :rtype: datetime.datetime
        """
        if self._created_present:
            return self._created_value
        else:
            return None

    @created.setter
    def created(self, val):
        if val is None:
            del self.created
            return
        val = self._created_validator.validate(val)
        self._created_value = val
        self._created_present = True

    @created.deleter
    def created(self):
        self._created_value = None
        self._created_present = False

    @property
    def updated(self):
        """
        The time of the last activity from this session. Might be missing due to
        historical data gap.

        :rtype: datetime.datetime
        """
        if self._updated_present:
            return self._updated_value
        else:
            return None

    @updated.setter
    def updated(self, val):
        if val is None:
            del self.updated
            return
        val = self._updated_validator.validate(val)
        self._updated_value = val
        self._updated_present = True

    @updated.deleter
    def updated(self):
        self._updated_value = None
        self._updated_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceSessionLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceSessionLogInfo(ip_address={!r}, created={!r}, updated={!r})'.format(
            self._ip_address_value,
            self._created_value,
            self._updated_value,
        )

DeviceSessionLogInfo_validator = bv.StructTree(DeviceSessionLogInfo)

class DesktopDeviceSessionLogInfo(DeviceSessionLogInfo):
    """
    Information about linked Dropbox desktop client sessions

    :ivar team_log.DesktopDeviceSessionLogInfo.session_info: Desktop session
        unique id. Might be missing due to historical data gap.
    :ivar team_log.DesktopDeviceSessionLogInfo.host_name: Name of the hosting
        desktop.
    :ivar team_log.DesktopDeviceSessionLogInfo.client_type: The Dropbox desktop
        client type.
    :ivar team_log.DesktopDeviceSessionLogInfo.client_version: The Dropbox
        client version.
    :ivar team_log.DesktopDeviceSessionLogInfo.platform: Information on the
        hosting platform.
    :ivar team_log.DesktopDeviceSessionLogInfo.is_delete_on_unlink_supported:
        Whether itu2019s possible to delete all of the account files upon
        unlinking.
    """

    __slots__ = [
        '_session_info_value',
        '_session_info_present',
        '_host_name_value',
        '_host_name_present',
        '_client_type_value',
        '_client_type_present',
        '_client_version_value',
        '_client_version_present',
        '_platform_value',
        '_platform_present',
        '_is_delete_on_unlink_supported_value',
        '_is_delete_on_unlink_supported_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 host_name=None,
                 client_type=None,
                 platform=None,
                 is_delete_on_unlink_supported=None,
                 ip_address=None,
                 created=None,
                 updated=None,
                 session_info=None,
                 client_version=None):
        super(DesktopDeviceSessionLogInfo, self).__init__(ip_address,
                                                          created,
                                                          updated)
        self._session_info_value = None
        self._session_info_present = False
        self._host_name_value = None
        self._host_name_present = False
        self._client_type_value = None
        self._client_type_present = False
        self._client_version_value = None
        self._client_version_present = False
        self._platform_value = None
        self._platform_present = False
        self._is_delete_on_unlink_supported_value = None
        self._is_delete_on_unlink_supported_present = False
        if session_info is not None:
            self.session_info = session_info
        if host_name is not None:
            self.host_name = host_name
        if client_type is not None:
            self.client_type = client_type
        if client_version is not None:
            self.client_version = client_version
        if platform is not None:
            self.platform = platform
        if is_delete_on_unlink_supported is not None:
            self.is_delete_on_unlink_supported = is_delete_on_unlink_supported

    @property
    def session_info(self):
        """
        Desktop session unique id. Might be missing due to historical data gap.

        :rtype: DesktopSessionLogInfo
        """
        if self._session_info_present:
            return self._session_info_value
        else:
            return None

    @session_info.setter
    def session_info(self, val):
        if val is None:
            del self.session_info
            return
        self._session_info_validator.validate_type_only(val)
        self._session_info_value = val
        self._session_info_present = True

    @session_info.deleter
    def session_info(self):
        self._session_info_value = None
        self._session_info_present = False

    @property
    def host_name(self):
        """
        Name of the hosting desktop.

        :rtype: str
        """
        if self._host_name_present:
            return self._host_name_value
        else:
            raise AttributeError("missing required field 'host_name'")

    @host_name.setter
    def host_name(self, val):
        val = self._host_name_validator.validate(val)
        self._host_name_value = val
        self._host_name_present = True

    @host_name.deleter
    def host_name(self):
        self._host_name_value = None
        self._host_name_present = False

    @property
    def client_type(self):
        """
        The Dropbox desktop client type.

        :rtype: team.DesktopPlatform
        """
        if self._client_type_present:
            return self._client_type_value
        else:
            raise AttributeError("missing required field 'client_type'")

    @client_type.setter
    def client_type(self, val):
        self._client_type_validator.validate_type_only(val)
        self._client_type_value = val
        self._client_type_present = True

    @client_type.deleter
    def client_type(self):
        self._client_type_value = None
        self._client_type_present = False

    @property
    def client_version(self):
        """
        The Dropbox client version.

        :rtype: str
        """
        if self._client_version_present:
            return self._client_version_value
        else:
            return None

    @client_version.setter
    def client_version(self, val):
        if val is None:
            del self.client_version
            return
        val = self._client_version_validator.validate(val)
        self._client_version_value = val
        self._client_version_present = True

    @client_version.deleter
    def client_version(self):
        self._client_version_value = None
        self._client_version_present = False

    @property
    def platform(self):
        """
        Information on the hosting platform.

        :rtype: str
        """
        if self._platform_present:
            return self._platform_value
        else:
            raise AttributeError("missing required field 'platform'")

    @platform.setter
    def platform(self, val):
        val = self._platform_validator.validate(val)
        self._platform_value = val
        self._platform_present = True

    @platform.deleter
    def platform(self):
        self._platform_value = None
        self._platform_present = False

    @property
    def is_delete_on_unlink_supported(self):
        """
        Whether itu2019s possible to delete all of the account files upon
        unlinking.

        :rtype: bool
        """
        if self._is_delete_on_unlink_supported_present:
            return self._is_delete_on_unlink_supported_value
        else:
            raise AttributeError("missing required field 'is_delete_on_unlink_supported'")

    @is_delete_on_unlink_supported.setter
    def is_delete_on_unlink_supported(self, val):
        val = self._is_delete_on_unlink_supported_validator.validate(val)
        self._is_delete_on_unlink_supported_value = val
        self._is_delete_on_unlink_supported_present = True

    @is_delete_on_unlink_supported.deleter
    def is_delete_on_unlink_supported(self):
        self._is_delete_on_unlink_supported_value = None
        self._is_delete_on_unlink_supported_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DesktopDeviceSessionLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DesktopDeviceSessionLogInfo(host_name={!r}, client_type={!r}, platform={!r}, is_delete_on_unlink_supported={!r}, ip_address={!r}, created={!r}, updated={!r}, session_info={!r}, client_version={!r})'.format(
            self._host_name_value,
            self._client_type_value,
            self._platform_value,
            self._is_delete_on_unlink_supported_value,
            self._ip_address_value,
            self._created_value,
            self._updated_value,
            self._session_info_value,
            self._client_version_value,
        )

DesktopDeviceSessionLogInfo_validator = bv.Struct(DesktopDeviceSessionLogInfo)

class SessionLogInfo(bb.Struct):
    """
    Session's logged information.

    :ivar team_log.SessionLogInfo.session_id: Session ID. Might be missing due
        to historical data gap.
    """

    __slots__ = [
        '_session_id_value',
        '_session_id_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 session_id=None):
        self._session_id_value = None
        self._session_id_present = False
        if session_id is not None:
            self.session_id = session_id

    @property
    def session_id(self):
        """
        Session ID. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._session_id_present:
            return self._session_id_value
        else:
            return None

    @session_id.setter
    def session_id(self, val):
        if val is None:
            del self.session_id
            return
        val = self._session_id_validator.validate(val)
        self._session_id_value = val
        self._session_id_present = True

    @session_id.deleter
    def session_id(self):
        self._session_id_value = None
        self._session_id_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SessionLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SessionLogInfo(session_id={!r})'.format(
            self._session_id_value,
        )

SessionLogInfo_validator = bv.StructTree(SessionLogInfo)

class DesktopSessionLogInfo(SessionLogInfo):
    """
    Desktop session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self,
                 session_id=None):
        super(DesktopSessionLogInfo, self).__init__(session_id)

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DesktopSessionLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DesktopSessionLogInfo(session_id={!r})'.format(
            self._session_id_value,
        )

DesktopSessionLogInfo_validator = bv.Struct(DesktopSessionLogInfo)

class DeviceApprovalsChangeDesktopPolicyDetails(bb.Struct):
    """
    Set/removed limit on number of computers member can link to team Dropbox
    account.

    :ivar team_log.DeviceApprovalsChangeDesktopPolicyDetails.new_value: New
        desktop device approvals policy. Might be missing due to historical data
        gap.
    :ivar team_log.DeviceApprovalsChangeDesktopPolicyDetails.previous_value:
        Previous desktop device approvals policy. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New desktop device approvals policy. Might be missing due to historical
        data gap.

        :rtype: DeviceApprovalsPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous desktop device approvals policy. Might be missing due to
        historical data gap.

        :rtype: DeviceApprovalsPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceApprovalsChangeDesktopPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceApprovalsChangeDesktopPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

DeviceApprovalsChangeDesktopPolicyDetails_validator = bv.Struct(DeviceApprovalsChangeDesktopPolicyDetails)

class DeviceApprovalsChangeDesktopPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceApprovalsChangeDesktopPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceApprovalsChangeDesktopPolicyType(description={!r})'.format(
            self._description_value,
        )

DeviceApprovalsChangeDesktopPolicyType_validator = bv.Struct(DeviceApprovalsChangeDesktopPolicyType)

class DeviceApprovalsChangeMobilePolicyDetails(bb.Struct):
    """
    Set/removed limit on number of mobile devices member can link to team
    Dropbox account.

    :ivar team_log.DeviceApprovalsChangeMobilePolicyDetails.new_value: New
        mobile device approvals policy. Might be missing due to historical data
        gap.
    :ivar team_log.DeviceApprovalsChangeMobilePolicyDetails.previous_value:
        Previous mobile device approvals policy. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New mobile device approvals policy. Might be missing due to historical
        data gap.

        :rtype: DeviceApprovalsPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous mobile device approvals policy. Might be missing due to
        historical data gap.

        :rtype: DeviceApprovalsPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceApprovalsChangeMobilePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceApprovalsChangeMobilePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

DeviceApprovalsChangeMobilePolicyDetails_validator = bv.Struct(DeviceApprovalsChangeMobilePolicyDetails)

class DeviceApprovalsChangeMobilePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceApprovalsChangeMobilePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceApprovalsChangeMobilePolicyType(description={!r})'.format(
            self._description_value,
        )

DeviceApprovalsChangeMobilePolicyType_validator = bv.Struct(DeviceApprovalsChangeMobilePolicyType)

class DeviceApprovalsChangeOverageActionDetails(bb.Struct):
    """
    Changed device approvals setting when member is over limit.

    :ivar team_log.DeviceApprovalsChangeOverageActionDetails.new_value: New over
        the limits policy. Might be missing due to historical data gap.
    :ivar team_log.DeviceApprovalsChangeOverageActionDetails.previous_value:
        Previous over the limit policy. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New over the limits policy. Might be missing due to historical data gap.

        :rtype: team_policies.RolloutMethod
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous over the limit policy. Might be missing due to historical data
        gap.

        :rtype: team_policies.RolloutMethod
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceApprovalsChangeOverageActionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceApprovalsChangeOverageActionDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

DeviceApprovalsChangeOverageActionDetails_validator = bv.Struct(DeviceApprovalsChangeOverageActionDetails)

class DeviceApprovalsChangeOverageActionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceApprovalsChangeOverageActionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceApprovalsChangeOverageActionType(description={!r})'.format(
            self._description_value,
        )

DeviceApprovalsChangeOverageActionType_validator = bv.Struct(DeviceApprovalsChangeOverageActionType)

class DeviceApprovalsChangeUnlinkActionDetails(bb.Struct):
    """
    Changed device approvals setting when member unlinks approved device.

    :ivar team_log.DeviceApprovalsChangeUnlinkActionDetails.new_value: New
        device unlink policy. Might be missing due to historical data gap.
    :ivar team_log.DeviceApprovalsChangeUnlinkActionDetails.previous_value:
        Previous device unlink policy. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New device unlink policy. Might be missing due to historical data gap.

        :rtype: DeviceUnlinkPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous device unlink policy. Might be missing due to historical data
        gap.

        :rtype: DeviceUnlinkPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceApprovalsChangeUnlinkActionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceApprovalsChangeUnlinkActionDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

DeviceApprovalsChangeUnlinkActionDetails_validator = bv.Struct(DeviceApprovalsChangeUnlinkActionDetails)

class DeviceApprovalsChangeUnlinkActionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceApprovalsChangeUnlinkActionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceApprovalsChangeUnlinkActionType(description={!r})'.format(
            self._description_value,
        )

DeviceApprovalsChangeUnlinkActionType_validator = bv.Struct(DeviceApprovalsChangeUnlinkActionType)

class DeviceApprovalsPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    unlimited = None
    # Attribute is overwritten below the class definition
    limited = None
    # Attribute is overwritten below the class definition
    other = None

    def is_unlimited(self):
        """
        Check if the union tag is ``unlimited``.

        :rtype: bool
        """
        return self._tag == 'unlimited'

    def is_limited(self):
        """
        Check if the union tag is ``limited``.

        :rtype: bool
        """
        return self._tag == 'limited'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceApprovalsPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceApprovalsPolicy(%r, %r)' % (self._tag, self._value)

DeviceApprovalsPolicy_validator = bv.Union(DeviceApprovalsPolicy)

class DeviceChangeIpDesktopDetails(bb.Struct):
    """
    Changed IP address associated with active desktop session.

    :ivar team_log.DeviceChangeIpDesktopDetails.device_session_info: Device's
        session logged information.
    """

    __slots__ = [
        '_device_session_info_value',
        '_device_session_info_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 device_session_info=None):
        self._device_session_info_value = None
        self._device_session_info_present = False
        if device_session_info is not None:
            self.device_session_info = device_session_info

    @property
    def device_session_info(self):
        """
        Device's session logged information.

        :rtype: DeviceSessionLogInfo
        """
        if self._device_session_info_present:
            return self._device_session_info_value
        else:
            raise AttributeError("missing required field 'device_session_info'")

    @device_session_info.setter
    def device_session_info(self, val):
        self._device_session_info_validator.validate_type_only(val)
        self._device_session_info_value = val
        self._device_session_info_present = True

    @device_session_info.deleter
    def device_session_info(self):
        self._device_session_info_value = None
        self._device_session_info_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceChangeIpDesktopDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceChangeIpDesktopDetails(device_session_info={!r})'.format(
            self._device_session_info_value,
        )

DeviceChangeIpDesktopDetails_validator = bv.Struct(DeviceChangeIpDesktopDetails)

class DeviceChangeIpDesktopType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceChangeIpDesktopType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceChangeIpDesktopType(description={!r})'.format(
            self._description_value,
        )

DeviceChangeIpDesktopType_validator = bv.Struct(DeviceChangeIpDesktopType)

class DeviceChangeIpMobileDetails(bb.Struct):
    """
    Changed IP address associated with active mobile session.

    :ivar team_log.DeviceChangeIpMobileDetails.device_session_info: Device's
        session logged information.
    """

    __slots__ = [
        '_device_session_info_value',
        '_device_session_info_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 device_session_info=None):
        self._device_session_info_value = None
        self._device_session_info_present = False
        if device_session_info is not None:
            self.device_session_info = device_session_info

    @property
    def device_session_info(self):
        """
        Device's session logged information.

        :rtype: DeviceSessionLogInfo
        """
        if self._device_session_info_present:
            return self._device_session_info_value
        else:
            return None

    @device_session_info.setter
    def device_session_info(self, val):
        if val is None:
            del self.device_session_info
            return
        self._device_session_info_validator.validate_type_only(val)
        self._device_session_info_value = val
        self._device_session_info_present = True

    @device_session_info.deleter
    def device_session_info(self):
        self._device_session_info_value = None
        self._device_session_info_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceChangeIpMobileDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceChangeIpMobileDetails(device_session_info={!r})'.format(
            self._device_session_info_value,
        )

DeviceChangeIpMobileDetails_validator = bv.Struct(DeviceChangeIpMobileDetails)

class DeviceChangeIpMobileType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceChangeIpMobileType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceChangeIpMobileType(description={!r})'.format(
            self._description_value,
        )

DeviceChangeIpMobileType_validator = bv.Struct(DeviceChangeIpMobileType)

class DeviceChangeIpWebDetails(bb.Struct):
    """
    Changed IP address associated with active web session.

    :ivar team_log.DeviceChangeIpWebDetails.user_agent: Web browser name.
    """

    __slots__ = [
        '_user_agent_value',
        '_user_agent_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 user_agent=None):
        self._user_agent_value = None
        self._user_agent_present = False
        if user_agent is not None:
            self.user_agent = user_agent

    @property
    def user_agent(self):
        """
        Web browser name.

        :rtype: str
        """
        if self._user_agent_present:
            return self._user_agent_value
        else:
            raise AttributeError("missing required field 'user_agent'")

    @user_agent.setter
    def user_agent(self, val):
        val = self._user_agent_validator.validate(val)
        self._user_agent_value = val
        self._user_agent_present = True

    @user_agent.deleter
    def user_agent(self):
        self._user_agent_value = None
        self._user_agent_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceChangeIpWebDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceChangeIpWebDetails(user_agent={!r})'.format(
            self._user_agent_value,
        )

DeviceChangeIpWebDetails_validator = bv.Struct(DeviceChangeIpWebDetails)

class DeviceChangeIpWebType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceChangeIpWebType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceChangeIpWebType(description={!r})'.format(
            self._description_value,
        )

DeviceChangeIpWebType_validator = bv.Struct(DeviceChangeIpWebType)

class DeviceDeleteOnUnlinkFailDetails(bb.Struct):
    """
    Failed to delete all files from unlinked device.

    :ivar team_log.DeviceDeleteOnUnlinkFailDetails.session_info: Session unique
        id. Might be missing due to historical data gap.
    :ivar team_log.DeviceDeleteOnUnlinkFailDetails.display_name: The device
        name. Might be missing due to historical data gap.
    :ivar team_log.DeviceDeleteOnUnlinkFailDetails.num_failures: The number of
        times that remote file deletion failed.
    """

    __slots__ = [
        '_session_info_value',
        '_session_info_present',
        '_display_name_value',
        '_display_name_present',
        '_num_failures_value',
        '_num_failures_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 num_failures=None,
                 session_info=None,
                 display_name=None):
        self._session_info_value = None
        self._session_info_present = False
        self._display_name_value = None
        self._display_name_present = False
        self._num_failures_value = None
        self._num_failures_present = False
        if session_info is not None:
            self.session_info = session_info
        if display_name is not None:
            self.display_name = display_name
        if num_failures is not None:
            self.num_failures = num_failures

    @property
    def session_info(self):
        """
        Session unique id. Might be missing due to historical data gap.

        :rtype: SessionLogInfo
        """
        if self._session_info_present:
            return self._session_info_value
        else:
            return None

    @session_info.setter
    def session_info(self, val):
        if val is None:
            del self.session_info
            return
        self._session_info_validator.validate_type_only(val)
        self._session_info_value = val
        self._session_info_present = True

    @session_info.deleter
    def session_info(self):
        self._session_info_value = None
        self._session_info_present = False

    @property
    def display_name(self):
        """
        The device name. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._display_name_present:
            return self._display_name_value
        else:
            return None

    @display_name.setter
    def display_name(self, val):
        if val is None:
            del self.display_name
            return
        val = self._display_name_validator.validate(val)
        self._display_name_value = val
        self._display_name_present = True

    @display_name.deleter
    def display_name(self):
        self._display_name_value = None
        self._display_name_present = False

    @property
    def num_failures(self):
        """
        The number of times that remote file deletion failed.

        :rtype: int
        """
        if self._num_failures_present:
            return self._num_failures_value
        else:
            raise AttributeError("missing required field 'num_failures'")

    @num_failures.setter
    def num_failures(self, val):
        val = self._num_failures_validator.validate(val)
        self._num_failures_value = val
        self._num_failures_present = True

    @num_failures.deleter
    def num_failures(self):
        self._num_failures_value = None
        self._num_failures_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceDeleteOnUnlinkFailDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceDeleteOnUnlinkFailDetails(num_failures={!r}, session_info={!r}, display_name={!r})'.format(
            self._num_failures_value,
            self._session_info_value,
            self._display_name_value,
        )

DeviceDeleteOnUnlinkFailDetails_validator = bv.Struct(DeviceDeleteOnUnlinkFailDetails)

class DeviceDeleteOnUnlinkFailType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceDeleteOnUnlinkFailType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceDeleteOnUnlinkFailType(description={!r})'.format(
            self._description_value,
        )

DeviceDeleteOnUnlinkFailType_validator = bv.Struct(DeviceDeleteOnUnlinkFailType)

class DeviceDeleteOnUnlinkSuccessDetails(bb.Struct):
    """
    Deleted all files from unlinked device.

    :ivar team_log.DeviceDeleteOnUnlinkSuccessDetails.session_info: Session
        unique id. Might be missing due to historical data gap.
    :ivar team_log.DeviceDeleteOnUnlinkSuccessDetails.display_name: The device
        name. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_session_info_value',
        '_session_info_present',
        '_display_name_value',
        '_display_name_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 session_info=None,
                 display_name=None):
        self._session_info_value = None
        self._session_info_present = False
        self._display_name_value = None
        self._display_name_present = False
        if session_info is not None:
            self.session_info = session_info
        if display_name is not None:
            self.display_name = display_name

    @property
    def session_info(self):
        """
        Session unique id. Might be missing due to historical data gap.

        :rtype: SessionLogInfo
        """
        if self._session_info_present:
            return self._session_info_value
        else:
            return None

    @session_info.setter
    def session_info(self, val):
        if val is None:
            del self.session_info
            return
        self._session_info_validator.validate_type_only(val)
        self._session_info_value = val
        self._session_info_present = True

    @session_info.deleter
    def session_info(self):
        self._session_info_value = None
        self._session_info_present = False

    @property
    def display_name(self):
        """
        The device name. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._display_name_present:
            return self._display_name_value
        else:
            return None

    @display_name.setter
    def display_name(self, val):
        if val is None:
            del self.display_name
            return
        val = self._display_name_validator.validate(val)
        self._display_name_value = val
        self._display_name_present = True

    @display_name.deleter
    def display_name(self):
        self._display_name_value = None
        self._display_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceDeleteOnUnlinkSuccessDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceDeleteOnUnlinkSuccessDetails(session_info={!r}, display_name={!r})'.format(
            self._session_info_value,
            self._display_name_value,
        )

DeviceDeleteOnUnlinkSuccessDetails_validator = bv.Struct(DeviceDeleteOnUnlinkSuccessDetails)

class DeviceDeleteOnUnlinkSuccessType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceDeleteOnUnlinkSuccessType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceDeleteOnUnlinkSuccessType(description={!r})'.format(
            self._description_value,
        )

DeviceDeleteOnUnlinkSuccessType_validator = bv.Struct(DeviceDeleteOnUnlinkSuccessType)

class DeviceLinkFailDetails(bb.Struct):
    """
    Failed to link device.

    :ivar team_log.DeviceLinkFailDetails.ip_address: IP address. Might be
        missing due to historical data gap.
    :ivar team_log.DeviceLinkFailDetails.device_type: A description of the
        device used while user approval blocked.
    """

    __slots__ = [
        '_ip_address_value',
        '_ip_address_present',
        '_device_type_value',
        '_device_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 device_type=None,
                 ip_address=None):
        self._ip_address_value = None
        self._ip_address_present = False
        self._device_type_value = None
        self._device_type_present = False
        if ip_address is not None:
            self.ip_address = ip_address
        if device_type is not None:
            self.device_type = device_type

    @property
    def ip_address(self):
        """
        IP address. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._ip_address_present:
            return self._ip_address_value
        else:
            return None

    @ip_address.setter
    def ip_address(self, val):
        if val is None:
            del self.ip_address
            return
        val = self._ip_address_validator.validate(val)
        self._ip_address_value = val
        self._ip_address_present = True

    @ip_address.deleter
    def ip_address(self):
        self._ip_address_value = None
        self._ip_address_present = False

    @property
    def device_type(self):
        """
        A description of the device used while user approval blocked.

        :rtype: DeviceType
        """
        if self._device_type_present:
            return self._device_type_value
        else:
            raise AttributeError("missing required field 'device_type'")

    @device_type.setter
    def device_type(self, val):
        self._device_type_validator.validate_type_only(val)
        self._device_type_value = val
        self._device_type_present = True

    @device_type.deleter
    def device_type(self):
        self._device_type_value = None
        self._device_type_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceLinkFailDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceLinkFailDetails(device_type={!r}, ip_address={!r})'.format(
            self._device_type_value,
            self._ip_address_value,
        )

DeviceLinkFailDetails_validator = bv.Struct(DeviceLinkFailDetails)

class DeviceLinkFailType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceLinkFailType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceLinkFailType(description={!r})'.format(
            self._description_value,
        )

DeviceLinkFailType_validator = bv.Struct(DeviceLinkFailType)

class DeviceLinkSuccessDetails(bb.Struct):
    """
    Linked device.

    :ivar team_log.DeviceLinkSuccessDetails.device_session_info: Device's
        session logged information.
    """

    __slots__ = [
        '_device_session_info_value',
        '_device_session_info_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 device_session_info=None):
        self._device_session_info_value = None
        self._device_session_info_present = False
        if device_session_info is not None:
            self.device_session_info = device_session_info

    @property
    def device_session_info(self):
        """
        Device's session logged information.

        :rtype: DeviceSessionLogInfo
        """
        if self._device_session_info_present:
            return self._device_session_info_value
        else:
            return None

    @device_session_info.setter
    def device_session_info(self, val):
        if val is None:
            del self.device_session_info
            return
        self._device_session_info_validator.validate_type_only(val)
        self._device_session_info_value = val
        self._device_session_info_present = True

    @device_session_info.deleter
    def device_session_info(self):
        self._device_session_info_value = None
        self._device_session_info_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceLinkSuccessDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceLinkSuccessDetails(device_session_info={!r})'.format(
            self._device_session_info_value,
        )

DeviceLinkSuccessDetails_validator = bv.Struct(DeviceLinkSuccessDetails)

class DeviceLinkSuccessType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceLinkSuccessType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceLinkSuccessType(description={!r})'.format(
            self._description_value,
        )

DeviceLinkSuccessType_validator = bv.Struct(DeviceLinkSuccessType)

class DeviceManagementDisabledDetails(bb.Struct):
    """
    Disabled device management.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceManagementDisabledDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceManagementDisabledDetails()'

DeviceManagementDisabledDetails_validator = bv.Struct(DeviceManagementDisabledDetails)

class DeviceManagementDisabledType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceManagementDisabledType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceManagementDisabledType(description={!r})'.format(
            self._description_value,
        )

DeviceManagementDisabledType_validator = bv.Struct(DeviceManagementDisabledType)

class DeviceManagementEnabledDetails(bb.Struct):
    """
    Enabled device management.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceManagementEnabledDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceManagementEnabledDetails()'

DeviceManagementEnabledDetails_validator = bv.Struct(DeviceManagementEnabledDetails)

class DeviceManagementEnabledType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceManagementEnabledType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceManagementEnabledType(description={!r})'.format(
            self._description_value,
        )

DeviceManagementEnabledType_validator = bv.Struct(DeviceManagementEnabledType)

class DeviceType(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    desktop = None
    # Attribute is overwritten below the class definition
    mobile = None
    # Attribute is overwritten below the class definition
    other = None

    def is_desktop(self):
        """
        Check if the union tag is ``desktop``.

        :rtype: bool
        """
        return self._tag == 'desktop'

    def is_mobile(self):
        """
        Check if the union tag is ``mobile``.

        :rtype: bool
        """
        return self._tag == 'mobile'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceType(%r, %r)' % (self._tag, self._value)

DeviceType_validator = bv.Union(DeviceType)

class DeviceUnlinkDetails(bb.Struct):
    """
    Disconnected device.

    :ivar team_log.DeviceUnlinkDetails.session_info: Session unique id.
    :ivar team_log.DeviceUnlinkDetails.display_name: The device name. Might be
        missing due to historical data gap.
    :ivar team_log.DeviceUnlinkDetails.delete_data: True if the user requested
        to delete data after device unlink, false otherwise.
    """

    __slots__ = [
        '_session_info_value',
        '_session_info_present',
        '_display_name_value',
        '_display_name_present',
        '_delete_data_value',
        '_delete_data_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 delete_data=None,
                 session_info=None,
                 display_name=None):
        self._session_info_value = None
        self._session_info_present = False
        self._display_name_value = None
        self._display_name_present = False
        self._delete_data_value = None
        self._delete_data_present = False
        if session_info is not None:
            self.session_info = session_info
        if display_name is not None:
            self.display_name = display_name
        if delete_data is not None:
            self.delete_data = delete_data

    @property
    def session_info(self):
        """
        Session unique id.

        :rtype: SessionLogInfo
        """
        if self._session_info_present:
            return self._session_info_value
        else:
            return None

    @session_info.setter
    def session_info(self, val):
        if val is None:
            del self.session_info
            return
        self._session_info_validator.validate_type_only(val)
        self._session_info_value = val
        self._session_info_present = True

    @session_info.deleter
    def session_info(self):
        self._session_info_value = None
        self._session_info_present = False

    @property
    def display_name(self):
        """
        The device name. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._display_name_present:
            return self._display_name_value
        else:
            return None

    @display_name.setter
    def display_name(self, val):
        if val is None:
            del self.display_name
            return
        val = self._display_name_validator.validate(val)
        self._display_name_value = val
        self._display_name_present = True

    @display_name.deleter
    def display_name(self):
        self._display_name_value = None
        self._display_name_present = False

    @property
    def delete_data(self):
        """
        True if the user requested to delete data after device unlink, false
        otherwise.

        :rtype: bool
        """
        if self._delete_data_present:
            return self._delete_data_value
        else:
            raise AttributeError("missing required field 'delete_data'")

    @delete_data.setter
    def delete_data(self, val):
        val = self._delete_data_validator.validate(val)
        self._delete_data_value = val
        self._delete_data_present = True

    @delete_data.deleter
    def delete_data(self):
        self._delete_data_value = None
        self._delete_data_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceUnlinkDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceUnlinkDetails(delete_data={!r}, session_info={!r}, display_name={!r})'.format(
            self._delete_data_value,
            self._session_info_value,
            self._display_name_value,
        )

DeviceUnlinkDetails_validator = bv.Struct(DeviceUnlinkDetails)

class DeviceUnlinkPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    remove = None
    # Attribute is overwritten below the class definition
    keep = None
    # Attribute is overwritten below the class definition
    other = None

    def is_remove(self):
        """
        Check if the union tag is ``remove``.

        :rtype: bool
        """
        return self._tag == 'remove'

    def is_keep(self):
        """
        Check if the union tag is ``keep``.

        :rtype: bool
        """
        return self._tag == 'keep'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceUnlinkPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceUnlinkPolicy(%r, %r)' % (self._tag, self._value)

DeviceUnlinkPolicy_validator = bv.Union(DeviceUnlinkPolicy)

class DeviceUnlinkType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DeviceUnlinkType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DeviceUnlinkType(description={!r})'.format(
            self._description_value,
        )

DeviceUnlinkType_validator = bv.Struct(DeviceUnlinkType)

class DirectoryRestrictionsAddMembersDetails(bb.Struct):
    """
    Added members to directory restrictions list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DirectoryRestrictionsAddMembersDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DirectoryRestrictionsAddMembersDetails()'

DirectoryRestrictionsAddMembersDetails_validator = bv.Struct(DirectoryRestrictionsAddMembersDetails)

class DirectoryRestrictionsAddMembersType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DirectoryRestrictionsAddMembersType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DirectoryRestrictionsAddMembersType(description={!r})'.format(
            self._description_value,
        )

DirectoryRestrictionsAddMembersType_validator = bv.Struct(DirectoryRestrictionsAddMembersType)

class DirectoryRestrictionsRemoveMembersDetails(bb.Struct):
    """
    Removed members from directory restrictions list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DirectoryRestrictionsRemoveMembersDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DirectoryRestrictionsRemoveMembersDetails()'

DirectoryRestrictionsRemoveMembersDetails_validator = bv.Struct(DirectoryRestrictionsRemoveMembersDetails)

class DirectoryRestrictionsRemoveMembersType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DirectoryRestrictionsRemoveMembersType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DirectoryRestrictionsRemoveMembersType(description={!r})'.format(
            self._description_value,
        )

DirectoryRestrictionsRemoveMembersType_validator = bv.Struct(DirectoryRestrictionsRemoveMembersType)

class DisabledDomainInvitesDetails(bb.Struct):
    """
    Disabled domain invites.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DisabledDomainInvitesDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DisabledDomainInvitesDetails()'

DisabledDomainInvitesDetails_validator = bv.Struct(DisabledDomainInvitesDetails)

class DisabledDomainInvitesType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DisabledDomainInvitesType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DisabledDomainInvitesType(description={!r})'.format(
            self._description_value,
        )

DisabledDomainInvitesType_validator = bv.Struct(DisabledDomainInvitesType)

class DomainInvitesApproveRequestToJoinTeamDetails(bb.Struct):
    """
    Approved user's request to join team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainInvitesApproveRequestToJoinTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainInvitesApproveRequestToJoinTeamDetails()'

DomainInvitesApproveRequestToJoinTeamDetails_validator = bv.Struct(DomainInvitesApproveRequestToJoinTeamDetails)

class DomainInvitesApproveRequestToJoinTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainInvitesApproveRequestToJoinTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainInvitesApproveRequestToJoinTeamType(description={!r})'.format(
            self._description_value,
        )

DomainInvitesApproveRequestToJoinTeamType_validator = bv.Struct(DomainInvitesApproveRequestToJoinTeamType)

class DomainInvitesDeclineRequestToJoinTeamDetails(bb.Struct):
    """
    Declined user's request to join team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainInvitesDeclineRequestToJoinTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainInvitesDeclineRequestToJoinTeamDetails()'

DomainInvitesDeclineRequestToJoinTeamDetails_validator = bv.Struct(DomainInvitesDeclineRequestToJoinTeamDetails)

class DomainInvitesDeclineRequestToJoinTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainInvitesDeclineRequestToJoinTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainInvitesDeclineRequestToJoinTeamType(description={!r})'.format(
            self._description_value,
        )

DomainInvitesDeclineRequestToJoinTeamType_validator = bv.Struct(DomainInvitesDeclineRequestToJoinTeamType)

class DomainInvitesEmailExistingUsersDetails(bb.Struct):
    """
    Sent domain invites to existing domain accounts.

    :ivar team_log.DomainInvitesEmailExistingUsersDetails.domain_name: Domain
        names.
    :ivar team_log.DomainInvitesEmailExistingUsersDetails.num_recipients: Number
        of recipients.
    """

    __slots__ = [
        '_domain_name_value',
        '_domain_name_present',
        '_num_recipients_value',
        '_num_recipients_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 domain_name=None,
                 num_recipients=None):
        self._domain_name_value = None
        self._domain_name_present = False
        self._num_recipients_value = None
        self._num_recipients_present = False
        if domain_name is not None:
            self.domain_name = domain_name
        if num_recipients is not None:
            self.num_recipients = num_recipients

    @property
    def domain_name(self):
        """
        Domain names.

        :rtype: str
        """
        if self._domain_name_present:
            return self._domain_name_value
        else:
            raise AttributeError("missing required field 'domain_name'")

    @domain_name.setter
    def domain_name(self, val):
        val = self._domain_name_validator.validate(val)
        self._domain_name_value = val
        self._domain_name_present = True

    @domain_name.deleter
    def domain_name(self):
        self._domain_name_value = None
        self._domain_name_present = False

    @property
    def num_recipients(self):
        """
        Number of recipients.

        :rtype: int
        """
        if self._num_recipients_present:
            return self._num_recipients_value
        else:
            raise AttributeError("missing required field 'num_recipients'")

    @num_recipients.setter
    def num_recipients(self, val):
        val = self._num_recipients_validator.validate(val)
        self._num_recipients_value = val
        self._num_recipients_present = True

    @num_recipients.deleter
    def num_recipients(self):
        self._num_recipients_value = None
        self._num_recipients_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainInvitesEmailExistingUsersDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainInvitesEmailExistingUsersDetails(domain_name={!r}, num_recipients={!r})'.format(
            self._domain_name_value,
            self._num_recipients_value,
        )

DomainInvitesEmailExistingUsersDetails_validator = bv.Struct(DomainInvitesEmailExistingUsersDetails)

class DomainInvitesEmailExistingUsersType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainInvitesEmailExistingUsersType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainInvitesEmailExistingUsersType(description={!r})'.format(
            self._description_value,
        )

DomainInvitesEmailExistingUsersType_validator = bv.Struct(DomainInvitesEmailExistingUsersType)

class DomainInvitesRequestToJoinTeamDetails(bb.Struct):
    """
    Requested to join team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainInvitesRequestToJoinTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainInvitesRequestToJoinTeamDetails()'

DomainInvitesRequestToJoinTeamDetails_validator = bv.Struct(DomainInvitesRequestToJoinTeamDetails)

class DomainInvitesRequestToJoinTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainInvitesRequestToJoinTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainInvitesRequestToJoinTeamType(description={!r})'.format(
            self._description_value,
        )

DomainInvitesRequestToJoinTeamType_validator = bv.Struct(DomainInvitesRequestToJoinTeamType)

class DomainInvitesSetInviteNewUserPrefToNoDetails(bb.Struct):
    """
    Disabled "Automatically invite new users".
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainInvitesSetInviteNewUserPrefToNoDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainInvitesSetInviteNewUserPrefToNoDetails()'

DomainInvitesSetInviteNewUserPrefToNoDetails_validator = bv.Struct(DomainInvitesSetInviteNewUserPrefToNoDetails)

class DomainInvitesSetInviteNewUserPrefToNoType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainInvitesSetInviteNewUserPrefToNoType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainInvitesSetInviteNewUserPrefToNoType(description={!r})'.format(
            self._description_value,
        )

DomainInvitesSetInviteNewUserPrefToNoType_validator = bv.Struct(DomainInvitesSetInviteNewUserPrefToNoType)

class DomainInvitesSetInviteNewUserPrefToYesDetails(bb.Struct):
    """
    Enabled "Automatically invite new users".
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainInvitesSetInviteNewUserPrefToYesDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainInvitesSetInviteNewUserPrefToYesDetails()'

DomainInvitesSetInviteNewUserPrefToYesDetails_validator = bv.Struct(DomainInvitesSetInviteNewUserPrefToYesDetails)

class DomainInvitesSetInviteNewUserPrefToYesType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainInvitesSetInviteNewUserPrefToYesType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainInvitesSetInviteNewUserPrefToYesType(description={!r})'.format(
            self._description_value,
        )

DomainInvitesSetInviteNewUserPrefToYesType_validator = bv.Struct(DomainInvitesSetInviteNewUserPrefToYesType)

class DomainVerificationAddDomainFailDetails(bb.Struct):
    """
    Failed to verify team domain.

    :ivar team_log.DomainVerificationAddDomainFailDetails.domain_name: Domain
        name.
    :ivar team_log.DomainVerificationAddDomainFailDetails.verification_method:
        Domain name verification method. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_domain_name_value',
        '_domain_name_present',
        '_verification_method_value',
        '_verification_method_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 domain_name=None,
                 verification_method=None):
        self._domain_name_value = None
        self._domain_name_present = False
        self._verification_method_value = None
        self._verification_method_present = False
        if domain_name is not None:
            self.domain_name = domain_name
        if verification_method is not None:
            self.verification_method = verification_method

    @property
    def domain_name(self):
        """
        Domain name.

        :rtype: str
        """
        if self._domain_name_present:
            return self._domain_name_value
        else:
            raise AttributeError("missing required field 'domain_name'")

    @domain_name.setter
    def domain_name(self, val):
        val = self._domain_name_validator.validate(val)
        self._domain_name_value = val
        self._domain_name_present = True

    @domain_name.deleter
    def domain_name(self):
        self._domain_name_value = None
        self._domain_name_present = False

    @property
    def verification_method(self):
        """
        Domain name verification method. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._verification_method_present:
            return self._verification_method_value
        else:
            return None

    @verification_method.setter
    def verification_method(self, val):
        if val is None:
            del self.verification_method
            return
        val = self._verification_method_validator.validate(val)
        self._verification_method_value = val
        self._verification_method_present = True

    @verification_method.deleter
    def verification_method(self):
        self._verification_method_value = None
        self._verification_method_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainVerificationAddDomainFailDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainVerificationAddDomainFailDetails(domain_name={!r}, verification_method={!r})'.format(
            self._domain_name_value,
            self._verification_method_value,
        )

DomainVerificationAddDomainFailDetails_validator = bv.Struct(DomainVerificationAddDomainFailDetails)

class DomainVerificationAddDomainFailType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainVerificationAddDomainFailType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainVerificationAddDomainFailType(description={!r})'.format(
            self._description_value,
        )

DomainVerificationAddDomainFailType_validator = bv.Struct(DomainVerificationAddDomainFailType)

class DomainVerificationAddDomainSuccessDetails(bb.Struct):
    """
    Verified team domain.

    :ivar team_log.DomainVerificationAddDomainSuccessDetails.domain_names:
        Domain names.
    :ivar
        team_log.DomainVerificationAddDomainSuccessDetails.verification_method:
        Domain name verification method. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_domain_names_value',
        '_domain_names_present',
        '_verification_method_value',
        '_verification_method_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 domain_names=None,
                 verification_method=None):
        self._domain_names_value = None
        self._domain_names_present = False
        self._verification_method_value = None
        self._verification_method_present = False
        if domain_names is not None:
            self.domain_names = domain_names
        if verification_method is not None:
            self.verification_method = verification_method

    @property
    def domain_names(self):
        """
        Domain names.

        :rtype: list of [str]
        """
        if self._domain_names_present:
            return self._domain_names_value
        else:
            raise AttributeError("missing required field 'domain_names'")

    @domain_names.setter
    def domain_names(self, val):
        val = self._domain_names_validator.validate(val)
        self._domain_names_value = val
        self._domain_names_present = True

    @domain_names.deleter
    def domain_names(self):
        self._domain_names_value = None
        self._domain_names_present = False

    @property
    def verification_method(self):
        """
        Domain name verification method. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._verification_method_present:
            return self._verification_method_value
        else:
            return None

    @verification_method.setter
    def verification_method(self, val):
        if val is None:
            del self.verification_method
            return
        val = self._verification_method_validator.validate(val)
        self._verification_method_value = val
        self._verification_method_present = True

    @verification_method.deleter
    def verification_method(self):
        self._verification_method_value = None
        self._verification_method_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainVerificationAddDomainSuccessDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainVerificationAddDomainSuccessDetails(domain_names={!r}, verification_method={!r})'.format(
            self._domain_names_value,
            self._verification_method_value,
        )

DomainVerificationAddDomainSuccessDetails_validator = bv.Struct(DomainVerificationAddDomainSuccessDetails)

class DomainVerificationAddDomainSuccessType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainVerificationAddDomainSuccessType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainVerificationAddDomainSuccessType(description={!r})'.format(
            self._description_value,
        )

DomainVerificationAddDomainSuccessType_validator = bv.Struct(DomainVerificationAddDomainSuccessType)

class DomainVerificationRemoveDomainDetails(bb.Struct):
    """
    Removed domain from list of verified team domains.

    :ivar team_log.DomainVerificationRemoveDomainDetails.domain_names: Domain
        names.
    """

    __slots__ = [
        '_domain_names_value',
        '_domain_names_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 domain_names=None):
        self._domain_names_value = None
        self._domain_names_present = False
        if domain_names is not None:
            self.domain_names = domain_names

    @property
    def domain_names(self):
        """
        Domain names.

        :rtype: list of [str]
        """
        if self._domain_names_present:
            return self._domain_names_value
        else:
            raise AttributeError("missing required field 'domain_names'")

    @domain_names.setter
    def domain_names(self, val):
        val = self._domain_names_validator.validate(val)
        self._domain_names_value = val
        self._domain_names_present = True

    @domain_names.deleter
    def domain_names(self):
        self._domain_names_value = None
        self._domain_names_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainVerificationRemoveDomainDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainVerificationRemoveDomainDetails(domain_names={!r})'.format(
            self._domain_names_value,
        )

DomainVerificationRemoveDomainDetails_validator = bv.Struct(DomainVerificationRemoveDomainDetails)

class DomainVerificationRemoveDomainType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DomainVerificationRemoveDomainType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DomainVerificationRemoveDomainType(description={!r})'.format(
            self._description_value,
        )

DomainVerificationRemoveDomainType_validator = bv.Struct(DomainVerificationRemoveDomainType)

class DownloadPolicyType(bb.Union):
    """
    Shared content downloads policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    allow = None
    # Attribute is overwritten below the class definition
    disallow = None
    # Attribute is overwritten below the class definition
    other = None

    def is_allow(self):
        """
        Check if the union tag is ``allow``.

        :rtype: bool
        """
        return self._tag == 'allow'

    def is_disallow(self):
        """
        Check if the union tag is ``disallow``.

        :rtype: bool
        """
        return self._tag == 'disallow'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DownloadPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DownloadPolicyType(%r, %r)' % (self._tag, self._value)

DownloadPolicyType_validator = bv.Union(DownloadPolicyType)

class DurationLogInfo(bb.Struct):
    """
    Represents a time duration: unit and amount

    :ivar team_log.DurationLogInfo.unit: Time unit.
    :ivar team_log.DurationLogInfo.amount: Amount of time.
    """

    __slots__ = [
        '_unit_value',
        '_unit_present',
        '_amount_value',
        '_amount_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 unit=None,
                 amount=None):
        self._unit_value = None
        self._unit_present = False
        self._amount_value = None
        self._amount_present = False
        if unit is not None:
            self.unit = unit
        if amount is not None:
            self.amount = amount

    @property
    def unit(self):
        """
        Time unit.

        :rtype: TimeUnit
        """
        if self._unit_present:
            return self._unit_value
        else:
            raise AttributeError("missing required field 'unit'")

    @unit.setter
    def unit(self, val):
        self._unit_validator.validate_type_only(val)
        self._unit_value = val
        self._unit_present = True

    @unit.deleter
    def unit(self):
        self._unit_value = None
        self._unit_present = False

    @property
    def amount(self):
        """
        Amount of time.

        :rtype: int
        """
        if self._amount_present:
            return self._amount_value
        else:
            raise AttributeError("missing required field 'amount'")

    @amount.setter
    def amount(self, val):
        val = self._amount_validator.validate(val)
        self._amount_value = val
        self._amount_present = True

    @amount.deleter
    def amount(self):
        self._amount_value = None
        self._amount_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(DurationLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'DurationLogInfo(unit={!r}, amount={!r})'.format(
            self._unit_value,
            self._amount_value,
        )

DurationLogInfo_validator = bv.Struct(DurationLogInfo)

class EmmAddExceptionDetails(bb.Struct):
    """
    Added members to EMM exception list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EmmAddExceptionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EmmAddExceptionDetails()'

EmmAddExceptionDetails_validator = bv.Struct(EmmAddExceptionDetails)

class EmmAddExceptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EmmAddExceptionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EmmAddExceptionType(description={!r})'.format(
            self._description_value,
        )

EmmAddExceptionType_validator = bv.Struct(EmmAddExceptionType)

class EmmChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled enterprise mobility management for members.

    :ivar team_log.EmmChangePolicyDetails.new_value: New enterprise mobility
        management policy.
    :ivar team_log.EmmChangePolicyDetails.previous_value: Previous enterprise
        mobility management policy. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New enterprise mobility management policy.

        :rtype: team_policies.EmmState
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous enterprise mobility management policy. Might be missing due to
        historical data gap.

        :rtype: team_policies.EmmState
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EmmChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EmmChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

EmmChangePolicyDetails_validator = bv.Struct(EmmChangePolicyDetails)

class EmmChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EmmChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EmmChangePolicyType(description={!r})'.format(
            self._description_value,
        )

EmmChangePolicyType_validator = bv.Struct(EmmChangePolicyType)

class EmmCreateExceptionsReportDetails(bb.Struct):
    """
    Created EMM-excluded users report.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EmmCreateExceptionsReportDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EmmCreateExceptionsReportDetails()'

EmmCreateExceptionsReportDetails_validator = bv.Struct(EmmCreateExceptionsReportDetails)

class EmmCreateExceptionsReportType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EmmCreateExceptionsReportType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EmmCreateExceptionsReportType(description={!r})'.format(
            self._description_value,
        )

EmmCreateExceptionsReportType_validator = bv.Struct(EmmCreateExceptionsReportType)

class EmmCreateUsageReportDetails(bb.Struct):
    """
    Created EMM mobile app usage report.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EmmCreateUsageReportDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EmmCreateUsageReportDetails()'

EmmCreateUsageReportDetails_validator = bv.Struct(EmmCreateUsageReportDetails)

class EmmCreateUsageReportType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EmmCreateUsageReportType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EmmCreateUsageReportType(description={!r})'.format(
            self._description_value,
        )

EmmCreateUsageReportType_validator = bv.Struct(EmmCreateUsageReportType)

class EmmErrorDetails(bb.Struct):
    """
    Failed to sign in via EMM.

    :ivar team_log.EmmErrorDetails.error_details: Error details.
    """

    __slots__ = [
        '_error_details_value',
        '_error_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 error_details=None):
        self._error_details_value = None
        self._error_details_present = False
        if error_details is not None:
            self.error_details = error_details

    @property
    def error_details(self):
        """
        Error details.

        :rtype: FailureDetailsLogInfo
        """
        if self._error_details_present:
            return self._error_details_value
        else:
            raise AttributeError("missing required field 'error_details'")

    @error_details.setter
    def error_details(self, val):
        self._error_details_validator.validate_type_only(val)
        self._error_details_value = val
        self._error_details_present = True

    @error_details.deleter
    def error_details(self):
        self._error_details_value = None
        self._error_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EmmErrorDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EmmErrorDetails(error_details={!r})'.format(
            self._error_details_value,
        )

EmmErrorDetails_validator = bv.Struct(EmmErrorDetails)

class EmmErrorType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EmmErrorType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EmmErrorType(description={!r})'.format(
            self._description_value,
        )

EmmErrorType_validator = bv.Struct(EmmErrorType)

class EmmRefreshAuthTokenDetails(bb.Struct):
    """
    Refreshed auth token used for setting up EMM.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EmmRefreshAuthTokenDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EmmRefreshAuthTokenDetails()'

EmmRefreshAuthTokenDetails_validator = bv.Struct(EmmRefreshAuthTokenDetails)

class EmmRefreshAuthTokenType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EmmRefreshAuthTokenType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EmmRefreshAuthTokenType(description={!r})'.format(
            self._description_value,
        )

EmmRefreshAuthTokenType_validator = bv.Struct(EmmRefreshAuthTokenType)

class EmmRemoveExceptionDetails(bb.Struct):
    """
    Removed members from EMM exception list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EmmRemoveExceptionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EmmRemoveExceptionDetails()'

EmmRemoveExceptionDetails_validator = bv.Struct(EmmRemoveExceptionDetails)

class EmmRemoveExceptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EmmRemoveExceptionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EmmRemoveExceptionType(description={!r})'.format(
            self._description_value,
        )

EmmRemoveExceptionType_validator = bv.Struct(EmmRemoveExceptionType)

class EnabledDomainInvitesDetails(bb.Struct):
    """
    Enabled domain invites.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EnabledDomainInvitesDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EnabledDomainInvitesDetails()'

EnabledDomainInvitesDetails_validator = bv.Struct(EnabledDomainInvitesDetails)

class EnabledDomainInvitesType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EnabledDomainInvitesType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EnabledDomainInvitesType(description={!r})'.format(
            self._description_value,
        )

EnabledDomainInvitesType_validator = bv.Struct(EnabledDomainInvitesType)

class EventCategory(bb.Union):
    """
    Category of events in event audit log.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar team_log.EventCategory.apps: Events that apply to management of linked
        apps.
    :ivar team_log.EventCategory.comments: Events that have to do with comments
        on files and Paper documents.
    :ivar team_log.EventCategory.devices: Events that apply to linked devices on
        mobile, desktop and Web platforms.
    :ivar team_log.EventCategory.domains: Events that involve domain management
        feature: domain verification, invite enforcement and account capture.
    :ivar team_log.EventCategory.file_operations: Events that have to do with
        filesystem operations on files and folders: copy, move, delete, etc.
    :ivar team_log.EventCategory.file_requests: Events that apply to the file
        requests feature.
    :ivar team_log.EventCategory.groups: Events that involve group management.
    :ivar team_log.EventCategory.logins: Events that involve users signing in to
        or out of Dropbox.
    :ivar team_log.EventCategory.members: Events that involve team member
        management.
    :ivar team_log.EventCategory.paper: Events that apply to Dropbox Paper.
    :ivar team_log.EventCategory.passwords: Events that involve using, changing
        or resetting passwords.
    :ivar team_log.EventCategory.reports: Events that concern generation of
        admin reports, including team activity and device usage.
    :ivar team_log.EventCategory.sharing: Events that apply to all types of
        sharing and collaboration.
    :ivar team_log.EventCategory.showcase: Events that apply to Dropbox
        Showcase.
    :ivar team_log.EventCategory.sso: Events that involve using or configuring
        single sign-on as well as administrative policies concerning single
        sign-on.
    :ivar team_log.EventCategory.team_folders: Events that involve team folder
        management.
    :ivar team_log.EventCategory.team_policies: Events that involve a change in
        team-wide policies.
    :ivar team_log.EventCategory.team_profile: Events that involve a change in
        the team profile.
    :ivar team_log.EventCategory.tfa: Events that involve using or configuring
        two factor authentication as well as administrative policies concerning
        two factor authentication.
    :ivar team_log.EventCategory.trusted_teams: Events that apply to cross-team
        trust establishment.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    apps = None
    # Attribute is overwritten below the class definition
    comments = None
    # Attribute is overwritten below the class definition
    devices = None
    # Attribute is overwritten below the class definition
    domains = None
    # Attribute is overwritten below the class definition
    file_operations = None
    # Attribute is overwritten below the class definition
    file_requests = None
    # Attribute is overwritten below the class definition
    groups = None
    # Attribute is overwritten below the class definition
    logins = None
    # Attribute is overwritten below the class definition
    members = None
    # Attribute is overwritten below the class definition
    paper = None
    # Attribute is overwritten below the class definition
    passwords = None
    # Attribute is overwritten below the class definition
    reports = None
    # Attribute is overwritten below the class definition
    sharing = None
    # Attribute is overwritten below the class definition
    showcase = None
    # Attribute is overwritten below the class definition
    sso = None
    # Attribute is overwritten below the class definition
    team_folders = None
    # Attribute is overwritten below the class definition
    team_policies = None
    # Attribute is overwritten below the class definition
    team_profile = None
    # Attribute is overwritten below the class definition
    tfa = None
    # Attribute is overwritten below the class definition
    trusted_teams = None
    # Attribute is overwritten below the class definition
    other = None

    def is_apps(self):
        """
        Check if the union tag is ``apps``.

        :rtype: bool
        """
        return self._tag == 'apps'

    def is_comments(self):
        """
        Check if the union tag is ``comments``.

        :rtype: bool
        """
        return self._tag == 'comments'

    def is_devices(self):
        """
        Check if the union tag is ``devices``.

        :rtype: bool
        """
        return self._tag == 'devices'

    def is_domains(self):
        """
        Check if the union tag is ``domains``.

        :rtype: bool
        """
        return self._tag == 'domains'

    def is_file_operations(self):
        """
        Check if the union tag is ``file_operations``.

        :rtype: bool
        """
        return self._tag == 'file_operations'

    def is_file_requests(self):
        """
        Check if the union tag is ``file_requests``.

        :rtype: bool
        """
        return self._tag == 'file_requests'

    def is_groups(self):
        """
        Check if the union tag is ``groups``.

        :rtype: bool
        """
        return self._tag == 'groups'

    def is_logins(self):
        """
        Check if the union tag is ``logins``.

        :rtype: bool
        """
        return self._tag == 'logins'

    def is_members(self):
        """
        Check if the union tag is ``members``.

        :rtype: bool
        """
        return self._tag == 'members'

    def is_paper(self):
        """
        Check if the union tag is ``paper``.

        :rtype: bool
        """
        return self._tag == 'paper'

    def is_passwords(self):
        """
        Check if the union tag is ``passwords``.

        :rtype: bool
        """
        return self._tag == 'passwords'

    def is_reports(self):
        """
        Check if the union tag is ``reports``.

        :rtype: bool
        """
        return self._tag == 'reports'

    def is_sharing(self):
        """
        Check if the union tag is ``sharing``.

        :rtype: bool
        """
        return self._tag == 'sharing'

    def is_showcase(self):
        """
        Check if the union tag is ``showcase``.

        :rtype: bool
        """
        return self._tag == 'showcase'

    def is_sso(self):
        """
        Check if the union tag is ``sso``.

        :rtype: bool
        """
        return self._tag == 'sso'

    def is_team_folders(self):
        """
        Check if the union tag is ``team_folders``.

        :rtype: bool
        """
        return self._tag == 'team_folders'

    def is_team_policies(self):
        """
        Check if the union tag is ``team_policies``.

        :rtype: bool
        """
        return self._tag == 'team_policies'

    def is_team_profile(self):
        """
        Check if the union tag is ``team_profile``.

        :rtype: bool
        """
        return self._tag == 'team_profile'

    def is_tfa(self):
        """
        Check if the union tag is ``tfa``.

        :rtype: bool
        """
        return self._tag == 'tfa'

    def is_trusted_teams(self):
        """
        Check if the union tag is ``trusted_teams``.

        :rtype: bool
        """
        return self._tag == 'trusted_teams'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EventCategory, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EventCategory(%r, %r)' % (self._tag, self._value)

EventCategory_validator = bv.Union(EventCategory)

class EventDetails(bb.Union):
    """
    Additional fields depending on the event type.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar MissingDetails EventDetails.missing_details: Hints that this event was
        returned with missing details due to an internal error.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def app_link_team_details(cls, val):
        """
        Create an instance of this class set to the ``app_link_team_details``
        tag with value ``val``.

        :param AppLinkTeamDetails val:
        :rtype: EventDetails
        """
        return cls('app_link_team_details', val)

    @classmethod
    def app_link_user_details(cls, val):
        """
        Create an instance of this class set to the ``app_link_user_details``
        tag with value ``val``.

        :param AppLinkUserDetails val:
        :rtype: EventDetails
        """
        return cls('app_link_user_details', val)

    @classmethod
    def app_unlink_team_details(cls, val):
        """
        Create an instance of this class set to the ``app_unlink_team_details``
        tag with value ``val``.

        :param AppUnlinkTeamDetails val:
        :rtype: EventDetails
        """
        return cls('app_unlink_team_details', val)

    @classmethod
    def app_unlink_user_details(cls, val):
        """
        Create an instance of this class set to the ``app_unlink_user_details``
        tag with value ``val``.

        :param AppUnlinkUserDetails val:
        :rtype: EventDetails
        """
        return cls('app_unlink_user_details', val)

    @classmethod
    def integration_connected_details(cls, val):
        """
        Create an instance of this class set to the
        ``integration_connected_details`` tag with value ``val``.

        :param IntegrationConnectedDetails val:
        :rtype: EventDetails
        """
        return cls('integration_connected_details', val)

    @classmethod
    def integration_disconnected_details(cls, val):
        """
        Create an instance of this class set to the
        ``integration_disconnected_details`` tag with value ``val``.

        :param IntegrationDisconnectedDetails val:
        :rtype: EventDetails
        """
        return cls('integration_disconnected_details', val)

    @classmethod
    def file_add_comment_details(cls, val):
        """
        Create an instance of this class set to the ``file_add_comment_details``
        tag with value ``val``.

        :param FileAddCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_add_comment_details', val)

    @classmethod
    def file_change_comment_subscription_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_change_comment_subscription_details`` tag with value ``val``.

        :param FileChangeCommentSubscriptionDetails val:
        :rtype: EventDetails
        """
        return cls('file_change_comment_subscription_details', val)

    @classmethod
    def file_delete_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_delete_comment_details`` tag with value ``val``.

        :param FileDeleteCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_delete_comment_details', val)

    @classmethod
    def file_edit_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_edit_comment_details`` tag with value ``val``.

        :param FileEditCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_edit_comment_details', val)

    @classmethod
    def file_like_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_like_comment_details`` tag with value ``val``.

        :param FileLikeCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_like_comment_details', val)

    @classmethod
    def file_resolve_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_resolve_comment_details`` tag with value ``val``.

        :param FileResolveCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_resolve_comment_details', val)

    @classmethod
    def file_unlike_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_unlike_comment_details`` tag with value ``val``.

        :param FileUnlikeCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_unlike_comment_details', val)

    @classmethod
    def file_unresolve_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_unresolve_comment_details`` tag with value ``val``.

        :param FileUnresolveCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_unresolve_comment_details', val)

    @classmethod
    def device_change_ip_desktop_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_change_ip_desktop_details`` tag with value ``val``.

        :param DeviceChangeIpDesktopDetails val:
        :rtype: EventDetails
        """
        return cls('device_change_ip_desktop_details', val)

    @classmethod
    def device_change_ip_mobile_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_change_ip_mobile_details`` tag with value ``val``.

        :param DeviceChangeIpMobileDetails val:
        :rtype: EventDetails
        """
        return cls('device_change_ip_mobile_details', val)

    @classmethod
    def device_change_ip_web_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_change_ip_web_details`` tag with value ``val``.

        :param DeviceChangeIpWebDetails val:
        :rtype: EventDetails
        """
        return cls('device_change_ip_web_details', val)

    @classmethod
    def device_delete_on_unlink_fail_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_delete_on_unlink_fail_details`` tag with value ``val``.

        :param DeviceDeleteOnUnlinkFailDetails val:
        :rtype: EventDetails
        """
        return cls('device_delete_on_unlink_fail_details', val)

    @classmethod
    def device_delete_on_unlink_success_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_delete_on_unlink_success_details`` tag with value ``val``.

        :param DeviceDeleteOnUnlinkSuccessDetails val:
        :rtype: EventDetails
        """
        return cls('device_delete_on_unlink_success_details', val)

    @classmethod
    def device_link_fail_details(cls, val):
        """
        Create an instance of this class set to the ``device_link_fail_details``
        tag with value ``val``.

        :param DeviceLinkFailDetails val:
        :rtype: EventDetails
        """
        return cls('device_link_fail_details', val)

    @classmethod
    def device_link_success_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_link_success_details`` tag with value ``val``.

        :param DeviceLinkSuccessDetails val:
        :rtype: EventDetails
        """
        return cls('device_link_success_details', val)

    @classmethod
    def device_management_disabled_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_management_disabled_details`` tag with value ``val``.

        :param DeviceManagementDisabledDetails val:
        :rtype: EventDetails
        """
        return cls('device_management_disabled_details', val)

    @classmethod
    def device_management_enabled_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_management_enabled_details`` tag with value ``val``.

        :param DeviceManagementEnabledDetails val:
        :rtype: EventDetails
        """
        return cls('device_management_enabled_details', val)

    @classmethod
    def device_unlink_details(cls, val):
        """
        Create an instance of this class set to the ``device_unlink_details``
        tag with value ``val``.

        :param DeviceUnlinkDetails val:
        :rtype: EventDetails
        """
        return cls('device_unlink_details', val)

    @classmethod
    def emm_refresh_auth_token_details(cls, val):
        """
        Create an instance of this class set to the
        ``emm_refresh_auth_token_details`` tag with value ``val``.

        :param EmmRefreshAuthTokenDetails val:
        :rtype: EventDetails
        """
        return cls('emm_refresh_auth_token_details', val)

    @classmethod
    def account_capture_change_availability_details(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_change_availability_details`` tag with value ``val``.

        :param AccountCaptureChangeAvailabilityDetails val:
        :rtype: EventDetails
        """
        return cls('account_capture_change_availability_details', val)

    @classmethod
    def account_capture_migrate_account_details(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_migrate_account_details`` tag with value ``val``.

        :param AccountCaptureMigrateAccountDetails val:
        :rtype: EventDetails
        """
        return cls('account_capture_migrate_account_details', val)

    @classmethod
    def account_capture_notification_emails_sent_details(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_notification_emails_sent_details`` tag with value
        ``val``.

        :param AccountCaptureNotificationEmailsSentDetails val:
        :rtype: EventDetails
        """
        return cls('account_capture_notification_emails_sent_details', val)

    @classmethod
    def account_capture_relinquish_account_details(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_relinquish_account_details`` tag with value ``val``.

        :param AccountCaptureRelinquishAccountDetails val:
        :rtype: EventDetails
        """
        return cls('account_capture_relinquish_account_details', val)

    @classmethod
    def disabled_domain_invites_details(cls, val):
        """
        Create an instance of this class set to the
        ``disabled_domain_invites_details`` tag with value ``val``.

        :param DisabledDomainInvitesDetails val:
        :rtype: EventDetails
        """
        return cls('disabled_domain_invites_details', val)

    @classmethod
    def domain_invites_approve_request_to_join_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_approve_request_to_join_team_details`` tag with value
        ``val``.

        :param DomainInvitesApproveRequestToJoinTeamDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_approve_request_to_join_team_details', val)

    @classmethod
    def domain_invites_decline_request_to_join_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_decline_request_to_join_team_details`` tag with value
        ``val``.

        :param DomainInvitesDeclineRequestToJoinTeamDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_decline_request_to_join_team_details', val)

    @classmethod
    def domain_invites_email_existing_users_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_email_existing_users_details`` tag with value ``val``.

        :param DomainInvitesEmailExistingUsersDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_email_existing_users_details', val)

    @classmethod
    def domain_invites_request_to_join_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_request_to_join_team_details`` tag with value ``val``.

        :param DomainInvitesRequestToJoinTeamDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_request_to_join_team_details', val)

    @classmethod
    def domain_invites_set_invite_new_user_pref_to_no_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_set_invite_new_user_pref_to_no_details`` tag with value
        ``val``.

        :param DomainInvitesSetInviteNewUserPrefToNoDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_set_invite_new_user_pref_to_no_details', val)

    @classmethod
    def domain_invites_set_invite_new_user_pref_to_yes_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_set_invite_new_user_pref_to_yes_details`` tag with
        value ``val``.

        :param DomainInvitesSetInviteNewUserPrefToYesDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_set_invite_new_user_pref_to_yes_details', val)

    @classmethod
    def domain_verification_add_domain_fail_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_verification_add_domain_fail_details`` tag with value ``val``.

        :param DomainVerificationAddDomainFailDetails val:
        :rtype: EventDetails
        """
        return cls('domain_verification_add_domain_fail_details', val)

    @classmethod
    def domain_verification_add_domain_success_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_verification_add_domain_success_details`` tag with value
        ``val``.

        :param DomainVerificationAddDomainSuccessDetails val:
        :rtype: EventDetails
        """
        return cls('domain_verification_add_domain_success_details', val)

    @classmethod
    def domain_verification_remove_domain_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_verification_remove_domain_details`` tag with value ``val``.

        :param DomainVerificationRemoveDomainDetails val:
        :rtype: EventDetails
        """
        return cls('domain_verification_remove_domain_details', val)

    @classmethod
    def enabled_domain_invites_details(cls, val):
        """
        Create an instance of this class set to the
        ``enabled_domain_invites_details`` tag with value ``val``.

        :param EnabledDomainInvitesDetails val:
        :rtype: EventDetails
        """
        return cls('enabled_domain_invites_details', val)

    @classmethod
    def create_folder_details(cls, val):
        """
        Create an instance of this class set to the ``create_folder_details``
        tag with value ``val``.

        :param CreateFolderDetails val:
        :rtype: EventDetails
        """
        return cls('create_folder_details', val)

    @classmethod
    def file_add_details(cls, val):
        """
        Create an instance of this class set to the ``file_add_details`` tag
        with value ``val``.

        :param FileAddDetails val:
        :rtype: EventDetails
        """
        return cls('file_add_details', val)

    @classmethod
    def file_copy_details(cls, val):
        """
        Create an instance of this class set to the ``file_copy_details`` tag
        with value ``val``.

        :param FileCopyDetails val:
        :rtype: EventDetails
        """
        return cls('file_copy_details', val)

    @classmethod
    def file_delete_details(cls, val):
        """
        Create an instance of this class set to the ``file_delete_details`` tag
        with value ``val``.

        :param FileDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('file_delete_details', val)

    @classmethod
    def file_download_details(cls, val):
        """
        Create an instance of this class set to the ``file_download_details``
        tag with value ``val``.

        :param FileDownloadDetails val:
        :rtype: EventDetails
        """
        return cls('file_download_details', val)

    @classmethod
    def file_edit_details(cls, val):
        """
        Create an instance of this class set to the ``file_edit_details`` tag
        with value ``val``.

        :param FileEditDetails val:
        :rtype: EventDetails
        """
        return cls('file_edit_details', val)

    @classmethod
    def file_get_copy_reference_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_get_copy_reference_details`` tag with value ``val``.

        :param FileGetCopyReferenceDetails val:
        :rtype: EventDetails
        """
        return cls('file_get_copy_reference_details', val)

    @classmethod
    def file_move_details(cls, val):
        """
        Create an instance of this class set to the ``file_move_details`` tag
        with value ``val``.

        :param FileMoveDetails val:
        :rtype: EventDetails
        """
        return cls('file_move_details', val)

    @classmethod
    def file_permanently_delete_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_permanently_delete_details`` tag with value ``val``.

        :param FilePermanentlyDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('file_permanently_delete_details', val)

    @classmethod
    def file_preview_details(cls, val):
        """
        Create an instance of this class set to the ``file_preview_details`` tag
        with value ``val``.

        :param FilePreviewDetails val:
        :rtype: EventDetails
        """
        return cls('file_preview_details', val)

    @classmethod
    def file_rename_details(cls, val):
        """
        Create an instance of this class set to the ``file_rename_details`` tag
        with value ``val``.

        :param FileRenameDetails val:
        :rtype: EventDetails
        """
        return cls('file_rename_details', val)

    @classmethod
    def file_restore_details(cls, val):
        """
        Create an instance of this class set to the ``file_restore_details`` tag
        with value ``val``.

        :param FileRestoreDetails val:
        :rtype: EventDetails
        """
        return cls('file_restore_details', val)

    @classmethod
    def file_revert_details(cls, val):
        """
        Create an instance of this class set to the ``file_revert_details`` tag
        with value ``val``.

        :param FileRevertDetails val:
        :rtype: EventDetails
        """
        return cls('file_revert_details', val)

    @classmethod
    def file_rollback_changes_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_rollback_changes_details`` tag with value ``val``.

        :param FileRollbackChangesDetails val:
        :rtype: EventDetails
        """
        return cls('file_rollback_changes_details', val)

    @classmethod
    def file_save_copy_reference_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_save_copy_reference_details`` tag with value ``val``.

        :param FileSaveCopyReferenceDetails val:
        :rtype: EventDetails
        """
        return cls('file_save_copy_reference_details', val)

    @classmethod
    def file_request_change_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_request_change_details`` tag with value ``val``.

        :param FileRequestChangeDetails val:
        :rtype: EventDetails
        """
        return cls('file_request_change_details', val)

    @classmethod
    def file_request_close_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_request_close_details`` tag with value ``val``.

        :param FileRequestCloseDetails val:
        :rtype: EventDetails
        """
        return cls('file_request_close_details', val)

    @classmethod
    def file_request_create_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_request_create_details`` tag with value ``val``.

        :param FileRequestCreateDetails val:
        :rtype: EventDetails
        """
        return cls('file_request_create_details', val)

    @classmethod
    def file_request_delete_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_request_delete_details`` tag with value ``val``.

        :param FileRequestDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('file_request_delete_details', val)

    @classmethod
    def file_request_receive_file_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_request_receive_file_details`` tag with value ``val``.

        :param FileRequestReceiveFileDetails val:
        :rtype: EventDetails
        """
        return cls('file_request_receive_file_details', val)

    @classmethod
    def group_add_external_id_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_add_external_id_details`` tag with value ``val``.

        :param GroupAddExternalIdDetails val:
        :rtype: EventDetails
        """
        return cls('group_add_external_id_details', val)

    @classmethod
    def group_add_member_details(cls, val):
        """
        Create an instance of this class set to the ``group_add_member_details``
        tag with value ``val``.

        :param GroupAddMemberDetails val:
        :rtype: EventDetails
        """
        return cls('group_add_member_details', val)

    @classmethod
    def group_change_external_id_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_change_external_id_details`` tag with value ``val``.

        :param GroupChangeExternalIdDetails val:
        :rtype: EventDetails
        """
        return cls('group_change_external_id_details', val)

    @classmethod
    def group_change_management_type_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_change_management_type_details`` tag with value ``val``.

        :param GroupChangeManagementTypeDetails val:
        :rtype: EventDetails
        """
        return cls('group_change_management_type_details', val)

    @classmethod
    def group_change_member_role_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_change_member_role_details`` tag with value ``val``.

        :param GroupChangeMemberRoleDetails val:
        :rtype: EventDetails
        """
        return cls('group_change_member_role_details', val)

    @classmethod
    def group_create_details(cls, val):
        """
        Create an instance of this class set to the ``group_create_details`` tag
        with value ``val``.

        :param GroupCreateDetails val:
        :rtype: EventDetails
        """
        return cls('group_create_details', val)

    @classmethod
    def group_delete_details(cls, val):
        """
        Create an instance of this class set to the ``group_delete_details`` tag
        with value ``val``.

        :param GroupDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('group_delete_details', val)

    @classmethod
    def group_description_updated_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_description_updated_details`` tag with value ``val``.

        :param GroupDescriptionUpdatedDetails val:
        :rtype: EventDetails
        """
        return cls('group_description_updated_details', val)

    @classmethod
    def group_join_policy_updated_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_join_policy_updated_details`` tag with value ``val``.

        :param GroupJoinPolicyUpdatedDetails val:
        :rtype: EventDetails
        """
        return cls('group_join_policy_updated_details', val)

    @classmethod
    def group_moved_details(cls, val):
        """
        Create an instance of this class set to the ``group_moved_details`` tag
        with value ``val``.

        :param GroupMovedDetails val:
        :rtype: EventDetails
        """
        return cls('group_moved_details', val)

    @classmethod
    def group_remove_external_id_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_remove_external_id_details`` tag with value ``val``.

        :param GroupRemoveExternalIdDetails val:
        :rtype: EventDetails
        """
        return cls('group_remove_external_id_details', val)

    @classmethod
    def group_remove_member_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_remove_member_details`` tag with value ``val``.

        :param GroupRemoveMemberDetails val:
        :rtype: EventDetails
        """
        return cls('group_remove_member_details', val)

    @classmethod
    def group_rename_details(cls, val):
        """
        Create an instance of this class set to the ``group_rename_details`` tag
        with value ``val``.

        :param GroupRenameDetails val:
        :rtype: EventDetails
        """
        return cls('group_rename_details', val)

    @classmethod
    def emm_error_details(cls, val):
        """
        Create an instance of this class set to the ``emm_error_details`` tag
        with value ``val``.

        :param EmmErrorDetails val:
        :rtype: EventDetails
        """
        return cls('emm_error_details', val)

    @classmethod
    def guest_admin_signed_in_via_trusted_teams_details(cls, val):
        """
        Create an instance of this class set to the
        ``guest_admin_signed_in_via_trusted_teams_details`` tag with value
        ``val``.

        :param GuestAdminSignedInViaTrustedTeamsDetails val:
        :rtype: EventDetails
        """
        return cls('guest_admin_signed_in_via_trusted_teams_details', val)

    @classmethod
    def guest_admin_signed_out_via_trusted_teams_details(cls, val):
        """
        Create an instance of this class set to the
        ``guest_admin_signed_out_via_trusted_teams_details`` tag with value
        ``val``.

        :param GuestAdminSignedOutViaTrustedTeamsDetails val:
        :rtype: EventDetails
        """
        return cls('guest_admin_signed_out_via_trusted_teams_details', val)

    @classmethod
    def login_fail_details(cls, val):
        """
        Create an instance of this class set to the ``login_fail_details`` tag
        with value ``val``.

        :param LoginFailDetails val:
        :rtype: EventDetails
        """
        return cls('login_fail_details', val)

    @classmethod
    def login_success_details(cls, val):
        """
        Create an instance of this class set to the ``login_success_details``
        tag with value ``val``.

        :param LoginSuccessDetails val:
        :rtype: EventDetails
        """
        return cls('login_success_details', val)

    @classmethod
    def logout_details(cls, val):
        """
        Create an instance of this class set to the ``logout_details`` tag with
        value ``val``.

        :param LogoutDetails val:
        :rtype: EventDetails
        """
        return cls('logout_details', val)

    @classmethod
    def reseller_support_session_end_details(cls, val):
        """
        Create an instance of this class set to the
        ``reseller_support_session_end_details`` tag with value ``val``.

        :param ResellerSupportSessionEndDetails val:
        :rtype: EventDetails
        """
        return cls('reseller_support_session_end_details', val)

    @classmethod
    def reseller_support_session_start_details(cls, val):
        """
        Create an instance of this class set to the
        ``reseller_support_session_start_details`` tag with value ``val``.

        :param ResellerSupportSessionStartDetails val:
        :rtype: EventDetails
        """
        return cls('reseller_support_session_start_details', val)

    @classmethod
    def sign_in_as_session_end_details(cls, val):
        """
        Create an instance of this class set to the
        ``sign_in_as_session_end_details`` tag with value ``val``.

        :param SignInAsSessionEndDetails val:
        :rtype: EventDetails
        """
        return cls('sign_in_as_session_end_details', val)

    @classmethod
    def sign_in_as_session_start_details(cls, val):
        """
        Create an instance of this class set to the
        ``sign_in_as_session_start_details`` tag with value ``val``.

        :param SignInAsSessionStartDetails val:
        :rtype: EventDetails
        """
        return cls('sign_in_as_session_start_details', val)

    @classmethod
    def sso_error_details(cls, val):
        """
        Create an instance of this class set to the ``sso_error_details`` tag
        with value ``val``.

        :param SsoErrorDetails val:
        :rtype: EventDetails
        """
        return cls('sso_error_details', val)

    @classmethod
    def member_add_external_id_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_add_external_id_details`` tag with value ``val``.

        :param MemberAddExternalIdDetails val:
        :rtype: EventDetails
        """
        return cls('member_add_external_id_details', val)

    @classmethod
    def member_add_name_details(cls, val):
        """
        Create an instance of this class set to the ``member_add_name_details``
        tag with value ``val``.

        :param MemberAddNameDetails val:
        :rtype: EventDetails
        """
        return cls('member_add_name_details', val)

    @classmethod
    def member_change_admin_role_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_change_admin_role_details`` tag with value ``val``.

        :param MemberChangeAdminRoleDetails val:
        :rtype: EventDetails
        """
        return cls('member_change_admin_role_details', val)

    @classmethod
    def member_change_email_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_change_email_details`` tag with value ``val``.

        :param MemberChangeEmailDetails val:
        :rtype: EventDetails
        """
        return cls('member_change_email_details', val)

    @classmethod
    def member_change_external_id_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_change_external_id_details`` tag with value ``val``.

        :param MemberChangeExternalIdDetails val:
        :rtype: EventDetails
        """
        return cls('member_change_external_id_details', val)

    @classmethod
    def member_change_membership_type_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_change_membership_type_details`` tag with value ``val``.

        :param MemberChangeMembershipTypeDetails val:
        :rtype: EventDetails
        """
        return cls('member_change_membership_type_details', val)

    @classmethod
    def member_change_name_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_change_name_details`` tag with value ``val``.

        :param MemberChangeNameDetails val:
        :rtype: EventDetails
        """
        return cls('member_change_name_details', val)

    @classmethod
    def member_change_status_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_change_status_details`` tag with value ``val``.

        :param MemberChangeStatusDetails val:
        :rtype: EventDetails
        """
        return cls('member_change_status_details', val)

    @classmethod
    def member_delete_manual_contacts_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_delete_manual_contacts_details`` tag with value ``val``.

        :param MemberDeleteManualContactsDetails val:
        :rtype: EventDetails
        """
        return cls('member_delete_manual_contacts_details', val)

    @classmethod
    def member_permanently_delete_account_contents_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_permanently_delete_account_contents_details`` tag with value
        ``val``.

        :param MemberPermanentlyDeleteAccountContentsDetails val:
        :rtype: EventDetails
        """
        return cls('member_permanently_delete_account_contents_details', val)

    @classmethod
    def member_remove_external_id_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_remove_external_id_details`` tag with value ``val``.

        :param MemberRemoveExternalIdDetails val:
        :rtype: EventDetails
        """
        return cls('member_remove_external_id_details', val)

    @classmethod
    def member_space_limits_add_custom_quota_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_add_custom_quota_details`` tag with value ``val``.

        :param MemberSpaceLimitsAddCustomQuotaDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_add_custom_quota_details', val)

    @classmethod
    def member_space_limits_change_custom_quota_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_custom_quota_details`` tag with value
        ``val``.

        :param MemberSpaceLimitsChangeCustomQuotaDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_change_custom_quota_details', val)

    @classmethod
    def member_space_limits_change_status_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_status_details`` tag with value ``val``.

        :param MemberSpaceLimitsChangeStatusDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_change_status_details', val)

    @classmethod
    def member_space_limits_remove_custom_quota_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_remove_custom_quota_details`` tag with value
        ``val``.

        :param MemberSpaceLimitsRemoveCustomQuotaDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_remove_custom_quota_details', val)

    @classmethod
    def member_suggest_details(cls, val):
        """
        Create an instance of this class set to the ``member_suggest_details``
        tag with value ``val``.

        :param MemberSuggestDetails val:
        :rtype: EventDetails
        """
        return cls('member_suggest_details', val)

    @classmethod
    def member_transfer_account_contents_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_transfer_account_contents_details`` tag with value ``val``.

        :param MemberTransferAccountContentsDetails val:
        :rtype: EventDetails
        """
        return cls('member_transfer_account_contents_details', val)

    @classmethod
    def secondary_mails_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``secondary_mails_policy_changed_details`` tag with value ``val``.

        :param SecondaryMailsPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('secondary_mails_policy_changed_details', val)

    @classmethod
    def paper_content_add_member_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_add_member_details`` tag with value ``val``.

        :param PaperContentAddMemberDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_add_member_details', val)

    @classmethod
    def paper_content_add_to_folder_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_add_to_folder_details`` tag with value ``val``.

        :param PaperContentAddToFolderDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_add_to_folder_details', val)

    @classmethod
    def paper_content_archive_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_archive_details`` tag with value ``val``.

        :param PaperContentArchiveDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_archive_details', val)

    @classmethod
    def paper_content_create_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_create_details`` tag with value ``val``.

        :param PaperContentCreateDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_create_details', val)

    @classmethod
    def paper_content_permanently_delete_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_permanently_delete_details`` tag with value ``val``.

        :param PaperContentPermanentlyDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_permanently_delete_details', val)

    @classmethod
    def paper_content_remove_from_folder_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_remove_from_folder_details`` tag with value ``val``.

        :param PaperContentRemoveFromFolderDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_remove_from_folder_details', val)

    @classmethod
    def paper_content_remove_member_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_remove_member_details`` tag with value ``val``.

        :param PaperContentRemoveMemberDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_remove_member_details', val)

    @classmethod
    def paper_content_rename_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_rename_details`` tag with value ``val``.

        :param PaperContentRenameDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_rename_details', val)

    @classmethod
    def paper_content_restore_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_restore_details`` tag with value ``val``.

        :param PaperContentRestoreDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_restore_details', val)

    @classmethod
    def paper_doc_add_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_add_comment_details`` tag with value ``val``.

        :param PaperDocAddCommentDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_add_comment_details', val)

    @classmethod
    def paper_doc_change_member_role_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_change_member_role_details`` tag with value ``val``.

        :param PaperDocChangeMemberRoleDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_change_member_role_details', val)

    @classmethod
    def paper_doc_change_sharing_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_change_sharing_policy_details`` tag with value ``val``.

        :param PaperDocChangeSharingPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_change_sharing_policy_details', val)

    @classmethod
    def paper_doc_change_subscription_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_change_subscription_details`` tag with value ``val``.

        :param PaperDocChangeSubscriptionDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_change_subscription_details', val)

    @classmethod
    def paper_doc_deleted_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_deleted_details`` tag with value ``val``.

        :param PaperDocDeletedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_deleted_details', val)

    @classmethod
    def paper_doc_delete_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_delete_comment_details`` tag with value ``val``.

        :param PaperDocDeleteCommentDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_delete_comment_details', val)

    @classmethod
    def paper_doc_download_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_download_details`` tag with value ``val``.

        :param PaperDocDownloadDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_download_details', val)

    @classmethod
    def paper_doc_edit_details(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_edit_details``
        tag with value ``val``.

        :param PaperDocEditDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_edit_details', val)

    @classmethod
    def paper_doc_edit_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_edit_comment_details`` tag with value ``val``.

        :param PaperDocEditCommentDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_edit_comment_details', val)

    @classmethod
    def paper_doc_followed_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_followed_details`` tag with value ``val``.

        :param PaperDocFollowedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_followed_details', val)

    @classmethod
    def paper_doc_mention_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_mention_details`` tag with value ``val``.

        :param PaperDocMentionDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_mention_details', val)

    @classmethod
    def paper_doc_ownership_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_ownership_changed_details`` tag with value ``val``.

        :param PaperDocOwnershipChangedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_ownership_changed_details', val)

    @classmethod
    def paper_doc_request_access_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_request_access_details`` tag with value ``val``.

        :param PaperDocRequestAccessDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_request_access_details', val)

    @classmethod
    def paper_doc_resolve_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_resolve_comment_details`` tag with value ``val``.

        :param PaperDocResolveCommentDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_resolve_comment_details', val)

    @classmethod
    def paper_doc_revert_details(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_revert_details``
        tag with value ``val``.

        :param PaperDocRevertDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_revert_details', val)

    @classmethod
    def paper_doc_slack_share_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_slack_share_details`` tag with value ``val``.

        :param PaperDocSlackShareDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_slack_share_details', val)

    @classmethod
    def paper_doc_team_invite_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_team_invite_details`` tag with value ``val``.

        :param PaperDocTeamInviteDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_team_invite_details', val)

    @classmethod
    def paper_doc_trashed_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_trashed_details`` tag with value ``val``.

        :param PaperDocTrashedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_trashed_details', val)

    @classmethod
    def paper_doc_unresolve_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_unresolve_comment_details`` tag with value ``val``.

        :param PaperDocUnresolveCommentDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_unresolve_comment_details', val)

    @classmethod
    def paper_doc_untrashed_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_untrashed_details`` tag with value ``val``.

        :param PaperDocUntrashedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_untrashed_details', val)

    @classmethod
    def paper_doc_view_details(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_view_details``
        tag with value ``val``.

        :param PaperDocViewDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_view_details', val)

    @classmethod
    def paper_external_view_allow_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_external_view_allow_details`` tag with value ``val``.

        :param PaperExternalViewAllowDetails val:
        :rtype: EventDetails
        """
        return cls('paper_external_view_allow_details', val)

    @classmethod
    def paper_external_view_default_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_external_view_default_team_details`` tag with value ``val``.

        :param PaperExternalViewDefaultTeamDetails val:
        :rtype: EventDetails
        """
        return cls('paper_external_view_default_team_details', val)

    @classmethod
    def paper_external_view_forbid_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_external_view_forbid_details`` tag with value ``val``.

        :param PaperExternalViewForbidDetails val:
        :rtype: EventDetails
        """
        return cls('paper_external_view_forbid_details', val)

    @classmethod
    def paper_folder_change_subscription_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_folder_change_subscription_details`` tag with value ``val``.

        :param PaperFolderChangeSubscriptionDetails val:
        :rtype: EventDetails
        """
        return cls('paper_folder_change_subscription_details', val)

    @classmethod
    def paper_folder_deleted_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_folder_deleted_details`` tag with value ``val``.

        :param PaperFolderDeletedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_folder_deleted_details', val)

    @classmethod
    def paper_folder_followed_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_folder_followed_details`` tag with value ``val``.

        :param PaperFolderFollowedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_folder_followed_details', val)

    @classmethod
    def paper_folder_team_invite_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_folder_team_invite_details`` tag with value ``val``.

        :param PaperFolderTeamInviteDetails val:
        :rtype: EventDetails
        """
        return cls('paper_folder_team_invite_details', val)

    @classmethod
    def paper_published_link_create_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_published_link_create_details`` tag with value ``val``.

        :param PaperPublishedLinkCreateDetails val:
        :rtype: EventDetails
        """
        return cls('paper_published_link_create_details', val)

    @classmethod
    def paper_published_link_disabled_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_published_link_disabled_details`` tag with value ``val``.

        :param PaperPublishedLinkDisabledDetails val:
        :rtype: EventDetails
        """
        return cls('paper_published_link_disabled_details', val)

    @classmethod
    def paper_published_link_view_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_published_link_view_details`` tag with value ``val``.

        :param PaperPublishedLinkViewDetails val:
        :rtype: EventDetails
        """
        return cls('paper_published_link_view_details', val)

    @classmethod
    def password_change_details(cls, val):
        """
        Create an instance of this class set to the ``password_change_details``
        tag with value ``val``.

        :param PasswordChangeDetails val:
        :rtype: EventDetails
        """
        return cls('password_change_details', val)

    @classmethod
    def password_reset_details(cls, val):
        """
        Create an instance of this class set to the ``password_reset_details``
        tag with value ``val``.

        :param PasswordResetDetails val:
        :rtype: EventDetails
        """
        return cls('password_reset_details', val)

    @classmethod
    def password_reset_all_details(cls, val):
        """
        Create an instance of this class set to the
        ``password_reset_all_details`` tag with value ``val``.

        :param PasswordResetAllDetails val:
        :rtype: EventDetails
        """
        return cls('password_reset_all_details', val)

    @classmethod
    def emm_create_exceptions_report_details(cls, val):
        """
        Create an instance of this class set to the
        ``emm_create_exceptions_report_details`` tag with value ``val``.

        :param EmmCreateExceptionsReportDetails val:
        :rtype: EventDetails
        """
        return cls('emm_create_exceptions_report_details', val)

    @classmethod
    def emm_create_usage_report_details(cls, val):
        """
        Create an instance of this class set to the
        ``emm_create_usage_report_details`` tag with value ``val``.

        :param EmmCreateUsageReportDetails val:
        :rtype: EventDetails
        """
        return cls('emm_create_usage_report_details', val)

    @classmethod
    def export_members_report_details(cls, val):
        """
        Create an instance of this class set to the
        ``export_members_report_details`` tag with value ``val``.

        :param ExportMembersReportDetails val:
        :rtype: EventDetails
        """
        return cls('export_members_report_details', val)

    @classmethod
    def paper_admin_export_start_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_admin_export_start_details`` tag with value ``val``.

        :param PaperAdminExportStartDetails val:
        :rtype: EventDetails
        """
        return cls('paper_admin_export_start_details', val)

    @classmethod
    def smart_sync_create_admin_privilege_report_details(cls, val):
        """
        Create an instance of this class set to the
        ``smart_sync_create_admin_privilege_report_details`` tag with value
        ``val``.

        :param SmartSyncCreateAdminPrivilegeReportDetails val:
        :rtype: EventDetails
        """
        return cls('smart_sync_create_admin_privilege_report_details', val)

    @classmethod
    def team_activity_create_report_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_activity_create_report_details`` tag with value ``val``.

        :param TeamActivityCreateReportDetails val:
        :rtype: EventDetails
        """
        return cls('team_activity_create_report_details', val)

    @classmethod
    def team_activity_create_report_fail_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_activity_create_report_fail_details`` tag with value ``val``.

        :param TeamActivityCreateReportFailDetails val:
        :rtype: EventDetails
        """
        return cls('team_activity_create_report_fail_details', val)

    @classmethod
    def collection_share_details(cls, val):
        """
        Create an instance of this class set to the ``collection_share_details``
        tag with value ``val``.

        :param CollectionShareDetails val:
        :rtype: EventDetails
        """
        return cls('collection_share_details', val)

    @classmethod
    def note_acl_invite_only_details(cls, val):
        """
        Create an instance of this class set to the
        ``note_acl_invite_only_details`` tag with value ``val``.

        :param NoteAclInviteOnlyDetails val:
        :rtype: EventDetails
        """
        return cls('note_acl_invite_only_details', val)

    @classmethod
    def note_acl_link_details(cls, val):
        """
        Create an instance of this class set to the ``note_acl_link_details``
        tag with value ``val``.

        :param NoteAclLinkDetails val:
        :rtype: EventDetails
        """
        return cls('note_acl_link_details', val)

    @classmethod
    def note_acl_team_link_details(cls, val):
        """
        Create an instance of this class set to the
        ``note_acl_team_link_details`` tag with value ``val``.

        :param NoteAclTeamLinkDetails val:
        :rtype: EventDetails
        """
        return cls('note_acl_team_link_details', val)

    @classmethod
    def note_shared_details(cls, val):
        """
        Create an instance of this class set to the ``note_shared_details`` tag
        with value ``val``.

        :param NoteSharedDetails val:
        :rtype: EventDetails
        """
        return cls('note_shared_details', val)

    @classmethod
    def note_share_receive_details(cls, val):
        """
        Create an instance of this class set to the
        ``note_share_receive_details`` tag with value ``val``.

        :param NoteShareReceiveDetails val:
        :rtype: EventDetails
        """
        return cls('note_share_receive_details', val)

    @classmethod
    def open_note_shared_details(cls, val):
        """
        Create an instance of this class set to the ``open_note_shared_details``
        tag with value ``val``.

        :param OpenNoteSharedDetails val:
        :rtype: EventDetails
        """
        return cls('open_note_shared_details', val)

    @classmethod
    def sf_add_group_details(cls, val):
        """
        Create an instance of this class set to the ``sf_add_group_details`` tag
        with value ``val``.

        :param SfAddGroupDetails val:
        :rtype: EventDetails
        """
        return cls('sf_add_group_details', val)

    @classmethod
    def sf_allow_non_members_to_view_shared_links_details(cls, val):
        """
        Create an instance of this class set to the
        ``sf_allow_non_members_to_view_shared_links_details`` tag with value
        ``val``.

        :param SfAllowNonMembersToViewSharedLinksDetails val:
        :rtype: EventDetails
        """
        return cls('sf_allow_non_members_to_view_shared_links_details', val)

    @classmethod
    def sf_external_invite_warn_details(cls, val):
        """
        Create an instance of this class set to the
        ``sf_external_invite_warn_details`` tag with value ``val``.

        :param SfExternalInviteWarnDetails val:
        :rtype: EventDetails
        """
        return cls('sf_external_invite_warn_details', val)

    @classmethod
    def sf_fb_invite_details(cls, val):
        """
        Create an instance of this class set to the ``sf_fb_invite_details`` tag
        with value ``val``.

        :param SfFbInviteDetails val:
        :rtype: EventDetails
        """
        return cls('sf_fb_invite_details', val)

    @classmethod
    def sf_fb_invite_change_role_details(cls, val):
        """
        Create an instance of this class set to the
        ``sf_fb_invite_change_role_details`` tag with value ``val``.

        :param SfFbInviteChangeRoleDetails val:
        :rtype: EventDetails
        """
        return cls('sf_fb_invite_change_role_details', val)

    @classmethod
    def sf_fb_uninvite_details(cls, val):
        """
        Create an instance of this class set to the ``sf_fb_uninvite_details``
        tag with value ``val``.

        :param SfFbUninviteDetails val:
        :rtype: EventDetails
        """
        return cls('sf_fb_uninvite_details', val)

    @classmethod
    def sf_invite_group_details(cls, val):
        """
        Create an instance of this class set to the ``sf_invite_group_details``
        tag with value ``val``.

        :param SfInviteGroupDetails val:
        :rtype: EventDetails
        """
        return cls('sf_invite_group_details', val)

    @classmethod
    def sf_team_grant_access_details(cls, val):
        """
        Create an instance of this class set to the
        ``sf_team_grant_access_details`` tag with value ``val``.

        :param SfTeamGrantAccessDetails val:
        :rtype: EventDetails
        """
        return cls('sf_team_grant_access_details', val)

    @classmethod
    def sf_team_invite_details(cls, val):
        """
        Create an instance of this class set to the ``sf_team_invite_details``
        tag with value ``val``.

        :param SfTeamInviteDetails val:
        :rtype: EventDetails
        """
        return cls('sf_team_invite_details', val)

    @classmethod
    def sf_team_invite_change_role_details(cls, val):
        """
        Create an instance of this class set to the
        ``sf_team_invite_change_role_details`` tag with value ``val``.

        :param SfTeamInviteChangeRoleDetails val:
        :rtype: EventDetails
        """
        return cls('sf_team_invite_change_role_details', val)

    @classmethod
    def sf_team_join_details(cls, val):
        """
        Create an instance of this class set to the ``sf_team_join_details`` tag
        with value ``val``.

        :param SfTeamJoinDetails val:
        :rtype: EventDetails
        """
        return cls('sf_team_join_details', val)

    @classmethod
    def sf_team_join_from_oob_link_details(cls, val):
        """
        Create an instance of this class set to the
        ``sf_team_join_from_oob_link_details`` tag with value ``val``.

        :param SfTeamJoinFromOobLinkDetails val:
        :rtype: EventDetails
        """
        return cls('sf_team_join_from_oob_link_details', val)

    @classmethod
    def sf_team_uninvite_details(cls, val):
        """
        Create an instance of this class set to the ``sf_team_uninvite_details``
        tag with value ``val``.

        :param SfTeamUninviteDetails val:
        :rtype: EventDetails
        """
        return cls('sf_team_uninvite_details', val)

    @classmethod
    def shared_content_add_invitees_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_invitees_details`` tag with value ``val``.

        :param SharedContentAddInviteesDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_add_invitees_details', val)

    @classmethod
    def shared_content_add_link_expiry_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_link_expiry_details`` tag with value ``val``.

        :param SharedContentAddLinkExpiryDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_add_link_expiry_details', val)

    @classmethod
    def shared_content_add_link_password_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_link_password_details`` tag with value ``val``.

        :param SharedContentAddLinkPasswordDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_add_link_password_details', val)

    @classmethod
    def shared_content_add_member_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_member_details`` tag with value ``val``.

        :param SharedContentAddMemberDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_add_member_details', val)

    @classmethod
    def shared_content_change_downloads_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_downloads_policy_details`` tag with value
        ``val``.

        :param SharedContentChangeDownloadsPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_change_downloads_policy_details', val)

    @classmethod
    def shared_content_change_invitee_role_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_invitee_role_details`` tag with value ``val``.

        :param SharedContentChangeInviteeRoleDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_change_invitee_role_details', val)

    @classmethod
    def shared_content_change_link_audience_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_link_audience_details`` tag with value ``val``.

        :param SharedContentChangeLinkAudienceDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_change_link_audience_details', val)

    @classmethod
    def shared_content_change_link_expiry_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_link_expiry_details`` tag with value ``val``.

        :param SharedContentChangeLinkExpiryDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_change_link_expiry_details', val)

    @classmethod
    def shared_content_change_link_password_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_link_password_details`` tag with value ``val``.

        :param SharedContentChangeLinkPasswordDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_change_link_password_details', val)

    @classmethod
    def shared_content_change_member_role_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_member_role_details`` tag with value ``val``.

        :param SharedContentChangeMemberRoleDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_change_member_role_details', val)

    @classmethod
    def shared_content_change_viewer_info_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_viewer_info_policy_details`` tag with value
        ``val``.

        :param SharedContentChangeViewerInfoPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_change_viewer_info_policy_details', val)

    @classmethod
    def shared_content_claim_invitation_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_claim_invitation_details`` tag with value ``val``.

        :param SharedContentClaimInvitationDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_claim_invitation_details', val)

    @classmethod
    def shared_content_copy_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_copy_details`` tag with value ``val``.

        :param SharedContentCopyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_copy_details', val)

    @classmethod
    def shared_content_download_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_download_details`` tag with value ``val``.

        :param SharedContentDownloadDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_download_details', val)

    @classmethod
    def shared_content_relinquish_membership_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_relinquish_membership_details`` tag with value ``val``.

        :param SharedContentRelinquishMembershipDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_relinquish_membership_details', val)

    @classmethod
    def shared_content_remove_invitees_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_invitees_details`` tag with value ``val``.

        :param SharedContentRemoveInviteesDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_remove_invitees_details', val)

    @classmethod
    def shared_content_remove_link_expiry_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_link_expiry_details`` tag with value ``val``.

        :param SharedContentRemoveLinkExpiryDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_remove_link_expiry_details', val)

    @classmethod
    def shared_content_remove_link_password_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_link_password_details`` tag with value ``val``.

        :param SharedContentRemoveLinkPasswordDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_remove_link_password_details', val)

    @classmethod
    def shared_content_remove_member_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_member_details`` tag with value ``val``.

        :param SharedContentRemoveMemberDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_remove_member_details', val)

    @classmethod
    def shared_content_request_access_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_request_access_details`` tag with value ``val``.

        :param SharedContentRequestAccessDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_request_access_details', val)

    @classmethod
    def shared_content_unshare_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_unshare_details`` tag with value ``val``.

        :param SharedContentUnshareDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_unshare_details', val)

    @classmethod
    def shared_content_view_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_view_details`` tag with value ``val``.

        :param SharedContentViewDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_view_details', val)

    @classmethod
    def shared_folder_change_link_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_link_policy_details`` tag with value ``val``.

        :param SharedFolderChangeLinkPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_change_link_policy_details', val)

    @classmethod
    def shared_folder_change_members_inheritance_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_members_inheritance_policy_details`` tag with
        value ``val``.

        :param SharedFolderChangeMembersInheritancePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_change_members_inheritance_policy_details', val)

    @classmethod
    def shared_folder_change_members_management_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_members_management_policy_details`` tag with
        value ``val``.

        :param SharedFolderChangeMembersManagementPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_change_members_management_policy_details', val)

    @classmethod
    def shared_folder_change_members_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_members_policy_details`` tag with value ``val``.

        :param SharedFolderChangeMembersPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_change_members_policy_details', val)

    @classmethod
    def shared_folder_create_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_create_details`` tag with value ``val``.

        :param SharedFolderCreateDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_create_details', val)

    @classmethod
    def shared_folder_decline_invitation_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_decline_invitation_details`` tag with value ``val``.

        :param SharedFolderDeclineInvitationDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_decline_invitation_details', val)

    @classmethod
    def shared_folder_mount_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_mount_details`` tag with value ``val``.

        :param SharedFolderMountDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_mount_details', val)

    @classmethod
    def shared_folder_nest_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_nest_details`` tag with value ``val``.

        :param SharedFolderNestDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_nest_details', val)

    @classmethod
    def shared_folder_transfer_ownership_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_transfer_ownership_details`` tag with value ``val``.

        :param SharedFolderTransferOwnershipDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_transfer_ownership_details', val)

    @classmethod
    def shared_folder_unmount_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_unmount_details`` tag with value ``val``.

        :param SharedFolderUnmountDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_unmount_details', val)

    @classmethod
    def shared_link_add_expiry_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_add_expiry_details`` tag with value ``val``.

        :param SharedLinkAddExpiryDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_add_expiry_details', val)

    @classmethod
    def shared_link_change_expiry_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_change_expiry_details`` tag with value ``val``.

        :param SharedLinkChangeExpiryDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_change_expiry_details', val)

    @classmethod
    def shared_link_change_visibility_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_change_visibility_details`` tag with value ``val``.

        :param SharedLinkChangeVisibilityDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_change_visibility_details', val)

    @classmethod
    def shared_link_copy_details(cls, val):
        """
        Create an instance of this class set to the ``shared_link_copy_details``
        tag with value ``val``.

        :param SharedLinkCopyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_copy_details', val)

    @classmethod
    def shared_link_create_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_create_details`` tag with value ``val``.

        :param SharedLinkCreateDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_create_details', val)

    @classmethod
    def shared_link_disable_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_disable_details`` tag with value ``val``.

        :param SharedLinkDisableDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_disable_details', val)

    @classmethod
    def shared_link_download_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_download_details`` tag with value ``val``.

        :param SharedLinkDownloadDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_download_details', val)

    @classmethod
    def shared_link_remove_expiry_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_remove_expiry_details`` tag with value ``val``.

        :param SharedLinkRemoveExpiryDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_remove_expiry_details', val)

    @classmethod
    def shared_link_share_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_share_details`` tag with value ``val``.

        :param SharedLinkShareDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_share_details', val)

    @classmethod
    def shared_link_view_details(cls, val):
        """
        Create an instance of this class set to the ``shared_link_view_details``
        tag with value ``val``.

        :param SharedLinkViewDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_view_details', val)

    @classmethod
    def shared_note_opened_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_note_opened_details`` tag with value ``val``.

        :param SharedNoteOpenedDetails val:
        :rtype: EventDetails
        """
        return cls('shared_note_opened_details', val)

    @classmethod
    def shmodel_group_share_details(cls, val):
        """
        Create an instance of this class set to the
        ``shmodel_group_share_details`` tag with value ``val``.

        :param ShmodelGroupShareDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_group_share_details', val)

    @classmethod
    def showcase_access_granted_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_access_granted_details`` tag with value ``val``.

        :param ShowcaseAccessGrantedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_access_granted_details', val)

    @classmethod
    def showcase_add_member_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_add_member_details`` tag with value ``val``.

        :param ShowcaseAddMemberDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_add_member_details', val)

    @classmethod
    def showcase_archived_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_archived_details`` tag with value ``val``.

        :param ShowcaseArchivedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_archived_details', val)

    @classmethod
    def showcase_created_details(cls, val):
        """
        Create an instance of this class set to the ``showcase_created_details``
        tag with value ``val``.

        :param ShowcaseCreatedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_created_details', val)

    @classmethod
    def showcase_delete_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_delete_comment_details`` tag with value ``val``.

        :param ShowcaseDeleteCommentDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_delete_comment_details', val)

    @classmethod
    def showcase_edited_details(cls, val):
        """
        Create an instance of this class set to the ``showcase_edited_details``
        tag with value ``val``.

        :param ShowcaseEditedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_edited_details', val)

    @classmethod
    def showcase_edit_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_edit_comment_details`` tag with value ``val``.

        :param ShowcaseEditCommentDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_edit_comment_details', val)

    @classmethod
    def showcase_file_added_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_file_added_details`` tag with value ``val``.

        :param ShowcaseFileAddedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_file_added_details', val)

    @classmethod
    def showcase_file_download_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_file_download_details`` tag with value ``val``.

        :param ShowcaseFileDownloadDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_file_download_details', val)

    @classmethod
    def showcase_file_removed_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_file_removed_details`` tag with value ``val``.

        :param ShowcaseFileRemovedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_file_removed_details', val)

    @classmethod
    def showcase_file_view_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_file_view_details`` tag with value ``val``.

        :param ShowcaseFileViewDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_file_view_details', val)

    @classmethod
    def showcase_permanently_deleted_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_permanently_deleted_details`` tag with value ``val``.

        :param ShowcasePermanentlyDeletedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_permanently_deleted_details', val)

    @classmethod
    def showcase_post_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_post_comment_details`` tag with value ``val``.

        :param ShowcasePostCommentDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_post_comment_details', val)

    @classmethod
    def showcase_remove_member_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_remove_member_details`` tag with value ``val``.

        :param ShowcaseRemoveMemberDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_remove_member_details', val)

    @classmethod
    def showcase_renamed_details(cls, val):
        """
        Create an instance of this class set to the ``showcase_renamed_details``
        tag with value ``val``.

        :param ShowcaseRenamedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_renamed_details', val)

    @classmethod
    def showcase_request_access_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_request_access_details`` tag with value ``val``.

        :param ShowcaseRequestAccessDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_request_access_details', val)

    @classmethod
    def showcase_resolve_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_resolve_comment_details`` tag with value ``val``.

        :param ShowcaseResolveCommentDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_resolve_comment_details', val)

    @classmethod
    def showcase_restored_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_restored_details`` tag with value ``val``.

        :param ShowcaseRestoredDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_restored_details', val)

    @classmethod
    def showcase_trashed_details(cls, val):
        """
        Create an instance of this class set to the ``showcase_trashed_details``
        tag with value ``val``.

        :param ShowcaseTrashedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_trashed_details', val)

    @classmethod
    def showcase_trashed_deprecated_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_trashed_deprecated_details`` tag with value ``val``.

        :param ShowcaseTrashedDeprecatedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_trashed_deprecated_details', val)

    @classmethod
    def showcase_unresolve_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_unresolve_comment_details`` tag with value ``val``.

        :param ShowcaseUnresolveCommentDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_unresolve_comment_details', val)

    @classmethod
    def showcase_untrashed_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_untrashed_details`` tag with value ``val``.

        :param ShowcaseUntrashedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_untrashed_details', val)

    @classmethod
    def showcase_untrashed_deprecated_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_untrashed_deprecated_details`` tag with value ``val``.

        :param ShowcaseUntrashedDeprecatedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_untrashed_deprecated_details', val)

    @classmethod
    def showcase_view_details(cls, val):
        """
        Create an instance of this class set to the ``showcase_view_details``
        tag with value ``val``.

        :param ShowcaseViewDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_view_details', val)

    @classmethod
    def sso_add_cert_details(cls, val):
        """
        Create an instance of this class set to the ``sso_add_cert_details`` tag
        with value ``val``.

        :param SsoAddCertDetails val:
        :rtype: EventDetails
        """
        return cls('sso_add_cert_details', val)

    @classmethod
    def sso_add_login_url_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_add_login_url_details`` tag with value ``val``.

        :param SsoAddLoginUrlDetails val:
        :rtype: EventDetails
        """
        return cls('sso_add_login_url_details', val)

    @classmethod
    def sso_add_logout_url_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_add_logout_url_details`` tag with value ``val``.

        :param SsoAddLogoutUrlDetails val:
        :rtype: EventDetails
        """
        return cls('sso_add_logout_url_details', val)

    @classmethod
    def sso_change_cert_details(cls, val):
        """
        Create an instance of this class set to the ``sso_change_cert_details``
        tag with value ``val``.

        :param SsoChangeCertDetails val:
        :rtype: EventDetails
        """
        return cls('sso_change_cert_details', val)

    @classmethod
    def sso_change_login_url_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_change_login_url_details`` tag with value ``val``.

        :param SsoChangeLoginUrlDetails val:
        :rtype: EventDetails
        """
        return cls('sso_change_login_url_details', val)

    @classmethod
    def sso_change_logout_url_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_change_logout_url_details`` tag with value ``val``.

        :param SsoChangeLogoutUrlDetails val:
        :rtype: EventDetails
        """
        return cls('sso_change_logout_url_details', val)

    @classmethod
    def sso_change_saml_identity_mode_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_change_saml_identity_mode_details`` tag with value ``val``.

        :param SsoChangeSamlIdentityModeDetails val:
        :rtype: EventDetails
        """
        return cls('sso_change_saml_identity_mode_details', val)

    @classmethod
    def sso_remove_cert_details(cls, val):
        """
        Create an instance of this class set to the ``sso_remove_cert_details``
        tag with value ``val``.

        :param SsoRemoveCertDetails val:
        :rtype: EventDetails
        """
        return cls('sso_remove_cert_details', val)

    @classmethod
    def sso_remove_login_url_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_remove_login_url_details`` tag with value ``val``.

        :param SsoRemoveLoginUrlDetails val:
        :rtype: EventDetails
        """
        return cls('sso_remove_login_url_details', val)

    @classmethod
    def sso_remove_logout_url_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_remove_logout_url_details`` tag with value ``val``.

        :param SsoRemoveLogoutUrlDetails val:
        :rtype: EventDetails
        """
        return cls('sso_remove_logout_url_details', val)

    @classmethod
    def team_folder_change_status_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_folder_change_status_details`` tag with value ``val``.

        :param TeamFolderChangeStatusDetails val:
        :rtype: EventDetails
        """
        return cls('team_folder_change_status_details', val)

    @classmethod
    def team_folder_create_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_folder_create_details`` tag with value ``val``.

        :param TeamFolderCreateDetails val:
        :rtype: EventDetails
        """
        return cls('team_folder_create_details', val)

    @classmethod
    def team_folder_downgrade_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_folder_downgrade_details`` tag with value ``val``.

        :param TeamFolderDowngradeDetails val:
        :rtype: EventDetails
        """
        return cls('team_folder_downgrade_details', val)

    @classmethod
    def team_folder_permanently_delete_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_folder_permanently_delete_details`` tag with value ``val``.

        :param TeamFolderPermanentlyDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('team_folder_permanently_delete_details', val)

    @classmethod
    def team_folder_rename_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_folder_rename_details`` tag with value ``val``.

        :param TeamFolderRenameDetails val:
        :rtype: EventDetails
        """
        return cls('team_folder_rename_details', val)

    @classmethod
    def team_selective_sync_settings_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_selective_sync_settings_changed_details`` tag with value ``val``.

        :param TeamSelectiveSyncSettingsChangedDetails val:
        :rtype: EventDetails
        """
        return cls('team_selective_sync_settings_changed_details', val)

    @classmethod
    def account_capture_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_change_policy_details`` tag with value ``val``.

        :param AccountCaptureChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('account_capture_change_policy_details', val)

    @classmethod
    def allow_download_disabled_details(cls, val):
        """
        Create an instance of this class set to the
        ``allow_download_disabled_details`` tag with value ``val``.

        :param AllowDownloadDisabledDetails val:
        :rtype: EventDetails
        """
        return cls('allow_download_disabled_details', val)

    @classmethod
    def allow_download_enabled_details(cls, val):
        """
        Create an instance of this class set to the
        ``allow_download_enabled_details`` tag with value ``val``.

        :param AllowDownloadEnabledDetails val:
        :rtype: EventDetails
        """
        return cls('allow_download_enabled_details', val)

    @classmethod
    def camera_uploads_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``camera_uploads_policy_changed_details`` tag with value ``val``.

        :param CameraUploadsPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('camera_uploads_policy_changed_details', val)

    @classmethod
    def data_placement_restriction_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``data_placement_restriction_change_policy_details`` tag with value
        ``val``.

        :param DataPlacementRestrictionChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('data_placement_restriction_change_policy_details', val)

    @classmethod
    def data_placement_restriction_satisfy_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``data_placement_restriction_satisfy_policy_details`` tag with value
        ``val``.

        :param DataPlacementRestrictionSatisfyPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('data_placement_restriction_satisfy_policy_details', val)

    @classmethod
    def device_approvals_change_desktop_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_desktop_policy_details`` tag with value
        ``val``.

        :param DeviceApprovalsChangeDesktopPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('device_approvals_change_desktop_policy_details', val)

    @classmethod
    def device_approvals_change_mobile_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_mobile_policy_details`` tag with value
        ``val``.

        :param DeviceApprovalsChangeMobilePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('device_approvals_change_mobile_policy_details', val)

    @classmethod
    def device_approvals_change_overage_action_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_overage_action_details`` tag with value
        ``val``.

        :param DeviceApprovalsChangeOverageActionDetails val:
        :rtype: EventDetails
        """
        return cls('device_approvals_change_overage_action_details', val)

    @classmethod
    def device_approvals_change_unlink_action_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_unlink_action_details`` tag with value
        ``val``.

        :param DeviceApprovalsChangeUnlinkActionDetails val:
        :rtype: EventDetails
        """
        return cls('device_approvals_change_unlink_action_details', val)

    @classmethod
    def directory_restrictions_add_members_details(cls, val):
        """
        Create an instance of this class set to the
        ``directory_restrictions_add_members_details`` tag with value ``val``.

        :param DirectoryRestrictionsAddMembersDetails val:
        :rtype: EventDetails
        """
        return cls('directory_restrictions_add_members_details', val)

    @classmethod
    def directory_restrictions_remove_members_details(cls, val):
        """
        Create an instance of this class set to the
        ``directory_restrictions_remove_members_details`` tag with value
        ``val``.

        :param DirectoryRestrictionsRemoveMembersDetails val:
        :rtype: EventDetails
        """
        return cls('directory_restrictions_remove_members_details', val)

    @classmethod
    def emm_add_exception_details(cls, val):
        """
        Create an instance of this class set to the
        ``emm_add_exception_details`` tag with value ``val``.

        :param EmmAddExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('emm_add_exception_details', val)

    @classmethod
    def emm_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``emm_change_policy_details`` tag with value ``val``.

        :param EmmChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('emm_change_policy_details', val)

    @classmethod
    def emm_remove_exception_details(cls, val):
        """
        Create an instance of this class set to the
        ``emm_remove_exception_details`` tag with value ``val``.

        :param EmmRemoveExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('emm_remove_exception_details', val)

    @classmethod
    def extended_version_history_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``extended_version_history_change_policy_details`` tag with value
        ``val``.

        :param ExtendedVersionHistoryChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('extended_version_history_change_policy_details', val)

    @classmethod
    def file_comments_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_comments_change_policy_details`` tag with value ``val``.

        :param FileCommentsChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('file_comments_change_policy_details', val)

    @classmethod
    def file_requests_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_requests_change_policy_details`` tag with value ``val``.

        :param FileRequestsChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('file_requests_change_policy_details', val)

    @classmethod
    def file_requests_emails_enabled_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_requests_emails_enabled_details`` tag with value ``val``.

        :param FileRequestsEmailsEnabledDetails val:
        :rtype: EventDetails
        """
        return cls('file_requests_emails_enabled_details', val)

    @classmethod
    def file_requests_emails_restricted_to_team_only_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_requests_emails_restricted_to_team_only_details`` tag with value
        ``val``.

        :param FileRequestsEmailsRestrictedToTeamOnlyDetails val:
        :rtype: EventDetails
        """
        return cls('file_requests_emails_restricted_to_team_only_details', val)

    @classmethod
    def google_sso_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``google_sso_change_policy_details`` tag with value ``val``.

        :param GoogleSsoChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('google_sso_change_policy_details', val)

    @classmethod
    def group_user_management_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_user_management_change_policy_details`` tag with value ``val``.

        :param GroupUserManagementChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('group_user_management_change_policy_details', val)

    @classmethod
    def integration_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``integration_policy_changed_details`` tag with value ``val``.

        :param IntegrationPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('integration_policy_changed_details', val)

    @classmethod
    def member_requests_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_requests_change_policy_details`` tag with value ``val``.

        :param MemberRequestsChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('member_requests_change_policy_details', val)

    @classmethod
    def member_space_limits_add_exception_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_add_exception_details`` tag with value ``val``.

        :param MemberSpaceLimitsAddExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_add_exception_details', val)

    @classmethod
    def member_space_limits_change_caps_type_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_caps_type_policy_details`` tag with value
        ``val``.

        :param MemberSpaceLimitsChangeCapsTypePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_change_caps_type_policy_details', val)

    @classmethod
    def member_space_limits_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_policy_details`` tag with value ``val``.

        :param MemberSpaceLimitsChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_change_policy_details', val)

    @classmethod
    def member_space_limits_remove_exception_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_remove_exception_details`` tag with value ``val``.

        :param MemberSpaceLimitsRemoveExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_remove_exception_details', val)

    @classmethod
    def member_suggestions_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_suggestions_change_policy_details`` tag with value ``val``.

        :param MemberSuggestionsChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('member_suggestions_change_policy_details', val)

    @classmethod
    def microsoft_office_addin_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``microsoft_office_addin_change_policy_details`` tag with value ``val``.

        :param MicrosoftOfficeAddinChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('microsoft_office_addin_change_policy_details', val)

    @classmethod
    def network_control_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``network_control_change_policy_details`` tag with value ``val``.

        :param NetworkControlChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('network_control_change_policy_details', val)

    @classmethod
    def paper_change_deployment_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_change_deployment_policy_details`` tag with value ``val``.

        :param PaperChangeDeploymentPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('paper_change_deployment_policy_details', val)

    @classmethod
    def paper_change_member_link_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_change_member_link_policy_details`` tag with value ``val``.

        :param PaperChangeMemberLinkPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('paper_change_member_link_policy_details', val)

    @classmethod
    def paper_change_member_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_change_member_policy_details`` tag with value ``val``.

        :param PaperChangeMemberPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('paper_change_member_policy_details', val)

    @classmethod
    def paper_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_change_policy_details`` tag with value ``val``.

        :param PaperChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('paper_change_policy_details', val)

    @classmethod
    def paper_default_folder_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_default_folder_policy_changed_details`` tag with value ``val``.

        :param PaperDefaultFolderPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_default_folder_policy_changed_details', val)

    @classmethod
    def paper_desktop_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_desktop_policy_changed_details`` tag with value ``val``.

        :param PaperDesktopPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_desktop_policy_changed_details', val)

    @classmethod
    def paper_enabled_users_group_addition_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_enabled_users_group_addition_details`` tag with value ``val``.

        :param PaperEnabledUsersGroupAdditionDetails val:
        :rtype: EventDetails
        """
        return cls('paper_enabled_users_group_addition_details', val)

    @classmethod
    def paper_enabled_users_group_removal_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_enabled_users_group_removal_details`` tag with value ``val``.

        :param PaperEnabledUsersGroupRemovalDetails val:
        :rtype: EventDetails
        """
        return cls('paper_enabled_users_group_removal_details', val)

    @classmethod
    def permanent_delete_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``permanent_delete_change_policy_details`` tag with value ``val``.

        :param PermanentDeleteChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('permanent_delete_change_policy_details', val)

    @classmethod
    def reseller_support_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``reseller_support_change_policy_details`` tag with value ``val``.

        :param ResellerSupportChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('reseller_support_change_policy_details', val)

    @classmethod
    def sharing_change_folder_join_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``sharing_change_folder_join_policy_details`` tag with value ``val``.

        :param SharingChangeFolderJoinPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('sharing_change_folder_join_policy_details', val)

    @classmethod
    def sharing_change_link_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``sharing_change_link_policy_details`` tag with value ``val``.

        :param SharingChangeLinkPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('sharing_change_link_policy_details', val)

    @classmethod
    def sharing_change_member_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``sharing_change_member_policy_details`` tag with value ``val``.

        :param SharingChangeMemberPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('sharing_change_member_policy_details', val)

    @classmethod
    def showcase_change_download_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_change_download_policy_details`` tag with value ``val``.

        :param ShowcaseChangeDownloadPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_change_download_policy_details', val)

    @classmethod
    def showcase_change_enabled_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_change_enabled_policy_details`` tag with value ``val``.

        :param ShowcaseChangeEnabledPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_change_enabled_policy_details', val)

    @classmethod
    def showcase_change_external_sharing_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_change_external_sharing_policy_details`` tag with value
        ``val``.

        :param ShowcaseChangeExternalSharingPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_change_external_sharing_policy_details', val)

    @classmethod
    def smart_sync_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``smart_sync_change_policy_details`` tag with value ``val``.

        :param SmartSyncChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('smart_sync_change_policy_details', val)

    @classmethod
    def smart_sync_not_opt_out_details(cls, val):
        """
        Create an instance of this class set to the
        ``smart_sync_not_opt_out_details`` tag with value ``val``.

        :param SmartSyncNotOptOutDetails val:
        :rtype: EventDetails
        """
        return cls('smart_sync_not_opt_out_details', val)

    @classmethod
    def smart_sync_opt_out_details(cls, val):
        """
        Create an instance of this class set to the
        ``smart_sync_opt_out_details`` tag with value ``val``.

        :param SmartSyncOptOutDetails val:
        :rtype: EventDetails
        """
        return cls('smart_sync_opt_out_details', val)

    @classmethod
    def sso_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_change_policy_details`` tag with value ``val``.

        :param SsoChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('sso_change_policy_details', val)

    @classmethod
    def team_extensions_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_extensions_policy_changed_details`` tag with value ``val``.

        :param TeamExtensionsPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('team_extensions_policy_changed_details', val)

    @classmethod
    def team_selective_sync_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_selective_sync_policy_changed_details`` tag with value ``val``.

        :param TeamSelectiveSyncPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('team_selective_sync_policy_changed_details', val)

    @classmethod
    def tfa_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_change_policy_details`` tag with value ``val``.

        :param TfaChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_change_policy_details', val)

    @classmethod
    def two_account_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``two_account_change_policy_details`` tag with value ``val``.

        :param TwoAccountChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('two_account_change_policy_details', val)

    @classmethod
    def viewer_info_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``viewer_info_policy_changed_details`` tag with value ``val``.

        :param ViewerInfoPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('viewer_info_policy_changed_details', val)

    @classmethod
    def web_sessions_change_fixed_length_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``web_sessions_change_fixed_length_policy_details`` tag with value
        ``val``.

        :param WebSessionsChangeFixedLengthPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('web_sessions_change_fixed_length_policy_details', val)

    @classmethod
    def web_sessions_change_idle_length_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``web_sessions_change_idle_length_policy_details`` tag with value
        ``val``.

        :param WebSessionsChangeIdleLengthPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('web_sessions_change_idle_length_policy_details', val)

    @classmethod
    def team_merge_from_details(cls, val):
        """
        Create an instance of this class set to the ``team_merge_from_details``
        tag with value ``val``.

        :param TeamMergeFromDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_from_details', val)

    @classmethod
    def team_merge_to_details(cls, val):
        """
        Create an instance of this class set to the ``team_merge_to_details``
        tag with value ``val``.

        :param TeamMergeToDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_to_details', val)

    @classmethod
    def team_profile_add_logo_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_profile_add_logo_details`` tag with value ``val``.

        :param TeamProfileAddLogoDetails val:
        :rtype: EventDetails
        """
        return cls('team_profile_add_logo_details', val)

    @classmethod
    def team_profile_change_default_language_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_profile_change_default_language_details`` tag with value ``val``.

        :param TeamProfileChangeDefaultLanguageDetails val:
        :rtype: EventDetails
        """
        return cls('team_profile_change_default_language_details', val)

    @classmethod
    def team_profile_change_logo_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_profile_change_logo_details`` tag with value ``val``.

        :param TeamProfileChangeLogoDetails val:
        :rtype: EventDetails
        """
        return cls('team_profile_change_logo_details', val)

    @classmethod
    def team_profile_change_name_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_profile_change_name_details`` tag with value ``val``.

        :param TeamProfileChangeNameDetails val:
        :rtype: EventDetails
        """
        return cls('team_profile_change_name_details', val)

    @classmethod
    def team_profile_remove_logo_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_profile_remove_logo_details`` tag with value ``val``.

        :param TeamProfileRemoveLogoDetails val:
        :rtype: EventDetails
        """
        return cls('team_profile_remove_logo_details', val)

    @classmethod
    def tfa_add_backup_phone_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_add_backup_phone_details`` tag with value ``val``.

        :param TfaAddBackupPhoneDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_add_backup_phone_details', val)

    @classmethod
    def tfa_add_security_key_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_add_security_key_details`` tag with value ``val``.

        :param TfaAddSecurityKeyDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_add_security_key_details', val)

    @classmethod
    def tfa_change_backup_phone_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_change_backup_phone_details`` tag with value ``val``.

        :param TfaChangeBackupPhoneDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_change_backup_phone_details', val)

    @classmethod
    def tfa_change_status_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_change_status_details`` tag with value ``val``.

        :param TfaChangeStatusDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_change_status_details', val)

    @classmethod
    def tfa_remove_backup_phone_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_remove_backup_phone_details`` tag with value ``val``.

        :param TfaRemoveBackupPhoneDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_remove_backup_phone_details', val)

    @classmethod
    def tfa_remove_security_key_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_remove_security_key_details`` tag with value ``val``.

        :param TfaRemoveSecurityKeyDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_remove_security_key_details', val)

    @classmethod
    def tfa_reset_details(cls, val):
        """
        Create an instance of this class set to the ``tfa_reset_details`` tag
        with value ``val``.

        :param TfaResetDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_reset_details', val)

    @classmethod
    def guest_admin_change_status_details(cls, val):
        """
        Create an instance of this class set to the
        ``guest_admin_change_status_details`` tag with value ``val``.

        :param GuestAdminChangeStatusDetails val:
        :rtype: EventDetails
        """
        return cls('guest_admin_change_status_details', val)

    @classmethod
    def team_merge_request_accepted_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_accepted_details`` tag with value ``val``.

        :param TeamMergeRequestAcceptedDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_accepted_details', val)

    @classmethod
    def team_merge_request_accepted_shown_to_primary_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_accepted_shown_to_primary_team_details`` tag with
        value ``val``.

        :param TeamMergeRequestAcceptedShownToPrimaryTeamDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_accepted_shown_to_primary_team_details', val)

    @classmethod
    def team_merge_request_accepted_shown_to_secondary_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_accepted_shown_to_secondary_team_details`` tag with
        value ``val``.

        :param TeamMergeRequestAcceptedShownToSecondaryTeamDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_accepted_shown_to_secondary_team_details', val)

    @classmethod
    def team_merge_request_auto_canceled_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_auto_canceled_details`` tag with value ``val``.

        :param TeamMergeRequestAutoCanceledDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_auto_canceled_details', val)

    @classmethod
    def team_merge_request_canceled_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_canceled_details`` tag with value ``val``.

        :param TeamMergeRequestCanceledDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_canceled_details', val)

    @classmethod
    def team_merge_request_canceled_shown_to_primary_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_canceled_shown_to_primary_team_details`` tag with
        value ``val``.

        :param TeamMergeRequestCanceledShownToPrimaryTeamDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_canceled_shown_to_primary_team_details', val)

    @classmethod
    def team_merge_request_canceled_shown_to_secondary_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_canceled_shown_to_secondary_team_details`` tag with
        value ``val``.

        :param TeamMergeRequestCanceledShownToSecondaryTeamDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_canceled_shown_to_secondary_team_details', val)

    @classmethod
    def team_merge_request_expired_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_expired_details`` tag with value ``val``.

        :param TeamMergeRequestExpiredDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_expired_details', val)

    @classmethod
    def team_merge_request_expired_shown_to_primary_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_expired_shown_to_primary_team_details`` tag with
        value ``val``.

        :param TeamMergeRequestExpiredShownToPrimaryTeamDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_expired_shown_to_primary_team_details', val)

    @classmethod
    def team_merge_request_expired_shown_to_secondary_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_expired_shown_to_secondary_team_details`` tag with
        value ``val``.

        :param TeamMergeRequestExpiredShownToSecondaryTeamDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_expired_shown_to_secondary_team_details', val)

    @classmethod
    def team_merge_request_rejected_shown_to_primary_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_rejected_shown_to_primary_team_details`` tag with
        value ``val``.

        :param TeamMergeRequestRejectedShownToPrimaryTeamDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_rejected_shown_to_primary_team_details', val)

    @classmethod
    def team_merge_request_rejected_shown_to_secondary_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_rejected_shown_to_secondary_team_details`` tag with
        value ``val``.

        :param TeamMergeRequestRejectedShownToSecondaryTeamDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_rejected_shown_to_secondary_team_details', val)

    @classmethod
    def team_merge_request_reminder_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_reminder_details`` tag with value ``val``.

        :param TeamMergeRequestReminderDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_reminder_details', val)

    @classmethod
    def team_merge_request_reminder_shown_to_primary_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_reminder_shown_to_primary_team_details`` tag with
        value ``val``.

        :param TeamMergeRequestReminderShownToPrimaryTeamDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_reminder_shown_to_primary_team_details', val)

    @classmethod
    def team_merge_request_reminder_shown_to_secondary_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_reminder_shown_to_secondary_team_details`` tag with
        value ``val``.

        :param TeamMergeRequestReminderShownToSecondaryTeamDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_reminder_shown_to_secondary_team_details', val)

    @classmethod
    def team_merge_request_revoked_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_revoked_details`` tag with value ``val``.

        :param TeamMergeRequestRevokedDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_revoked_details', val)

    @classmethod
    def team_merge_request_sent_shown_to_primary_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_sent_shown_to_primary_team_details`` tag with value
        ``val``.

        :param TeamMergeRequestSentShownToPrimaryTeamDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_sent_shown_to_primary_team_details', val)

    @classmethod
    def team_merge_request_sent_shown_to_secondary_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_sent_shown_to_secondary_team_details`` tag with
        value ``val``.

        :param TeamMergeRequestSentShownToSecondaryTeamDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_request_sent_shown_to_secondary_team_details', val)

    @classmethod
    def missing_details(cls, val):
        """
        Create an instance of this class set to the ``missing_details`` tag with
        value ``val``.

        :param MissingDetails val:
        :rtype: EventDetails
        """
        return cls('missing_details', val)

    def is_app_link_team_details(self):
        """
        Check if the union tag is ``app_link_team_details``.

        :rtype: bool
        """
        return self._tag == 'app_link_team_details'

    def is_app_link_user_details(self):
        """
        Check if the union tag is ``app_link_user_details``.

        :rtype: bool
        """
        return self._tag == 'app_link_user_details'

    def is_app_unlink_team_details(self):
        """
        Check if the union tag is ``app_unlink_team_details``.

        :rtype: bool
        """
        return self._tag == 'app_unlink_team_details'

    def is_app_unlink_user_details(self):
        """
        Check if the union tag is ``app_unlink_user_details``.

        :rtype: bool
        """
        return self._tag == 'app_unlink_user_details'

    def is_integration_connected_details(self):
        """
        Check if the union tag is ``integration_connected_details``.

        :rtype: bool
        """
        return self._tag == 'integration_connected_details'

    def is_integration_disconnected_details(self):
        """
        Check if the union tag is ``integration_disconnected_details``.

        :rtype: bool
        """
        return self._tag == 'integration_disconnected_details'

    def is_file_add_comment_details(self):
        """
        Check if the union tag is ``file_add_comment_details``.

        :rtype: bool
        """
        return self._tag == 'file_add_comment_details'

    def is_file_change_comment_subscription_details(self):
        """
        Check if the union tag is ``file_change_comment_subscription_details``.

        :rtype: bool
        """
        return self._tag == 'file_change_comment_subscription_details'

    def is_file_delete_comment_details(self):
        """
        Check if the union tag is ``file_delete_comment_details``.

        :rtype: bool
        """
        return self._tag == 'file_delete_comment_details'

    def is_file_edit_comment_details(self):
        """
        Check if the union tag is ``file_edit_comment_details``.

        :rtype: bool
        """
        return self._tag == 'file_edit_comment_details'

    def is_file_like_comment_details(self):
        """
        Check if the union tag is ``file_like_comment_details``.

        :rtype: bool
        """
        return self._tag == 'file_like_comment_details'

    def is_file_resolve_comment_details(self):
        """
        Check if the union tag is ``file_resolve_comment_details``.

        :rtype: bool
        """
        return self._tag == 'file_resolve_comment_details'

    def is_file_unlike_comment_details(self):
        """
        Check if the union tag is ``file_unlike_comment_details``.

        :rtype: bool
        """
        return self._tag == 'file_unlike_comment_details'

    def is_file_unresolve_comment_details(self):
        """
        Check if the union tag is ``file_unresolve_comment_details``.

        :rtype: bool
        """
        return self._tag == 'file_unresolve_comment_details'

    def is_device_change_ip_desktop_details(self):
        """
        Check if the union tag is ``device_change_ip_desktop_details``.

        :rtype: bool
        """
        return self._tag == 'device_change_ip_desktop_details'

    def is_device_change_ip_mobile_details(self):
        """
        Check if the union tag is ``device_change_ip_mobile_details``.

        :rtype: bool
        """
        return self._tag == 'device_change_ip_mobile_details'

    def is_device_change_ip_web_details(self):
        """
        Check if the union tag is ``device_change_ip_web_details``.

        :rtype: bool
        """
        return self._tag == 'device_change_ip_web_details'

    def is_device_delete_on_unlink_fail_details(self):
        """
        Check if the union tag is ``device_delete_on_unlink_fail_details``.

        :rtype: bool
        """
        return self._tag == 'device_delete_on_unlink_fail_details'

    def is_device_delete_on_unlink_success_details(self):
        """
        Check if the union tag is ``device_delete_on_unlink_success_details``.

        :rtype: bool
        """
        return self._tag == 'device_delete_on_unlink_success_details'

    def is_device_link_fail_details(self):
        """
        Check if the union tag is ``device_link_fail_details``.

        :rtype: bool
        """
        return self._tag == 'device_link_fail_details'

    def is_device_link_success_details(self):
        """
        Check if the union tag is ``device_link_success_details``.

        :rtype: bool
        """
        return self._tag == 'device_link_success_details'

    def is_device_management_disabled_details(self):
        """
        Check if the union tag is ``device_management_disabled_details``.

        :rtype: bool
        """
        return self._tag == 'device_management_disabled_details'

    def is_device_management_enabled_details(self):
        """
        Check if the union tag is ``device_management_enabled_details``.

        :rtype: bool
        """
        return self._tag == 'device_management_enabled_details'

    def is_device_unlink_details(self):
        """
        Check if the union tag is ``device_unlink_details``.

        :rtype: bool
        """
        return self._tag == 'device_unlink_details'

    def is_emm_refresh_auth_token_details(self):
        """
        Check if the union tag is ``emm_refresh_auth_token_details``.

        :rtype: bool
        """
        return self._tag == 'emm_refresh_auth_token_details'

    def is_account_capture_change_availability_details(self):
        """
        Check if the union tag is ``account_capture_change_availability_details``.

        :rtype: bool
        """
        return self._tag == 'account_capture_change_availability_details'

    def is_account_capture_migrate_account_details(self):
        """
        Check if the union tag is ``account_capture_migrate_account_details``.

        :rtype: bool
        """
        return self._tag == 'account_capture_migrate_account_details'

    def is_account_capture_notification_emails_sent_details(self):
        """
        Check if the union tag is ``account_capture_notification_emails_sent_details``.

        :rtype: bool
        """
        return self._tag == 'account_capture_notification_emails_sent_details'

    def is_account_capture_relinquish_account_details(self):
        """
        Check if the union tag is ``account_capture_relinquish_account_details``.

        :rtype: bool
        """
        return self._tag == 'account_capture_relinquish_account_details'

    def is_disabled_domain_invites_details(self):
        """
        Check if the union tag is ``disabled_domain_invites_details``.

        :rtype: bool
        """
        return self._tag == 'disabled_domain_invites_details'

    def is_domain_invites_approve_request_to_join_team_details(self):
        """
        Check if the union tag is ``domain_invites_approve_request_to_join_team_details``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_approve_request_to_join_team_details'

    def is_domain_invites_decline_request_to_join_team_details(self):
        """
        Check if the union tag is ``domain_invites_decline_request_to_join_team_details``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_decline_request_to_join_team_details'

    def is_domain_invites_email_existing_users_details(self):
        """
        Check if the union tag is ``domain_invites_email_existing_users_details``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_email_existing_users_details'

    def is_domain_invites_request_to_join_team_details(self):
        """
        Check if the union tag is ``domain_invites_request_to_join_team_details``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_request_to_join_team_details'

    def is_domain_invites_set_invite_new_user_pref_to_no_details(self):
        """
        Check if the union tag is ``domain_invites_set_invite_new_user_pref_to_no_details``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_set_invite_new_user_pref_to_no_details'

    def is_domain_invites_set_invite_new_user_pref_to_yes_details(self):
        """
        Check if the union tag is ``domain_invites_set_invite_new_user_pref_to_yes_details``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_set_invite_new_user_pref_to_yes_details'

    def is_domain_verification_add_domain_fail_details(self):
        """
        Check if the union tag is ``domain_verification_add_domain_fail_details``.

        :rtype: bool
        """
        return self._tag == 'domain_verification_add_domain_fail_details'

    def is_domain_verification_add_domain_success_details(self):
        """
        Check if the union tag is ``domain_verification_add_domain_success_details``.

        :rtype: bool
        """
        return self._tag == 'domain_verification_add_domain_success_details'

    def is_domain_verification_remove_domain_details(self):
        """
        Check if the union tag is ``domain_verification_remove_domain_details``.

        :rtype: bool
        """
        return self._tag == 'domain_verification_remove_domain_details'

    def is_enabled_domain_invites_details(self):
        """
        Check if the union tag is ``enabled_domain_invites_details``.

        :rtype: bool
        """
        return self._tag == 'enabled_domain_invites_details'

    def is_create_folder_details(self):
        """
        Check if the union tag is ``create_folder_details``.

        :rtype: bool
        """
        return self._tag == 'create_folder_details'

    def is_file_add_details(self):
        """
        Check if the union tag is ``file_add_details``.

        :rtype: bool
        """
        return self._tag == 'file_add_details'

    def is_file_copy_details(self):
        """
        Check if the union tag is ``file_copy_details``.

        :rtype: bool
        """
        return self._tag == 'file_copy_details'

    def is_file_delete_details(self):
        """
        Check if the union tag is ``file_delete_details``.

        :rtype: bool
        """
        return self._tag == 'file_delete_details'

    def is_file_download_details(self):
        """
        Check if the union tag is ``file_download_details``.

        :rtype: bool
        """
        return self._tag == 'file_download_details'

    def is_file_edit_details(self):
        """
        Check if the union tag is ``file_edit_details``.

        :rtype: bool
        """
        return self._tag == 'file_edit_details'

    def is_file_get_copy_reference_details(self):
        """
        Check if the union tag is ``file_get_copy_reference_details``.

        :rtype: bool
        """
        return self._tag == 'file_get_copy_reference_details'

    def is_file_move_details(self):
        """
        Check if the union tag is ``file_move_details``.

        :rtype: bool
        """
        return self._tag == 'file_move_details'

    def is_file_permanently_delete_details(self):
        """
        Check if the union tag is ``file_permanently_delete_details``.

        :rtype: bool
        """
        return self._tag == 'file_permanently_delete_details'

    def is_file_preview_details(self):
        """
        Check if the union tag is ``file_preview_details``.

        :rtype: bool
        """
        return self._tag == 'file_preview_details'

    def is_file_rename_details(self):
        """
        Check if the union tag is ``file_rename_details``.

        :rtype: bool
        """
        return self._tag == 'file_rename_details'

    def is_file_restore_details(self):
        """
        Check if the union tag is ``file_restore_details``.

        :rtype: bool
        """
        return self._tag == 'file_restore_details'

    def is_file_revert_details(self):
        """
        Check if the union tag is ``file_revert_details``.

        :rtype: bool
        """
        return self._tag == 'file_revert_details'

    def is_file_rollback_changes_details(self):
        """
        Check if the union tag is ``file_rollback_changes_details``.

        :rtype: bool
        """
        return self._tag == 'file_rollback_changes_details'

    def is_file_save_copy_reference_details(self):
        """
        Check if the union tag is ``file_save_copy_reference_details``.

        :rtype: bool
        """
        return self._tag == 'file_save_copy_reference_details'

    def is_file_request_change_details(self):
        """
        Check if the union tag is ``file_request_change_details``.

        :rtype: bool
        """
        return self._tag == 'file_request_change_details'

    def is_file_request_close_details(self):
        """
        Check if the union tag is ``file_request_close_details``.

        :rtype: bool
        """
        return self._tag == 'file_request_close_details'

    def is_file_request_create_details(self):
        """
        Check if the union tag is ``file_request_create_details``.

        :rtype: bool
        """
        return self._tag == 'file_request_create_details'

    def is_file_request_delete_details(self):
        """
        Check if the union tag is ``file_request_delete_details``.

        :rtype: bool
        """
        return self._tag == 'file_request_delete_details'

    def is_file_request_receive_file_details(self):
        """
        Check if the union tag is ``file_request_receive_file_details``.

        :rtype: bool
        """
        return self._tag == 'file_request_receive_file_details'

    def is_group_add_external_id_details(self):
        """
        Check if the union tag is ``group_add_external_id_details``.

        :rtype: bool
        """
        return self._tag == 'group_add_external_id_details'

    def is_group_add_member_details(self):
        """
        Check if the union tag is ``group_add_member_details``.

        :rtype: bool
        """
        return self._tag == 'group_add_member_details'

    def is_group_change_external_id_details(self):
        """
        Check if the union tag is ``group_change_external_id_details``.

        :rtype: bool
        """
        return self._tag == 'group_change_external_id_details'

    def is_group_change_management_type_details(self):
        """
        Check if the union tag is ``group_change_management_type_details``.

        :rtype: bool
        """
        return self._tag == 'group_change_management_type_details'

    def is_group_change_member_role_details(self):
        """
        Check if the union tag is ``group_change_member_role_details``.

        :rtype: bool
        """
        return self._tag == 'group_change_member_role_details'

    def is_group_create_details(self):
        """
        Check if the union tag is ``group_create_details``.

        :rtype: bool
        """
        return self._tag == 'group_create_details'

    def is_group_delete_details(self):
        """
        Check if the union tag is ``group_delete_details``.

        :rtype: bool
        """
        return self._tag == 'group_delete_details'

    def is_group_description_updated_details(self):
        """
        Check if the union tag is ``group_description_updated_details``.

        :rtype: bool
        """
        return self._tag == 'group_description_updated_details'

    def is_group_join_policy_updated_details(self):
        """
        Check if the union tag is ``group_join_policy_updated_details``.

        :rtype: bool
        """
        return self._tag == 'group_join_policy_updated_details'

    def is_group_moved_details(self):
        """
        Check if the union tag is ``group_moved_details``.

        :rtype: bool
        """
        return self._tag == 'group_moved_details'

    def is_group_remove_external_id_details(self):
        """
        Check if the union tag is ``group_remove_external_id_details``.

        :rtype: bool
        """
        return self._tag == 'group_remove_external_id_details'

    def is_group_remove_member_details(self):
        """
        Check if the union tag is ``group_remove_member_details``.

        :rtype: bool
        """
        return self._tag == 'group_remove_member_details'

    def is_group_rename_details(self):
        """
        Check if the union tag is ``group_rename_details``.

        :rtype: bool
        """
        return self._tag == 'group_rename_details'

    def is_emm_error_details(self):
        """
        Check if the union tag is ``emm_error_details``.

        :rtype: bool
        """
        return self._tag == 'emm_error_details'

    def is_guest_admin_signed_in_via_trusted_teams_details(self):
        """
        Check if the union tag is ``guest_admin_signed_in_via_trusted_teams_details``.

        :rtype: bool
        """
        return self._tag == 'guest_admin_signed_in_via_trusted_teams_details'

    def is_guest_admin_signed_out_via_trusted_teams_details(self):
        """
        Check if the union tag is ``guest_admin_signed_out_via_trusted_teams_details``.

        :rtype: bool
        """
        return self._tag == 'guest_admin_signed_out_via_trusted_teams_details'

    def is_login_fail_details(self):
        """
        Check if the union tag is ``login_fail_details``.

        :rtype: bool
        """
        return self._tag == 'login_fail_details'

    def is_login_success_details(self):
        """
        Check if the union tag is ``login_success_details``.

        :rtype: bool
        """
        return self._tag == 'login_success_details'

    def is_logout_details(self):
        """
        Check if the union tag is ``logout_details``.

        :rtype: bool
        """
        return self._tag == 'logout_details'

    def is_reseller_support_session_end_details(self):
        """
        Check if the union tag is ``reseller_support_session_end_details``.

        :rtype: bool
        """
        return self._tag == 'reseller_support_session_end_details'

    def is_reseller_support_session_start_details(self):
        """
        Check if the union tag is ``reseller_support_session_start_details``.

        :rtype: bool
        """
        return self._tag == 'reseller_support_session_start_details'

    def is_sign_in_as_session_end_details(self):
        """
        Check if the union tag is ``sign_in_as_session_end_details``.

        :rtype: bool
        """
        return self._tag == 'sign_in_as_session_end_details'

    def is_sign_in_as_session_start_details(self):
        """
        Check if the union tag is ``sign_in_as_session_start_details``.

        :rtype: bool
        """
        return self._tag == 'sign_in_as_session_start_details'

    def is_sso_error_details(self):
        """
        Check if the union tag is ``sso_error_details``.

        :rtype: bool
        """
        return self._tag == 'sso_error_details'

    def is_member_add_external_id_details(self):
        """
        Check if the union tag is ``member_add_external_id_details``.

        :rtype: bool
        """
        return self._tag == 'member_add_external_id_details'

    def is_member_add_name_details(self):
        """
        Check if the union tag is ``member_add_name_details``.

        :rtype: bool
        """
        return self._tag == 'member_add_name_details'

    def is_member_change_admin_role_details(self):
        """
        Check if the union tag is ``member_change_admin_role_details``.

        :rtype: bool
        """
        return self._tag == 'member_change_admin_role_details'

    def is_member_change_email_details(self):
        """
        Check if the union tag is ``member_change_email_details``.

        :rtype: bool
        """
        return self._tag == 'member_change_email_details'

    def is_member_change_external_id_details(self):
        """
        Check if the union tag is ``member_change_external_id_details``.

        :rtype: bool
        """
        return self._tag == 'member_change_external_id_details'

    def is_member_change_membership_type_details(self):
        """
        Check if the union tag is ``member_change_membership_type_details``.

        :rtype: bool
        """
        return self._tag == 'member_change_membership_type_details'

    def is_member_change_name_details(self):
        """
        Check if the union tag is ``member_change_name_details``.

        :rtype: bool
        """
        return self._tag == 'member_change_name_details'

    def is_member_change_status_details(self):
        """
        Check if the union tag is ``member_change_status_details``.

        :rtype: bool
        """
        return self._tag == 'member_change_status_details'

    def is_member_delete_manual_contacts_details(self):
        """
        Check if the union tag is ``member_delete_manual_contacts_details``.

        :rtype: bool
        """
        return self._tag == 'member_delete_manual_contacts_details'

    def is_member_permanently_delete_account_contents_details(self):
        """
        Check if the union tag is ``member_permanently_delete_account_contents_details``.

        :rtype: bool
        """
        return self._tag == 'member_permanently_delete_account_contents_details'

    def is_member_remove_external_id_details(self):
        """
        Check if the union tag is ``member_remove_external_id_details``.

        :rtype: bool
        """
        return self._tag == 'member_remove_external_id_details'

    def is_member_space_limits_add_custom_quota_details(self):
        """
        Check if the union tag is ``member_space_limits_add_custom_quota_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_add_custom_quota_details'

    def is_member_space_limits_change_custom_quota_details(self):
        """
        Check if the union tag is ``member_space_limits_change_custom_quota_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_custom_quota_details'

    def is_member_space_limits_change_status_details(self):
        """
        Check if the union tag is ``member_space_limits_change_status_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_status_details'

    def is_member_space_limits_remove_custom_quota_details(self):
        """
        Check if the union tag is ``member_space_limits_remove_custom_quota_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_remove_custom_quota_details'

    def is_member_suggest_details(self):
        """
        Check if the union tag is ``member_suggest_details``.

        :rtype: bool
        """
        return self._tag == 'member_suggest_details'

    def is_member_transfer_account_contents_details(self):
        """
        Check if the union tag is ``member_transfer_account_contents_details``.

        :rtype: bool
        """
        return self._tag == 'member_transfer_account_contents_details'

    def is_secondary_mails_policy_changed_details(self):
        """
        Check if the union tag is ``secondary_mails_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'secondary_mails_policy_changed_details'

    def is_paper_content_add_member_details(self):
        """
        Check if the union tag is ``paper_content_add_member_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_add_member_details'

    def is_paper_content_add_to_folder_details(self):
        """
        Check if the union tag is ``paper_content_add_to_folder_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_add_to_folder_details'

    def is_paper_content_archive_details(self):
        """
        Check if the union tag is ``paper_content_archive_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_archive_details'

    def is_paper_content_create_details(self):
        """
        Check if the union tag is ``paper_content_create_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_create_details'

    def is_paper_content_permanently_delete_details(self):
        """
        Check if the union tag is ``paper_content_permanently_delete_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_permanently_delete_details'

    def is_paper_content_remove_from_folder_details(self):
        """
        Check if the union tag is ``paper_content_remove_from_folder_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_remove_from_folder_details'

    def is_paper_content_remove_member_details(self):
        """
        Check if the union tag is ``paper_content_remove_member_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_remove_member_details'

    def is_paper_content_rename_details(self):
        """
        Check if the union tag is ``paper_content_rename_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_rename_details'

    def is_paper_content_restore_details(self):
        """
        Check if the union tag is ``paper_content_restore_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_restore_details'

    def is_paper_doc_add_comment_details(self):
        """
        Check if the union tag is ``paper_doc_add_comment_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_add_comment_details'

    def is_paper_doc_change_member_role_details(self):
        """
        Check if the union tag is ``paper_doc_change_member_role_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_change_member_role_details'

    def is_paper_doc_change_sharing_policy_details(self):
        """
        Check if the union tag is ``paper_doc_change_sharing_policy_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_change_sharing_policy_details'

    def is_paper_doc_change_subscription_details(self):
        """
        Check if the union tag is ``paper_doc_change_subscription_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_change_subscription_details'

    def is_paper_doc_deleted_details(self):
        """
        Check if the union tag is ``paper_doc_deleted_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_deleted_details'

    def is_paper_doc_delete_comment_details(self):
        """
        Check if the union tag is ``paper_doc_delete_comment_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_delete_comment_details'

    def is_paper_doc_download_details(self):
        """
        Check if the union tag is ``paper_doc_download_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_download_details'

    def is_paper_doc_edit_details(self):
        """
        Check if the union tag is ``paper_doc_edit_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_edit_details'

    def is_paper_doc_edit_comment_details(self):
        """
        Check if the union tag is ``paper_doc_edit_comment_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_edit_comment_details'

    def is_paper_doc_followed_details(self):
        """
        Check if the union tag is ``paper_doc_followed_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_followed_details'

    def is_paper_doc_mention_details(self):
        """
        Check if the union tag is ``paper_doc_mention_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_mention_details'

    def is_paper_doc_ownership_changed_details(self):
        """
        Check if the union tag is ``paper_doc_ownership_changed_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_ownership_changed_details'

    def is_paper_doc_request_access_details(self):
        """
        Check if the union tag is ``paper_doc_request_access_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_request_access_details'

    def is_paper_doc_resolve_comment_details(self):
        """
        Check if the union tag is ``paper_doc_resolve_comment_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_resolve_comment_details'

    def is_paper_doc_revert_details(self):
        """
        Check if the union tag is ``paper_doc_revert_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_revert_details'

    def is_paper_doc_slack_share_details(self):
        """
        Check if the union tag is ``paper_doc_slack_share_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_slack_share_details'

    def is_paper_doc_team_invite_details(self):
        """
        Check if the union tag is ``paper_doc_team_invite_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_team_invite_details'

    def is_paper_doc_trashed_details(self):
        """
        Check if the union tag is ``paper_doc_trashed_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_trashed_details'

    def is_paper_doc_unresolve_comment_details(self):
        """
        Check if the union tag is ``paper_doc_unresolve_comment_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_unresolve_comment_details'

    def is_paper_doc_untrashed_details(self):
        """
        Check if the union tag is ``paper_doc_untrashed_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_untrashed_details'

    def is_paper_doc_view_details(self):
        """
        Check if the union tag is ``paper_doc_view_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_view_details'

    def is_paper_external_view_allow_details(self):
        """
        Check if the union tag is ``paper_external_view_allow_details``.

        :rtype: bool
        """
        return self._tag == 'paper_external_view_allow_details'

    def is_paper_external_view_default_team_details(self):
        """
        Check if the union tag is ``paper_external_view_default_team_details``.

        :rtype: bool
        """
        return self._tag == 'paper_external_view_default_team_details'

    def is_paper_external_view_forbid_details(self):
        """
        Check if the union tag is ``paper_external_view_forbid_details``.

        :rtype: bool
        """
        return self._tag == 'paper_external_view_forbid_details'

    def is_paper_folder_change_subscription_details(self):
        """
        Check if the union tag is ``paper_folder_change_subscription_details``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_change_subscription_details'

    def is_paper_folder_deleted_details(self):
        """
        Check if the union tag is ``paper_folder_deleted_details``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_deleted_details'

    def is_paper_folder_followed_details(self):
        """
        Check if the union tag is ``paper_folder_followed_details``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_followed_details'

    def is_paper_folder_team_invite_details(self):
        """
        Check if the union tag is ``paper_folder_team_invite_details``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_team_invite_details'

    def is_paper_published_link_create_details(self):
        """
        Check if the union tag is ``paper_published_link_create_details``.

        :rtype: bool
        """
        return self._tag == 'paper_published_link_create_details'

    def is_paper_published_link_disabled_details(self):
        """
        Check if the union tag is ``paper_published_link_disabled_details``.

        :rtype: bool
        """
        return self._tag == 'paper_published_link_disabled_details'

    def is_paper_published_link_view_details(self):
        """
        Check if the union tag is ``paper_published_link_view_details``.

        :rtype: bool
        """
        return self._tag == 'paper_published_link_view_details'

    def is_password_change_details(self):
        """
        Check if the union tag is ``password_change_details``.

        :rtype: bool
        """
        return self._tag == 'password_change_details'

    def is_password_reset_details(self):
        """
        Check if the union tag is ``password_reset_details``.

        :rtype: bool
        """
        return self._tag == 'password_reset_details'

    def is_password_reset_all_details(self):
        """
        Check if the union tag is ``password_reset_all_details``.

        :rtype: bool
        """
        return self._tag == 'password_reset_all_details'

    def is_emm_create_exceptions_report_details(self):
        """
        Check if the union tag is ``emm_create_exceptions_report_details``.

        :rtype: bool
        """
        return self._tag == 'emm_create_exceptions_report_details'

    def is_emm_create_usage_report_details(self):
        """
        Check if the union tag is ``emm_create_usage_report_details``.

        :rtype: bool
        """
        return self._tag == 'emm_create_usage_report_details'

    def is_export_members_report_details(self):
        """
        Check if the union tag is ``export_members_report_details``.

        :rtype: bool
        """
        return self._tag == 'export_members_report_details'

    def is_paper_admin_export_start_details(self):
        """
        Check if the union tag is ``paper_admin_export_start_details``.

        :rtype: bool
        """
        return self._tag == 'paper_admin_export_start_details'

    def is_smart_sync_create_admin_privilege_report_details(self):
        """
        Check if the union tag is ``smart_sync_create_admin_privilege_report_details``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_create_admin_privilege_report_details'

    def is_team_activity_create_report_details(self):
        """
        Check if the union tag is ``team_activity_create_report_details``.

        :rtype: bool
        """
        return self._tag == 'team_activity_create_report_details'

    def is_team_activity_create_report_fail_details(self):
        """
        Check if the union tag is ``team_activity_create_report_fail_details``.

        :rtype: bool
        """
        return self._tag == 'team_activity_create_report_fail_details'

    def is_collection_share_details(self):
        """
        Check if the union tag is ``collection_share_details``.

        :rtype: bool
        """
        return self._tag == 'collection_share_details'

    def is_note_acl_invite_only_details(self):
        """
        Check if the union tag is ``note_acl_invite_only_details``.

        :rtype: bool
        """
        return self._tag == 'note_acl_invite_only_details'

    def is_note_acl_link_details(self):
        """
        Check if the union tag is ``note_acl_link_details``.

        :rtype: bool
        """
        return self._tag == 'note_acl_link_details'

    def is_note_acl_team_link_details(self):
        """
        Check if the union tag is ``note_acl_team_link_details``.

        :rtype: bool
        """
        return self._tag == 'note_acl_team_link_details'

    def is_note_shared_details(self):
        """
        Check if the union tag is ``note_shared_details``.

        :rtype: bool
        """
        return self._tag == 'note_shared_details'

    def is_note_share_receive_details(self):
        """
        Check if the union tag is ``note_share_receive_details``.

        :rtype: bool
        """
        return self._tag == 'note_share_receive_details'

    def is_open_note_shared_details(self):
        """
        Check if the union tag is ``open_note_shared_details``.

        :rtype: bool
        """
        return self._tag == 'open_note_shared_details'

    def is_sf_add_group_details(self):
        """
        Check if the union tag is ``sf_add_group_details``.

        :rtype: bool
        """
        return self._tag == 'sf_add_group_details'

    def is_sf_allow_non_members_to_view_shared_links_details(self):
        """
        Check if the union tag is ``sf_allow_non_members_to_view_shared_links_details``.

        :rtype: bool
        """
        return self._tag == 'sf_allow_non_members_to_view_shared_links_details'

    def is_sf_external_invite_warn_details(self):
        """
        Check if the union tag is ``sf_external_invite_warn_details``.

        :rtype: bool
        """
        return self._tag == 'sf_external_invite_warn_details'

    def is_sf_fb_invite_details(self):
        """
        Check if the union tag is ``sf_fb_invite_details``.

        :rtype: bool
        """
        return self._tag == 'sf_fb_invite_details'

    def is_sf_fb_invite_change_role_details(self):
        """
        Check if the union tag is ``sf_fb_invite_change_role_details``.

        :rtype: bool
        """
        return self._tag == 'sf_fb_invite_change_role_details'

    def is_sf_fb_uninvite_details(self):
        """
        Check if the union tag is ``sf_fb_uninvite_details``.

        :rtype: bool
        """
        return self._tag == 'sf_fb_uninvite_details'

    def is_sf_invite_group_details(self):
        """
        Check if the union tag is ``sf_invite_group_details``.

        :rtype: bool
        """
        return self._tag == 'sf_invite_group_details'

    def is_sf_team_grant_access_details(self):
        """
        Check if the union tag is ``sf_team_grant_access_details``.

        :rtype: bool
        """
        return self._tag == 'sf_team_grant_access_details'

    def is_sf_team_invite_details(self):
        """
        Check if the union tag is ``sf_team_invite_details``.

        :rtype: bool
        """
        return self._tag == 'sf_team_invite_details'

    def is_sf_team_invite_change_role_details(self):
        """
        Check if the union tag is ``sf_team_invite_change_role_details``.

        :rtype: bool
        """
        return self._tag == 'sf_team_invite_change_role_details'

    def is_sf_team_join_details(self):
        """
        Check if the union tag is ``sf_team_join_details``.

        :rtype: bool
        """
        return self._tag == 'sf_team_join_details'

    def is_sf_team_join_from_oob_link_details(self):
        """
        Check if the union tag is ``sf_team_join_from_oob_link_details``.

        :rtype: bool
        """
        return self._tag == 'sf_team_join_from_oob_link_details'

    def is_sf_team_uninvite_details(self):
        """
        Check if the union tag is ``sf_team_uninvite_details``.

        :rtype: bool
        """
        return self._tag == 'sf_team_uninvite_details'

    def is_shared_content_add_invitees_details(self):
        """
        Check if the union tag is ``shared_content_add_invitees_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_invitees_details'

    def is_shared_content_add_link_expiry_details(self):
        """
        Check if the union tag is ``shared_content_add_link_expiry_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_link_expiry_details'

    def is_shared_content_add_link_password_details(self):
        """
        Check if the union tag is ``shared_content_add_link_password_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_link_password_details'

    def is_shared_content_add_member_details(self):
        """
        Check if the union tag is ``shared_content_add_member_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_member_details'

    def is_shared_content_change_downloads_policy_details(self):
        """
        Check if the union tag is ``shared_content_change_downloads_policy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_downloads_policy_details'

    def is_shared_content_change_invitee_role_details(self):
        """
        Check if the union tag is ``shared_content_change_invitee_role_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_invitee_role_details'

    def is_shared_content_change_link_audience_details(self):
        """
        Check if the union tag is ``shared_content_change_link_audience_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_link_audience_details'

    def is_shared_content_change_link_expiry_details(self):
        """
        Check if the union tag is ``shared_content_change_link_expiry_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_link_expiry_details'

    def is_shared_content_change_link_password_details(self):
        """
        Check if the union tag is ``shared_content_change_link_password_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_link_password_details'

    def is_shared_content_change_member_role_details(self):
        """
        Check if the union tag is ``shared_content_change_member_role_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_member_role_details'

    def is_shared_content_change_viewer_info_policy_details(self):
        """
        Check if the union tag is ``shared_content_change_viewer_info_policy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_viewer_info_policy_details'

    def is_shared_content_claim_invitation_details(self):
        """
        Check if the union tag is ``shared_content_claim_invitation_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_claim_invitation_details'

    def is_shared_content_copy_details(self):
        """
        Check if the union tag is ``shared_content_copy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_copy_details'

    def is_shared_content_download_details(self):
        """
        Check if the union tag is ``shared_content_download_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_download_details'

    def is_shared_content_relinquish_membership_details(self):
        """
        Check if the union tag is ``shared_content_relinquish_membership_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_relinquish_membership_details'

    def is_shared_content_remove_invitees_details(self):
        """
        Check if the union tag is ``shared_content_remove_invitees_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_invitees_details'

    def is_shared_content_remove_link_expiry_details(self):
        """
        Check if the union tag is ``shared_content_remove_link_expiry_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_link_expiry_details'

    def is_shared_content_remove_link_password_details(self):
        """
        Check if the union tag is ``shared_content_remove_link_password_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_link_password_details'

    def is_shared_content_remove_member_details(self):
        """
        Check if the union tag is ``shared_content_remove_member_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_member_details'

    def is_shared_content_request_access_details(self):
        """
        Check if the union tag is ``shared_content_request_access_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_request_access_details'

    def is_shared_content_unshare_details(self):
        """
        Check if the union tag is ``shared_content_unshare_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_unshare_details'

    def is_shared_content_view_details(self):
        """
        Check if the union tag is ``shared_content_view_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_view_details'

    def is_shared_folder_change_link_policy_details(self):
        """
        Check if the union tag is ``shared_folder_change_link_policy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_link_policy_details'

    def is_shared_folder_change_members_inheritance_policy_details(self):
        """
        Check if the union tag is ``shared_folder_change_members_inheritance_policy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_members_inheritance_policy_details'

    def is_shared_folder_change_members_management_policy_details(self):
        """
        Check if the union tag is ``shared_folder_change_members_management_policy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_members_management_policy_details'

    def is_shared_folder_change_members_policy_details(self):
        """
        Check if the union tag is ``shared_folder_change_members_policy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_members_policy_details'

    def is_shared_folder_create_details(self):
        """
        Check if the union tag is ``shared_folder_create_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_create_details'

    def is_shared_folder_decline_invitation_details(self):
        """
        Check if the union tag is ``shared_folder_decline_invitation_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_decline_invitation_details'

    def is_shared_folder_mount_details(self):
        """
        Check if the union tag is ``shared_folder_mount_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_mount_details'

    def is_shared_folder_nest_details(self):
        """
        Check if the union tag is ``shared_folder_nest_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_nest_details'

    def is_shared_folder_transfer_ownership_details(self):
        """
        Check if the union tag is ``shared_folder_transfer_ownership_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_transfer_ownership_details'

    def is_shared_folder_unmount_details(self):
        """
        Check if the union tag is ``shared_folder_unmount_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_unmount_details'

    def is_shared_link_add_expiry_details(self):
        """
        Check if the union tag is ``shared_link_add_expiry_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_add_expiry_details'

    def is_shared_link_change_expiry_details(self):
        """
        Check if the union tag is ``shared_link_change_expiry_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_change_expiry_details'

    def is_shared_link_change_visibility_details(self):
        """
        Check if the union tag is ``shared_link_change_visibility_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_change_visibility_details'

    def is_shared_link_copy_details(self):
        """
        Check if the union tag is ``shared_link_copy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_copy_details'

    def is_shared_link_create_details(self):
        """
        Check if the union tag is ``shared_link_create_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_create_details'

    def is_shared_link_disable_details(self):
        """
        Check if the union tag is ``shared_link_disable_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_disable_details'

    def is_shared_link_download_details(self):
        """
        Check if the union tag is ``shared_link_download_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_download_details'

    def is_shared_link_remove_expiry_details(self):
        """
        Check if the union tag is ``shared_link_remove_expiry_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_remove_expiry_details'

    def is_shared_link_share_details(self):
        """
        Check if the union tag is ``shared_link_share_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_share_details'

    def is_shared_link_view_details(self):
        """
        Check if the union tag is ``shared_link_view_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_view_details'

    def is_shared_note_opened_details(self):
        """
        Check if the union tag is ``shared_note_opened_details``.

        :rtype: bool
        """
        return self._tag == 'shared_note_opened_details'

    def is_shmodel_group_share_details(self):
        """
        Check if the union tag is ``shmodel_group_share_details``.

        :rtype: bool
        """
        return self._tag == 'shmodel_group_share_details'

    def is_showcase_access_granted_details(self):
        """
        Check if the union tag is ``showcase_access_granted_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_access_granted_details'

    def is_showcase_add_member_details(self):
        """
        Check if the union tag is ``showcase_add_member_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_add_member_details'

    def is_showcase_archived_details(self):
        """
        Check if the union tag is ``showcase_archived_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_archived_details'

    def is_showcase_created_details(self):
        """
        Check if the union tag is ``showcase_created_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_created_details'

    def is_showcase_delete_comment_details(self):
        """
        Check if the union tag is ``showcase_delete_comment_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_delete_comment_details'

    def is_showcase_edited_details(self):
        """
        Check if the union tag is ``showcase_edited_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_edited_details'

    def is_showcase_edit_comment_details(self):
        """
        Check if the union tag is ``showcase_edit_comment_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_edit_comment_details'

    def is_showcase_file_added_details(self):
        """
        Check if the union tag is ``showcase_file_added_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_added_details'

    def is_showcase_file_download_details(self):
        """
        Check if the union tag is ``showcase_file_download_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_download_details'

    def is_showcase_file_removed_details(self):
        """
        Check if the union tag is ``showcase_file_removed_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_removed_details'

    def is_showcase_file_view_details(self):
        """
        Check if the union tag is ``showcase_file_view_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_view_details'

    def is_showcase_permanently_deleted_details(self):
        """
        Check if the union tag is ``showcase_permanently_deleted_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_permanently_deleted_details'

    def is_showcase_post_comment_details(self):
        """
        Check if the union tag is ``showcase_post_comment_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_post_comment_details'

    def is_showcase_remove_member_details(self):
        """
        Check if the union tag is ``showcase_remove_member_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_remove_member_details'

    def is_showcase_renamed_details(self):
        """
        Check if the union tag is ``showcase_renamed_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_renamed_details'

    def is_showcase_request_access_details(self):
        """
        Check if the union tag is ``showcase_request_access_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_request_access_details'

    def is_showcase_resolve_comment_details(self):
        """
        Check if the union tag is ``showcase_resolve_comment_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_resolve_comment_details'

    def is_showcase_restored_details(self):
        """
        Check if the union tag is ``showcase_restored_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_restored_details'

    def is_showcase_trashed_details(self):
        """
        Check if the union tag is ``showcase_trashed_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_trashed_details'

    def is_showcase_trashed_deprecated_details(self):
        """
        Check if the union tag is ``showcase_trashed_deprecated_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_trashed_deprecated_details'

    def is_showcase_unresolve_comment_details(self):
        """
        Check if the union tag is ``showcase_unresolve_comment_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_unresolve_comment_details'

    def is_showcase_untrashed_details(self):
        """
        Check if the union tag is ``showcase_untrashed_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_untrashed_details'

    def is_showcase_untrashed_deprecated_details(self):
        """
        Check if the union tag is ``showcase_untrashed_deprecated_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_untrashed_deprecated_details'

    def is_showcase_view_details(self):
        """
        Check if the union tag is ``showcase_view_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_view_details'

    def is_sso_add_cert_details(self):
        """
        Check if the union tag is ``sso_add_cert_details``.

        :rtype: bool
        """
        return self._tag == 'sso_add_cert_details'

    def is_sso_add_login_url_details(self):
        """
        Check if the union tag is ``sso_add_login_url_details``.

        :rtype: bool
        """
        return self._tag == 'sso_add_login_url_details'

    def is_sso_add_logout_url_details(self):
        """
        Check if the union tag is ``sso_add_logout_url_details``.

        :rtype: bool
        """
        return self._tag == 'sso_add_logout_url_details'

    def is_sso_change_cert_details(self):
        """
        Check if the union tag is ``sso_change_cert_details``.

        :rtype: bool
        """
        return self._tag == 'sso_change_cert_details'

    def is_sso_change_login_url_details(self):
        """
        Check if the union tag is ``sso_change_login_url_details``.

        :rtype: bool
        """
        return self._tag == 'sso_change_login_url_details'

    def is_sso_change_logout_url_details(self):
        """
        Check if the union tag is ``sso_change_logout_url_details``.

        :rtype: bool
        """
        return self._tag == 'sso_change_logout_url_details'

    def is_sso_change_saml_identity_mode_details(self):
        """
        Check if the union tag is ``sso_change_saml_identity_mode_details``.

        :rtype: bool
        """
        return self._tag == 'sso_change_saml_identity_mode_details'

    def is_sso_remove_cert_details(self):
        """
        Check if the union tag is ``sso_remove_cert_details``.

        :rtype: bool
        """
        return self._tag == 'sso_remove_cert_details'

    def is_sso_remove_login_url_details(self):
        """
        Check if the union tag is ``sso_remove_login_url_details``.

        :rtype: bool
        """
        return self._tag == 'sso_remove_login_url_details'

    def is_sso_remove_logout_url_details(self):
        """
        Check if the union tag is ``sso_remove_logout_url_details``.

        :rtype: bool
        """
        return self._tag == 'sso_remove_logout_url_details'

    def is_team_folder_change_status_details(self):
        """
        Check if the union tag is ``team_folder_change_status_details``.

        :rtype: bool
        """
        return self._tag == 'team_folder_change_status_details'

    def is_team_folder_create_details(self):
        """
        Check if the union tag is ``team_folder_create_details``.

        :rtype: bool
        """
        return self._tag == 'team_folder_create_details'

    def is_team_folder_downgrade_details(self):
        """
        Check if the union tag is ``team_folder_downgrade_details``.

        :rtype: bool
        """
        return self._tag == 'team_folder_downgrade_details'

    def is_team_folder_permanently_delete_details(self):
        """
        Check if the union tag is ``team_folder_permanently_delete_details``.

        :rtype: bool
        """
        return self._tag == 'team_folder_permanently_delete_details'

    def is_team_folder_rename_details(self):
        """
        Check if the union tag is ``team_folder_rename_details``.

        :rtype: bool
        """
        return self._tag == 'team_folder_rename_details'

    def is_team_selective_sync_settings_changed_details(self):
        """
        Check if the union tag is ``team_selective_sync_settings_changed_details``.

        :rtype: bool
        """
        return self._tag == 'team_selective_sync_settings_changed_details'

    def is_account_capture_change_policy_details(self):
        """
        Check if the union tag is ``account_capture_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'account_capture_change_policy_details'

    def is_allow_download_disabled_details(self):
        """
        Check if the union tag is ``allow_download_disabled_details``.

        :rtype: bool
        """
        return self._tag == 'allow_download_disabled_details'

    def is_allow_download_enabled_details(self):
        """
        Check if the union tag is ``allow_download_enabled_details``.

        :rtype: bool
        """
        return self._tag == 'allow_download_enabled_details'

    def is_camera_uploads_policy_changed_details(self):
        """
        Check if the union tag is ``camera_uploads_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'camera_uploads_policy_changed_details'

    def is_data_placement_restriction_change_policy_details(self):
        """
        Check if the union tag is ``data_placement_restriction_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'data_placement_restriction_change_policy_details'

    def is_data_placement_restriction_satisfy_policy_details(self):
        """
        Check if the union tag is ``data_placement_restriction_satisfy_policy_details``.

        :rtype: bool
        """
        return self._tag == 'data_placement_restriction_satisfy_policy_details'

    def is_device_approvals_change_desktop_policy_details(self):
        """
        Check if the union tag is ``device_approvals_change_desktop_policy_details``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_desktop_policy_details'

    def is_device_approvals_change_mobile_policy_details(self):
        """
        Check if the union tag is ``device_approvals_change_mobile_policy_details``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_mobile_policy_details'

    def is_device_approvals_change_overage_action_details(self):
        """
        Check if the union tag is ``device_approvals_change_overage_action_details``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_overage_action_details'

    def is_device_approvals_change_unlink_action_details(self):
        """
        Check if the union tag is ``device_approvals_change_unlink_action_details``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_unlink_action_details'

    def is_directory_restrictions_add_members_details(self):
        """
        Check if the union tag is ``directory_restrictions_add_members_details``.

        :rtype: bool
        """
        return self._tag == 'directory_restrictions_add_members_details'

    def is_directory_restrictions_remove_members_details(self):
        """
        Check if the union tag is ``directory_restrictions_remove_members_details``.

        :rtype: bool
        """
        return self._tag == 'directory_restrictions_remove_members_details'

    def is_emm_add_exception_details(self):
        """
        Check if the union tag is ``emm_add_exception_details``.

        :rtype: bool
        """
        return self._tag == 'emm_add_exception_details'

    def is_emm_change_policy_details(self):
        """
        Check if the union tag is ``emm_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'emm_change_policy_details'

    def is_emm_remove_exception_details(self):
        """
        Check if the union tag is ``emm_remove_exception_details``.

        :rtype: bool
        """
        return self._tag == 'emm_remove_exception_details'

    def is_extended_version_history_change_policy_details(self):
        """
        Check if the union tag is ``extended_version_history_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'extended_version_history_change_policy_details'

    def is_file_comments_change_policy_details(self):
        """
        Check if the union tag is ``file_comments_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'file_comments_change_policy_details'

    def is_file_requests_change_policy_details(self):
        """
        Check if the union tag is ``file_requests_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'file_requests_change_policy_details'

    def is_file_requests_emails_enabled_details(self):
        """
        Check if the union tag is ``file_requests_emails_enabled_details``.

        :rtype: bool
        """
        return self._tag == 'file_requests_emails_enabled_details'

    def is_file_requests_emails_restricted_to_team_only_details(self):
        """
        Check if the union tag is ``file_requests_emails_restricted_to_team_only_details``.

        :rtype: bool
        """
        return self._tag == 'file_requests_emails_restricted_to_team_only_details'

    def is_google_sso_change_policy_details(self):
        """
        Check if the union tag is ``google_sso_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'google_sso_change_policy_details'

    def is_group_user_management_change_policy_details(self):
        """
        Check if the union tag is ``group_user_management_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'group_user_management_change_policy_details'

    def is_integration_policy_changed_details(self):
        """
        Check if the union tag is ``integration_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'integration_policy_changed_details'

    def is_member_requests_change_policy_details(self):
        """
        Check if the union tag is ``member_requests_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'member_requests_change_policy_details'

    def is_member_space_limits_add_exception_details(self):
        """
        Check if the union tag is ``member_space_limits_add_exception_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_add_exception_details'

    def is_member_space_limits_change_caps_type_policy_details(self):
        """
        Check if the union tag is ``member_space_limits_change_caps_type_policy_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_caps_type_policy_details'

    def is_member_space_limits_change_policy_details(self):
        """
        Check if the union tag is ``member_space_limits_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_policy_details'

    def is_member_space_limits_remove_exception_details(self):
        """
        Check if the union tag is ``member_space_limits_remove_exception_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_remove_exception_details'

    def is_member_suggestions_change_policy_details(self):
        """
        Check if the union tag is ``member_suggestions_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'member_suggestions_change_policy_details'

    def is_microsoft_office_addin_change_policy_details(self):
        """
        Check if the union tag is ``microsoft_office_addin_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'microsoft_office_addin_change_policy_details'

    def is_network_control_change_policy_details(self):
        """
        Check if the union tag is ``network_control_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'network_control_change_policy_details'

    def is_paper_change_deployment_policy_details(self):
        """
        Check if the union tag is ``paper_change_deployment_policy_details``.

        :rtype: bool
        """
        return self._tag == 'paper_change_deployment_policy_details'

    def is_paper_change_member_link_policy_details(self):
        """
        Check if the union tag is ``paper_change_member_link_policy_details``.

        :rtype: bool
        """
        return self._tag == 'paper_change_member_link_policy_details'

    def is_paper_change_member_policy_details(self):
        """
        Check if the union tag is ``paper_change_member_policy_details``.

        :rtype: bool
        """
        return self._tag == 'paper_change_member_policy_details'

    def is_paper_change_policy_details(self):
        """
        Check if the union tag is ``paper_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'paper_change_policy_details'

    def is_paper_default_folder_policy_changed_details(self):
        """
        Check if the union tag is ``paper_default_folder_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'paper_default_folder_policy_changed_details'

    def is_paper_desktop_policy_changed_details(self):
        """
        Check if the union tag is ``paper_desktop_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'paper_desktop_policy_changed_details'

    def is_paper_enabled_users_group_addition_details(self):
        """
        Check if the union tag is ``paper_enabled_users_group_addition_details``.

        :rtype: bool
        """
        return self._tag == 'paper_enabled_users_group_addition_details'

    def is_paper_enabled_users_group_removal_details(self):
        """
        Check if the union tag is ``paper_enabled_users_group_removal_details``.

        :rtype: bool
        """
        return self._tag == 'paper_enabled_users_group_removal_details'

    def is_permanent_delete_change_policy_details(self):
        """
        Check if the union tag is ``permanent_delete_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'permanent_delete_change_policy_details'

    def is_reseller_support_change_policy_details(self):
        """
        Check if the union tag is ``reseller_support_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'reseller_support_change_policy_details'

    def is_sharing_change_folder_join_policy_details(self):
        """
        Check if the union tag is ``sharing_change_folder_join_policy_details``.

        :rtype: bool
        """
        return self._tag == 'sharing_change_folder_join_policy_details'

    def is_sharing_change_link_policy_details(self):
        """
        Check if the union tag is ``sharing_change_link_policy_details``.

        :rtype: bool
        """
        return self._tag == 'sharing_change_link_policy_details'

    def is_sharing_change_member_policy_details(self):
        """
        Check if the union tag is ``sharing_change_member_policy_details``.

        :rtype: bool
        """
        return self._tag == 'sharing_change_member_policy_details'

    def is_showcase_change_download_policy_details(self):
        """
        Check if the union tag is ``showcase_change_download_policy_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_change_download_policy_details'

    def is_showcase_change_enabled_policy_details(self):
        """
        Check if the union tag is ``showcase_change_enabled_policy_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_change_enabled_policy_details'

    def is_showcase_change_external_sharing_policy_details(self):
        """
        Check if the union tag is ``showcase_change_external_sharing_policy_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_change_external_sharing_policy_details'

    def is_smart_sync_change_policy_details(self):
        """
        Check if the union tag is ``smart_sync_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_change_policy_details'

    def is_smart_sync_not_opt_out_details(self):
        """
        Check if the union tag is ``smart_sync_not_opt_out_details``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_not_opt_out_details'

    def is_smart_sync_opt_out_details(self):
        """
        Check if the union tag is ``smart_sync_opt_out_details``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_opt_out_details'

    def is_sso_change_policy_details(self):
        """
        Check if the union tag is ``sso_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'sso_change_policy_details'

    def is_team_extensions_policy_changed_details(self):
        """
        Check if the union tag is ``team_extensions_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'team_extensions_policy_changed_details'

    def is_team_selective_sync_policy_changed_details(self):
        """
        Check if the union tag is ``team_selective_sync_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'team_selective_sync_policy_changed_details'

    def is_tfa_change_policy_details(self):
        """
        Check if the union tag is ``tfa_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_change_policy_details'

    def is_two_account_change_policy_details(self):
        """
        Check if the union tag is ``two_account_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'two_account_change_policy_details'

    def is_viewer_info_policy_changed_details(self):
        """
        Check if the union tag is ``viewer_info_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'viewer_info_policy_changed_details'

    def is_web_sessions_change_fixed_length_policy_details(self):
        """
        Check if the union tag is ``web_sessions_change_fixed_length_policy_details``.

        :rtype: bool
        """
        return self._tag == 'web_sessions_change_fixed_length_policy_details'

    def is_web_sessions_change_idle_length_policy_details(self):
        """
        Check if the union tag is ``web_sessions_change_idle_length_policy_details``.

        :rtype: bool
        """
        return self._tag == 'web_sessions_change_idle_length_policy_details'

    def is_team_merge_from_details(self):
        """
        Check if the union tag is ``team_merge_from_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_from_details'

    def is_team_merge_to_details(self):
        """
        Check if the union tag is ``team_merge_to_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_to_details'

    def is_team_profile_add_logo_details(self):
        """
        Check if the union tag is ``team_profile_add_logo_details``.

        :rtype: bool
        """
        return self._tag == 'team_profile_add_logo_details'

    def is_team_profile_change_default_language_details(self):
        """
        Check if the union tag is ``team_profile_change_default_language_details``.

        :rtype: bool
        """
        return self._tag == 'team_profile_change_default_language_details'

    def is_team_profile_change_logo_details(self):
        """
        Check if the union tag is ``team_profile_change_logo_details``.

        :rtype: bool
        """
        return self._tag == 'team_profile_change_logo_details'

    def is_team_profile_change_name_details(self):
        """
        Check if the union tag is ``team_profile_change_name_details``.

        :rtype: bool
        """
        return self._tag == 'team_profile_change_name_details'

    def is_team_profile_remove_logo_details(self):
        """
        Check if the union tag is ``team_profile_remove_logo_details``.

        :rtype: bool
        """
        return self._tag == 'team_profile_remove_logo_details'

    def is_tfa_add_backup_phone_details(self):
        """
        Check if the union tag is ``tfa_add_backup_phone_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_add_backup_phone_details'

    def is_tfa_add_security_key_details(self):
        """
        Check if the union tag is ``tfa_add_security_key_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_add_security_key_details'

    def is_tfa_change_backup_phone_details(self):
        """
        Check if the union tag is ``tfa_change_backup_phone_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_change_backup_phone_details'

    def is_tfa_change_status_details(self):
        """
        Check if the union tag is ``tfa_change_status_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_change_status_details'

    def is_tfa_remove_backup_phone_details(self):
        """
        Check if the union tag is ``tfa_remove_backup_phone_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_remove_backup_phone_details'

    def is_tfa_remove_security_key_details(self):
        """
        Check if the union tag is ``tfa_remove_security_key_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_remove_security_key_details'

    def is_tfa_reset_details(self):
        """
        Check if the union tag is ``tfa_reset_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_reset_details'

    def is_guest_admin_change_status_details(self):
        """
        Check if the union tag is ``guest_admin_change_status_details``.

        :rtype: bool
        """
        return self._tag == 'guest_admin_change_status_details'

    def is_team_merge_request_accepted_details(self):
        """
        Check if the union tag is ``team_merge_request_accepted_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_accepted_details'

    def is_team_merge_request_accepted_shown_to_primary_team_details(self):
        """
        Check if the union tag is ``team_merge_request_accepted_shown_to_primary_team_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_accepted_shown_to_primary_team_details'

    def is_team_merge_request_accepted_shown_to_secondary_team_details(self):
        """
        Check if the union tag is ``team_merge_request_accepted_shown_to_secondary_team_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_accepted_shown_to_secondary_team_details'

    def is_team_merge_request_auto_canceled_details(self):
        """
        Check if the union tag is ``team_merge_request_auto_canceled_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_auto_canceled_details'

    def is_team_merge_request_canceled_details(self):
        """
        Check if the union tag is ``team_merge_request_canceled_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_canceled_details'

    def is_team_merge_request_canceled_shown_to_primary_team_details(self):
        """
        Check if the union tag is ``team_merge_request_canceled_shown_to_primary_team_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_canceled_shown_to_primary_team_details'

    def is_team_merge_request_canceled_shown_to_secondary_team_details(self):
        """
        Check if the union tag is ``team_merge_request_canceled_shown_to_secondary_team_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_canceled_shown_to_secondary_team_details'

    def is_team_merge_request_expired_details(self):
        """
        Check if the union tag is ``team_merge_request_expired_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_expired_details'

    def is_team_merge_request_expired_shown_to_primary_team_details(self):
        """
        Check if the union tag is ``team_merge_request_expired_shown_to_primary_team_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_expired_shown_to_primary_team_details'

    def is_team_merge_request_expired_shown_to_secondary_team_details(self):
        """
        Check if the union tag is ``team_merge_request_expired_shown_to_secondary_team_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_expired_shown_to_secondary_team_details'

    def is_team_merge_request_rejected_shown_to_primary_team_details(self):
        """
        Check if the union tag is ``team_merge_request_rejected_shown_to_primary_team_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_rejected_shown_to_primary_team_details'

    def is_team_merge_request_rejected_shown_to_secondary_team_details(self):
        """
        Check if the union tag is ``team_merge_request_rejected_shown_to_secondary_team_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_rejected_shown_to_secondary_team_details'

    def is_team_merge_request_reminder_details(self):
        """
        Check if the union tag is ``team_merge_request_reminder_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_reminder_details'

    def is_team_merge_request_reminder_shown_to_primary_team_details(self):
        """
        Check if the union tag is ``team_merge_request_reminder_shown_to_primary_team_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_reminder_shown_to_primary_team_details'

    def is_team_merge_request_reminder_shown_to_secondary_team_details(self):
        """
        Check if the union tag is ``team_merge_request_reminder_shown_to_secondary_team_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_reminder_shown_to_secondary_team_details'

    def is_team_merge_request_revoked_details(self):
        """
        Check if the union tag is ``team_merge_request_revoked_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_revoked_details'

    def is_team_merge_request_sent_shown_to_primary_team_details(self):
        """
        Check if the union tag is ``team_merge_request_sent_shown_to_primary_team_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_sent_shown_to_primary_team_details'

    def is_team_merge_request_sent_shown_to_secondary_team_details(self):
        """
        Check if the union tag is ``team_merge_request_sent_shown_to_secondary_team_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_sent_shown_to_secondary_team_details'

    def is_missing_details(self):
        """
        Check if the union tag is ``missing_details``.

        :rtype: bool
        """
        return self._tag == 'missing_details'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_app_link_team_details(self):
        """
        Only call this if :meth:`is_app_link_team_details` is true.

        :rtype: AppLinkTeamDetails
        """
        if not self.is_app_link_team_details():
            raise AttributeError("tag 'app_link_team_details' not set")
        return self._value

    def get_app_link_user_details(self):
        """
        Only call this if :meth:`is_app_link_user_details` is true.

        :rtype: AppLinkUserDetails
        """
        if not self.is_app_link_user_details():
            raise AttributeError("tag 'app_link_user_details' not set")
        return self._value

    def get_app_unlink_team_details(self):
        """
        Only call this if :meth:`is_app_unlink_team_details` is true.

        :rtype: AppUnlinkTeamDetails
        """
        if not self.is_app_unlink_team_details():
            raise AttributeError("tag 'app_unlink_team_details' not set")
        return self._value

    def get_app_unlink_user_details(self):
        """
        Only call this if :meth:`is_app_unlink_user_details` is true.

        :rtype: AppUnlinkUserDetails
        """
        if not self.is_app_unlink_user_details():
            raise AttributeError("tag 'app_unlink_user_details' not set")
        return self._value

    def get_integration_connected_details(self):
        """
        Only call this if :meth:`is_integration_connected_details` is true.

        :rtype: IntegrationConnectedDetails
        """
        if not self.is_integration_connected_details():
            raise AttributeError("tag 'integration_connected_details' not set")
        return self._value

    def get_integration_disconnected_details(self):
        """
        Only call this if :meth:`is_integration_disconnected_details` is true.

        :rtype: IntegrationDisconnectedDetails
        """
        if not self.is_integration_disconnected_details():
            raise AttributeError("tag 'integration_disconnected_details' not set")
        return self._value

    def get_file_add_comment_details(self):
        """
        Only call this if :meth:`is_file_add_comment_details` is true.

        :rtype: FileAddCommentDetails
        """
        if not self.is_file_add_comment_details():
            raise AttributeError("tag 'file_add_comment_details' not set")
        return self._value

    def get_file_change_comment_subscription_details(self):
        """
        Only call this if :meth:`is_file_change_comment_subscription_details` is true.

        :rtype: FileChangeCommentSubscriptionDetails
        """
        if not self.is_file_change_comment_subscription_details():
            raise AttributeError("tag 'file_change_comment_subscription_details' not set")
        return self._value

    def get_file_delete_comment_details(self):
        """
        Only call this if :meth:`is_file_delete_comment_details` is true.

        :rtype: FileDeleteCommentDetails
        """
        if not self.is_file_delete_comment_details():
            raise AttributeError("tag 'file_delete_comment_details' not set")
        return self._value

    def get_file_edit_comment_details(self):
        """
        Only call this if :meth:`is_file_edit_comment_details` is true.

        :rtype: FileEditCommentDetails
        """
        if not self.is_file_edit_comment_details():
            raise AttributeError("tag 'file_edit_comment_details' not set")
        return self._value

    def get_file_like_comment_details(self):
        """
        Only call this if :meth:`is_file_like_comment_details` is true.

        :rtype: FileLikeCommentDetails
        """
        if not self.is_file_like_comment_details():
            raise AttributeError("tag 'file_like_comment_details' not set")
        return self._value

    def get_file_resolve_comment_details(self):
        """
        Only call this if :meth:`is_file_resolve_comment_details` is true.

        :rtype: FileResolveCommentDetails
        """
        if not self.is_file_resolve_comment_details():
            raise AttributeError("tag 'file_resolve_comment_details' not set")
        return self._value

    def get_file_unlike_comment_details(self):
        """
        Only call this if :meth:`is_file_unlike_comment_details` is true.

        :rtype: FileUnlikeCommentDetails
        """
        if not self.is_file_unlike_comment_details():
            raise AttributeError("tag 'file_unlike_comment_details' not set")
        return self._value

    def get_file_unresolve_comment_details(self):
        """
        Only call this if :meth:`is_file_unresolve_comment_details` is true.

        :rtype: FileUnresolveCommentDetails
        """
        if not self.is_file_unresolve_comment_details():
            raise AttributeError("tag 'file_unresolve_comment_details' not set")
        return self._value

    def get_device_change_ip_desktop_details(self):
        """
        Only call this if :meth:`is_device_change_ip_desktop_details` is true.

        :rtype: DeviceChangeIpDesktopDetails
        """
        if not self.is_device_change_ip_desktop_details():
            raise AttributeError("tag 'device_change_ip_desktop_details' not set")
        return self._value

    def get_device_change_ip_mobile_details(self):
        """
        Only call this if :meth:`is_device_change_ip_mobile_details` is true.

        :rtype: DeviceChangeIpMobileDetails
        """
        if not self.is_device_change_ip_mobile_details():
            raise AttributeError("tag 'device_change_ip_mobile_details' not set")
        return self._value

    def get_device_change_ip_web_details(self):
        """
        Only call this if :meth:`is_device_change_ip_web_details` is true.

        :rtype: DeviceChangeIpWebDetails
        """
        if not self.is_device_change_ip_web_details():
            raise AttributeError("tag 'device_change_ip_web_details' not set")
        return self._value

    def get_device_delete_on_unlink_fail_details(self):
        """
        Only call this if :meth:`is_device_delete_on_unlink_fail_details` is true.

        :rtype: DeviceDeleteOnUnlinkFailDetails
        """
        if not self.is_device_delete_on_unlink_fail_details():
            raise AttributeError("tag 'device_delete_on_unlink_fail_details' not set")
        return self._value

    def get_device_delete_on_unlink_success_details(self):
        """
        Only call this if :meth:`is_device_delete_on_unlink_success_details` is true.

        :rtype: DeviceDeleteOnUnlinkSuccessDetails
        """
        if not self.is_device_delete_on_unlink_success_details():
            raise AttributeError("tag 'device_delete_on_unlink_success_details' not set")
        return self._value

    def get_device_link_fail_details(self):
        """
        Only call this if :meth:`is_device_link_fail_details` is true.

        :rtype: DeviceLinkFailDetails
        """
        if not self.is_device_link_fail_details():
            raise AttributeError("tag 'device_link_fail_details' not set")
        return self._value

    def get_device_link_success_details(self):
        """
        Only call this if :meth:`is_device_link_success_details` is true.

        :rtype: DeviceLinkSuccessDetails
        """
        if not self.is_device_link_success_details():
            raise AttributeError("tag 'device_link_success_details' not set")
        return self._value

    def get_device_management_disabled_details(self):
        """
        Only call this if :meth:`is_device_management_disabled_details` is true.

        :rtype: DeviceManagementDisabledDetails
        """
        if not self.is_device_management_disabled_details():
            raise AttributeError("tag 'device_management_disabled_details' not set")
        return self._value

    def get_device_management_enabled_details(self):
        """
        Only call this if :meth:`is_device_management_enabled_details` is true.

        :rtype: DeviceManagementEnabledDetails
        """
        if not self.is_device_management_enabled_details():
            raise AttributeError("tag 'device_management_enabled_details' not set")
        return self._value

    def get_device_unlink_details(self):
        """
        Only call this if :meth:`is_device_unlink_details` is true.

        :rtype: DeviceUnlinkDetails
        """
        if not self.is_device_unlink_details():
            raise AttributeError("tag 'device_unlink_details' not set")
        return self._value

    def get_emm_refresh_auth_token_details(self):
        """
        Only call this if :meth:`is_emm_refresh_auth_token_details` is true.

        :rtype: EmmRefreshAuthTokenDetails
        """
        if not self.is_emm_refresh_auth_token_details():
            raise AttributeError("tag 'emm_refresh_auth_token_details' not set")
        return self._value

    def get_account_capture_change_availability_details(self):
        """
        Only call this if :meth:`is_account_capture_change_availability_details` is true.

        :rtype: AccountCaptureChangeAvailabilityDetails
        """
        if not self.is_account_capture_change_availability_details():
            raise AttributeError("tag 'account_capture_change_availability_details' not set")
        return self._value

    def get_account_capture_migrate_account_details(self):
        """
        Only call this if :meth:`is_account_capture_migrate_account_details` is true.

        :rtype: AccountCaptureMigrateAccountDetails
        """
        if not self.is_account_capture_migrate_account_details():
            raise AttributeError("tag 'account_capture_migrate_account_details' not set")
        return self._value

    def get_account_capture_notification_emails_sent_details(self):
        """
        Only call this if :meth:`is_account_capture_notification_emails_sent_details` is true.

        :rtype: AccountCaptureNotificationEmailsSentDetails
        """
        if not self.is_account_capture_notification_emails_sent_details():
            raise AttributeError("tag 'account_capture_notification_emails_sent_details' not set")
        return self._value

    def get_account_capture_relinquish_account_details(self):
        """
        Only call this if :meth:`is_account_capture_relinquish_account_details` is true.

        :rtype: AccountCaptureRelinquishAccountDetails
        """
        if not self.is_account_capture_relinquish_account_details():
            raise AttributeError("tag 'account_capture_relinquish_account_details' not set")
        return self._value

    def get_disabled_domain_invites_details(self):
        """
        Only call this if :meth:`is_disabled_domain_invites_details` is true.

        :rtype: DisabledDomainInvitesDetails
        """
        if not self.is_disabled_domain_invites_details():
            raise AttributeError("tag 'disabled_domain_invites_details' not set")
        return self._value

    def get_domain_invites_approve_request_to_join_team_details(self):
        """
        Only call this if :meth:`is_domain_invites_approve_request_to_join_team_details` is true.

        :rtype: DomainInvitesApproveRequestToJoinTeamDetails
        """
        if not self.is_domain_invites_approve_request_to_join_team_details():
            raise AttributeError("tag 'domain_invites_approve_request_to_join_team_details' not set")
        return self._value

    def get_domain_invites_decline_request_to_join_team_details(self):
        """
        Only call this if :meth:`is_domain_invites_decline_request_to_join_team_details` is true.

        :rtype: DomainInvitesDeclineRequestToJoinTeamDetails
        """
        if not self.is_domain_invites_decline_request_to_join_team_details():
            raise AttributeError("tag 'domain_invites_decline_request_to_join_team_details' not set")
        return self._value

    def get_domain_invites_email_existing_users_details(self):
        """
        Only call this if :meth:`is_domain_invites_email_existing_users_details` is true.

        :rtype: DomainInvitesEmailExistingUsersDetails
        """
        if not self.is_domain_invites_email_existing_users_details():
            raise AttributeError("tag 'domain_invites_email_existing_users_details' not set")
        return self._value

    def get_domain_invites_request_to_join_team_details(self):
        """
        Only call this if :meth:`is_domain_invites_request_to_join_team_details` is true.

        :rtype: DomainInvitesRequestToJoinTeamDetails
        """
        if not self.is_domain_invites_request_to_join_team_details():
            raise AttributeError("tag 'domain_invites_request_to_join_team_details' not set")
        return self._value

    def get_domain_invites_set_invite_new_user_pref_to_no_details(self):
        """
        Only call this if :meth:`is_domain_invites_set_invite_new_user_pref_to_no_details` is true.

        :rtype: DomainInvitesSetInviteNewUserPrefToNoDetails
        """
        if not self.is_domain_invites_set_invite_new_user_pref_to_no_details():
            raise AttributeError("tag 'domain_invites_set_invite_new_user_pref_to_no_details' not set")
        return self._value

    def get_domain_invites_set_invite_new_user_pref_to_yes_details(self):
        """
        Only call this if :meth:`is_domain_invites_set_invite_new_user_pref_to_yes_details` is true.

        :rtype: DomainInvitesSetInviteNewUserPrefToYesDetails
        """
        if not self.is_domain_invites_set_invite_new_user_pref_to_yes_details():
            raise AttributeError("tag 'domain_invites_set_invite_new_user_pref_to_yes_details' not set")
        return self._value

    def get_domain_verification_add_domain_fail_details(self):
        """
        Only call this if :meth:`is_domain_verification_add_domain_fail_details` is true.

        :rtype: DomainVerificationAddDomainFailDetails
        """
        if not self.is_domain_verification_add_domain_fail_details():
            raise AttributeError("tag 'domain_verification_add_domain_fail_details' not set")
        return self._value

    def get_domain_verification_add_domain_success_details(self):
        """
        Only call this if :meth:`is_domain_verification_add_domain_success_details` is true.

        :rtype: DomainVerificationAddDomainSuccessDetails
        """
        if not self.is_domain_verification_add_domain_success_details():
            raise AttributeError("tag 'domain_verification_add_domain_success_details' not set")
        return self._value

    def get_domain_verification_remove_domain_details(self):
        """
        Only call this if :meth:`is_domain_verification_remove_domain_details` is true.

        :rtype: DomainVerificationRemoveDomainDetails
        """
        if not self.is_domain_verification_remove_domain_details():
            raise AttributeError("tag 'domain_verification_remove_domain_details' not set")
        return self._value

    def get_enabled_domain_invites_details(self):
        """
        Only call this if :meth:`is_enabled_domain_invites_details` is true.

        :rtype: EnabledDomainInvitesDetails
        """
        if not self.is_enabled_domain_invites_details():
            raise AttributeError("tag 'enabled_domain_invites_details' not set")
        return self._value

    def get_create_folder_details(self):
        """
        Only call this if :meth:`is_create_folder_details` is true.

        :rtype: CreateFolderDetails
        """
        if not self.is_create_folder_details():
            raise AttributeError("tag 'create_folder_details' not set")
        return self._value

    def get_file_add_details(self):
        """
        Only call this if :meth:`is_file_add_details` is true.

        :rtype: FileAddDetails
        """
        if not self.is_file_add_details():
            raise AttributeError("tag 'file_add_details' not set")
        return self._value

    def get_file_copy_details(self):
        """
        Only call this if :meth:`is_file_copy_details` is true.

        :rtype: FileCopyDetails
        """
        if not self.is_file_copy_details():
            raise AttributeError("tag 'file_copy_details' not set")
        return self._value

    def get_file_delete_details(self):
        """
        Only call this if :meth:`is_file_delete_details` is true.

        :rtype: FileDeleteDetails
        """
        if not self.is_file_delete_details():
            raise AttributeError("tag 'file_delete_details' not set")
        return self._value

    def get_file_download_details(self):
        """
        Only call this if :meth:`is_file_download_details` is true.

        :rtype: FileDownloadDetails
        """
        if not self.is_file_download_details():
            raise AttributeError("tag 'file_download_details' not set")
        return self._value

    def get_file_edit_details(self):
        """
        Only call this if :meth:`is_file_edit_details` is true.

        :rtype: FileEditDetails
        """
        if not self.is_file_edit_details():
            raise AttributeError("tag 'file_edit_details' not set")
        return self._value

    def get_file_get_copy_reference_details(self):
        """
        Only call this if :meth:`is_file_get_copy_reference_details` is true.

        :rtype: FileGetCopyReferenceDetails
        """
        if not self.is_file_get_copy_reference_details():
            raise AttributeError("tag 'file_get_copy_reference_details' not set")
        return self._value

    def get_file_move_details(self):
        """
        Only call this if :meth:`is_file_move_details` is true.

        :rtype: FileMoveDetails
        """
        if not self.is_file_move_details():
            raise AttributeError("tag 'file_move_details' not set")
        return self._value

    def get_file_permanently_delete_details(self):
        """
        Only call this if :meth:`is_file_permanently_delete_details` is true.

        :rtype: FilePermanentlyDeleteDetails
        """
        if not self.is_file_permanently_delete_details():
            raise AttributeError("tag 'file_permanently_delete_details' not set")
        return self._value

    def get_file_preview_details(self):
        """
        Only call this if :meth:`is_file_preview_details` is true.

        :rtype: FilePreviewDetails
        """
        if not self.is_file_preview_details():
            raise AttributeError("tag 'file_preview_details' not set")
        return self._value

    def get_file_rename_details(self):
        """
        Only call this if :meth:`is_file_rename_details` is true.

        :rtype: FileRenameDetails
        """
        if not self.is_file_rename_details():
            raise AttributeError("tag 'file_rename_details' not set")
        return self._value

    def get_file_restore_details(self):
        """
        Only call this if :meth:`is_file_restore_details` is true.

        :rtype: FileRestoreDetails
        """
        if not self.is_file_restore_details():
            raise AttributeError("tag 'file_restore_details' not set")
        return self._value

    def get_file_revert_details(self):
        """
        Only call this if :meth:`is_file_revert_details` is true.

        :rtype: FileRevertDetails
        """
        if not self.is_file_revert_details():
            raise AttributeError("tag 'file_revert_details' not set")
        return self._value

    def get_file_rollback_changes_details(self):
        """
        Only call this if :meth:`is_file_rollback_changes_details` is true.

        :rtype: FileRollbackChangesDetails
        """
        if not self.is_file_rollback_changes_details():
            raise AttributeError("tag 'file_rollback_changes_details' not set")
        return self._value

    def get_file_save_copy_reference_details(self):
        """
        Only call this if :meth:`is_file_save_copy_reference_details` is true.

        :rtype: FileSaveCopyReferenceDetails
        """
        if not self.is_file_save_copy_reference_details():
            raise AttributeError("tag 'file_save_copy_reference_details' not set")
        return self._value

    def get_file_request_change_details(self):
        """
        Only call this if :meth:`is_file_request_change_details` is true.

        :rtype: FileRequestChangeDetails
        """
        if not self.is_file_request_change_details():
            raise AttributeError("tag 'file_request_change_details' not set")
        return self._value

    def get_file_request_close_details(self):
        """
        Only call this if :meth:`is_file_request_close_details` is true.

        :rtype: FileRequestCloseDetails
        """
        if not self.is_file_request_close_details():
            raise AttributeError("tag 'file_request_close_details' not set")
        return self._value

    def get_file_request_create_details(self):
        """
        Only call this if :meth:`is_file_request_create_details` is true.

        :rtype: FileRequestCreateDetails
        """
        if not self.is_file_request_create_details():
            raise AttributeError("tag 'file_request_create_details' not set")
        return self._value

    def get_file_request_delete_details(self):
        """
        Only call this if :meth:`is_file_request_delete_details` is true.

        :rtype: FileRequestDeleteDetails
        """
        if not self.is_file_request_delete_details():
            raise AttributeError("tag 'file_request_delete_details' not set")
        return self._value

    def get_file_request_receive_file_details(self):
        """
        Only call this if :meth:`is_file_request_receive_file_details` is true.

        :rtype: FileRequestReceiveFileDetails
        """
        if not self.is_file_request_receive_file_details():
            raise AttributeError("tag 'file_request_receive_file_details' not set")
        return self._value

    def get_group_add_external_id_details(self):
        """
        Only call this if :meth:`is_group_add_external_id_details` is true.

        :rtype: GroupAddExternalIdDetails
        """
        if not self.is_group_add_external_id_details():
            raise AttributeError("tag 'group_add_external_id_details' not set")
        return self._value

    def get_group_add_member_details(self):
        """
        Only call this if :meth:`is_group_add_member_details` is true.

        :rtype: GroupAddMemberDetails
        """
        if not self.is_group_add_member_details():
            raise AttributeError("tag 'group_add_member_details' not set")
        return self._value

    def get_group_change_external_id_details(self):
        """
        Only call this if :meth:`is_group_change_external_id_details` is true.

        :rtype: GroupChangeExternalIdDetails
        """
        if not self.is_group_change_external_id_details():
            raise AttributeError("tag 'group_change_external_id_details' not set")
        return self._value

    def get_group_change_management_type_details(self):
        """
        Only call this if :meth:`is_group_change_management_type_details` is true.

        :rtype: GroupChangeManagementTypeDetails
        """
        if not self.is_group_change_management_type_details():
            raise AttributeError("tag 'group_change_management_type_details' not set")
        return self._value

    def get_group_change_member_role_details(self):
        """
        Only call this if :meth:`is_group_change_member_role_details` is true.

        :rtype: GroupChangeMemberRoleDetails
        """
        if not self.is_group_change_member_role_details():
            raise AttributeError("tag 'group_change_member_role_details' not set")
        return self._value

    def get_group_create_details(self):
        """
        Only call this if :meth:`is_group_create_details` is true.

        :rtype: GroupCreateDetails
        """
        if not self.is_group_create_details():
            raise AttributeError("tag 'group_create_details' not set")
        return self._value

    def get_group_delete_details(self):
        """
        Only call this if :meth:`is_group_delete_details` is true.

        :rtype: GroupDeleteDetails
        """
        if not self.is_group_delete_details():
            raise AttributeError("tag 'group_delete_details' not set")
        return self._value

    def get_group_description_updated_details(self):
        """
        Only call this if :meth:`is_group_description_updated_details` is true.

        :rtype: GroupDescriptionUpdatedDetails
        """
        if not self.is_group_description_updated_details():
            raise AttributeError("tag 'group_description_updated_details' not set")
        return self._value

    def get_group_join_policy_updated_details(self):
        """
        Only call this if :meth:`is_group_join_policy_updated_details` is true.

        :rtype: GroupJoinPolicyUpdatedDetails
        """
        if not self.is_group_join_policy_updated_details():
            raise AttributeError("tag 'group_join_policy_updated_details' not set")
        return self._value

    def get_group_moved_details(self):
        """
        Only call this if :meth:`is_group_moved_details` is true.

        :rtype: GroupMovedDetails
        """
        if not self.is_group_moved_details():
            raise AttributeError("tag 'group_moved_details' not set")
        return self._value

    def get_group_remove_external_id_details(self):
        """
        Only call this if :meth:`is_group_remove_external_id_details` is true.

        :rtype: GroupRemoveExternalIdDetails
        """
        if not self.is_group_remove_external_id_details():
            raise AttributeError("tag 'group_remove_external_id_details' not set")
        return self._value

    def get_group_remove_member_details(self):
        """
        Only call this if :meth:`is_group_remove_member_details` is true.

        :rtype: GroupRemoveMemberDetails
        """
        if not self.is_group_remove_member_details():
            raise AttributeError("tag 'group_remove_member_details' not set")
        return self._value

    def get_group_rename_details(self):
        """
        Only call this if :meth:`is_group_rename_details` is true.

        :rtype: GroupRenameDetails
        """
        if not self.is_group_rename_details():
            raise AttributeError("tag 'group_rename_details' not set")
        return self._value

    def get_emm_error_details(self):
        """
        Only call this if :meth:`is_emm_error_details` is true.

        :rtype: EmmErrorDetails
        """
        if not self.is_emm_error_details():
            raise AttributeError("tag 'emm_error_details' not set")
        return self._value

    def get_guest_admin_signed_in_via_trusted_teams_details(self):
        """
        Only call this if :meth:`is_guest_admin_signed_in_via_trusted_teams_details` is true.

        :rtype: GuestAdminSignedInViaTrustedTeamsDetails
        """
        if not self.is_guest_admin_signed_in_via_trusted_teams_details():
            raise AttributeError("tag 'guest_admin_signed_in_via_trusted_teams_details' not set")
        return self._value

    def get_guest_admin_signed_out_via_trusted_teams_details(self):
        """
        Only call this if :meth:`is_guest_admin_signed_out_via_trusted_teams_details` is true.

        :rtype: GuestAdminSignedOutViaTrustedTeamsDetails
        """
        if not self.is_guest_admin_signed_out_via_trusted_teams_details():
            raise AttributeError("tag 'guest_admin_signed_out_via_trusted_teams_details' not set")
        return self._value

    def get_login_fail_details(self):
        """
        Only call this if :meth:`is_login_fail_details` is true.

        :rtype: LoginFailDetails
        """
        if not self.is_login_fail_details():
            raise AttributeError("tag 'login_fail_details' not set")
        return self._value

    def get_login_success_details(self):
        """
        Only call this if :meth:`is_login_success_details` is true.

        :rtype: LoginSuccessDetails
        """
        if not self.is_login_success_details():
            raise AttributeError("tag 'login_success_details' not set")
        return self._value

    def get_logout_details(self):
        """
        Only call this if :meth:`is_logout_details` is true.

        :rtype: LogoutDetails
        """
        if not self.is_logout_details():
            raise AttributeError("tag 'logout_details' not set")
        return self._value

    def get_reseller_support_session_end_details(self):
        """
        Only call this if :meth:`is_reseller_support_session_end_details` is true.

        :rtype: ResellerSupportSessionEndDetails
        """
        if not self.is_reseller_support_session_end_details():
            raise AttributeError("tag 'reseller_support_session_end_details' not set")
        return self._value

    def get_reseller_support_session_start_details(self):
        """
        Only call this if :meth:`is_reseller_support_session_start_details` is true.

        :rtype: ResellerSupportSessionStartDetails
        """
        if not self.is_reseller_support_session_start_details():
            raise AttributeError("tag 'reseller_support_session_start_details' not set")
        return self._value

    def get_sign_in_as_session_end_details(self):
        """
        Only call this if :meth:`is_sign_in_as_session_end_details` is true.

        :rtype: SignInAsSessionEndDetails
        """
        if not self.is_sign_in_as_session_end_details():
            raise AttributeError("tag 'sign_in_as_session_end_details' not set")
        return self._value

    def get_sign_in_as_session_start_details(self):
        """
        Only call this if :meth:`is_sign_in_as_session_start_details` is true.

        :rtype: SignInAsSessionStartDetails
        """
        if not self.is_sign_in_as_session_start_details():
            raise AttributeError("tag 'sign_in_as_session_start_details' not set")
        return self._value

    def get_sso_error_details(self):
        """
        Only call this if :meth:`is_sso_error_details` is true.

        :rtype: SsoErrorDetails
        """
        if not self.is_sso_error_details():
            raise AttributeError("tag 'sso_error_details' not set")
        return self._value

    def get_member_add_external_id_details(self):
        """
        Only call this if :meth:`is_member_add_external_id_details` is true.

        :rtype: MemberAddExternalIdDetails
        """
        if not self.is_member_add_external_id_details():
            raise AttributeError("tag 'member_add_external_id_details' not set")
        return self._value

    def get_member_add_name_details(self):
        """
        Only call this if :meth:`is_member_add_name_details` is true.

        :rtype: MemberAddNameDetails
        """
        if not self.is_member_add_name_details():
            raise AttributeError("tag 'member_add_name_details' not set")
        return self._value

    def get_member_change_admin_role_details(self):
        """
        Only call this if :meth:`is_member_change_admin_role_details` is true.

        :rtype: MemberChangeAdminRoleDetails
        """
        if not self.is_member_change_admin_role_details():
            raise AttributeError("tag 'member_change_admin_role_details' not set")
        return self._value

    def get_member_change_email_details(self):
        """
        Only call this if :meth:`is_member_change_email_details` is true.

        :rtype: MemberChangeEmailDetails
        """
        if not self.is_member_change_email_details():
            raise AttributeError("tag 'member_change_email_details' not set")
        return self._value

    def get_member_change_external_id_details(self):
        """
        Only call this if :meth:`is_member_change_external_id_details` is true.

        :rtype: MemberChangeExternalIdDetails
        """
        if not self.is_member_change_external_id_details():
            raise AttributeError("tag 'member_change_external_id_details' not set")
        return self._value

    def get_member_change_membership_type_details(self):
        """
        Only call this if :meth:`is_member_change_membership_type_details` is true.

        :rtype: MemberChangeMembershipTypeDetails
        """
        if not self.is_member_change_membership_type_details():
            raise AttributeError("tag 'member_change_membership_type_details' not set")
        return self._value

    def get_member_change_name_details(self):
        """
        Only call this if :meth:`is_member_change_name_details` is true.

        :rtype: MemberChangeNameDetails
        """
        if not self.is_member_change_name_details():
            raise AttributeError("tag 'member_change_name_details' not set")
        return self._value

    def get_member_change_status_details(self):
        """
        Only call this if :meth:`is_member_change_status_details` is true.

        :rtype: MemberChangeStatusDetails
        """
        if not self.is_member_change_status_details():
            raise AttributeError("tag 'member_change_status_details' not set")
        return self._value

    def get_member_delete_manual_contacts_details(self):
        """
        Only call this if :meth:`is_member_delete_manual_contacts_details` is true.

        :rtype: MemberDeleteManualContactsDetails
        """
        if not self.is_member_delete_manual_contacts_details():
            raise AttributeError("tag 'member_delete_manual_contacts_details' not set")
        return self._value

    def get_member_permanently_delete_account_contents_details(self):
        """
        Only call this if :meth:`is_member_permanently_delete_account_contents_details` is true.

        :rtype: MemberPermanentlyDeleteAccountContentsDetails
        """
        if not self.is_member_permanently_delete_account_contents_details():
            raise AttributeError("tag 'member_permanently_delete_account_contents_details' not set")
        return self._value

    def get_member_remove_external_id_details(self):
        """
        Only call this if :meth:`is_member_remove_external_id_details` is true.

        :rtype: MemberRemoveExternalIdDetails
        """
        if not self.is_member_remove_external_id_details():
            raise AttributeError("tag 'member_remove_external_id_details' not set")
        return self._value

    def get_member_space_limits_add_custom_quota_details(self):
        """
        Only call this if :meth:`is_member_space_limits_add_custom_quota_details` is true.

        :rtype: MemberSpaceLimitsAddCustomQuotaDetails
        """
        if not self.is_member_space_limits_add_custom_quota_details():
            raise AttributeError("tag 'member_space_limits_add_custom_quota_details' not set")
        return self._value

    def get_member_space_limits_change_custom_quota_details(self):
        """
        Only call this if :meth:`is_member_space_limits_change_custom_quota_details` is true.

        :rtype: MemberSpaceLimitsChangeCustomQuotaDetails
        """
        if not self.is_member_space_limits_change_custom_quota_details():
            raise AttributeError("tag 'member_space_limits_change_custom_quota_details' not set")
        return self._value

    def get_member_space_limits_change_status_details(self):
        """
        Only call this if :meth:`is_member_space_limits_change_status_details` is true.

        :rtype: MemberSpaceLimitsChangeStatusDetails
        """
        if not self.is_member_space_limits_change_status_details():
            raise AttributeError("tag 'member_space_limits_change_status_details' not set")
        return self._value

    def get_member_space_limits_remove_custom_quota_details(self):
        """
        Only call this if :meth:`is_member_space_limits_remove_custom_quota_details` is true.

        :rtype: MemberSpaceLimitsRemoveCustomQuotaDetails
        """
        if not self.is_member_space_limits_remove_custom_quota_details():
            raise AttributeError("tag 'member_space_limits_remove_custom_quota_details' not set")
        return self._value

    def get_member_suggest_details(self):
        """
        Only call this if :meth:`is_member_suggest_details` is true.

        :rtype: MemberSuggestDetails
        """
        if not self.is_member_suggest_details():
            raise AttributeError("tag 'member_suggest_details' not set")
        return self._value

    def get_member_transfer_account_contents_details(self):
        """
        Only call this if :meth:`is_member_transfer_account_contents_details` is true.

        :rtype: MemberTransferAccountContentsDetails
        """
        if not self.is_member_transfer_account_contents_details():
            raise AttributeError("tag 'member_transfer_account_contents_details' not set")
        return self._value

    def get_secondary_mails_policy_changed_details(self):
        """
        Only call this if :meth:`is_secondary_mails_policy_changed_details` is true.

        :rtype: SecondaryMailsPolicyChangedDetails
        """
        if not self.is_secondary_mails_policy_changed_details():
            raise AttributeError("tag 'secondary_mails_policy_changed_details' not set")
        return self._value

    def get_paper_content_add_member_details(self):
        """
        Only call this if :meth:`is_paper_content_add_member_details` is true.

        :rtype: PaperContentAddMemberDetails
        """
        if not self.is_paper_content_add_member_details():
            raise AttributeError("tag 'paper_content_add_member_details' not set")
        return self._value

    def get_paper_content_add_to_folder_details(self):
        """
        Only call this if :meth:`is_paper_content_add_to_folder_details` is true.

        :rtype: PaperContentAddToFolderDetails
        """
        if not self.is_paper_content_add_to_folder_details():
            raise AttributeError("tag 'paper_content_add_to_folder_details' not set")
        return self._value

    def get_paper_content_archive_details(self):
        """
        Only call this if :meth:`is_paper_content_archive_details` is true.

        :rtype: PaperContentArchiveDetails
        """
        if not self.is_paper_content_archive_details():
            raise AttributeError("tag 'paper_content_archive_details' not set")
        return self._value

    def get_paper_content_create_details(self):
        """
        Only call this if :meth:`is_paper_content_create_details` is true.

        :rtype: PaperContentCreateDetails
        """
        if not self.is_paper_content_create_details():
            raise AttributeError("tag 'paper_content_create_details' not set")
        return self._value

    def get_paper_content_permanently_delete_details(self):
        """
        Only call this if :meth:`is_paper_content_permanently_delete_details` is true.

        :rtype: PaperContentPermanentlyDeleteDetails
        """
        if not self.is_paper_content_permanently_delete_details():
            raise AttributeError("tag 'paper_content_permanently_delete_details' not set")
        return self._value

    def get_paper_content_remove_from_folder_details(self):
        """
        Only call this if :meth:`is_paper_content_remove_from_folder_details` is true.

        :rtype: PaperContentRemoveFromFolderDetails
        """
        if not self.is_paper_content_remove_from_folder_details():
            raise AttributeError("tag 'paper_content_remove_from_folder_details' not set")
        return self._value

    def get_paper_content_remove_member_details(self):
        """
        Only call this if :meth:`is_paper_content_remove_member_details` is true.

        :rtype: PaperContentRemoveMemberDetails
        """
        if not self.is_paper_content_remove_member_details():
            raise AttributeError("tag 'paper_content_remove_member_details' not set")
        return self._value

    def get_paper_content_rename_details(self):
        """
        Only call this if :meth:`is_paper_content_rename_details` is true.

        :rtype: PaperContentRenameDetails
        """
        if not self.is_paper_content_rename_details():
            raise AttributeError("tag 'paper_content_rename_details' not set")
        return self._value

    def get_paper_content_restore_details(self):
        """
        Only call this if :meth:`is_paper_content_restore_details` is true.

        :rtype: PaperContentRestoreDetails
        """
        if not self.is_paper_content_restore_details():
            raise AttributeError("tag 'paper_content_restore_details' not set")
        return self._value

    def get_paper_doc_add_comment_details(self):
        """
        Only call this if :meth:`is_paper_doc_add_comment_details` is true.

        :rtype: PaperDocAddCommentDetails
        """
        if not self.is_paper_doc_add_comment_details():
            raise AttributeError("tag 'paper_doc_add_comment_details' not set")
        return self._value

    def get_paper_doc_change_member_role_details(self):
        """
        Only call this if :meth:`is_paper_doc_change_member_role_details` is true.

        :rtype: PaperDocChangeMemberRoleDetails
        """
        if not self.is_paper_doc_change_member_role_details():
            raise AttributeError("tag 'paper_doc_change_member_role_details' not set")
        return self._value

    def get_paper_doc_change_sharing_policy_details(self):
        """
        Only call this if :meth:`is_paper_doc_change_sharing_policy_details` is true.

        :rtype: PaperDocChangeSharingPolicyDetails
        """
        if not self.is_paper_doc_change_sharing_policy_details():
            raise AttributeError("tag 'paper_doc_change_sharing_policy_details' not set")
        return self._value

    def get_paper_doc_change_subscription_details(self):
        """
        Only call this if :meth:`is_paper_doc_change_subscription_details` is true.

        :rtype: PaperDocChangeSubscriptionDetails
        """
        if not self.is_paper_doc_change_subscription_details():
            raise AttributeError("tag 'paper_doc_change_subscription_details' not set")
        return self._value

    def get_paper_doc_deleted_details(self):
        """
        Only call this if :meth:`is_paper_doc_deleted_details` is true.

        :rtype: PaperDocDeletedDetails
        """
        if not self.is_paper_doc_deleted_details():
            raise AttributeError("tag 'paper_doc_deleted_details' not set")
        return self._value

    def get_paper_doc_delete_comment_details(self):
        """
        Only call this if :meth:`is_paper_doc_delete_comment_details` is true.

        :rtype: PaperDocDeleteCommentDetails
        """
        if not self.is_paper_doc_delete_comment_details():
            raise AttributeError("tag 'paper_doc_delete_comment_details' not set")
        return self._value

    def get_paper_doc_download_details(self):
        """
        Only call this if :meth:`is_paper_doc_download_details` is true.

        :rtype: PaperDocDownloadDetails
        """
        if not self.is_paper_doc_download_details():
            raise AttributeError("tag 'paper_doc_download_details' not set")
        return self._value

    def get_paper_doc_edit_details(self):
        """
        Only call this if :meth:`is_paper_doc_edit_details` is true.

        :rtype: PaperDocEditDetails
        """
        if not self.is_paper_doc_edit_details():
            raise AttributeError("tag 'paper_doc_edit_details' not set")
        return self._value

    def get_paper_doc_edit_comment_details(self):
        """
        Only call this if :meth:`is_paper_doc_edit_comment_details` is true.

        :rtype: PaperDocEditCommentDetails
        """
        if not self.is_paper_doc_edit_comment_details():
            raise AttributeError("tag 'paper_doc_edit_comment_details' not set")
        return self._value

    def get_paper_doc_followed_details(self):
        """
        Only call this if :meth:`is_paper_doc_followed_details` is true.

        :rtype: PaperDocFollowedDetails
        """
        if not self.is_paper_doc_followed_details():
            raise AttributeError("tag 'paper_doc_followed_details' not set")
        return self._value

    def get_paper_doc_mention_details(self):
        """
        Only call this if :meth:`is_paper_doc_mention_details` is true.

        :rtype: PaperDocMentionDetails
        """
        if not self.is_paper_doc_mention_details():
            raise AttributeError("tag 'paper_doc_mention_details' not set")
        return self._value

    def get_paper_doc_ownership_changed_details(self):
        """
        Only call this if :meth:`is_paper_doc_ownership_changed_details` is true.

        :rtype: PaperDocOwnershipChangedDetails
        """
        if not self.is_paper_doc_ownership_changed_details():
            raise AttributeError("tag 'paper_doc_ownership_changed_details' not set")
        return self._value

    def get_paper_doc_request_access_details(self):
        """
        Only call this if :meth:`is_paper_doc_request_access_details` is true.

        :rtype: PaperDocRequestAccessDetails
        """
        if not self.is_paper_doc_request_access_details():
            raise AttributeError("tag 'paper_doc_request_access_details' not set")
        return self._value

    def get_paper_doc_resolve_comment_details(self):
        """
        Only call this if :meth:`is_paper_doc_resolve_comment_details` is true.

        :rtype: PaperDocResolveCommentDetails
        """
        if not self.is_paper_doc_resolve_comment_details():
            raise AttributeError("tag 'paper_doc_resolve_comment_details' not set")
        return self._value

    def get_paper_doc_revert_details(self):
        """
        Only call this if :meth:`is_paper_doc_revert_details` is true.

        :rtype: PaperDocRevertDetails
        """
        if not self.is_paper_doc_revert_details():
            raise AttributeError("tag 'paper_doc_revert_details' not set")
        return self._value

    def get_paper_doc_slack_share_details(self):
        """
        Only call this if :meth:`is_paper_doc_slack_share_details` is true.

        :rtype: PaperDocSlackShareDetails
        """
        if not self.is_paper_doc_slack_share_details():
            raise AttributeError("tag 'paper_doc_slack_share_details' not set")
        return self._value

    def get_paper_doc_team_invite_details(self):
        """
        Only call this if :meth:`is_paper_doc_team_invite_details` is true.

        :rtype: PaperDocTeamInviteDetails
        """
        if not self.is_paper_doc_team_invite_details():
            raise AttributeError("tag 'paper_doc_team_invite_details' not set")
        return self._value

    def get_paper_doc_trashed_details(self):
        """
        Only call this if :meth:`is_paper_doc_trashed_details` is true.

        :rtype: PaperDocTrashedDetails
        """
        if not self.is_paper_doc_trashed_details():
            raise AttributeError("tag 'paper_doc_trashed_details' not set")
        return self._value

    def get_paper_doc_unresolve_comment_details(self):
        """
        Only call this if :meth:`is_paper_doc_unresolve_comment_details` is true.

        :rtype: PaperDocUnresolveCommentDetails
        """
        if not self.is_paper_doc_unresolve_comment_details():
            raise AttributeError("tag 'paper_doc_unresolve_comment_details' not set")
        return self._value

    def get_paper_doc_untrashed_details(self):
        """
        Only call this if :meth:`is_paper_doc_untrashed_details` is true.

        :rtype: PaperDocUntrashedDetails
        """
        if not self.is_paper_doc_untrashed_details():
            raise AttributeError("tag 'paper_doc_untrashed_details' not set")
        return self._value

    def get_paper_doc_view_details(self):
        """
        Only call this if :meth:`is_paper_doc_view_details` is true.

        :rtype: PaperDocViewDetails
        """
        if not self.is_paper_doc_view_details():
            raise AttributeError("tag 'paper_doc_view_details' not set")
        return self._value

    def get_paper_external_view_allow_details(self):
        """
        Only call this if :meth:`is_paper_external_view_allow_details` is true.

        :rtype: PaperExternalViewAllowDetails
        """
        if not self.is_paper_external_view_allow_details():
            raise AttributeError("tag 'paper_external_view_allow_details' not set")
        return self._value

    def get_paper_external_view_default_team_details(self):
        """
        Only call this if :meth:`is_paper_external_view_default_team_details` is true.

        :rtype: PaperExternalViewDefaultTeamDetails
        """
        if not self.is_paper_external_view_default_team_details():
            raise AttributeError("tag 'paper_external_view_default_team_details' not set")
        return self._value

    def get_paper_external_view_forbid_details(self):
        """
        Only call this if :meth:`is_paper_external_view_forbid_details` is true.

        :rtype: PaperExternalViewForbidDetails
        """
        if not self.is_paper_external_view_forbid_details():
            raise AttributeError("tag 'paper_external_view_forbid_details' not set")
        return self._value

    def get_paper_folder_change_subscription_details(self):
        """
        Only call this if :meth:`is_paper_folder_change_subscription_details` is true.

        :rtype: PaperFolderChangeSubscriptionDetails
        """
        if not self.is_paper_folder_change_subscription_details():
            raise AttributeError("tag 'paper_folder_change_subscription_details' not set")
        return self._value

    def get_paper_folder_deleted_details(self):
        """
        Only call this if :meth:`is_paper_folder_deleted_details` is true.

        :rtype: PaperFolderDeletedDetails
        """
        if not self.is_paper_folder_deleted_details():
            raise AttributeError("tag 'paper_folder_deleted_details' not set")
        return self._value

    def get_paper_folder_followed_details(self):
        """
        Only call this if :meth:`is_paper_folder_followed_details` is true.

        :rtype: PaperFolderFollowedDetails
        """
        if not self.is_paper_folder_followed_details():
            raise AttributeError("tag 'paper_folder_followed_details' not set")
        return self._value

    def get_paper_folder_team_invite_details(self):
        """
        Only call this if :meth:`is_paper_folder_team_invite_details` is true.

        :rtype: PaperFolderTeamInviteDetails
        """
        if not self.is_paper_folder_team_invite_details():
            raise AttributeError("tag 'paper_folder_team_invite_details' not set")
        return self._value

    def get_paper_published_link_create_details(self):
        """
        Only call this if :meth:`is_paper_published_link_create_details` is true.

        :rtype: PaperPublishedLinkCreateDetails
        """
        if not self.is_paper_published_link_create_details():
            raise AttributeError("tag 'paper_published_link_create_details' not set")
        return self._value

    def get_paper_published_link_disabled_details(self):
        """
        Only call this if :meth:`is_paper_published_link_disabled_details` is true.

        :rtype: PaperPublishedLinkDisabledDetails
        """
        if not self.is_paper_published_link_disabled_details():
            raise AttributeError("tag 'paper_published_link_disabled_details' not set")
        return self._value

    def get_paper_published_link_view_details(self):
        """
        Only call this if :meth:`is_paper_published_link_view_details` is true.

        :rtype: PaperPublishedLinkViewDetails
        """
        if not self.is_paper_published_link_view_details():
            raise AttributeError("tag 'paper_published_link_view_details' not set")
        return self._value

    def get_password_change_details(self):
        """
        Only call this if :meth:`is_password_change_details` is true.

        :rtype: PasswordChangeDetails
        """
        if not self.is_password_change_details():
            raise AttributeError("tag 'password_change_details' not set")
        return self._value

    def get_password_reset_details(self):
        """
        Only call this if :meth:`is_password_reset_details` is true.

        :rtype: PasswordResetDetails
        """
        if not self.is_password_reset_details():
            raise AttributeError("tag 'password_reset_details' not set")
        return self._value

    def get_password_reset_all_details(self):
        """
        Only call this if :meth:`is_password_reset_all_details` is true.

        :rtype: PasswordResetAllDetails
        """
        if not self.is_password_reset_all_details():
            raise AttributeError("tag 'password_reset_all_details' not set")
        return self._value

    def get_emm_create_exceptions_report_details(self):
        """
        Only call this if :meth:`is_emm_create_exceptions_report_details` is true.

        :rtype: EmmCreateExceptionsReportDetails
        """
        if not self.is_emm_create_exceptions_report_details():
            raise AttributeError("tag 'emm_create_exceptions_report_details' not set")
        return self._value

    def get_emm_create_usage_report_details(self):
        """
        Only call this if :meth:`is_emm_create_usage_report_details` is true.

        :rtype: EmmCreateUsageReportDetails
        """
        if not self.is_emm_create_usage_report_details():
            raise AttributeError("tag 'emm_create_usage_report_details' not set")
        return self._value

    def get_export_members_report_details(self):
        """
        Only call this if :meth:`is_export_members_report_details` is true.

        :rtype: ExportMembersReportDetails
        """
        if not self.is_export_members_report_details():
            raise AttributeError("tag 'export_members_report_details' not set")
        return self._value

    def get_paper_admin_export_start_details(self):
        """
        Only call this if :meth:`is_paper_admin_export_start_details` is true.

        :rtype: PaperAdminExportStartDetails
        """
        if not self.is_paper_admin_export_start_details():
            raise AttributeError("tag 'paper_admin_export_start_details' not set")
        return self._value

    def get_smart_sync_create_admin_privilege_report_details(self):
        """
        Only call this if :meth:`is_smart_sync_create_admin_privilege_report_details` is true.

        :rtype: SmartSyncCreateAdminPrivilegeReportDetails
        """
        if not self.is_smart_sync_create_admin_privilege_report_details():
            raise AttributeError("tag 'smart_sync_create_admin_privilege_report_details' not set")
        return self._value

    def get_team_activity_create_report_details(self):
        """
        Only call this if :meth:`is_team_activity_create_report_details` is true.

        :rtype: TeamActivityCreateReportDetails
        """
        if not self.is_team_activity_create_report_details():
            raise AttributeError("tag 'team_activity_create_report_details' not set")
        return self._value

    def get_team_activity_create_report_fail_details(self):
        """
        Only call this if :meth:`is_team_activity_create_report_fail_details` is true.

        :rtype: TeamActivityCreateReportFailDetails
        """
        if not self.is_team_activity_create_report_fail_details():
            raise AttributeError("tag 'team_activity_create_report_fail_details' not set")
        return self._value

    def get_collection_share_details(self):
        """
        Only call this if :meth:`is_collection_share_details` is true.

        :rtype: CollectionShareDetails
        """
        if not self.is_collection_share_details():
            raise AttributeError("tag 'collection_share_details' not set")
        return self._value

    def get_note_acl_invite_only_details(self):
        """
        Only call this if :meth:`is_note_acl_invite_only_details` is true.

        :rtype: NoteAclInviteOnlyDetails
        """
        if not self.is_note_acl_invite_only_details():
            raise AttributeError("tag 'note_acl_invite_only_details' not set")
        return self._value

    def get_note_acl_link_details(self):
        """
        Only call this if :meth:`is_note_acl_link_details` is true.

        :rtype: NoteAclLinkDetails
        """
        if not self.is_note_acl_link_details():
            raise AttributeError("tag 'note_acl_link_details' not set")
        return self._value

    def get_note_acl_team_link_details(self):
        """
        Only call this if :meth:`is_note_acl_team_link_details` is true.

        :rtype: NoteAclTeamLinkDetails
        """
        if not self.is_note_acl_team_link_details():
            raise AttributeError("tag 'note_acl_team_link_details' not set")
        return self._value

    def get_note_shared_details(self):
        """
        Only call this if :meth:`is_note_shared_details` is true.

        :rtype: NoteSharedDetails
        """
        if not self.is_note_shared_details():
            raise AttributeError("tag 'note_shared_details' not set")
        return self._value

    def get_note_share_receive_details(self):
        """
        Only call this if :meth:`is_note_share_receive_details` is true.

        :rtype: NoteShareReceiveDetails
        """
        if not self.is_note_share_receive_details():
            raise AttributeError("tag 'note_share_receive_details' not set")
        return self._value

    def get_open_note_shared_details(self):
        """
        Only call this if :meth:`is_open_note_shared_details` is true.

        :rtype: OpenNoteSharedDetails
        """
        if not self.is_open_note_shared_details():
            raise AttributeError("tag 'open_note_shared_details' not set")
        return self._value

    def get_sf_add_group_details(self):
        """
        Only call this if :meth:`is_sf_add_group_details` is true.

        :rtype: SfAddGroupDetails
        """
        if not self.is_sf_add_group_details():
            raise AttributeError("tag 'sf_add_group_details' not set")
        return self._value

    def get_sf_allow_non_members_to_view_shared_links_details(self):
        """
        Only call this if :meth:`is_sf_allow_non_members_to_view_shared_links_details` is true.

        :rtype: SfAllowNonMembersToViewSharedLinksDetails
        """
        if not self.is_sf_allow_non_members_to_view_shared_links_details():
            raise AttributeError("tag 'sf_allow_non_members_to_view_shared_links_details' not set")
        return self._value

    def get_sf_external_invite_warn_details(self):
        """
        Only call this if :meth:`is_sf_external_invite_warn_details` is true.

        :rtype: SfExternalInviteWarnDetails
        """
        if not self.is_sf_external_invite_warn_details():
            raise AttributeError("tag 'sf_external_invite_warn_details' not set")
        return self._value

    def get_sf_fb_invite_details(self):
        """
        Only call this if :meth:`is_sf_fb_invite_details` is true.

        :rtype: SfFbInviteDetails
        """
        if not self.is_sf_fb_invite_details():
            raise AttributeError("tag 'sf_fb_invite_details' not set")
        return self._value

    def get_sf_fb_invite_change_role_details(self):
        """
        Only call this if :meth:`is_sf_fb_invite_change_role_details` is true.

        :rtype: SfFbInviteChangeRoleDetails
        """
        if not self.is_sf_fb_invite_change_role_details():
            raise AttributeError("tag 'sf_fb_invite_change_role_details' not set")
        return self._value

    def get_sf_fb_uninvite_details(self):
        """
        Only call this if :meth:`is_sf_fb_uninvite_details` is true.

        :rtype: SfFbUninviteDetails
        """
        if not self.is_sf_fb_uninvite_details():
            raise AttributeError("tag 'sf_fb_uninvite_details' not set")
        return self._value

    def get_sf_invite_group_details(self):
        """
        Only call this if :meth:`is_sf_invite_group_details` is true.

        :rtype: SfInviteGroupDetails
        """
        if not self.is_sf_invite_group_details():
            raise AttributeError("tag 'sf_invite_group_details' not set")
        return self._value

    def get_sf_team_grant_access_details(self):
        """
        Only call this if :meth:`is_sf_team_grant_access_details` is true.

        :rtype: SfTeamGrantAccessDetails
        """
        if not self.is_sf_team_grant_access_details():
            raise AttributeError("tag 'sf_team_grant_access_details' not set")
        return self._value

    def get_sf_team_invite_details(self):
        """
        Only call this if :meth:`is_sf_team_invite_details` is true.

        :rtype: SfTeamInviteDetails
        """
        if not self.is_sf_team_invite_details():
            raise AttributeError("tag 'sf_team_invite_details' not set")
        return self._value

    def get_sf_team_invite_change_role_details(self):
        """
        Only call this if :meth:`is_sf_team_invite_change_role_details` is true.

        :rtype: SfTeamInviteChangeRoleDetails
        """
        if not self.is_sf_team_invite_change_role_details():
            raise AttributeError("tag 'sf_team_invite_change_role_details' not set")
        return self._value

    def get_sf_team_join_details(self):
        """
        Only call this if :meth:`is_sf_team_join_details` is true.

        :rtype: SfTeamJoinDetails
        """
        if not self.is_sf_team_join_details():
            raise AttributeError("tag 'sf_team_join_details' not set")
        return self._value

    def get_sf_team_join_from_oob_link_details(self):
        """
        Only call this if :meth:`is_sf_team_join_from_oob_link_details` is true.

        :rtype: SfTeamJoinFromOobLinkDetails
        """
        if not self.is_sf_team_join_from_oob_link_details():
            raise AttributeError("tag 'sf_team_join_from_oob_link_details' not set")
        return self._value

    def get_sf_team_uninvite_details(self):
        """
        Only call this if :meth:`is_sf_team_uninvite_details` is true.

        :rtype: SfTeamUninviteDetails
        """
        if not self.is_sf_team_uninvite_details():
            raise AttributeError("tag 'sf_team_uninvite_details' not set")
        return self._value

    def get_shared_content_add_invitees_details(self):
        """
        Only call this if :meth:`is_shared_content_add_invitees_details` is true.

        :rtype: SharedContentAddInviteesDetails
        """
        if not self.is_shared_content_add_invitees_details():
            raise AttributeError("tag 'shared_content_add_invitees_details' not set")
        return self._value

    def get_shared_content_add_link_expiry_details(self):
        """
        Only call this if :meth:`is_shared_content_add_link_expiry_details` is true.

        :rtype: SharedContentAddLinkExpiryDetails
        """
        if not self.is_shared_content_add_link_expiry_details():
            raise AttributeError("tag 'shared_content_add_link_expiry_details' not set")
        return self._value

    def get_shared_content_add_link_password_details(self):
        """
        Only call this if :meth:`is_shared_content_add_link_password_details` is true.

        :rtype: SharedContentAddLinkPasswordDetails
        """
        if not self.is_shared_content_add_link_password_details():
            raise AttributeError("tag 'shared_content_add_link_password_details' not set")
        return self._value

    def get_shared_content_add_member_details(self):
        """
        Only call this if :meth:`is_shared_content_add_member_details` is true.

        :rtype: SharedContentAddMemberDetails
        """
        if not self.is_shared_content_add_member_details():
            raise AttributeError("tag 'shared_content_add_member_details' not set")
        return self._value

    def get_shared_content_change_downloads_policy_details(self):
        """
        Only call this if :meth:`is_shared_content_change_downloads_policy_details` is true.

        :rtype: SharedContentChangeDownloadsPolicyDetails
        """
        if not self.is_shared_content_change_downloads_policy_details():
            raise AttributeError("tag 'shared_content_change_downloads_policy_details' not set")
        return self._value

    def get_shared_content_change_invitee_role_details(self):
        """
        Only call this if :meth:`is_shared_content_change_invitee_role_details` is true.

        :rtype: SharedContentChangeInviteeRoleDetails
        """
        if not self.is_shared_content_change_invitee_role_details():
            raise AttributeError("tag 'shared_content_change_invitee_role_details' not set")
        return self._value

    def get_shared_content_change_link_audience_details(self):
        """
        Only call this if :meth:`is_shared_content_change_link_audience_details` is true.

        :rtype: SharedContentChangeLinkAudienceDetails
        """
        if not self.is_shared_content_change_link_audience_details():
            raise AttributeError("tag 'shared_content_change_link_audience_details' not set")
        return self._value

    def get_shared_content_change_link_expiry_details(self):
        """
        Only call this if :meth:`is_shared_content_change_link_expiry_details` is true.

        :rtype: SharedContentChangeLinkExpiryDetails
        """
        if not self.is_shared_content_change_link_expiry_details():
            raise AttributeError("tag 'shared_content_change_link_expiry_details' not set")
        return self._value

    def get_shared_content_change_link_password_details(self):
        """
        Only call this if :meth:`is_shared_content_change_link_password_details` is true.

        :rtype: SharedContentChangeLinkPasswordDetails
        """
        if not self.is_shared_content_change_link_password_details():
            raise AttributeError("tag 'shared_content_change_link_password_details' not set")
        return self._value

    def get_shared_content_change_member_role_details(self):
        """
        Only call this if :meth:`is_shared_content_change_member_role_details` is true.

        :rtype: SharedContentChangeMemberRoleDetails
        """
        if not self.is_shared_content_change_member_role_details():
            raise AttributeError("tag 'shared_content_change_member_role_details' not set")
        return self._value

    def get_shared_content_change_viewer_info_policy_details(self):
        """
        Only call this if :meth:`is_shared_content_change_viewer_info_policy_details` is true.

        :rtype: SharedContentChangeViewerInfoPolicyDetails
        """
        if not self.is_shared_content_change_viewer_info_policy_details():
            raise AttributeError("tag 'shared_content_change_viewer_info_policy_details' not set")
        return self._value

    def get_shared_content_claim_invitation_details(self):
        """
        Only call this if :meth:`is_shared_content_claim_invitation_details` is true.

        :rtype: SharedContentClaimInvitationDetails
        """
        if not self.is_shared_content_claim_invitation_details():
            raise AttributeError("tag 'shared_content_claim_invitation_details' not set")
        return self._value

    def get_shared_content_copy_details(self):
        """
        Only call this if :meth:`is_shared_content_copy_details` is true.

        :rtype: SharedContentCopyDetails
        """
        if not self.is_shared_content_copy_details():
            raise AttributeError("tag 'shared_content_copy_details' not set")
        return self._value

    def get_shared_content_download_details(self):
        """
        Only call this if :meth:`is_shared_content_download_details` is true.

        :rtype: SharedContentDownloadDetails
        """
        if not self.is_shared_content_download_details():
            raise AttributeError("tag 'shared_content_download_details' not set")
        return self._value

    def get_shared_content_relinquish_membership_details(self):
        """
        Only call this if :meth:`is_shared_content_relinquish_membership_details` is true.

        :rtype: SharedContentRelinquishMembershipDetails
        """
        if not self.is_shared_content_relinquish_membership_details():
            raise AttributeError("tag 'shared_content_relinquish_membership_details' not set")
        return self._value

    def get_shared_content_remove_invitees_details(self):
        """
        Only call this if :meth:`is_shared_content_remove_invitees_details` is true.

        :rtype: SharedContentRemoveInviteesDetails
        """
        if not self.is_shared_content_remove_invitees_details():
            raise AttributeError("tag 'shared_content_remove_invitees_details' not set")
        return self._value

    def get_shared_content_remove_link_expiry_details(self):
        """
        Only call this if :meth:`is_shared_content_remove_link_expiry_details` is true.

        :rtype: SharedContentRemoveLinkExpiryDetails
        """
        if not self.is_shared_content_remove_link_expiry_details():
            raise AttributeError("tag 'shared_content_remove_link_expiry_details' not set")
        return self._value

    def get_shared_content_remove_link_password_details(self):
        """
        Only call this if :meth:`is_shared_content_remove_link_password_details` is true.

        :rtype: SharedContentRemoveLinkPasswordDetails
        """
        if not self.is_shared_content_remove_link_password_details():
            raise AttributeError("tag 'shared_content_remove_link_password_details' not set")
        return self._value

    def get_shared_content_remove_member_details(self):
        """
        Only call this if :meth:`is_shared_content_remove_member_details` is true.

        :rtype: SharedContentRemoveMemberDetails
        """
        if not self.is_shared_content_remove_member_details():
            raise AttributeError("tag 'shared_content_remove_member_details' not set")
        return self._value

    def get_shared_content_request_access_details(self):
        """
        Only call this if :meth:`is_shared_content_request_access_details` is true.

        :rtype: SharedContentRequestAccessDetails
        """
        if not self.is_shared_content_request_access_details():
            raise AttributeError("tag 'shared_content_request_access_details' not set")
        return self._value

    def get_shared_content_unshare_details(self):
        """
        Only call this if :meth:`is_shared_content_unshare_details` is true.

        :rtype: SharedContentUnshareDetails
        """
        if not self.is_shared_content_unshare_details():
            raise AttributeError("tag 'shared_content_unshare_details' not set")
        return self._value

    def get_shared_content_view_details(self):
        """
        Only call this if :meth:`is_shared_content_view_details` is true.

        :rtype: SharedContentViewDetails
        """
        if not self.is_shared_content_view_details():
            raise AttributeError("tag 'shared_content_view_details' not set")
        return self._value

    def get_shared_folder_change_link_policy_details(self):
        """
        Only call this if :meth:`is_shared_folder_change_link_policy_details` is true.

        :rtype: SharedFolderChangeLinkPolicyDetails
        """
        if not self.is_shared_folder_change_link_policy_details():
            raise AttributeError("tag 'shared_folder_change_link_policy_details' not set")
        return self._value

    def get_shared_folder_change_members_inheritance_policy_details(self):
        """
        Only call this if :meth:`is_shared_folder_change_members_inheritance_policy_details` is true.

        :rtype: SharedFolderChangeMembersInheritancePolicyDetails
        """
        if not self.is_shared_folder_change_members_inheritance_policy_details():
            raise AttributeError("tag 'shared_folder_change_members_inheritance_policy_details' not set")
        return self._value

    def get_shared_folder_change_members_management_policy_details(self):
        """
        Only call this if :meth:`is_shared_folder_change_members_management_policy_details` is true.

        :rtype: SharedFolderChangeMembersManagementPolicyDetails
        """
        if not self.is_shared_folder_change_members_management_policy_details():
            raise AttributeError("tag 'shared_folder_change_members_management_policy_details' not set")
        return self._value

    def get_shared_folder_change_members_policy_details(self):
        """
        Only call this if :meth:`is_shared_folder_change_members_policy_details` is true.

        :rtype: SharedFolderChangeMembersPolicyDetails
        """
        if not self.is_shared_folder_change_members_policy_details():
            raise AttributeError("tag 'shared_folder_change_members_policy_details' not set")
        return self._value

    def get_shared_folder_create_details(self):
        """
        Only call this if :meth:`is_shared_folder_create_details` is true.

        :rtype: SharedFolderCreateDetails
        """
        if not self.is_shared_folder_create_details():
            raise AttributeError("tag 'shared_folder_create_details' not set")
        return self._value

    def get_shared_folder_decline_invitation_details(self):
        """
        Only call this if :meth:`is_shared_folder_decline_invitation_details` is true.

        :rtype: SharedFolderDeclineInvitationDetails
        """
        if not self.is_shared_folder_decline_invitation_details():
            raise AttributeError("tag 'shared_folder_decline_invitation_details' not set")
        return self._value

    def get_shared_folder_mount_details(self):
        """
        Only call this if :meth:`is_shared_folder_mount_details` is true.

        :rtype: SharedFolderMountDetails
        """
        if not self.is_shared_folder_mount_details():
            raise AttributeError("tag 'shared_folder_mount_details' not set")
        return self._value

    def get_shared_folder_nest_details(self):
        """
        Only call this if :meth:`is_shared_folder_nest_details` is true.

        :rtype: SharedFolderNestDetails
        """
        if not self.is_shared_folder_nest_details():
            raise AttributeError("tag 'shared_folder_nest_details' not set")
        return self._value

    def get_shared_folder_transfer_ownership_details(self):
        """
        Only call this if :meth:`is_shared_folder_transfer_ownership_details` is true.

        :rtype: SharedFolderTransferOwnershipDetails
        """
        if not self.is_shared_folder_transfer_ownership_details():
            raise AttributeError("tag 'shared_folder_transfer_ownership_details' not set")
        return self._value

    def get_shared_folder_unmount_details(self):
        """
        Only call this if :meth:`is_shared_folder_unmount_details` is true.

        :rtype: SharedFolderUnmountDetails
        """
        if not self.is_shared_folder_unmount_details():
            raise AttributeError("tag 'shared_folder_unmount_details' not set")
        return self._value

    def get_shared_link_add_expiry_details(self):
        """
        Only call this if :meth:`is_shared_link_add_expiry_details` is true.

        :rtype: SharedLinkAddExpiryDetails
        """
        if not self.is_shared_link_add_expiry_details():
            raise AttributeError("tag 'shared_link_add_expiry_details' not set")
        return self._value

    def get_shared_link_change_expiry_details(self):
        """
        Only call this if :meth:`is_shared_link_change_expiry_details` is true.

        :rtype: SharedLinkChangeExpiryDetails
        """
        if not self.is_shared_link_change_expiry_details():
            raise AttributeError("tag 'shared_link_change_expiry_details' not set")
        return self._value

    def get_shared_link_change_visibility_details(self):
        """
        Only call this if :meth:`is_shared_link_change_visibility_details` is true.

        :rtype: SharedLinkChangeVisibilityDetails
        """
        if not self.is_shared_link_change_visibility_details():
            raise AttributeError("tag 'shared_link_change_visibility_details' not set")
        return self._value

    def get_shared_link_copy_details(self):
        """
        Only call this if :meth:`is_shared_link_copy_details` is true.

        :rtype: SharedLinkCopyDetails
        """
        if not self.is_shared_link_copy_details():
            raise AttributeError("tag 'shared_link_copy_details' not set")
        return self._value

    def get_shared_link_create_details(self):
        """
        Only call this if :meth:`is_shared_link_create_details` is true.

        :rtype: SharedLinkCreateDetails
        """
        if not self.is_shared_link_create_details():
            raise AttributeError("tag 'shared_link_create_details' not set")
        return self._value

    def get_shared_link_disable_details(self):
        """
        Only call this if :meth:`is_shared_link_disable_details` is true.

        :rtype: SharedLinkDisableDetails
        """
        if not self.is_shared_link_disable_details():
            raise AttributeError("tag 'shared_link_disable_details' not set")
        return self._value

    def get_shared_link_download_details(self):
        """
        Only call this if :meth:`is_shared_link_download_details` is true.

        :rtype: SharedLinkDownloadDetails
        """
        if not self.is_shared_link_download_details():
            raise AttributeError("tag 'shared_link_download_details' not set")
        return self._value

    def get_shared_link_remove_expiry_details(self):
        """
        Only call this if :meth:`is_shared_link_remove_expiry_details` is true.

        :rtype: SharedLinkRemoveExpiryDetails
        """
        if not self.is_shared_link_remove_expiry_details():
            raise AttributeError("tag 'shared_link_remove_expiry_details' not set")
        return self._value

    def get_shared_link_share_details(self):
        """
        Only call this if :meth:`is_shared_link_share_details` is true.

        :rtype: SharedLinkShareDetails
        """
        if not self.is_shared_link_share_details():
            raise AttributeError("tag 'shared_link_share_details' not set")
        return self._value

    def get_shared_link_view_details(self):
        """
        Only call this if :meth:`is_shared_link_view_details` is true.

        :rtype: SharedLinkViewDetails
        """
        if not self.is_shared_link_view_details():
            raise AttributeError("tag 'shared_link_view_details' not set")
        return self._value

    def get_shared_note_opened_details(self):
        """
        Only call this if :meth:`is_shared_note_opened_details` is true.

        :rtype: SharedNoteOpenedDetails
        """
        if not self.is_shared_note_opened_details():
            raise AttributeError("tag 'shared_note_opened_details' not set")
        return self._value

    def get_shmodel_group_share_details(self):
        """
        Only call this if :meth:`is_shmodel_group_share_details` is true.

        :rtype: ShmodelGroupShareDetails
        """
        if not self.is_shmodel_group_share_details():
            raise AttributeError("tag 'shmodel_group_share_details' not set")
        return self._value

    def get_showcase_access_granted_details(self):
        """
        Only call this if :meth:`is_showcase_access_granted_details` is true.

        :rtype: ShowcaseAccessGrantedDetails
        """
        if not self.is_showcase_access_granted_details():
            raise AttributeError("tag 'showcase_access_granted_details' not set")
        return self._value

    def get_showcase_add_member_details(self):
        """
        Only call this if :meth:`is_showcase_add_member_details` is true.

        :rtype: ShowcaseAddMemberDetails
        """
        if not self.is_showcase_add_member_details():
            raise AttributeError("tag 'showcase_add_member_details' not set")
        return self._value

    def get_showcase_archived_details(self):
        """
        Only call this if :meth:`is_showcase_archived_details` is true.

        :rtype: ShowcaseArchivedDetails
        """
        if not self.is_showcase_archived_details():
            raise AttributeError("tag 'showcase_archived_details' not set")
        return self._value

    def get_showcase_created_details(self):
        """
        Only call this if :meth:`is_showcase_created_details` is true.

        :rtype: ShowcaseCreatedDetails
        """
        if not self.is_showcase_created_details():
            raise AttributeError("tag 'showcase_created_details' not set")
        return self._value

    def get_showcase_delete_comment_details(self):
        """
        Only call this if :meth:`is_showcase_delete_comment_details` is true.

        :rtype: ShowcaseDeleteCommentDetails
        """
        if not self.is_showcase_delete_comment_details():
            raise AttributeError("tag 'showcase_delete_comment_details' not set")
        return self._value

    def get_showcase_edited_details(self):
        """
        Only call this if :meth:`is_showcase_edited_details` is true.

        :rtype: ShowcaseEditedDetails
        """
        if not self.is_showcase_edited_details():
            raise AttributeError("tag 'showcase_edited_details' not set")
        return self._value

    def get_showcase_edit_comment_details(self):
        """
        Only call this if :meth:`is_showcase_edit_comment_details` is true.

        :rtype: ShowcaseEditCommentDetails
        """
        if not self.is_showcase_edit_comment_details():
            raise AttributeError("tag 'showcase_edit_comment_details' not set")
        return self._value

    def get_showcase_file_added_details(self):
        """
        Only call this if :meth:`is_showcase_file_added_details` is true.

        :rtype: ShowcaseFileAddedDetails
        """
        if not self.is_showcase_file_added_details():
            raise AttributeError("tag 'showcase_file_added_details' not set")
        return self._value

    def get_showcase_file_download_details(self):
        """
        Only call this if :meth:`is_showcase_file_download_details` is true.

        :rtype: ShowcaseFileDownloadDetails
        """
        if not self.is_showcase_file_download_details():
            raise AttributeError("tag 'showcase_file_download_details' not set")
        return self._value

    def get_showcase_file_removed_details(self):
        """
        Only call this if :meth:`is_showcase_file_removed_details` is true.

        :rtype: ShowcaseFileRemovedDetails
        """
        if not self.is_showcase_file_removed_details():
            raise AttributeError("tag 'showcase_file_removed_details' not set")
        return self._value

    def get_showcase_file_view_details(self):
        """
        Only call this if :meth:`is_showcase_file_view_details` is true.

        :rtype: ShowcaseFileViewDetails
        """
        if not self.is_showcase_file_view_details():
            raise AttributeError("tag 'showcase_file_view_details' not set")
        return self._value

    def get_showcase_permanently_deleted_details(self):
        """
        Only call this if :meth:`is_showcase_permanently_deleted_details` is true.

        :rtype: ShowcasePermanentlyDeletedDetails
        """
        if not self.is_showcase_permanently_deleted_details():
            raise AttributeError("tag 'showcase_permanently_deleted_details' not set")
        return self._value

    def get_showcase_post_comment_details(self):
        """
        Only call this if :meth:`is_showcase_post_comment_details` is true.

        :rtype: ShowcasePostCommentDetails
        """
        if not self.is_showcase_post_comment_details():
            raise AttributeError("tag 'showcase_post_comment_details' not set")
        return self._value

    def get_showcase_remove_member_details(self):
        """
        Only call this if :meth:`is_showcase_remove_member_details` is true.

        :rtype: ShowcaseRemoveMemberDetails
        """
        if not self.is_showcase_remove_member_details():
            raise AttributeError("tag 'showcase_remove_member_details' not set")
        return self._value

    def get_showcase_renamed_details(self):
        """
        Only call this if :meth:`is_showcase_renamed_details` is true.

        :rtype: ShowcaseRenamedDetails
        """
        if not self.is_showcase_renamed_details():
            raise AttributeError("tag 'showcase_renamed_details' not set")
        return self._value

    def get_showcase_request_access_details(self):
        """
        Only call this if :meth:`is_showcase_request_access_details` is true.

        :rtype: ShowcaseRequestAccessDetails
        """
        if not self.is_showcase_request_access_details():
            raise AttributeError("tag 'showcase_request_access_details' not set")
        return self._value

    def get_showcase_resolve_comment_details(self):
        """
        Only call this if :meth:`is_showcase_resolve_comment_details` is true.

        :rtype: ShowcaseResolveCommentDetails
        """
        if not self.is_showcase_resolve_comment_details():
            raise AttributeError("tag 'showcase_resolve_comment_details' not set")
        return self._value

    def get_showcase_restored_details(self):
        """
        Only call this if :meth:`is_showcase_restored_details` is true.

        :rtype: ShowcaseRestoredDetails
        """
        if not self.is_showcase_restored_details():
            raise AttributeError("tag 'showcase_restored_details' not set")
        return self._value

    def get_showcase_trashed_details(self):
        """
        Only call this if :meth:`is_showcase_trashed_details` is true.

        :rtype: ShowcaseTrashedDetails
        """
        if not self.is_showcase_trashed_details():
            raise AttributeError("tag 'showcase_trashed_details' not set")
        return self._value

    def get_showcase_trashed_deprecated_details(self):
        """
        Only call this if :meth:`is_showcase_trashed_deprecated_details` is true.

        :rtype: ShowcaseTrashedDeprecatedDetails
        """
        if not self.is_showcase_trashed_deprecated_details():
            raise AttributeError("tag 'showcase_trashed_deprecated_details' not set")
        return self._value

    def get_showcase_unresolve_comment_details(self):
        """
        Only call this if :meth:`is_showcase_unresolve_comment_details` is true.

        :rtype: ShowcaseUnresolveCommentDetails
        """
        if not self.is_showcase_unresolve_comment_details():
            raise AttributeError("tag 'showcase_unresolve_comment_details' not set")
        return self._value

    def get_showcase_untrashed_details(self):
        """
        Only call this if :meth:`is_showcase_untrashed_details` is true.

        :rtype: ShowcaseUntrashedDetails
        """
        if not self.is_showcase_untrashed_details():
            raise AttributeError("tag 'showcase_untrashed_details' not set")
        return self._value

    def get_showcase_untrashed_deprecated_details(self):
        """
        Only call this if :meth:`is_showcase_untrashed_deprecated_details` is true.

        :rtype: ShowcaseUntrashedDeprecatedDetails
        """
        if not self.is_showcase_untrashed_deprecated_details():
            raise AttributeError("tag 'showcase_untrashed_deprecated_details' not set")
        return self._value

    def get_showcase_view_details(self):
        """
        Only call this if :meth:`is_showcase_view_details` is true.

        :rtype: ShowcaseViewDetails
        """
        if not self.is_showcase_view_details():
            raise AttributeError("tag 'showcase_view_details' not set")
        return self._value

    def get_sso_add_cert_details(self):
        """
        Only call this if :meth:`is_sso_add_cert_details` is true.

        :rtype: SsoAddCertDetails
        """
        if not self.is_sso_add_cert_details():
            raise AttributeError("tag 'sso_add_cert_details' not set")
        return self._value

    def get_sso_add_login_url_details(self):
        """
        Only call this if :meth:`is_sso_add_login_url_details` is true.

        :rtype: SsoAddLoginUrlDetails
        """
        if not self.is_sso_add_login_url_details():
            raise AttributeError("tag 'sso_add_login_url_details' not set")
        return self._value

    def get_sso_add_logout_url_details(self):
        """
        Only call this if :meth:`is_sso_add_logout_url_details` is true.

        :rtype: SsoAddLogoutUrlDetails
        """
        if not self.is_sso_add_logout_url_details():
            raise AttributeError("tag 'sso_add_logout_url_details' not set")
        return self._value

    def get_sso_change_cert_details(self):
        """
        Only call this if :meth:`is_sso_change_cert_details` is true.

        :rtype: SsoChangeCertDetails
        """
        if not self.is_sso_change_cert_details():
            raise AttributeError("tag 'sso_change_cert_details' not set")
        return self._value

    def get_sso_change_login_url_details(self):
        """
        Only call this if :meth:`is_sso_change_login_url_details` is true.

        :rtype: SsoChangeLoginUrlDetails
        """
        if not self.is_sso_change_login_url_details():
            raise AttributeError("tag 'sso_change_login_url_details' not set")
        return self._value

    def get_sso_change_logout_url_details(self):
        """
        Only call this if :meth:`is_sso_change_logout_url_details` is true.

        :rtype: SsoChangeLogoutUrlDetails
        """
        if not self.is_sso_change_logout_url_details():
            raise AttributeError("tag 'sso_change_logout_url_details' not set")
        return self._value

    def get_sso_change_saml_identity_mode_details(self):
        """
        Only call this if :meth:`is_sso_change_saml_identity_mode_details` is true.

        :rtype: SsoChangeSamlIdentityModeDetails
        """
        if not self.is_sso_change_saml_identity_mode_details():
            raise AttributeError("tag 'sso_change_saml_identity_mode_details' not set")
        return self._value

    def get_sso_remove_cert_details(self):
        """
        Only call this if :meth:`is_sso_remove_cert_details` is true.

        :rtype: SsoRemoveCertDetails
        """
        if not self.is_sso_remove_cert_details():
            raise AttributeError("tag 'sso_remove_cert_details' not set")
        return self._value

    def get_sso_remove_login_url_details(self):
        """
        Only call this if :meth:`is_sso_remove_login_url_details` is true.

        :rtype: SsoRemoveLoginUrlDetails
        """
        if not self.is_sso_remove_login_url_details():
            raise AttributeError("tag 'sso_remove_login_url_details' not set")
        return self._value

    def get_sso_remove_logout_url_details(self):
        """
        Only call this if :meth:`is_sso_remove_logout_url_details` is true.

        :rtype: SsoRemoveLogoutUrlDetails
        """
        if not self.is_sso_remove_logout_url_details():
            raise AttributeError("tag 'sso_remove_logout_url_details' not set")
        return self._value

    def get_team_folder_change_status_details(self):
        """
        Only call this if :meth:`is_team_folder_change_status_details` is true.

        :rtype: TeamFolderChangeStatusDetails
        """
        if not self.is_team_folder_change_status_details():
            raise AttributeError("tag 'team_folder_change_status_details' not set")
        return self._value

    def get_team_folder_create_details(self):
        """
        Only call this if :meth:`is_team_folder_create_details` is true.

        :rtype: TeamFolderCreateDetails
        """
        if not self.is_team_folder_create_details():
            raise AttributeError("tag 'team_folder_create_details' not set")
        return self._value

    def get_team_folder_downgrade_details(self):
        """
        Only call this if :meth:`is_team_folder_downgrade_details` is true.

        :rtype: TeamFolderDowngradeDetails
        """
        if not self.is_team_folder_downgrade_details():
            raise AttributeError("tag 'team_folder_downgrade_details' not set")
        return self._value

    def get_team_folder_permanently_delete_details(self):
        """
        Only call this if :meth:`is_team_folder_permanently_delete_details` is true.

        :rtype: TeamFolderPermanentlyDeleteDetails
        """
        if not self.is_team_folder_permanently_delete_details():
            raise AttributeError("tag 'team_folder_permanently_delete_details' not set")
        return self._value

    def get_team_folder_rename_details(self):
        """
        Only call this if :meth:`is_team_folder_rename_details` is true.

        :rtype: TeamFolderRenameDetails
        """
        if not self.is_team_folder_rename_details():
            raise AttributeError("tag 'team_folder_rename_details' not set")
        return self._value

    def get_team_selective_sync_settings_changed_details(self):
        """
        Only call this if :meth:`is_team_selective_sync_settings_changed_details` is true.

        :rtype: TeamSelectiveSyncSettingsChangedDetails
        """
        if not self.is_team_selective_sync_settings_changed_details():
            raise AttributeError("tag 'team_selective_sync_settings_changed_details' not set")
        return self._value

    def get_account_capture_change_policy_details(self):
        """
        Only call this if :meth:`is_account_capture_change_policy_details` is true.

        :rtype: AccountCaptureChangePolicyDetails
        """
        if not self.is_account_capture_change_policy_details():
            raise AttributeError("tag 'account_capture_change_policy_details' not set")
        return self._value

    def get_allow_download_disabled_details(self):
        """
        Only call this if :meth:`is_allow_download_disabled_details` is true.

        :rtype: AllowDownloadDisabledDetails
        """
        if not self.is_allow_download_disabled_details():
            raise AttributeError("tag 'allow_download_disabled_details' not set")
        return self._value

    def get_allow_download_enabled_details(self):
        """
        Only call this if :meth:`is_allow_download_enabled_details` is true.

        :rtype: AllowDownloadEnabledDetails
        """
        if not self.is_allow_download_enabled_details():
            raise AttributeError("tag 'allow_download_enabled_details' not set")
        return self._value

    def get_camera_uploads_policy_changed_details(self):
        """
        Only call this if :meth:`is_camera_uploads_policy_changed_details` is true.

        :rtype: CameraUploadsPolicyChangedDetails
        """
        if not self.is_camera_uploads_policy_changed_details():
            raise AttributeError("tag 'camera_uploads_policy_changed_details' not set")
        return self._value

    def get_data_placement_restriction_change_policy_details(self):
        """
        Only call this if :meth:`is_data_placement_restriction_change_policy_details` is true.

        :rtype: DataPlacementRestrictionChangePolicyDetails
        """
        if not self.is_data_placement_restriction_change_policy_details():
            raise AttributeError("tag 'data_placement_restriction_change_policy_details' not set")
        return self._value

    def get_data_placement_restriction_satisfy_policy_details(self):
        """
        Only call this if :meth:`is_data_placement_restriction_satisfy_policy_details` is true.

        :rtype: DataPlacementRestrictionSatisfyPolicyDetails
        """
        if not self.is_data_placement_restriction_satisfy_policy_details():
            raise AttributeError("tag 'data_placement_restriction_satisfy_policy_details' not set")
        return self._value

    def get_device_approvals_change_desktop_policy_details(self):
        """
        Only call this if :meth:`is_device_approvals_change_desktop_policy_details` is true.

        :rtype: DeviceApprovalsChangeDesktopPolicyDetails
        """
        if not self.is_device_approvals_change_desktop_policy_details():
            raise AttributeError("tag 'device_approvals_change_desktop_policy_details' not set")
        return self._value

    def get_device_approvals_change_mobile_policy_details(self):
        """
        Only call this if :meth:`is_device_approvals_change_mobile_policy_details` is true.

        :rtype: DeviceApprovalsChangeMobilePolicyDetails
        """
        if not self.is_device_approvals_change_mobile_policy_details():
            raise AttributeError("tag 'device_approvals_change_mobile_policy_details' not set")
        return self._value

    def get_device_approvals_change_overage_action_details(self):
        """
        Only call this if :meth:`is_device_approvals_change_overage_action_details` is true.

        :rtype: DeviceApprovalsChangeOverageActionDetails
        """
        if not self.is_device_approvals_change_overage_action_details():
            raise AttributeError("tag 'device_approvals_change_overage_action_details' not set")
        return self._value

    def get_device_approvals_change_unlink_action_details(self):
        """
        Only call this if :meth:`is_device_approvals_change_unlink_action_details` is true.

        :rtype: DeviceApprovalsChangeUnlinkActionDetails
        """
        if not self.is_device_approvals_change_unlink_action_details():
            raise AttributeError("tag 'device_approvals_change_unlink_action_details' not set")
        return self._value

    def get_directory_restrictions_add_members_details(self):
        """
        Only call this if :meth:`is_directory_restrictions_add_members_details` is true.

        :rtype: DirectoryRestrictionsAddMembersDetails
        """
        if not self.is_directory_restrictions_add_members_details():
            raise AttributeError("tag 'directory_restrictions_add_members_details' not set")
        return self._value

    def get_directory_restrictions_remove_members_details(self):
        """
        Only call this if :meth:`is_directory_restrictions_remove_members_details` is true.

        :rtype: DirectoryRestrictionsRemoveMembersDetails
        """
        if not self.is_directory_restrictions_remove_members_details():
            raise AttributeError("tag 'directory_restrictions_remove_members_details' not set")
        return self._value

    def get_emm_add_exception_details(self):
        """
        Only call this if :meth:`is_emm_add_exception_details` is true.

        :rtype: EmmAddExceptionDetails
        """
        if not self.is_emm_add_exception_details():
            raise AttributeError("tag 'emm_add_exception_details' not set")
        return self._value

    def get_emm_change_policy_details(self):
        """
        Only call this if :meth:`is_emm_change_policy_details` is true.

        :rtype: EmmChangePolicyDetails
        """
        if not self.is_emm_change_policy_details():
            raise AttributeError("tag 'emm_change_policy_details' not set")
        return self._value

    def get_emm_remove_exception_details(self):
        """
        Only call this if :meth:`is_emm_remove_exception_details` is true.

        :rtype: EmmRemoveExceptionDetails
        """
        if not self.is_emm_remove_exception_details():
            raise AttributeError("tag 'emm_remove_exception_details' not set")
        return self._value

    def get_extended_version_history_change_policy_details(self):
        """
        Only call this if :meth:`is_extended_version_history_change_policy_details` is true.

        :rtype: ExtendedVersionHistoryChangePolicyDetails
        """
        if not self.is_extended_version_history_change_policy_details():
            raise AttributeError("tag 'extended_version_history_change_policy_details' not set")
        return self._value

    def get_file_comments_change_policy_details(self):
        """
        Only call this if :meth:`is_file_comments_change_policy_details` is true.

        :rtype: FileCommentsChangePolicyDetails
        """
        if not self.is_file_comments_change_policy_details():
            raise AttributeError("tag 'file_comments_change_policy_details' not set")
        return self._value

    def get_file_requests_change_policy_details(self):
        """
        Only call this if :meth:`is_file_requests_change_policy_details` is true.

        :rtype: FileRequestsChangePolicyDetails
        """
        if not self.is_file_requests_change_policy_details():
            raise AttributeError("tag 'file_requests_change_policy_details' not set")
        return self._value

    def get_file_requests_emails_enabled_details(self):
        """
        Only call this if :meth:`is_file_requests_emails_enabled_details` is true.

        :rtype: FileRequestsEmailsEnabledDetails
        """
        if not self.is_file_requests_emails_enabled_details():
            raise AttributeError("tag 'file_requests_emails_enabled_details' not set")
        return self._value

    def get_file_requests_emails_restricted_to_team_only_details(self):
        """
        Only call this if :meth:`is_file_requests_emails_restricted_to_team_only_details` is true.

        :rtype: FileRequestsEmailsRestrictedToTeamOnlyDetails
        """
        if not self.is_file_requests_emails_restricted_to_team_only_details():
            raise AttributeError("tag 'file_requests_emails_restricted_to_team_only_details' not set")
        return self._value

    def get_google_sso_change_policy_details(self):
        """
        Only call this if :meth:`is_google_sso_change_policy_details` is true.

        :rtype: GoogleSsoChangePolicyDetails
        """
        if not self.is_google_sso_change_policy_details():
            raise AttributeError("tag 'google_sso_change_policy_details' not set")
        return self._value

    def get_group_user_management_change_policy_details(self):
        """
        Only call this if :meth:`is_group_user_management_change_policy_details` is true.

        :rtype: GroupUserManagementChangePolicyDetails
        """
        if not self.is_group_user_management_change_policy_details():
            raise AttributeError("tag 'group_user_management_change_policy_details' not set")
        return self._value

    def get_integration_policy_changed_details(self):
        """
        Only call this if :meth:`is_integration_policy_changed_details` is true.

        :rtype: IntegrationPolicyChangedDetails
        """
        if not self.is_integration_policy_changed_details():
            raise AttributeError("tag 'integration_policy_changed_details' not set")
        return self._value

    def get_member_requests_change_policy_details(self):
        """
        Only call this if :meth:`is_member_requests_change_policy_details` is true.

        :rtype: MemberRequestsChangePolicyDetails
        """
        if not self.is_member_requests_change_policy_details():
            raise AttributeError("tag 'member_requests_change_policy_details' not set")
        return self._value

    def get_member_space_limits_add_exception_details(self):
        """
        Only call this if :meth:`is_member_space_limits_add_exception_details` is true.

        :rtype: MemberSpaceLimitsAddExceptionDetails
        """
        if not self.is_member_space_limits_add_exception_details():
            raise AttributeError("tag 'member_space_limits_add_exception_details' not set")
        return self._value

    def get_member_space_limits_change_caps_type_policy_details(self):
        """
        Only call this if :meth:`is_member_space_limits_change_caps_type_policy_details` is true.

        :rtype: MemberSpaceLimitsChangeCapsTypePolicyDetails
        """
        if not self.is_member_space_limits_change_caps_type_policy_details():
            raise AttributeError("tag 'member_space_limits_change_caps_type_policy_details' not set")
        return self._value

    def get_member_space_limits_change_policy_details(self):
        """
        Only call this if :meth:`is_member_space_limits_change_policy_details` is true.

        :rtype: MemberSpaceLimitsChangePolicyDetails
        """
        if not self.is_member_space_limits_change_policy_details():
            raise AttributeError("tag 'member_space_limits_change_policy_details' not set")
        return self._value

    def get_member_space_limits_remove_exception_details(self):
        """
        Only call this if :meth:`is_member_space_limits_remove_exception_details` is true.

        :rtype: MemberSpaceLimitsRemoveExceptionDetails
        """
        if not self.is_member_space_limits_remove_exception_details():
            raise AttributeError("tag 'member_space_limits_remove_exception_details' not set")
        return self._value

    def get_member_suggestions_change_policy_details(self):
        """
        Only call this if :meth:`is_member_suggestions_change_policy_details` is true.

        :rtype: MemberSuggestionsChangePolicyDetails
        """
        if not self.is_member_suggestions_change_policy_details():
            raise AttributeError("tag 'member_suggestions_change_policy_details' not set")
        return self._value

    def get_microsoft_office_addin_change_policy_details(self):
        """
        Only call this if :meth:`is_microsoft_office_addin_change_policy_details` is true.

        :rtype: MicrosoftOfficeAddinChangePolicyDetails
        """
        if not self.is_microsoft_office_addin_change_policy_details():
            raise AttributeError("tag 'microsoft_office_addin_change_policy_details' not set")
        return self._value

    def get_network_control_change_policy_details(self):
        """
        Only call this if :meth:`is_network_control_change_policy_details` is true.

        :rtype: NetworkControlChangePolicyDetails
        """
        if not self.is_network_control_change_policy_details():
            raise AttributeError("tag 'network_control_change_policy_details' not set")
        return self._value

    def get_paper_change_deployment_policy_details(self):
        """
        Only call this if :meth:`is_paper_change_deployment_policy_details` is true.

        :rtype: PaperChangeDeploymentPolicyDetails
        """
        if not self.is_paper_change_deployment_policy_details():
            raise AttributeError("tag 'paper_change_deployment_policy_details' not set")
        return self._value

    def get_paper_change_member_link_policy_details(self):
        """
        Only call this if :meth:`is_paper_change_member_link_policy_details` is true.

        :rtype: PaperChangeMemberLinkPolicyDetails
        """
        if not self.is_paper_change_member_link_policy_details():
            raise AttributeError("tag 'paper_change_member_link_policy_details' not set")
        return self._value

    def get_paper_change_member_policy_details(self):
        """
        Only call this if :meth:`is_paper_change_member_policy_details` is true.

        :rtype: PaperChangeMemberPolicyDetails
        """
        if not self.is_paper_change_member_policy_details():
            raise AttributeError("tag 'paper_change_member_policy_details' not set")
        return self._value

    def get_paper_change_policy_details(self):
        """
        Only call this if :meth:`is_paper_change_policy_details` is true.

        :rtype: PaperChangePolicyDetails
        """
        if not self.is_paper_change_policy_details():
            raise AttributeError("tag 'paper_change_policy_details' not set")
        return self._value

    def get_paper_default_folder_policy_changed_details(self):
        """
        Only call this if :meth:`is_paper_default_folder_policy_changed_details` is true.

        :rtype: PaperDefaultFolderPolicyChangedDetails
        """
        if not self.is_paper_default_folder_policy_changed_details():
            raise AttributeError("tag 'paper_default_folder_policy_changed_details' not set")
        return self._value

    def get_paper_desktop_policy_changed_details(self):
        """
        Only call this if :meth:`is_paper_desktop_policy_changed_details` is true.

        :rtype: PaperDesktopPolicyChangedDetails
        """
        if not self.is_paper_desktop_policy_changed_details():
            raise AttributeError("tag 'paper_desktop_policy_changed_details' not set")
        return self._value

    def get_paper_enabled_users_group_addition_details(self):
        """
        Only call this if :meth:`is_paper_enabled_users_group_addition_details` is true.

        :rtype: PaperEnabledUsersGroupAdditionDetails
        """
        if not self.is_paper_enabled_users_group_addition_details():
            raise AttributeError("tag 'paper_enabled_users_group_addition_details' not set")
        return self._value

    def get_paper_enabled_users_group_removal_details(self):
        """
        Only call this if :meth:`is_paper_enabled_users_group_removal_details` is true.

        :rtype: PaperEnabledUsersGroupRemovalDetails
        """
        if not self.is_paper_enabled_users_group_removal_details():
            raise AttributeError("tag 'paper_enabled_users_group_removal_details' not set")
        return self._value

    def get_permanent_delete_change_policy_details(self):
        """
        Only call this if :meth:`is_permanent_delete_change_policy_details` is true.

        :rtype: PermanentDeleteChangePolicyDetails
        """
        if not self.is_permanent_delete_change_policy_details():
            raise AttributeError("tag 'permanent_delete_change_policy_details' not set")
        return self._value

    def get_reseller_support_change_policy_details(self):
        """
        Only call this if :meth:`is_reseller_support_change_policy_details` is true.

        :rtype: ResellerSupportChangePolicyDetails
        """
        if not self.is_reseller_support_change_policy_details():
            raise AttributeError("tag 'reseller_support_change_policy_details' not set")
        return self._value

    def get_sharing_change_folder_join_policy_details(self):
        """
        Only call this if :meth:`is_sharing_change_folder_join_policy_details` is true.

        :rtype: SharingChangeFolderJoinPolicyDetails
        """
        if not self.is_sharing_change_folder_join_policy_details():
            raise AttributeError("tag 'sharing_change_folder_join_policy_details' not set")
        return self._value

    def get_sharing_change_link_policy_details(self):
        """
        Only call this if :meth:`is_sharing_change_link_policy_details` is true.

        :rtype: SharingChangeLinkPolicyDetails
        """
        if not self.is_sharing_change_link_policy_details():
            raise AttributeError("tag 'sharing_change_link_policy_details' not set")
        return self._value

    def get_sharing_change_member_policy_details(self):
        """
        Only call this if :meth:`is_sharing_change_member_policy_details` is true.

        :rtype: SharingChangeMemberPolicyDetails
        """
        if not self.is_sharing_change_member_policy_details():
            raise AttributeError("tag 'sharing_change_member_policy_details' not set")
        return self._value

    def get_showcase_change_download_policy_details(self):
        """
        Only call this if :meth:`is_showcase_change_download_policy_details` is true.

        :rtype: ShowcaseChangeDownloadPolicyDetails
        """
        if not self.is_showcase_change_download_policy_details():
            raise AttributeError("tag 'showcase_change_download_policy_details' not set")
        return self._value

    def get_showcase_change_enabled_policy_details(self):
        """
        Only call this if :meth:`is_showcase_change_enabled_policy_details` is true.

        :rtype: ShowcaseChangeEnabledPolicyDetails
        """
        if not self.is_showcase_change_enabled_policy_details():
            raise AttributeError("tag 'showcase_change_enabled_policy_details' not set")
        return self._value

    def get_showcase_change_external_sharing_policy_details(self):
        """
        Only call this if :meth:`is_showcase_change_external_sharing_policy_details` is true.

        :rtype: ShowcaseChangeExternalSharingPolicyDetails
        """
        if not self.is_showcase_change_external_sharing_policy_details():
            raise AttributeError("tag 'showcase_change_external_sharing_policy_details' not set")
        return self._value

    def get_smart_sync_change_policy_details(self):
        """
        Only call this if :meth:`is_smart_sync_change_policy_details` is true.

        :rtype: SmartSyncChangePolicyDetails
        """
        if not self.is_smart_sync_change_policy_details():
            raise AttributeError("tag 'smart_sync_change_policy_details' not set")
        return self._value

    def get_smart_sync_not_opt_out_details(self):
        """
        Only call this if :meth:`is_smart_sync_not_opt_out_details` is true.

        :rtype: SmartSyncNotOptOutDetails
        """
        if not self.is_smart_sync_not_opt_out_details():
            raise AttributeError("tag 'smart_sync_not_opt_out_details' not set")
        return self._value

    def get_smart_sync_opt_out_details(self):
        """
        Only call this if :meth:`is_smart_sync_opt_out_details` is true.

        :rtype: SmartSyncOptOutDetails
        """
        if not self.is_smart_sync_opt_out_details():
            raise AttributeError("tag 'smart_sync_opt_out_details' not set")
        return self._value

    def get_sso_change_policy_details(self):
        """
        Only call this if :meth:`is_sso_change_policy_details` is true.

        :rtype: SsoChangePolicyDetails
        """
        if not self.is_sso_change_policy_details():
            raise AttributeError("tag 'sso_change_policy_details' not set")
        return self._value

    def get_team_extensions_policy_changed_details(self):
        """
        Only call this if :meth:`is_team_extensions_policy_changed_details` is true.

        :rtype: TeamExtensionsPolicyChangedDetails
        """
        if not self.is_team_extensions_policy_changed_details():
            raise AttributeError("tag 'team_extensions_policy_changed_details' not set")
        return self._value

    def get_team_selective_sync_policy_changed_details(self):
        """
        Only call this if :meth:`is_team_selective_sync_policy_changed_details` is true.

        :rtype: TeamSelectiveSyncPolicyChangedDetails
        """
        if not self.is_team_selective_sync_policy_changed_details():
            raise AttributeError("tag 'team_selective_sync_policy_changed_details' not set")
        return self._value

    def get_tfa_change_policy_details(self):
        """
        Only call this if :meth:`is_tfa_change_policy_details` is true.

        :rtype: TfaChangePolicyDetails
        """
        if not self.is_tfa_change_policy_details():
            raise AttributeError("tag 'tfa_change_policy_details' not set")
        return self._value

    def get_two_account_change_policy_details(self):
        """
        Only call this if :meth:`is_two_account_change_policy_details` is true.

        :rtype: TwoAccountChangePolicyDetails
        """
        if not self.is_two_account_change_policy_details():
            raise AttributeError("tag 'two_account_change_policy_details' not set")
        return self._value

    def get_viewer_info_policy_changed_details(self):
        """
        Only call this if :meth:`is_viewer_info_policy_changed_details` is true.

        :rtype: ViewerInfoPolicyChangedDetails
        """
        if not self.is_viewer_info_policy_changed_details():
            raise AttributeError("tag 'viewer_info_policy_changed_details' not set")
        return self._value

    def get_web_sessions_change_fixed_length_policy_details(self):
        """
        Only call this if :meth:`is_web_sessions_change_fixed_length_policy_details` is true.

        :rtype: WebSessionsChangeFixedLengthPolicyDetails
        """
        if not self.is_web_sessions_change_fixed_length_policy_details():
            raise AttributeError("tag 'web_sessions_change_fixed_length_policy_details' not set")
        return self._value

    def get_web_sessions_change_idle_length_policy_details(self):
        """
        Only call this if :meth:`is_web_sessions_change_idle_length_policy_details` is true.

        :rtype: WebSessionsChangeIdleLengthPolicyDetails
        """
        if not self.is_web_sessions_change_idle_length_policy_details():
            raise AttributeError("tag 'web_sessions_change_idle_length_policy_details' not set")
        return self._value

    def get_team_merge_from_details(self):
        """
        Only call this if :meth:`is_team_merge_from_details` is true.

        :rtype: TeamMergeFromDetails
        """
        if not self.is_team_merge_from_details():
            raise AttributeError("tag 'team_merge_from_details' not set")
        return self._value

    def get_team_merge_to_details(self):
        """
        Only call this if :meth:`is_team_merge_to_details` is true.

        :rtype: TeamMergeToDetails
        """
        if not self.is_team_merge_to_details():
            raise AttributeError("tag 'team_merge_to_details' not set")
        return self._value

    def get_team_profile_add_logo_details(self):
        """
        Only call this if :meth:`is_team_profile_add_logo_details` is true.

        :rtype: TeamProfileAddLogoDetails
        """
        if not self.is_team_profile_add_logo_details():
            raise AttributeError("tag 'team_profile_add_logo_details' not set")
        return self._value

    def get_team_profile_change_default_language_details(self):
        """
        Only call this if :meth:`is_team_profile_change_default_language_details` is true.

        :rtype: TeamProfileChangeDefaultLanguageDetails
        """
        if not self.is_team_profile_change_default_language_details():
            raise AttributeError("tag 'team_profile_change_default_language_details' not set")
        return self._value

    def get_team_profile_change_logo_details(self):
        """
        Only call this if :meth:`is_team_profile_change_logo_details` is true.

        :rtype: TeamProfileChangeLogoDetails
        """
        if not self.is_team_profile_change_logo_details():
            raise AttributeError("tag 'team_profile_change_logo_details' not set")
        return self._value

    def get_team_profile_change_name_details(self):
        """
        Only call this if :meth:`is_team_profile_change_name_details` is true.

        :rtype: TeamProfileChangeNameDetails
        """
        if not self.is_team_profile_change_name_details():
            raise AttributeError("tag 'team_profile_change_name_details' not set")
        return self._value

    def get_team_profile_remove_logo_details(self):
        """
        Only call this if :meth:`is_team_profile_remove_logo_details` is true.

        :rtype: TeamProfileRemoveLogoDetails
        """
        if not self.is_team_profile_remove_logo_details():
            raise AttributeError("tag 'team_profile_remove_logo_details' not set")
        return self._value

    def get_tfa_add_backup_phone_details(self):
        """
        Only call this if :meth:`is_tfa_add_backup_phone_details` is true.

        :rtype: TfaAddBackupPhoneDetails
        """
        if not self.is_tfa_add_backup_phone_details():
            raise AttributeError("tag 'tfa_add_backup_phone_details' not set")
        return self._value

    def get_tfa_add_security_key_details(self):
        """
        Only call this if :meth:`is_tfa_add_security_key_details` is true.

        :rtype: TfaAddSecurityKeyDetails
        """
        if not self.is_tfa_add_security_key_details():
            raise AttributeError("tag 'tfa_add_security_key_details' not set")
        return self._value

    def get_tfa_change_backup_phone_details(self):
        """
        Only call this if :meth:`is_tfa_change_backup_phone_details` is true.

        :rtype: TfaChangeBackupPhoneDetails
        """
        if not self.is_tfa_change_backup_phone_details():
            raise AttributeError("tag 'tfa_change_backup_phone_details' not set")
        return self._value

    def get_tfa_change_status_details(self):
        """
        Only call this if :meth:`is_tfa_change_status_details` is true.

        :rtype: TfaChangeStatusDetails
        """
        if not self.is_tfa_change_status_details():
            raise AttributeError("tag 'tfa_change_status_details' not set")
        return self._value

    def get_tfa_remove_backup_phone_details(self):
        """
        Only call this if :meth:`is_tfa_remove_backup_phone_details` is true.

        :rtype: TfaRemoveBackupPhoneDetails
        """
        if not self.is_tfa_remove_backup_phone_details():
            raise AttributeError("tag 'tfa_remove_backup_phone_details' not set")
        return self._value

    def get_tfa_remove_security_key_details(self):
        """
        Only call this if :meth:`is_tfa_remove_security_key_details` is true.

        :rtype: TfaRemoveSecurityKeyDetails
        """
        if not self.is_tfa_remove_security_key_details():
            raise AttributeError("tag 'tfa_remove_security_key_details' not set")
        return self._value

    def get_tfa_reset_details(self):
        """
        Only call this if :meth:`is_tfa_reset_details` is true.

        :rtype: TfaResetDetails
        """
        if not self.is_tfa_reset_details():
            raise AttributeError("tag 'tfa_reset_details' not set")
        return self._value

    def get_guest_admin_change_status_details(self):
        """
        Only call this if :meth:`is_guest_admin_change_status_details` is true.

        :rtype: GuestAdminChangeStatusDetails
        """
        if not self.is_guest_admin_change_status_details():
            raise AttributeError("tag 'guest_admin_change_status_details' not set")
        return self._value

    def get_team_merge_request_accepted_details(self):
        """
        Only call this if :meth:`is_team_merge_request_accepted_details` is true.

        :rtype: TeamMergeRequestAcceptedDetails
        """
        if not self.is_team_merge_request_accepted_details():
            raise AttributeError("tag 'team_merge_request_accepted_details' not set")
        return self._value

    def get_team_merge_request_accepted_shown_to_primary_team_details(self):
        """
        Only call this if :meth:`is_team_merge_request_accepted_shown_to_primary_team_details` is true.

        :rtype: TeamMergeRequestAcceptedShownToPrimaryTeamDetails
        """
        if not self.is_team_merge_request_accepted_shown_to_primary_team_details():
            raise AttributeError("tag 'team_merge_request_accepted_shown_to_primary_team_details' not set")
        return self._value

    def get_team_merge_request_accepted_shown_to_secondary_team_details(self):
        """
        Only call this if :meth:`is_team_merge_request_accepted_shown_to_secondary_team_details` is true.

        :rtype: TeamMergeRequestAcceptedShownToSecondaryTeamDetails
        """
        if not self.is_team_merge_request_accepted_shown_to_secondary_team_details():
            raise AttributeError("tag 'team_merge_request_accepted_shown_to_secondary_team_details' not set")
        return self._value

    def get_team_merge_request_auto_canceled_details(self):
        """
        Only call this if :meth:`is_team_merge_request_auto_canceled_details` is true.

        :rtype: TeamMergeRequestAutoCanceledDetails
        """
        if not self.is_team_merge_request_auto_canceled_details():
            raise AttributeError("tag 'team_merge_request_auto_canceled_details' not set")
        return self._value

    def get_team_merge_request_canceled_details(self):
        """
        Only call this if :meth:`is_team_merge_request_canceled_details` is true.

        :rtype: TeamMergeRequestCanceledDetails
        """
        if not self.is_team_merge_request_canceled_details():
            raise AttributeError("tag 'team_merge_request_canceled_details' not set")
        return self._value

    def get_team_merge_request_canceled_shown_to_primary_team_details(self):
        """
        Only call this if :meth:`is_team_merge_request_canceled_shown_to_primary_team_details` is true.

        :rtype: TeamMergeRequestCanceledShownToPrimaryTeamDetails
        """
        if not self.is_team_merge_request_canceled_shown_to_primary_team_details():
            raise AttributeError("tag 'team_merge_request_canceled_shown_to_primary_team_details' not set")
        return self._value

    def get_team_merge_request_canceled_shown_to_secondary_team_details(self):
        """
        Only call this if :meth:`is_team_merge_request_canceled_shown_to_secondary_team_details` is true.

        :rtype: TeamMergeRequestCanceledShownToSecondaryTeamDetails
        """
        if not self.is_team_merge_request_canceled_shown_to_secondary_team_details():
            raise AttributeError("tag 'team_merge_request_canceled_shown_to_secondary_team_details' not set")
        return self._value

    def get_team_merge_request_expired_details(self):
        """
        Only call this if :meth:`is_team_merge_request_expired_details` is true.

        :rtype: TeamMergeRequestExpiredDetails
        """
        if not self.is_team_merge_request_expired_details():
            raise AttributeError("tag 'team_merge_request_expired_details' not set")
        return self._value

    def get_team_merge_request_expired_shown_to_primary_team_details(self):
        """
        Only call this if :meth:`is_team_merge_request_expired_shown_to_primary_team_details` is true.

        :rtype: TeamMergeRequestExpiredShownToPrimaryTeamDetails
        """
        if not self.is_team_merge_request_expired_shown_to_primary_team_details():
            raise AttributeError("tag 'team_merge_request_expired_shown_to_primary_team_details' not set")
        return self._value

    def get_team_merge_request_expired_shown_to_secondary_team_details(self):
        """
        Only call this if :meth:`is_team_merge_request_expired_shown_to_secondary_team_details` is true.

        :rtype: TeamMergeRequestExpiredShownToSecondaryTeamDetails
        """
        if not self.is_team_merge_request_expired_shown_to_secondary_team_details():
            raise AttributeError("tag 'team_merge_request_expired_shown_to_secondary_team_details' not set")
        return self._value

    def get_team_merge_request_rejected_shown_to_primary_team_details(self):
        """
        Only call this if :meth:`is_team_merge_request_rejected_shown_to_primary_team_details` is true.

        :rtype: TeamMergeRequestRejectedShownToPrimaryTeamDetails
        """
        if not self.is_team_merge_request_rejected_shown_to_primary_team_details():
            raise AttributeError("tag 'team_merge_request_rejected_shown_to_primary_team_details' not set")
        return self._value

    def get_team_merge_request_rejected_shown_to_secondary_team_details(self):
        """
        Only call this if :meth:`is_team_merge_request_rejected_shown_to_secondary_team_details` is true.

        :rtype: TeamMergeRequestRejectedShownToSecondaryTeamDetails
        """
        if not self.is_team_merge_request_rejected_shown_to_secondary_team_details():
            raise AttributeError("tag 'team_merge_request_rejected_shown_to_secondary_team_details' not set")
        return self._value

    def get_team_merge_request_reminder_details(self):
        """
        Only call this if :meth:`is_team_merge_request_reminder_details` is true.

        :rtype: TeamMergeRequestReminderDetails
        """
        if not self.is_team_merge_request_reminder_details():
            raise AttributeError("tag 'team_merge_request_reminder_details' not set")
        return self._value

    def get_team_merge_request_reminder_shown_to_primary_team_details(self):
        """
        Only call this if :meth:`is_team_merge_request_reminder_shown_to_primary_team_details` is true.

        :rtype: TeamMergeRequestReminderShownToPrimaryTeamDetails
        """
        if not self.is_team_merge_request_reminder_shown_to_primary_team_details():
            raise AttributeError("tag 'team_merge_request_reminder_shown_to_primary_team_details' not set")
        return self._value

    def get_team_merge_request_reminder_shown_to_secondary_team_details(self):
        """
        Only call this if :meth:`is_team_merge_request_reminder_shown_to_secondary_team_details` is true.

        :rtype: TeamMergeRequestReminderShownToSecondaryTeamDetails
        """
        if not self.is_team_merge_request_reminder_shown_to_secondary_team_details():
            raise AttributeError("tag 'team_merge_request_reminder_shown_to_secondary_team_details' not set")
        return self._value

    def get_team_merge_request_revoked_details(self):
        """
        Only call this if :meth:`is_team_merge_request_revoked_details` is true.

        :rtype: TeamMergeRequestRevokedDetails
        """
        if not self.is_team_merge_request_revoked_details():
            raise AttributeError("tag 'team_merge_request_revoked_details' not set")
        return self._value

    def get_team_merge_request_sent_shown_to_primary_team_details(self):
        """
        Only call this if :meth:`is_team_merge_request_sent_shown_to_primary_team_details` is true.

        :rtype: TeamMergeRequestSentShownToPrimaryTeamDetails
        """
        if not self.is_team_merge_request_sent_shown_to_primary_team_details():
            raise AttributeError("tag 'team_merge_request_sent_shown_to_primary_team_details' not set")
        return self._value

    def get_team_merge_request_sent_shown_to_secondary_team_details(self):
        """
        Only call this if :meth:`is_team_merge_request_sent_shown_to_secondary_team_details` is true.

        :rtype: TeamMergeRequestSentShownToSecondaryTeamDetails
        """
        if not self.is_team_merge_request_sent_shown_to_secondary_team_details():
            raise AttributeError("tag 'team_merge_request_sent_shown_to_secondary_team_details' not set")
        return self._value

    def get_missing_details(self):
        """
        Hints that this event was returned with missing details due to an
        internal error.

        Only call this if :meth:`is_missing_details` is true.

        :rtype: MissingDetails
        """
        if not self.is_missing_details():
            raise AttributeError("tag 'missing_details' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EventDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EventDetails(%r, %r)' % (self._tag, self._value)

EventDetails_validator = bv.Union(EventDetails)

class EventType(bb.Union):
    """
    The type of the event.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar AppLinkTeamType EventType.app_link_team: (apps) Linked app for team
    :ivar AppLinkUserType EventType.app_link_user: (apps) Linked app for member
    :ivar AppUnlinkTeamType EventType.app_unlink_team: (apps) Unlinked app for
        team
    :ivar AppUnlinkUserType EventType.app_unlink_user: (apps) Unlinked app for
        member
    :ivar IntegrationConnectedType EventType.integration_connected: (apps)
        Connected integration for member
    :ivar IntegrationDisconnectedType EventType.integration_disconnected: (apps)
        Disconnected integration for member
    :ivar FileAddCommentType EventType.file_add_comment: (comments) Added file
        comment
    :ivar FileChangeCommentSubscriptionType
        EventType.file_change_comment_subscription: (comments) Subscribed to or
        unsubscribed from comment notifications for file
    :ivar FileDeleteCommentType EventType.file_delete_comment: (comments)
        Deleted file comment
    :ivar FileEditCommentType EventType.file_edit_comment: (comments) Edited
        file comment
    :ivar FileLikeCommentType EventType.file_like_comment: (comments) Liked file
        comment (deprecated, no longer logged)
    :ivar FileResolveCommentType EventType.file_resolve_comment: (comments)
        Resolved file comment
    :ivar FileUnlikeCommentType EventType.file_unlike_comment: (comments)
        Unliked file comment (deprecated, no longer logged)
    :ivar FileUnresolveCommentType EventType.file_unresolve_comment: (comments)
        Unresolved file comment
    :ivar DeviceChangeIpDesktopType EventType.device_change_ip_desktop:
        (devices) Changed IP address associated with active desktop session
    :ivar DeviceChangeIpMobileType EventType.device_change_ip_mobile: (devices)
        Changed IP address associated with active mobile session
    :ivar DeviceChangeIpWebType EventType.device_change_ip_web: (devices)
        Changed IP address associated with active web session
    :ivar DeviceDeleteOnUnlinkFailType EventType.device_delete_on_unlink_fail:
        (devices) Failed to delete all files from unlinked device
    :ivar DeviceDeleteOnUnlinkSuccessType
        EventType.device_delete_on_unlink_success: (devices) Deleted all files
        from unlinked device
    :ivar DeviceLinkFailType EventType.device_link_fail: (devices) Failed to
        link device
    :ivar DeviceLinkSuccessType EventType.device_link_success: (devices) Linked
        device
    :ivar DeviceManagementDisabledType EventType.device_management_disabled:
        (devices) Disabled device management (deprecated, no longer logged)
    :ivar DeviceManagementEnabledType EventType.device_management_enabled:
        (devices) Enabled device management (deprecated, no longer logged)
    :ivar DeviceUnlinkType EventType.device_unlink: (devices) Disconnected
        device
    :ivar EmmRefreshAuthTokenType EventType.emm_refresh_auth_token: (devices)
        Refreshed auth token used for setting up EMM
    :ivar AccountCaptureChangeAvailabilityType
        EventType.account_capture_change_availability: (domains) Granted/revoked
        option to enable account capture on team domains
    :ivar AccountCaptureMigrateAccountType
        EventType.account_capture_migrate_account: (domains) Account-captured
        user migrated account to team
    :ivar AccountCaptureNotificationEmailsSentType
        EventType.account_capture_notification_emails_sent: (domains) Sent
        proactive account capture email to all unmanaged members
    :ivar AccountCaptureRelinquishAccountType
        EventType.account_capture_relinquish_account: (domains) Account-captured
        user changed account email to personal email
    :ivar DisabledDomainInvitesType EventType.disabled_domain_invites: (domains)
        Disabled domain invites (deprecated, no longer logged)
    :ivar DomainInvitesApproveRequestToJoinTeamType
        EventType.domain_invites_approve_request_to_join_team: (domains)
        Approved user's request to join team
    :ivar DomainInvitesDeclineRequestToJoinTeamType
        EventType.domain_invites_decline_request_to_join_team: (domains)
        Declined user's request to join team
    :ivar DomainInvitesEmailExistingUsersType
        EventType.domain_invites_email_existing_users: (domains) Sent domain
        invites to existing domain accounts (deprecated, no longer logged)
    :ivar DomainInvitesRequestToJoinTeamType
        EventType.domain_invites_request_to_join_team: (domains) Requested to
        join team
    :ivar DomainInvitesSetInviteNewUserPrefToNoType
        EventType.domain_invites_set_invite_new_user_pref_to_no: (domains)
        Disabled "Automatically invite new users" (deprecated, no longer logged)
    :ivar DomainInvitesSetInviteNewUserPrefToYesType
        EventType.domain_invites_set_invite_new_user_pref_to_yes: (domains)
        Enabled "Automatically invite new users" (deprecated, no longer logged)
    :ivar DomainVerificationAddDomainFailType
        EventType.domain_verification_add_domain_fail: (domains) Failed to
        verify team domain
    :ivar DomainVerificationAddDomainSuccessType
        EventType.domain_verification_add_domain_success: (domains) Verified
        team domain
    :ivar DomainVerificationRemoveDomainType
        EventType.domain_verification_remove_domain: (domains) Removed domain
        from list of verified team domains
    :ivar EnabledDomainInvitesType EventType.enabled_domain_invites: (domains)
        Enabled domain invites (deprecated, no longer logged)
    :ivar CreateFolderType EventType.create_folder: (file_operations) Created
        folders (deprecated, no longer logged)
    :ivar FileAddType EventType.file_add: (file_operations) Added files and/or
        folders
    :ivar FileCopyType EventType.file_copy: (file_operations) Copied files
        and/or folders
    :ivar FileDeleteType EventType.file_delete: (file_operations) Deleted files
        and/or folders
    :ivar FileDownloadType EventType.file_download: (file_operations) Downloaded
        files and/or folders
    :ivar FileEditType EventType.file_edit: (file_operations) Edited files
    :ivar FileGetCopyReferenceType EventType.file_get_copy_reference:
        (file_operations) Created copy reference to file/folder
    :ivar FileMoveType EventType.file_move: (file_operations) Moved files and/or
        folders
    :ivar FilePermanentlyDeleteType EventType.file_permanently_delete:
        (file_operations) Permanently deleted files and/or folders
    :ivar FilePreviewType EventType.file_preview: (file_operations) Previewed
        files and/or folders
    :ivar FileRenameType EventType.file_rename: (file_operations) Renamed files
        and/or folders
    :ivar FileRestoreType EventType.file_restore: (file_operations) Restored
        deleted files and/or folders
    :ivar FileRevertType EventType.file_revert: (file_operations) Reverted files
        to previous version
    :ivar FileRollbackChangesType EventType.file_rollback_changes:
        (file_operations) Rolled back file actions
    :ivar FileSaveCopyReferenceType EventType.file_save_copy_reference:
        (file_operations) Saved file/folder using copy reference
    :ivar FileRequestChangeType EventType.file_request_change: (file_requests)
        Changed file request
    :ivar FileRequestCloseType EventType.file_request_close: (file_requests)
        Closed file request
    :ivar FileRequestCreateType EventType.file_request_create: (file_requests)
        Created file request
    :ivar FileRequestDeleteType EventType.file_request_delete: (file_requests)
        Delete file request
    :ivar FileRequestReceiveFileType EventType.file_request_receive_file:
        (file_requests) Received files for file request
    :ivar GroupAddExternalIdType EventType.group_add_external_id: (groups) Added
        external ID for group
    :ivar GroupAddMemberType EventType.group_add_member: (groups) Added team
        members to group
    :ivar GroupChangeExternalIdType EventType.group_change_external_id: (groups)
        Changed external ID for group
    :ivar GroupChangeManagementTypeType EventType.group_change_management_type:
        (groups) Changed group management type
    :ivar GroupChangeMemberRoleType EventType.group_change_member_role: (groups)
        Changed manager permissions of group member
    :ivar GroupCreateType EventType.group_create: (groups) Created group
    :ivar GroupDeleteType EventType.group_delete: (groups) Deleted group
    :ivar GroupDescriptionUpdatedType EventType.group_description_updated:
        (groups) Updated group (deprecated, no longer logged)
    :ivar GroupJoinPolicyUpdatedType EventType.group_join_policy_updated:
        (groups) Updated group join policy (deprecated, no longer logged)
    :ivar GroupMovedType EventType.group_moved: (groups) Moved group
        (deprecated, no longer logged)
    :ivar GroupRemoveExternalIdType EventType.group_remove_external_id: (groups)
        Removed external ID for group
    :ivar GroupRemoveMemberType EventType.group_remove_member: (groups) Removed
        team members from group
    :ivar GroupRenameType EventType.group_rename: (groups) Renamed group
    :ivar EmmErrorType EventType.emm_error: (logins) Failed to sign in via EMM
        (deprecated, replaced by 'Failed to sign in')
    :ivar GuestAdminSignedInViaTrustedTeamsType
        EventType.guest_admin_signed_in_via_trusted_teams: (logins) Started
        trusted team admin session
    :ivar GuestAdminSignedOutViaTrustedTeamsType
        EventType.guest_admin_signed_out_via_trusted_teams: (logins) Ended
        trusted team admin session
    :ivar LoginFailType EventType.login_fail: (logins) Failed to sign in
    :ivar LoginSuccessType EventType.login_success: (logins) Signed in
    :ivar LogoutType EventType.logout: (logins) Signed out
    :ivar ResellerSupportSessionEndType EventType.reseller_support_session_end:
        (logins) Ended reseller support session
    :ivar ResellerSupportSessionStartType
        EventType.reseller_support_session_start: (logins) Started reseller
        support session
    :ivar SignInAsSessionEndType EventType.sign_in_as_session_end: (logins)
        Ended admin sign-in-as session
    :ivar SignInAsSessionStartType EventType.sign_in_as_session_start: (logins)
        Started admin sign-in-as session
    :ivar SsoErrorType EventType.sso_error: (logins) Failed to sign in via SSO
        (deprecated, replaced by 'Failed to sign in')
    :ivar MemberAddExternalIdType EventType.member_add_external_id: (members)
        Added an external ID for team member
    :ivar MemberAddNameType EventType.member_add_name: (members) Added team
        member name
    :ivar MemberChangeAdminRoleType EventType.member_change_admin_role:
        (members) Changed team member admin role
    :ivar MemberChangeEmailType EventType.member_change_email: (members) Changed
        team member email
    :ivar MemberChangeExternalIdType EventType.member_change_external_id:
        (members) Changed the external ID for team member
    :ivar MemberChangeMembershipTypeType
        EventType.member_change_membership_type: (members) Changed membership
        type (limited/full) of member (deprecated, no longer logged)
    :ivar MemberChangeNameType EventType.member_change_name: (members) Changed
        team member name
    :ivar MemberChangeStatusType EventType.member_change_status: (members)
        Changed member status (invited, joined, suspended, etc.)
    :ivar MemberDeleteManualContactsType
        EventType.member_delete_manual_contacts: (members) Cleared manually
        added contacts
    :ivar MemberPermanentlyDeleteAccountContentsType
        EventType.member_permanently_delete_account_contents: (members)
        Permanently deleted contents of deleted team member account
    :ivar MemberRemoveExternalIdType EventType.member_remove_external_id:
        (members) Removed the external ID for team member
    :ivar MemberSpaceLimitsAddCustomQuotaType
        EventType.member_space_limits_add_custom_quota: (members) Set custom
        member space limit
    :ivar MemberSpaceLimitsChangeCustomQuotaType
        EventType.member_space_limits_change_custom_quota: (members) Changed
        custom member space limit
    :ivar MemberSpaceLimitsChangeStatusType
        EventType.member_space_limits_change_status: (members) Changed space
        limit status
    :ivar MemberSpaceLimitsRemoveCustomQuotaType
        EventType.member_space_limits_remove_custom_quota: (members) Removed
        custom member space limit
    :ivar MemberSuggestType EventType.member_suggest: (members) Suggested person
        to add to team
    :ivar MemberTransferAccountContentsType
        EventType.member_transfer_account_contents: (members) Transferred
        contents of deleted member account to another member
    :ivar SecondaryMailsPolicyChangedType
        EventType.secondary_mails_policy_changed: (members) Secondary mails
        policy changed
    :ivar PaperContentAddMemberType EventType.paper_content_add_member: (paper)
        Added team member to Paper doc/folder
    :ivar PaperContentAddToFolderType EventType.paper_content_add_to_folder:
        (paper) Added Paper doc/folder to folder
    :ivar PaperContentArchiveType EventType.paper_content_archive: (paper)
        Archived Paper doc/folder
    :ivar PaperContentCreateType EventType.paper_content_create: (paper) Created
        Paper doc/folder
    :ivar PaperContentPermanentlyDeleteType
        EventType.paper_content_permanently_delete: (paper) Permanently deleted
        Paper doc/folder
    :ivar PaperContentRemoveFromFolderType
        EventType.paper_content_remove_from_folder: (paper) Removed Paper
        doc/folder from folder
    :ivar PaperContentRemoveMemberType EventType.paper_content_remove_member:
        (paper) Removed team member from Paper doc/folder
    :ivar PaperContentRenameType EventType.paper_content_rename: (paper) Renamed
        Paper doc/folder
    :ivar PaperContentRestoreType EventType.paper_content_restore: (paper)
        Restored archived Paper doc/folder
    :ivar PaperDocAddCommentType EventType.paper_doc_add_comment: (paper) Added
        Paper doc comment
    :ivar PaperDocChangeMemberRoleType EventType.paper_doc_change_member_role:
        (paper) Changed team member permissions for Paper doc
    :ivar PaperDocChangeSharingPolicyType
        EventType.paper_doc_change_sharing_policy: (paper) Changed sharing
        setting for Paper doc
    :ivar PaperDocChangeSubscriptionType
        EventType.paper_doc_change_subscription: (paper) Followed/unfollowed
        Paper doc
    :ivar PaperDocDeletedType EventType.paper_doc_deleted: (paper) Archived
        Paper doc (deprecated, no longer logged)
    :ivar PaperDocDeleteCommentType EventType.paper_doc_delete_comment: (paper)
        Deleted Paper doc comment
    :ivar PaperDocDownloadType EventType.paper_doc_download: (paper) Downloaded
        Paper doc in specific format
    :ivar PaperDocEditType EventType.paper_doc_edit: (paper) Edited Paper doc
    :ivar PaperDocEditCommentType EventType.paper_doc_edit_comment: (paper)
        Edited Paper doc comment
    :ivar PaperDocFollowedType EventType.paper_doc_followed: (paper) Followed
        Paper doc (deprecated, replaced by 'Followed/unfollowed Paper doc')
    :ivar PaperDocMentionType EventType.paper_doc_mention: (paper) Mentioned
        team member in Paper doc
    :ivar PaperDocOwnershipChangedType EventType.paper_doc_ownership_changed:
        (paper) Transferred ownership of Paper doc
    :ivar PaperDocRequestAccessType EventType.paper_doc_request_access: (paper)
        Requested access to Paper doc
    :ivar PaperDocResolveCommentType EventType.paper_doc_resolve_comment:
        (paper) Resolved Paper doc comment
    :ivar PaperDocRevertType EventType.paper_doc_revert: (paper) Restored Paper
        doc to previous version
    :ivar PaperDocSlackShareType EventType.paper_doc_slack_share: (paper) Shared
        Paper doc via Slack
    :ivar PaperDocTeamInviteType EventType.paper_doc_team_invite: (paper) Shared
        Paper doc with team member (deprecated, no longer logged)
    :ivar PaperDocTrashedType EventType.paper_doc_trashed: (paper) Deleted Paper
        doc
    :ivar PaperDocUnresolveCommentType EventType.paper_doc_unresolve_comment:
        (paper) Unresolved Paper doc comment
    :ivar PaperDocUntrashedType EventType.paper_doc_untrashed: (paper) Restored
        Paper doc
    :ivar PaperDocViewType EventType.paper_doc_view: (paper) Viewed Paper doc
    :ivar PaperExternalViewAllowType EventType.paper_external_view_allow:
        (paper) Changed Paper external sharing setting to anyone (deprecated, no
        longer logged)
    :ivar PaperExternalViewDefaultTeamType
        EventType.paper_external_view_default_team: (paper) Changed Paper
        external sharing setting to default team (deprecated, no longer logged)
    :ivar PaperExternalViewForbidType EventType.paper_external_view_forbid:
        (paper) Changed Paper external sharing setting to team-only (deprecated,
        no longer logged)
    :ivar PaperFolderChangeSubscriptionType
        EventType.paper_folder_change_subscription: (paper) Followed/unfollowed
        Paper folder
    :ivar PaperFolderDeletedType EventType.paper_folder_deleted: (paper)
        Archived Paper folder (deprecated, no longer logged)
    :ivar PaperFolderFollowedType EventType.paper_folder_followed: (paper)
        Followed Paper folder (deprecated, replaced by 'Followed/unfollowed
        Paper folder')
    :ivar PaperFolderTeamInviteType EventType.paper_folder_team_invite: (paper)
        Shared Paper folder with member (deprecated, no longer logged)
    :ivar PaperPublishedLinkCreateType EventType.paper_published_link_create:
        (paper) Published doc
    :ivar PaperPublishedLinkDisabledType
        EventType.paper_published_link_disabled: (paper) Unpublished doc
    :ivar PaperPublishedLinkViewType EventType.paper_published_link_view:
        (paper) Viewed published doc
    :ivar PasswordChangeType EventType.password_change: (passwords) Changed
        password
    :ivar PasswordResetType EventType.password_reset: (passwords) Reset password
    :ivar PasswordResetAllType EventType.password_reset_all: (passwords) Reset
        all team member passwords
    :ivar EmmCreateExceptionsReportType EventType.emm_create_exceptions_report:
        (reports) Created EMM-excluded users report
    :ivar EmmCreateUsageReportType EventType.emm_create_usage_report: (reports)
        Created EMM mobile app usage report
    :ivar ExportMembersReportType EventType.export_members_report: (reports)
        Created member data report
    :ivar PaperAdminExportStartType EventType.paper_admin_export_start:
        (reports) Exported all team Paper docs
    :ivar SmartSyncCreateAdminPrivilegeReportType
        EventType.smart_sync_create_admin_privilege_report: (reports) Created
        Smart Sync non-admin devices report
    :ivar TeamActivityCreateReportType EventType.team_activity_create_report:
        (reports) Created team activity report
    :ivar TeamActivityCreateReportFailType
        EventType.team_activity_create_report_fail: (reports) Couldn't generate
        team activity report
    :ivar CollectionShareType EventType.collection_share: (sharing) Shared album
    :ivar NoteAclInviteOnlyType EventType.note_acl_invite_only: (sharing)
        Changed Paper doc to invite-only (deprecated, no longer logged)
    :ivar NoteAclLinkType EventType.note_acl_link: (sharing) Changed Paper doc
        to link-accessible (deprecated, no longer logged)
    :ivar NoteAclTeamLinkType EventType.note_acl_team_link: (sharing) Changed
        Paper doc to link-accessible for team (deprecated, no longer logged)
    :ivar NoteSharedType EventType.note_shared: (sharing) Shared Paper doc
        (deprecated, no longer logged)
    :ivar NoteShareReceiveType EventType.note_share_receive: (sharing) Shared
        received Paper doc (deprecated, no longer logged)
    :ivar OpenNoteSharedType EventType.open_note_shared: (sharing) Opened shared
        Paper doc (deprecated, no longer logged)
    :ivar SfAddGroupType EventType.sf_add_group: (sharing) Added team to shared
        folder (deprecated, no longer logged)
    :ivar SfAllowNonMembersToViewSharedLinksType
        EventType.sf_allow_non_members_to_view_shared_links: (sharing) Allowed
        non-collaborators to view links to files in shared folder (deprecated,
        no longer logged)
    :ivar SfExternalInviteWarnType EventType.sf_external_invite_warn: (sharing)
        Set team members to see warning before sharing folders outside team
        (deprecated, no longer logged)
    :ivar SfFbInviteType EventType.sf_fb_invite: (sharing) Invited Facebook
        users to shared folder (deprecated, no longer logged)
    :ivar SfFbInviteChangeRoleType EventType.sf_fb_invite_change_role: (sharing)
        Changed Facebook user's role in shared folder (deprecated, no longer
        logged)
    :ivar SfFbUninviteType EventType.sf_fb_uninvite: (sharing) Uninvited
        Facebook user from shared folder (deprecated, no longer logged)
    :ivar SfInviteGroupType EventType.sf_invite_group: (sharing) Invited group
        to shared folder (deprecated, no longer logged)
    :ivar SfTeamGrantAccessType EventType.sf_team_grant_access: (sharing)
        Granted access to shared folder (deprecated, no longer logged)
    :ivar SfTeamInviteType EventType.sf_team_invite: (sharing) Invited team
        members to shared folder (deprecated, replaced by 'Invited user to
        Dropbox and added them to shared file/folder')
    :ivar SfTeamInviteChangeRoleType EventType.sf_team_invite_change_role:
        (sharing) Changed team member's role in shared folder (deprecated, no
        longer logged)
    :ivar SfTeamJoinType EventType.sf_team_join: (sharing) Joined team member's
        shared folder (deprecated, no longer logged)
    :ivar SfTeamJoinFromOobLinkType EventType.sf_team_join_from_oob_link:
        (sharing) Joined team member's shared folder from link (deprecated, no
        longer logged)
    :ivar SfTeamUninviteType EventType.sf_team_uninvite: (sharing) Unshared
        folder with team member (deprecated, replaced by 'Removed invitee from
        shared file/folder before invite was accepted')
    :ivar SharedContentAddInviteesType EventType.shared_content_add_invitees:
        (sharing) Invited user to Dropbox and added them to shared file/folder
    :ivar SharedContentAddLinkExpiryType
        EventType.shared_content_add_link_expiry: (sharing) Added expiration
        date to link for shared file/folder
    :ivar SharedContentAddLinkPasswordType
        EventType.shared_content_add_link_password: (sharing) Added password to
        link for shared file/folder
    :ivar SharedContentAddMemberType EventType.shared_content_add_member:
        (sharing) Added users and/or groups to shared file/folder
    :ivar SharedContentChangeDownloadsPolicyType
        EventType.shared_content_change_downloads_policy: (sharing) Changed
        whether members can download shared file/folder
    :ivar SharedContentChangeInviteeRoleType
        EventType.shared_content_change_invitee_role: (sharing) Changed access
        type of invitee to shared file/folder before invite was accepted
    :ivar SharedContentChangeLinkAudienceType
        EventType.shared_content_change_link_audience: (sharing) Changed link
        audience of shared file/folder
    :ivar SharedContentChangeLinkExpiryType
        EventType.shared_content_change_link_expiry: (sharing) Changed link
        expiration of shared file/folder
    :ivar SharedContentChangeLinkPasswordType
        EventType.shared_content_change_link_password: (sharing) Changed link
        password of shared file/folder
    :ivar SharedContentChangeMemberRoleType
        EventType.shared_content_change_member_role: (sharing) Changed access
        type of shared file/folder member
    :ivar SharedContentChangeViewerInfoPolicyType
        EventType.shared_content_change_viewer_info_policy: (sharing) Changed
        whether members can see who viewed shared file/folder
    :ivar SharedContentClaimInvitationType
        EventType.shared_content_claim_invitation: (sharing) Acquired membership
        of shared file/folder by accepting invite
    :ivar SharedContentCopyType EventType.shared_content_copy: (sharing) Copied
        shared file/folder to own Dropbox
    :ivar SharedContentDownloadType EventType.shared_content_download: (sharing)
        Downloaded shared file/folder
    :ivar SharedContentRelinquishMembershipType
        EventType.shared_content_relinquish_membership: (sharing) Left shared
        file/folder
    :ivar SharedContentRemoveInviteesType
        EventType.shared_content_remove_invitees: (sharing) Removed invitee from
        shared file/folder before invite was accepted
    :ivar SharedContentRemoveLinkExpiryType
        EventType.shared_content_remove_link_expiry: (sharing) Removed link
        expiration date of shared file/folder
    :ivar SharedContentRemoveLinkPasswordType
        EventType.shared_content_remove_link_password: (sharing) Removed link
        password of shared file/folder
    :ivar SharedContentRemoveMemberType EventType.shared_content_remove_member:
        (sharing) Removed user/group from shared file/folder
    :ivar SharedContentRequestAccessType
        EventType.shared_content_request_access: (sharing) Requested access to
        shared file/folder
    :ivar SharedContentUnshareType EventType.shared_content_unshare: (sharing)
        Unshared file/folder by clearing membership and turning off link
    :ivar SharedContentViewType EventType.shared_content_view: (sharing)
        Previewed shared file/folder
    :ivar SharedFolderChangeLinkPolicyType
        EventType.shared_folder_change_link_policy: (sharing) Changed who can
        access shared folder via link
    :ivar SharedFolderChangeMembersInheritancePolicyType
        EventType.shared_folder_change_members_inheritance_policy: (sharing)
        Changed whether shared folder inherits members from parent folder
    :ivar SharedFolderChangeMembersManagementPolicyType
        EventType.shared_folder_change_members_management_policy: (sharing)
        Changed who can add/remove members of shared folder
    :ivar SharedFolderChangeMembersPolicyType
        EventType.shared_folder_change_members_policy: (sharing) Changed who can
        become member of shared folder
    :ivar SharedFolderCreateType EventType.shared_folder_create: (sharing)
        Created shared folder
    :ivar SharedFolderDeclineInvitationType
        EventType.shared_folder_decline_invitation: (sharing) Declined team
        member's invite to shared folder
    :ivar SharedFolderMountType EventType.shared_folder_mount: (sharing) Added
        shared folder to own Dropbox
    :ivar SharedFolderNestType EventType.shared_folder_nest: (sharing) Changed
        parent of shared folder
    :ivar SharedFolderTransferOwnershipType
        EventType.shared_folder_transfer_ownership: (sharing) Transferred
        ownership of shared folder to another member
    :ivar SharedFolderUnmountType EventType.shared_folder_unmount: (sharing)
        Deleted shared folder from Dropbox
    :ivar SharedLinkAddExpiryType EventType.shared_link_add_expiry: (sharing)
        Added shared link expiration date
    :ivar SharedLinkChangeExpiryType EventType.shared_link_change_expiry:
        (sharing) Changed shared link expiration date
    :ivar SharedLinkChangeVisibilityType
        EventType.shared_link_change_visibility: (sharing) Changed visibility of
        shared link
    :ivar SharedLinkCopyType EventType.shared_link_copy: (sharing) Added
        file/folder to Dropbox from shared link
    :ivar SharedLinkCreateType EventType.shared_link_create: (sharing) Created
        shared link
    :ivar SharedLinkDisableType EventType.shared_link_disable: (sharing) Removed
        shared link
    :ivar SharedLinkDownloadType EventType.shared_link_download: (sharing)
        Downloaded file/folder from shared link
    :ivar SharedLinkRemoveExpiryType EventType.shared_link_remove_expiry:
        (sharing) Removed shared link expiration date
    :ivar SharedLinkShareType EventType.shared_link_share: (sharing) Added
        members as audience of shared link
    :ivar SharedLinkViewType EventType.shared_link_view: (sharing) Opened shared
        link
    :ivar SharedNoteOpenedType EventType.shared_note_opened: (sharing) Opened
        shared Paper doc (deprecated, no longer logged)
    :ivar ShmodelGroupShareType EventType.shmodel_group_share: (sharing) Shared
        link with group (deprecated, no longer logged)
    :ivar ShowcaseAccessGrantedType EventType.showcase_access_granted:
        (showcase) Granted access to showcase
    :ivar ShowcaseAddMemberType EventType.showcase_add_member: (showcase) Added
        member to showcase
    :ivar ShowcaseArchivedType EventType.showcase_archived: (showcase) Archived
        showcase
    :ivar ShowcaseCreatedType EventType.showcase_created: (showcase) Created
        showcase
    :ivar ShowcaseDeleteCommentType EventType.showcase_delete_comment:
        (showcase) Deleted showcase comment
    :ivar ShowcaseEditedType EventType.showcase_edited: (showcase) Edited
        showcase
    :ivar ShowcaseEditCommentType EventType.showcase_edit_comment: (showcase)
        Edited showcase comment
    :ivar ShowcaseFileAddedType EventType.showcase_file_added: (showcase) Added
        file to showcase
    :ivar ShowcaseFileDownloadType EventType.showcase_file_download: (showcase)
        Downloaded file from showcase
    :ivar ShowcaseFileRemovedType EventType.showcase_file_removed: (showcase)
        Removed file from showcase
    :ivar ShowcaseFileViewType EventType.showcase_file_view: (showcase) Viewed
        file in showcase
    :ivar ShowcasePermanentlyDeletedType EventType.showcase_permanently_deleted:
        (showcase) Permanently deleted showcase
    :ivar ShowcasePostCommentType EventType.showcase_post_comment: (showcase)
        Added showcase comment
    :ivar ShowcaseRemoveMemberType EventType.showcase_remove_member: (showcase)
        Removed member from showcase
    :ivar ShowcaseRenamedType EventType.showcase_renamed: (showcase) Renamed
        showcase
    :ivar ShowcaseRequestAccessType EventType.showcase_request_access:
        (showcase) Requested access to showcase
    :ivar ShowcaseResolveCommentType EventType.showcase_resolve_comment:
        (showcase) Resolved showcase comment
    :ivar ShowcaseRestoredType EventType.showcase_restored: (showcase)
        Unarchived showcase
    :ivar ShowcaseTrashedType EventType.showcase_trashed: (showcase) Deleted
        showcase
    :ivar ShowcaseTrashedDeprecatedType EventType.showcase_trashed_deprecated:
        (showcase) Deleted showcase (old version) (deprecated, replaced by
        'Deleted showcase')
    :ivar ShowcaseUnresolveCommentType EventType.showcase_unresolve_comment:
        (showcase) Unresolved showcase comment
    :ivar ShowcaseUntrashedType EventType.showcase_untrashed: (showcase)
        Restored showcase
    :ivar ShowcaseUntrashedDeprecatedType
        EventType.showcase_untrashed_deprecated: (showcase) Restored showcase
        (old version) (deprecated, replaced by 'Restored showcase')
    :ivar ShowcaseViewType EventType.showcase_view: (showcase) Viewed showcase
    :ivar SsoAddCertType EventType.sso_add_cert: (sso) Added X.509 certificate
        for SSO
    :ivar SsoAddLoginUrlType EventType.sso_add_login_url: (sso) Added sign-in
        URL for SSO
    :ivar SsoAddLogoutUrlType EventType.sso_add_logout_url: (sso) Added sign-out
        URL for SSO
    :ivar SsoChangeCertType EventType.sso_change_cert: (sso) Changed X.509
        certificate for SSO
    :ivar SsoChangeLoginUrlType EventType.sso_change_login_url: (sso) Changed
        sign-in URL for SSO
    :ivar SsoChangeLogoutUrlType EventType.sso_change_logout_url: (sso) Changed
        sign-out URL for SSO
    :ivar SsoChangeSamlIdentityModeType EventType.sso_change_saml_identity_mode:
        (sso) Changed SAML identity mode for SSO
    :ivar SsoRemoveCertType EventType.sso_remove_cert: (sso) Removed X.509
        certificate for SSO
    :ivar SsoRemoveLoginUrlType EventType.sso_remove_login_url: (sso) Removed
        sign-in URL for SSO
    :ivar SsoRemoveLogoutUrlType EventType.sso_remove_logout_url: (sso) Removed
        sign-out URL for SSO
    :ivar TeamFolderChangeStatusType EventType.team_folder_change_status:
        (team_folders) Changed archival status of team folder
    :ivar TeamFolderCreateType EventType.team_folder_create: (team_folders)
        Created team folder in active status
    :ivar TeamFolderDowngradeType EventType.team_folder_downgrade:
        (team_folders) Downgraded team folder to regular shared folder
    :ivar TeamFolderPermanentlyDeleteType
        EventType.team_folder_permanently_delete: (team_folders) Permanently
        deleted archived team folder
    :ivar TeamFolderRenameType EventType.team_folder_rename: (team_folders)
        Renamed active/archived team folder
    :ivar TeamSelectiveSyncSettingsChangedType
        EventType.team_selective_sync_settings_changed: (team_folders) Changed
        sync default
    :ivar AccountCaptureChangePolicyType
        EventType.account_capture_change_policy: (team_policies) Changed account
        capture setting on team domain
    :ivar AllowDownloadDisabledType EventType.allow_download_disabled:
        (team_policies) Disabled downloads (deprecated, no longer logged)
    :ivar AllowDownloadEnabledType EventType.allow_download_enabled:
        (team_policies) Enabled downloads (deprecated, no longer logged)
    :ivar CameraUploadsPolicyChangedType
        EventType.camera_uploads_policy_changed: (team_policies) Changed camera
        uploads setting for team
    :ivar DataPlacementRestrictionChangePolicyType
        EventType.data_placement_restriction_change_policy: (team_policies) Set
        restrictions on data center locations where team data resides
    :ivar DataPlacementRestrictionSatisfyPolicyType
        EventType.data_placement_restriction_satisfy_policy: (team_policies)
        Completed restrictions on data center locations where team data resides
    :ivar DeviceApprovalsChangeDesktopPolicyType
        EventType.device_approvals_change_desktop_policy: (team_policies)
        Set/removed limit on number of computers member can link to team Dropbox
        account
    :ivar DeviceApprovalsChangeMobilePolicyType
        EventType.device_approvals_change_mobile_policy: (team_policies)
        Set/removed limit on number of mobile devices member can link to team
        Dropbox account
    :ivar DeviceApprovalsChangeOverageActionType
        EventType.device_approvals_change_overage_action: (team_policies)
        Changed device approvals setting when member is over limit
    :ivar DeviceApprovalsChangeUnlinkActionType
        EventType.device_approvals_change_unlink_action: (team_policies) Changed
        device approvals setting when member unlinks approved device
    :ivar DirectoryRestrictionsAddMembersType
        EventType.directory_restrictions_add_members: (team_policies) Added
        members to directory restrictions list
    :ivar DirectoryRestrictionsRemoveMembersType
        EventType.directory_restrictions_remove_members: (team_policies) Removed
        members from directory restrictions list
    :ivar EmmAddExceptionType EventType.emm_add_exception: (team_policies) Added
        members to EMM exception list
    :ivar EmmChangePolicyType EventType.emm_change_policy: (team_policies)
        Enabled/disabled enterprise mobility management for members
    :ivar EmmRemoveExceptionType EventType.emm_remove_exception: (team_policies)
        Removed members from EMM exception list
    :ivar ExtendedVersionHistoryChangePolicyType
        EventType.extended_version_history_change_policy: (team_policies)
        Accepted/opted out of extended version history
    :ivar FileCommentsChangePolicyType EventType.file_comments_change_policy:
        (team_policies) Enabled/disabled commenting on team files
    :ivar FileRequestsChangePolicyType EventType.file_requests_change_policy:
        (team_policies) Enabled/disabled file requests
    :ivar FileRequestsEmailsEnabledType EventType.file_requests_emails_enabled:
        (team_policies) Enabled file request emails for everyone (deprecated, no
        longer logged)
    :ivar FileRequestsEmailsRestrictedToTeamOnlyType
        EventType.file_requests_emails_restricted_to_team_only: (team_policies)
        Enabled file request emails for team (deprecated, no longer logged)
    :ivar GoogleSsoChangePolicyType EventType.google_sso_change_policy:
        (team_policies) Enabled/disabled Google single sign-on for team
    :ivar GroupUserManagementChangePolicyType
        EventType.group_user_management_change_policy: (team_policies) Changed
        who can create groups
    :ivar IntegrationPolicyChangedType EventType.integration_policy_changed:
        (team_policies) Changed integration policy for team
    :ivar MemberRequestsChangePolicyType
        EventType.member_requests_change_policy: (team_policies) Changed whether
        users can find team when not invited
    :ivar MemberSpaceLimitsAddExceptionType
        EventType.member_space_limits_add_exception: (team_policies) Added
        members to member space limit exception list
    :ivar MemberSpaceLimitsChangeCapsTypePolicyType
        EventType.member_space_limits_change_caps_type_policy: (team_policies)
        Changed member space limit type for team
    :ivar MemberSpaceLimitsChangePolicyType
        EventType.member_space_limits_change_policy: (team_policies) Changed
        team default member space limit
    :ivar MemberSpaceLimitsRemoveExceptionType
        EventType.member_space_limits_remove_exception: (team_policies) Removed
        members from member space limit exception list
    :ivar MemberSuggestionsChangePolicyType
        EventType.member_suggestions_change_policy: (team_policies)
        Enabled/disabled option for team members to suggest people to add to
        team
    :ivar MicrosoftOfficeAddinChangePolicyType
        EventType.microsoft_office_addin_change_policy: (team_policies)
        Enabled/disabled Microsoft Office add-in
    :ivar NetworkControlChangePolicyType
        EventType.network_control_change_policy: (team_policies)
        Enabled/disabled network control
    :ivar PaperChangeDeploymentPolicyType
        EventType.paper_change_deployment_policy: (team_policies) Changed
        whether Dropbox Paper, when enabled, is deployed to all members or to
        specific members
    :ivar PaperChangeMemberLinkPolicyType
        EventType.paper_change_member_link_policy: (team_policies) Changed
        whether non-members can view Paper docs with link (deprecated, no longer
        logged)
    :ivar PaperChangeMemberPolicyType EventType.paper_change_member_policy:
        (team_policies) Changed whether members can share Paper docs outside
        team, and if docs are accessible only by team members or anyone by
        default
    :ivar PaperChangePolicyType EventType.paper_change_policy: (team_policies)
        Enabled/disabled Dropbox Paper for team
    :ivar PaperDefaultFolderPolicyChangedType
        EventType.paper_default_folder_policy_changed: (team_policies) Changed
        Paper Default Folder Policy setting for team
    :ivar PaperDesktopPolicyChangedType EventType.paper_desktop_policy_changed:
        (team_policies) Enabled/disabled Paper Desktop for team
    :ivar PaperEnabledUsersGroupAdditionType
        EventType.paper_enabled_users_group_addition: (team_policies) Added
        users to Paper-enabled users list
    :ivar PaperEnabledUsersGroupRemovalType
        EventType.paper_enabled_users_group_removal: (team_policies) Removed
        users from Paper-enabled users list
    :ivar PermanentDeleteChangePolicyType
        EventType.permanent_delete_change_policy: (team_policies)
        Enabled/disabled ability of team members to permanently delete content
    :ivar ResellerSupportChangePolicyType
        EventType.reseller_support_change_policy: (team_policies)
        Enabled/disabled reseller support
    :ivar SharingChangeFolderJoinPolicyType
        EventType.sharing_change_folder_join_policy: (team_policies) Changed
        whether team members can join shared folders owned outside team
    :ivar SharingChangeLinkPolicyType EventType.sharing_change_link_policy:
        (team_policies) Changed whether members can share links outside team,
        and if links are accessible only by team members or anyone by default
    :ivar SharingChangeMemberPolicyType EventType.sharing_change_member_policy:
        (team_policies) Changed whether members can share files/folders outside
        team
    :ivar ShowcaseChangeDownloadPolicyType
        EventType.showcase_change_download_policy: (team_policies)
        Enabled/disabled downloading files from Dropbox Showcase for team
    :ivar ShowcaseChangeEnabledPolicyType
        EventType.showcase_change_enabled_policy: (team_policies)
        Enabled/disabled Dropbox Showcase for team
    :ivar ShowcaseChangeExternalSharingPolicyType
        EventType.showcase_change_external_sharing_policy: (team_policies)
        Enabled/disabled sharing Dropbox Showcase externally for team
    :ivar SmartSyncChangePolicyType EventType.smart_sync_change_policy:
        (team_policies) Changed default Smart Sync setting for team members
    :ivar SmartSyncNotOptOutType EventType.smart_sync_not_opt_out:
        (team_policies) Opted team into Smart Sync
    :ivar SmartSyncOptOutType EventType.smart_sync_opt_out: (team_policies)
        Opted team out of Smart Sync
    :ivar SsoChangePolicyType EventType.sso_change_policy: (team_policies)
        Changed single sign-on setting for team
    :ivar TeamExtensionsPolicyChangedType
        EventType.team_extensions_policy_changed: (team_policies) Changed App
        Integrations setting for team
    :ivar TeamSelectiveSyncPolicyChangedType
        EventType.team_selective_sync_policy_changed: (team_policies)
        Enabled/disabled Team Selective Sync for team
    :ivar TfaChangePolicyType EventType.tfa_change_policy: (team_policies)
        Changed two-step verification setting for team
    :ivar TwoAccountChangePolicyType EventType.two_account_change_policy:
        (team_policies) Enabled/disabled option for members to link personal
        Dropbox account and team account to same computer
    :ivar ViewerInfoPolicyChangedType EventType.viewer_info_policy_changed:
        (team_policies) Changed team policy for viewer info
    :ivar WebSessionsChangeFixedLengthPolicyType
        EventType.web_sessions_change_fixed_length_policy: (team_policies)
        Changed how long members can stay signed in to Dropbox.com
    :ivar WebSessionsChangeIdleLengthPolicyType
        EventType.web_sessions_change_idle_length_policy: (team_policies)
        Changed how long team members can be idle while signed in to Dropbox.com
    :ivar TeamMergeFromType EventType.team_merge_from: (team_profile) Merged
        another team into this team
    :ivar TeamMergeToType EventType.team_merge_to: (team_profile) Merged this
        team into another team
    :ivar TeamProfileAddLogoType EventType.team_profile_add_logo: (team_profile)
        Added team logo to display on shared link headers
    :ivar TeamProfileChangeDefaultLanguageType
        EventType.team_profile_change_default_language: (team_profile) Changed
        default language for team
    :ivar TeamProfileChangeLogoType EventType.team_profile_change_logo:
        (team_profile) Changed team logo displayed on shared link headers
    :ivar TeamProfileChangeNameType EventType.team_profile_change_name:
        (team_profile) Changed team name
    :ivar TeamProfileRemoveLogoType EventType.team_profile_remove_logo:
        (team_profile) Removed team logo displayed on shared link headers
    :ivar TfaAddBackupPhoneType EventType.tfa_add_backup_phone: (tfa) Added
        backup phone for two-step verification
    :ivar TfaAddSecurityKeyType EventType.tfa_add_security_key: (tfa) Added
        security key for two-step verification
    :ivar TfaChangeBackupPhoneType EventType.tfa_change_backup_phone: (tfa)
        Changed backup phone for two-step verification
    :ivar TfaChangeStatusType EventType.tfa_change_status: (tfa)
        Enabled/disabled/changed two-step verification setting
    :ivar TfaRemoveBackupPhoneType EventType.tfa_remove_backup_phone: (tfa)
        Removed backup phone for two-step verification
    :ivar TfaRemoveSecurityKeyType EventType.tfa_remove_security_key: (tfa)
        Removed security key for two-step verification
    :ivar TfaResetType EventType.tfa_reset: (tfa) Reset two-step verification
        for team member
    :ivar GuestAdminChangeStatusType EventType.guest_admin_change_status:
        (trusted_teams) Changed guest team admin status
    :ivar TeamMergeRequestAcceptedType EventType.team_merge_request_accepted:
        (trusted_teams) Accepted a team merge request
    :ivar TeamMergeRequestAcceptedShownToPrimaryTeamType
        EventType.team_merge_request_accepted_shown_to_primary_team:
        (trusted_teams) Accepted a team merge request (deprecated, replaced by
        'Accepted a team merge request')
    :ivar TeamMergeRequestAcceptedShownToSecondaryTeamType
        EventType.team_merge_request_accepted_shown_to_secondary_team:
        (trusted_teams) Accepted a team merge request (deprecated, replaced by
        'Accepted a team merge request')
    :ivar TeamMergeRequestAutoCanceledType
        EventType.team_merge_request_auto_canceled: (trusted_teams)
        Automatically canceled team merge request
    :ivar TeamMergeRequestCanceledType EventType.team_merge_request_canceled:
        (trusted_teams) Canceled a team merge request
    :ivar TeamMergeRequestCanceledShownToPrimaryTeamType
        EventType.team_merge_request_canceled_shown_to_primary_team:
        (trusted_teams) Canceled a team merge request (deprecated, replaced by
        'Canceled a team merge request')
    :ivar TeamMergeRequestCanceledShownToSecondaryTeamType
        EventType.team_merge_request_canceled_shown_to_secondary_team:
        (trusted_teams) Canceled a team merge request (deprecated, replaced by
        'Canceled a team merge request')
    :ivar TeamMergeRequestExpiredType EventType.team_merge_request_expired:
        (trusted_teams) Team merge request expired
    :ivar TeamMergeRequestExpiredShownToPrimaryTeamType
        EventType.team_merge_request_expired_shown_to_primary_team:
        (trusted_teams) Team merge request expired (deprecated, replaced by
        'Team merge request expired')
    :ivar TeamMergeRequestExpiredShownToSecondaryTeamType
        EventType.team_merge_request_expired_shown_to_secondary_team:
        (trusted_teams) Team merge request expired (deprecated, replaced by
        'Team merge request expired')
    :ivar TeamMergeRequestRejectedShownToPrimaryTeamType
        EventType.team_merge_request_rejected_shown_to_primary_team:
        (trusted_teams) Rejected a team merge request (deprecated, no longer
        logged)
    :ivar TeamMergeRequestRejectedShownToSecondaryTeamType
        EventType.team_merge_request_rejected_shown_to_secondary_team:
        (trusted_teams) Rejected a team merge request (deprecated, no longer
        logged)
    :ivar TeamMergeRequestReminderType EventType.team_merge_request_reminder:
        (trusted_teams) Sent a team merge request reminder
    :ivar TeamMergeRequestReminderShownToPrimaryTeamType
        EventType.team_merge_request_reminder_shown_to_primary_team:
        (trusted_teams) Sent a team merge request reminder (deprecated, replaced
        by 'Sent a team merge request reminder')
    :ivar TeamMergeRequestReminderShownToSecondaryTeamType
        EventType.team_merge_request_reminder_shown_to_secondary_team:
        (trusted_teams) Sent a team merge request reminder (deprecated, replaced
        by 'Sent a team merge request reminder')
    :ivar TeamMergeRequestRevokedType EventType.team_merge_request_revoked:
        (trusted_teams) Canceled the team merge
    :ivar TeamMergeRequestSentShownToPrimaryTeamType
        EventType.team_merge_request_sent_shown_to_primary_team: (trusted_teams)
        Requested to merge their Dropbox team into yours
    :ivar TeamMergeRequestSentShownToSecondaryTeamType
        EventType.team_merge_request_sent_shown_to_secondary_team:
        (trusted_teams) Requested to merge your team into another Dropbox team
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def app_link_team(cls, val):
        """
        Create an instance of this class set to the ``app_link_team`` tag with
        value ``val``.

        :param AppLinkTeamType val:
        :rtype: EventType
        """
        return cls('app_link_team', val)

    @classmethod
    def app_link_user(cls, val):
        """
        Create an instance of this class set to the ``app_link_user`` tag with
        value ``val``.

        :param AppLinkUserType val:
        :rtype: EventType
        """
        return cls('app_link_user', val)

    @classmethod
    def app_unlink_team(cls, val):
        """
        Create an instance of this class set to the ``app_unlink_team`` tag with
        value ``val``.

        :param AppUnlinkTeamType val:
        :rtype: EventType
        """
        return cls('app_unlink_team', val)

    @classmethod
    def app_unlink_user(cls, val):
        """
        Create an instance of this class set to the ``app_unlink_user`` tag with
        value ``val``.

        :param AppUnlinkUserType val:
        :rtype: EventType
        """
        return cls('app_unlink_user', val)

    @classmethod
    def integration_connected(cls, val):
        """
        Create an instance of this class set to the ``integration_connected``
        tag with value ``val``.

        :param IntegrationConnectedType val:
        :rtype: EventType
        """
        return cls('integration_connected', val)

    @classmethod
    def integration_disconnected(cls, val):
        """
        Create an instance of this class set to the ``integration_disconnected``
        tag with value ``val``.

        :param IntegrationDisconnectedType val:
        :rtype: EventType
        """
        return cls('integration_disconnected', val)

    @classmethod
    def file_add_comment(cls, val):
        """
        Create an instance of this class set to the ``file_add_comment`` tag
        with value ``val``.

        :param FileAddCommentType val:
        :rtype: EventType
        """
        return cls('file_add_comment', val)

    @classmethod
    def file_change_comment_subscription(cls, val):
        """
        Create an instance of this class set to the
        ``file_change_comment_subscription`` tag with value ``val``.

        :param FileChangeCommentSubscriptionType val:
        :rtype: EventType
        """
        return cls('file_change_comment_subscription', val)

    @classmethod
    def file_delete_comment(cls, val):
        """
        Create an instance of this class set to the ``file_delete_comment`` tag
        with value ``val``.

        :param FileDeleteCommentType val:
        :rtype: EventType
        """
        return cls('file_delete_comment', val)

    @classmethod
    def file_edit_comment(cls, val):
        """
        Create an instance of this class set to the ``file_edit_comment`` tag
        with value ``val``.

        :param FileEditCommentType val:
        :rtype: EventType
        """
        return cls('file_edit_comment', val)

    @classmethod
    def file_like_comment(cls, val):
        """
        Create an instance of this class set to the ``file_like_comment`` tag
        with value ``val``.

        :param FileLikeCommentType val:
        :rtype: EventType
        """
        return cls('file_like_comment', val)

    @classmethod
    def file_resolve_comment(cls, val):
        """
        Create an instance of this class set to the ``file_resolve_comment`` tag
        with value ``val``.

        :param FileResolveCommentType val:
        :rtype: EventType
        """
        return cls('file_resolve_comment', val)

    @classmethod
    def file_unlike_comment(cls, val):
        """
        Create an instance of this class set to the ``file_unlike_comment`` tag
        with value ``val``.

        :param FileUnlikeCommentType val:
        :rtype: EventType
        """
        return cls('file_unlike_comment', val)

    @classmethod
    def file_unresolve_comment(cls, val):
        """
        Create an instance of this class set to the ``file_unresolve_comment``
        tag with value ``val``.

        :param FileUnresolveCommentType val:
        :rtype: EventType
        """
        return cls('file_unresolve_comment', val)

    @classmethod
    def device_change_ip_desktop(cls, val):
        """
        Create an instance of this class set to the ``device_change_ip_desktop``
        tag with value ``val``.

        :param DeviceChangeIpDesktopType val:
        :rtype: EventType
        """
        return cls('device_change_ip_desktop', val)

    @classmethod
    def device_change_ip_mobile(cls, val):
        """
        Create an instance of this class set to the ``device_change_ip_mobile``
        tag with value ``val``.

        :param DeviceChangeIpMobileType val:
        :rtype: EventType
        """
        return cls('device_change_ip_mobile', val)

    @classmethod
    def device_change_ip_web(cls, val):
        """
        Create an instance of this class set to the ``device_change_ip_web`` tag
        with value ``val``.

        :param DeviceChangeIpWebType val:
        :rtype: EventType
        """
        return cls('device_change_ip_web', val)

    @classmethod
    def device_delete_on_unlink_fail(cls, val):
        """
        Create an instance of this class set to the
        ``device_delete_on_unlink_fail`` tag with value ``val``.

        :param DeviceDeleteOnUnlinkFailType val:
        :rtype: EventType
        """
        return cls('device_delete_on_unlink_fail', val)

    @classmethod
    def device_delete_on_unlink_success(cls, val):
        """
        Create an instance of this class set to the
        ``device_delete_on_unlink_success`` tag with value ``val``.

        :param DeviceDeleteOnUnlinkSuccessType val:
        :rtype: EventType
        """
        return cls('device_delete_on_unlink_success', val)

    @classmethod
    def device_link_fail(cls, val):
        """
        Create an instance of this class set to the ``device_link_fail`` tag
        with value ``val``.

        :param DeviceLinkFailType val:
        :rtype: EventType
        """
        return cls('device_link_fail', val)

    @classmethod
    def device_link_success(cls, val):
        """
        Create an instance of this class set to the ``device_link_success`` tag
        with value ``val``.

        :param DeviceLinkSuccessType val:
        :rtype: EventType
        """
        return cls('device_link_success', val)

    @classmethod
    def device_management_disabled(cls, val):
        """
        Create an instance of this class set to the
        ``device_management_disabled`` tag with value ``val``.

        :param DeviceManagementDisabledType val:
        :rtype: EventType
        """
        return cls('device_management_disabled', val)

    @classmethod
    def device_management_enabled(cls, val):
        """
        Create an instance of this class set to the
        ``device_management_enabled`` tag with value ``val``.

        :param DeviceManagementEnabledType val:
        :rtype: EventType
        """
        return cls('device_management_enabled', val)

    @classmethod
    def device_unlink(cls, val):
        """
        Create an instance of this class set to the ``device_unlink`` tag with
        value ``val``.

        :param DeviceUnlinkType val:
        :rtype: EventType
        """
        return cls('device_unlink', val)

    @classmethod
    def emm_refresh_auth_token(cls, val):
        """
        Create an instance of this class set to the ``emm_refresh_auth_token``
        tag with value ``val``.

        :param EmmRefreshAuthTokenType val:
        :rtype: EventType
        """
        return cls('emm_refresh_auth_token', val)

    @classmethod
    def account_capture_change_availability(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_change_availability`` tag with value ``val``.

        :param AccountCaptureChangeAvailabilityType val:
        :rtype: EventType
        """
        return cls('account_capture_change_availability', val)

    @classmethod
    def account_capture_migrate_account(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_migrate_account`` tag with value ``val``.

        :param AccountCaptureMigrateAccountType val:
        :rtype: EventType
        """
        return cls('account_capture_migrate_account', val)

    @classmethod
    def account_capture_notification_emails_sent(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_notification_emails_sent`` tag with value ``val``.

        :param AccountCaptureNotificationEmailsSentType val:
        :rtype: EventType
        """
        return cls('account_capture_notification_emails_sent', val)

    @classmethod
    def account_capture_relinquish_account(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_relinquish_account`` tag with value ``val``.

        :param AccountCaptureRelinquishAccountType val:
        :rtype: EventType
        """
        return cls('account_capture_relinquish_account', val)

    @classmethod
    def disabled_domain_invites(cls, val):
        """
        Create an instance of this class set to the ``disabled_domain_invites``
        tag with value ``val``.

        :param DisabledDomainInvitesType val:
        :rtype: EventType
        """
        return cls('disabled_domain_invites', val)

    @classmethod
    def domain_invites_approve_request_to_join_team(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_approve_request_to_join_team`` tag with value ``val``.

        :param DomainInvitesApproveRequestToJoinTeamType val:
        :rtype: EventType
        """
        return cls('domain_invites_approve_request_to_join_team', val)

    @classmethod
    def domain_invites_decline_request_to_join_team(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_decline_request_to_join_team`` tag with value ``val``.

        :param DomainInvitesDeclineRequestToJoinTeamType val:
        :rtype: EventType
        """
        return cls('domain_invites_decline_request_to_join_team', val)

    @classmethod
    def domain_invites_email_existing_users(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_email_existing_users`` tag with value ``val``.

        :param DomainInvitesEmailExistingUsersType val:
        :rtype: EventType
        """
        return cls('domain_invites_email_existing_users', val)

    @classmethod
    def domain_invites_request_to_join_team(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_request_to_join_team`` tag with value ``val``.

        :param DomainInvitesRequestToJoinTeamType val:
        :rtype: EventType
        """
        return cls('domain_invites_request_to_join_team', val)

    @classmethod
    def domain_invites_set_invite_new_user_pref_to_no(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_set_invite_new_user_pref_to_no`` tag with value
        ``val``.

        :param DomainInvitesSetInviteNewUserPrefToNoType val:
        :rtype: EventType
        """
        return cls('domain_invites_set_invite_new_user_pref_to_no', val)

    @classmethod
    def domain_invites_set_invite_new_user_pref_to_yes(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_set_invite_new_user_pref_to_yes`` tag with value
        ``val``.

        :param DomainInvitesSetInviteNewUserPrefToYesType val:
        :rtype: EventType
        """
        return cls('domain_invites_set_invite_new_user_pref_to_yes', val)

    @classmethod
    def domain_verification_add_domain_fail(cls, val):
        """
        Create an instance of this class set to the
        ``domain_verification_add_domain_fail`` tag with value ``val``.

        :param DomainVerificationAddDomainFailType val:
        :rtype: EventType
        """
        return cls('domain_verification_add_domain_fail', val)

    @classmethod
    def domain_verification_add_domain_success(cls, val):
        """
        Create an instance of this class set to the
        ``domain_verification_add_domain_success`` tag with value ``val``.

        :param DomainVerificationAddDomainSuccessType val:
        :rtype: EventType
        """
        return cls('domain_verification_add_domain_success', val)

    @classmethod
    def domain_verification_remove_domain(cls, val):
        """
        Create an instance of this class set to the
        ``domain_verification_remove_domain`` tag with value ``val``.

        :param DomainVerificationRemoveDomainType val:
        :rtype: EventType
        """
        return cls('domain_verification_remove_domain', val)

    @classmethod
    def enabled_domain_invites(cls, val):
        """
        Create an instance of this class set to the ``enabled_domain_invites``
        tag with value ``val``.

        :param EnabledDomainInvitesType val:
        :rtype: EventType
        """
        return cls('enabled_domain_invites', val)

    @classmethod
    def create_folder(cls, val):
        """
        Create an instance of this class set to the ``create_folder`` tag with
        value ``val``.

        :param CreateFolderType val:
        :rtype: EventType
        """
        return cls('create_folder', val)

    @classmethod
    def file_add(cls, val):
        """
        Create an instance of this class set to the ``file_add`` tag with value
        ``val``.

        :param FileAddType val:
        :rtype: EventType
        """
        return cls('file_add', val)

    @classmethod
    def file_copy(cls, val):
        """
        Create an instance of this class set to the ``file_copy`` tag with value
        ``val``.

        :param FileCopyType val:
        :rtype: EventType
        """
        return cls('file_copy', val)

    @classmethod
    def file_delete(cls, val):
        """
        Create an instance of this class set to the ``file_delete`` tag with
        value ``val``.

        :param FileDeleteType val:
        :rtype: EventType
        """
        return cls('file_delete', val)

    @classmethod
    def file_download(cls, val):
        """
        Create an instance of this class set to the ``file_download`` tag with
        value ``val``.

        :param FileDownloadType val:
        :rtype: EventType
        """
        return cls('file_download', val)

    @classmethod
    def file_edit(cls, val):
        """
        Create an instance of this class set to the ``file_edit`` tag with value
        ``val``.

        :param FileEditType val:
        :rtype: EventType
        """
        return cls('file_edit', val)

    @classmethod
    def file_get_copy_reference(cls, val):
        """
        Create an instance of this class set to the ``file_get_copy_reference``
        tag with value ``val``.

        :param FileGetCopyReferenceType val:
        :rtype: EventType
        """
        return cls('file_get_copy_reference', val)

    @classmethod
    def file_move(cls, val):
        """
        Create an instance of this class set to the ``file_move`` tag with value
        ``val``.

        :param FileMoveType val:
        :rtype: EventType
        """
        return cls('file_move', val)

    @classmethod
    def file_permanently_delete(cls, val):
        """
        Create an instance of this class set to the ``file_permanently_delete``
        tag with value ``val``.

        :param FilePermanentlyDeleteType val:
        :rtype: EventType
        """
        return cls('file_permanently_delete', val)

    @classmethod
    def file_preview(cls, val):
        """
        Create an instance of this class set to the ``file_preview`` tag with
        value ``val``.

        :param FilePreviewType val:
        :rtype: EventType
        """
        return cls('file_preview', val)

    @classmethod
    def file_rename(cls, val):
        """
        Create an instance of this class set to the ``file_rename`` tag with
        value ``val``.

        :param FileRenameType val:
        :rtype: EventType
        """
        return cls('file_rename', val)

    @classmethod
    def file_restore(cls, val):
        """
        Create an instance of this class set to the ``file_restore`` tag with
        value ``val``.

        :param FileRestoreType val:
        :rtype: EventType
        """
        return cls('file_restore', val)

    @classmethod
    def file_revert(cls, val):
        """
        Create an instance of this class set to the ``file_revert`` tag with
        value ``val``.

        :param FileRevertType val:
        :rtype: EventType
        """
        return cls('file_revert', val)

    @classmethod
    def file_rollback_changes(cls, val):
        """
        Create an instance of this class set to the ``file_rollback_changes``
        tag with value ``val``.

        :param FileRollbackChangesType val:
        :rtype: EventType
        """
        return cls('file_rollback_changes', val)

    @classmethod
    def file_save_copy_reference(cls, val):
        """
        Create an instance of this class set to the ``file_save_copy_reference``
        tag with value ``val``.

        :param FileSaveCopyReferenceType val:
        :rtype: EventType
        """
        return cls('file_save_copy_reference', val)

    @classmethod
    def file_request_change(cls, val):
        """
        Create an instance of this class set to the ``file_request_change`` tag
        with value ``val``.

        :param FileRequestChangeType val:
        :rtype: EventType
        """
        return cls('file_request_change', val)

    @classmethod
    def file_request_close(cls, val):
        """
        Create an instance of this class set to the ``file_request_close`` tag
        with value ``val``.

        :param FileRequestCloseType val:
        :rtype: EventType
        """
        return cls('file_request_close', val)

    @classmethod
    def file_request_create(cls, val):
        """
        Create an instance of this class set to the ``file_request_create`` tag
        with value ``val``.

        :param FileRequestCreateType val:
        :rtype: EventType
        """
        return cls('file_request_create', val)

    @classmethod
    def file_request_delete(cls, val):
        """
        Create an instance of this class set to the ``file_request_delete`` tag
        with value ``val``.

        :param FileRequestDeleteType val:
        :rtype: EventType
        """
        return cls('file_request_delete', val)

    @classmethod
    def file_request_receive_file(cls, val):
        """
        Create an instance of this class set to the
        ``file_request_receive_file`` tag with value ``val``.

        :param FileRequestReceiveFileType val:
        :rtype: EventType
        """
        return cls('file_request_receive_file', val)

    @classmethod
    def group_add_external_id(cls, val):
        """
        Create an instance of this class set to the ``group_add_external_id``
        tag with value ``val``.

        :param GroupAddExternalIdType val:
        :rtype: EventType
        """
        return cls('group_add_external_id', val)

    @classmethod
    def group_add_member(cls, val):
        """
        Create an instance of this class set to the ``group_add_member`` tag
        with value ``val``.

        :param GroupAddMemberType val:
        :rtype: EventType
        """
        return cls('group_add_member', val)

    @classmethod
    def group_change_external_id(cls, val):
        """
        Create an instance of this class set to the ``group_change_external_id``
        tag with value ``val``.

        :param GroupChangeExternalIdType val:
        :rtype: EventType
        """
        return cls('group_change_external_id', val)

    @classmethod
    def group_change_management_type(cls, val):
        """
        Create an instance of this class set to the
        ``group_change_management_type`` tag with value ``val``.

        :param GroupChangeManagementTypeType val:
        :rtype: EventType
        """
        return cls('group_change_management_type', val)

    @classmethod
    def group_change_member_role(cls, val):
        """
        Create an instance of this class set to the ``group_change_member_role``
        tag with value ``val``.

        :param GroupChangeMemberRoleType val:
        :rtype: EventType
        """
        return cls('group_change_member_role', val)

    @classmethod
    def group_create(cls, val):
        """
        Create an instance of this class set to the ``group_create`` tag with
        value ``val``.

        :param GroupCreateType val:
        :rtype: EventType
        """
        return cls('group_create', val)

    @classmethod
    def group_delete(cls, val):
        """
        Create an instance of this class set to the ``group_delete`` tag with
        value ``val``.

        :param GroupDeleteType val:
        :rtype: EventType
        """
        return cls('group_delete', val)

    @classmethod
    def group_description_updated(cls, val):
        """
        Create an instance of this class set to the
        ``group_description_updated`` tag with value ``val``.

        :param GroupDescriptionUpdatedType val:
        :rtype: EventType
        """
        return cls('group_description_updated', val)

    @classmethod
    def group_join_policy_updated(cls, val):
        """
        Create an instance of this class set to the
        ``group_join_policy_updated`` tag with value ``val``.

        :param GroupJoinPolicyUpdatedType val:
        :rtype: EventType
        """
        return cls('group_join_policy_updated', val)

    @classmethod
    def group_moved(cls, val):
        """
        Create an instance of this class set to the ``group_moved`` tag with
        value ``val``.

        :param GroupMovedType val:
        :rtype: EventType
        """
        return cls('group_moved', val)

    @classmethod
    def group_remove_external_id(cls, val):
        """
        Create an instance of this class set to the ``group_remove_external_id``
        tag with value ``val``.

        :param GroupRemoveExternalIdType val:
        :rtype: EventType
        """
        return cls('group_remove_external_id', val)

    @classmethod
    def group_remove_member(cls, val):
        """
        Create an instance of this class set to the ``group_remove_member`` tag
        with value ``val``.

        :param GroupRemoveMemberType val:
        :rtype: EventType
        """
        return cls('group_remove_member', val)

    @classmethod
    def group_rename(cls, val):
        """
        Create an instance of this class set to the ``group_rename`` tag with
        value ``val``.

        :param GroupRenameType val:
        :rtype: EventType
        """
        return cls('group_rename', val)

    @classmethod
    def emm_error(cls, val):
        """
        Create an instance of this class set to the ``emm_error`` tag with value
        ``val``.

        :param EmmErrorType val:
        :rtype: EventType
        """
        return cls('emm_error', val)

    @classmethod
    def guest_admin_signed_in_via_trusted_teams(cls, val):
        """
        Create an instance of this class set to the
        ``guest_admin_signed_in_via_trusted_teams`` tag with value ``val``.

        :param GuestAdminSignedInViaTrustedTeamsType val:
        :rtype: EventType
        """
        return cls('guest_admin_signed_in_via_trusted_teams', val)

    @classmethod
    def guest_admin_signed_out_via_trusted_teams(cls, val):
        """
        Create an instance of this class set to the
        ``guest_admin_signed_out_via_trusted_teams`` tag with value ``val``.

        :param GuestAdminSignedOutViaTrustedTeamsType val:
        :rtype: EventType
        """
        return cls('guest_admin_signed_out_via_trusted_teams', val)

    @classmethod
    def login_fail(cls, val):
        """
        Create an instance of this class set to the ``login_fail`` tag with
        value ``val``.

        :param LoginFailType val:
        :rtype: EventType
        """
        return cls('login_fail', val)

    @classmethod
    def login_success(cls, val):
        """
        Create an instance of this class set to the ``login_success`` tag with
        value ``val``.

        :param LoginSuccessType val:
        :rtype: EventType
        """
        return cls('login_success', val)

    @classmethod
    def logout(cls, val):
        """
        Create an instance of this class set to the ``logout`` tag with value
        ``val``.

        :param LogoutType val:
        :rtype: EventType
        """
        return cls('logout', val)

    @classmethod
    def reseller_support_session_end(cls, val):
        """
        Create an instance of this class set to the
        ``reseller_support_session_end`` tag with value ``val``.

        :param ResellerSupportSessionEndType val:
        :rtype: EventType
        """
        return cls('reseller_support_session_end', val)

    @classmethod
    def reseller_support_session_start(cls, val):
        """
        Create an instance of this class set to the
        ``reseller_support_session_start`` tag with value ``val``.

        :param ResellerSupportSessionStartType val:
        :rtype: EventType
        """
        return cls('reseller_support_session_start', val)

    @classmethod
    def sign_in_as_session_end(cls, val):
        """
        Create an instance of this class set to the ``sign_in_as_session_end``
        tag with value ``val``.

        :param SignInAsSessionEndType val:
        :rtype: EventType
        """
        return cls('sign_in_as_session_end', val)

    @classmethod
    def sign_in_as_session_start(cls, val):
        """
        Create an instance of this class set to the ``sign_in_as_session_start``
        tag with value ``val``.

        :param SignInAsSessionStartType val:
        :rtype: EventType
        """
        return cls('sign_in_as_session_start', val)

    @classmethod
    def sso_error(cls, val):
        """
        Create an instance of this class set to the ``sso_error`` tag with value
        ``val``.

        :param SsoErrorType val:
        :rtype: EventType
        """
        return cls('sso_error', val)

    @classmethod
    def member_add_external_id(cls, val):
        """
        Create an instance of this class set to the ``member_add_external_id``
        tag with value ``val``.

        :param MemberAddExternalIdType val:
        :rtype: EventType
        """
        return cls('member_add_external_id', val)

    @classmethod
    def member_add_name(cls, val):
        """
        Create an instance of this class set to the ``member_add_name`` tag with
        value ``val``.

        :param MemberAddNameType val:
        :rtype: EventType
        """
        return cls('member_add_name', val)

    @classmethod
    def member_change_admin_role(cls, val):
        """
        Create an instance of this class set to the ``member_change_admin_role``
        tag with value ``val``.

        :param MemberChangeAdminRoleType val:
        :rtype: EventType
        """
        return cls('member_change_admin_role', val)

    @classmethod
    def member_change_email(cls, val):
        """
        Create an instance of this class set to the ``member_change_email`` tag
        with value ``val``.

        :param MemberChangeEmailType val:
        :rtype: EventType
        """
        return cls('member_change_email', val)

    @classmethod
    def member_change_external_id(cls, val):
        """
        Create an instance of this class set to the
        ``member_change_external_id`` tag with value ``val``.

        :param MemberChangeExternalIdType val:
        :rtype: EventType
        """
        return cls('member_change_external_id', val)

    @classmethod
    def member_change_membership_type(cls, val):
        """
        Create an instance of this class set to the
        ``member_change_membership_type`` tag with value ``val``.

        :param MemberChangeMembershipTypeType val:
        :rtype: EventType
        """
        return cls('member_change_membership_type', val)

    @classmethod
    def member_change_name(cls, val):
        """
        Create an instance of this class set to the ``member_change_name`` tag
        with value ``val``.

        :param MemberChangeNameType val:
        :rtype: EventType
        """
        return cls('member_change_name', val)

    @classmethod
    def member_change_status(cls, val):
        """
        Create an instance of this class set to the ``member_change_status`` tag
        with value ``val``.

        :param MemberChangeStatusType val:
        :rtype: EventType
        """
        return cls('member_change_status', val)

    @classmethod
    def member_delete_manual_contacts(cls, val):
        """
        Create an instance of this class set to the
        ``member_delete_manual_contacts`` tag with value ``val``.

        :param MemberDeleteManualContactsType val:
        :rtype: EventType
        """
        return cls('member_delete_manual_contacts', val)

    @classmethod
    def member_permanently_delete_account_contents(cls, val):
        """
        Create an instance of this class set to the
        ``member_permanently_delete_account_contents`` tag with value ``val``.

        :param MemberPermanentlyDeleteAccountContentsType val:
        :rtype: EventType
        """
        return cls('member_permanently_delete_account_contents', val)

    @classmethod
    def member_remove_external_id(cls, val):
        """
        Create an instance of this class set to the
        ``member_remove_external_id`` tag with value ``val``.

        :param MemberRemoveExternalIdType val:
        :rtype: EventType
        """
        return cls('member_remove_external_id', val)

    @classmethod
    def member_space_limits_add_custom_quota(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_add_custom_quota`` tag with value ``val``.

        :param MemberSpaceLimitsAddCustomQuotaType val:
        :rtype: EventType
        """
        return cls('member_space_limits_add_custom_quota', val)

    @classmethod
    def member_space_limits_change_custom_quota(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_custom_quota`` tag with value ``val``.

        :param MemberSpaceLimitsChangeCustomQuotaType val:
        :rtype: EventType
        """
        return cls('member_space_limits_change_custom_quota', val)

    @classmethod
    def member_space_limits_change_status(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_status`` tag with value ``val``.

        :param MemberSpaceLimitsChangeStatusType val:
        :rtype: EventType
        """
        return cls('member_space_limits_change_status', val)

    @classmethod
    def member_space_limits_remove_custom_quota(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_remove_custom_quota`` tag with value ``val``.

        :param MemberSpaceLimitsRemoveCustomQuotaType val:
        :rtype: EventType
        """
        return cls('member_space_limits_remove_custom_quota', val)

    @classmethod
    def member_suggest(cls, val):
        """
        Create an instance of this class set to the ``member_suggest`` tag with
        value ``val``.

        :param MemberSuggestType val:
        :rtype: EventType
        """
        return cls('member_suggest', val)

    @classmethod
    def member_transfer_account_contents(cls, val):
        """
        Create an instance of this class set to the
        ``member_transfer_account_contents`` tag with value ``val``.

        :param MemberTransferAccountContentsType val:
        :rtype: EventType
        """
        return cls('member_transfer_account_contents', val)

    @classmethod
    def secondary_mails_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``secondary_mails_policy_changed`` tag with value ``val``.

        :param SecondaryMailsPolicyChangedType val:
        :rtype: EventType
        """
        return cls('secondary_mails_policy_changed', val)

    @classmethod
    def paper_content_add_member(cls, val):
        """
        Create an instance of this class set to the ``paper_content_add_member``
        tag with value ``val``.

        :param PaperContentAddMemberType val:
        :rtype: EventType
        """
        return cls('paper_content_add_member', val)

    @classmethod
    def paper_content_add_to_folder(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_add_to_folder`` tag with value ``val``.

        :param PaperContentAddToFolderType val:
        :rtype: EventType
        """
        return cls('paper_content_add_to_folder', val)

    @classmethod
    def paper_content_archive(cls, val):
        """
        Create an instance of this class set to the ``paper_content_archive``
        tag with value ``val``.

        :param PaperContentArchiveType val:
        :rtype: EventType
        """
        return cls('paper_content_archive', val)

    @classmethod
    def paper_content_create(cls, val):
        """
        Create an instance of this class set to the ``paper_content_create`` tag
        with value ``val``.

        :param PaperContentCreateType val:
        :rtype: EventType
        """
        return cls('paper_content_create', val)

    @classmethod
    def paper_content_permanently_delete(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_permanently_delete`` tag with value ``val``.

        :param PaperContentPermanentlyDeleteType val:
        :rtype: EventType
        """
        return cls('paper_content_permanently_delete', val)

    @classmethod
    def paper_content_remove_from_folder(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_remove_from_folder`` tag with value ``val``.

        :param PaperContentRemoveFromFolderType val:
        :rtype: EventType
        """
        return cls('paper_content_remove_from_folder', val)

    @classmethod
    def paper_content_remove_member(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_remove_member`` tag with value ``val``.

        :param PaperContentRemoveMemberType val:
        :rtype: EventType
        """
        return cls('paper_content_remove_member', val)

    @classmethod
    def paper_content_rename(cls, val):
        """
        Create an instance of this class set to the ``paper_content_rename`` tag
        with value ``val``.

        :param PaperContentRenameType val:
        :rtype: EventType
        """
        return cls('paper_content_rename', val)

    @classmethod
    def paper_content_restore(cls, val):
        """
        Create an instance of this class set to the ``paper_content_restore``
        tag with value ``val``.

        :param PaperContentRestoreType val:
        :rtype: EventType
        """
        return cls('paper_content_restore', val)

    @classmethod
    def paper_doc_add_comment(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_add_comment``
        tag with value ``val``.

        :param PaperDocAddCommentType val:
        :rtype: EventType
        """
        return cls('paper_doc_add_comment', val)

    @classmethod
    def paper_doc_change_member_role(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_change_member_role`` tag with value ``val``.

        :param PaperDocChangeMemberRoleType val:
        :rtype: EventType
        """
        return cls('paper_doc_change_member_role', val)

    @classmethod
    def paper_doc_change_sharing_policy(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_change_sharing_policy`` tag with value ``val``.

        :param PaperDocChangeSharingPolicyType val:
        :rtype: EventType
        """
        return cls('paper_doc_change_sharing_policy', val)

    @classmethod
    def paper_doc_change_subscription(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_change_subscription`` tag with value ``val``.

        :param PaperDocChangeSubscriptionType val:
        :rtype: EventType
        """
        return cls('paper_doc_change_subscription', val)

    @classmethod
    def paper_doc_deleted(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_deleted`` tag
        with value ``val``.

        :param PaperDocDeletedType val:
        :rtype: EventType
        """
        return cls('paper_doc_deleted', val)

    @classmethod
    def paper_doc_delete_comment(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_delete_comment``
        tag with value ``val``.

        :param PaperDocDeleteCommentType val:
        :rtype: EventType
        """
        return cls('paper_doc_delete_comment', val)

    @classmethod
    def paper_doc_download(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_download`` tag
        with value ``val``.

        :param PaperDocDownloadType val:
        :rtype: EventType
        """
        return cls('paper_doc_download', val)

    @classmethod
    def paper_doc_edit(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_edit`` tag with
        value ``val``.

        :param PaperDocEditType val:
        :rtype: EventType
        """
        return cls('paper_doc_edit', val)

    @classmethod
    def paper_doc_edit_comment(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_edit_comment``
        tag with value ``val``.

        :param PaperDocEditCommentType val:
        :rtype: EventType
        """
        return cls('paper_doc_edit_comment', val)

    @classmethod
    def paper_doc_followed(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_followed`` tag
        with value ``val``.

        :param PaperDocFollowedType val:
        :rtype: EventType
        """
        return cls('paper_doc_followed', val)

    @classmethod
    def paper_doc_mention(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_mention`` tag
        with value ``val``.

        :param PaperDocMentionType val:
        :rtype: EventType
        """
        return cls('paper_doc_mention', val)

    @classmethod
    def paper_doc_ownership_changed(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_ownership_changed`` tag with value ``val``.

        :param PaperDocOwnershipChangedType val:
        :rtype: EventType
        """
        return cls('paper_doc_ownership_changed', val)

    @classmethod
    def paper_doc_request_access(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_request_access``
        tag with value ``val``.

        :param PaperDocRequestAccessType val:
        :rtype: EventType
        """
        return cls('paper_doc_request_access', val)

    @classmethod
    def paper_doc_resolve_comment(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_resolve_comment`` tag with value ``val``.

        :param PaperDocResolveCommentType val:
        :rtype: EventType
        """
        return cls('paper_doc_resolve_comment', val)

    @classmethod
    def paper_doc_revert(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_revert`` tag
        with value ``val``.

        :param PaperDocRevertType val:
        :rtype: EventType
        """
        return cls('paper_doc_revert', val)

    @classmethod
    def paper_doc_slack_share(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_slack_share``
        tag with value ``val``.

        :param PaperDocSlackShareType val:
        :rtype: EventType
        """
        return cls('paper_doc_slack_share', val)

    @classmethod
    def paper_doc_team_invite(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_team_invite``
        tag with value ``val``.

        :param PaperDocTeamInviteType val:
        :rtype: EventType
        """
        return cls('paper_doc_team_invite', val)

    @classmethod
    def paper_doc_trashed(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_trashed`` tag
        with value ``val``.

        :param PaperDocTrashedType val:
        :rtype: EventType
        """
        return cls('paper_doc_trashed', val)

    @classmethod
    def paper_doc_unresolve_comment(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_unresolve_comment`` tag with value ``val``.

        :param PaperDocUnresolveCommentType val:
        :rtype: EventType
        """
        return cls('paper_doc_unresolve_comment', val)

    @classmethod
    def paper_doc_untrashed(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_untrashed`` tag
        with value ``val``.

        :param PaperDocUntrashedType val:
        :rtype: EventType
        """
        return cls('paper_doc_untrashed', val)

    @classmethod
    def paper_doc_view(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_view`` tag with
        value ``val``.

        :param PaperDocViewType val:
        :rtype: EventType
        """
        return cls('paper_doc_view', val)

    @classmethod
    def paper_external_view_allow(cls, val):
        """
        Create an instance of this class set to the
        ``paper_external_view_allow`` tag with value ``val``.

        :param PaperExternalViewAllowType val:
        :rtype: EventType
        """
        return cls('paper_external_view_allow', val)

    @classmethod
    def paper_external_view_default_team(cls, val):
        """
        Create an instance of this class set to the
        ``paper_external_view_default_team`` tag with value ``val``.

        :param PaperExternalViewDefaultTeamType val:
        :rtype: EventType
        """
        return cls('paper_external_view_default_team', val)

    @classmethod
    def paper_external_view_forbid(cls, val):
        """
        Create an instance of this class set to the
        ``paper_external_view_forbid`` tag with value ``val``.

        :param PaperExternalViewForbidType val:
        :rtype: EventType
        """
        return cls('paper_external_view_forbid', val)

    @classmethod
    def paper_folder_change_subscription(cls, val):
        """
        Create an instance of this class set to the
        ``paper_folder_change_subscription`` tag with value ``val``.

        :param PaperFolderChangeSubscriptionType val:
        :rtype: EventType
        """
        return cls('paper_folder_change_subscription', val)

    @classmethod
    def paper_folder_deleted(cls, val):
        """
        Create an instance of this class set to the ``paper_folder_deleted`` tag
        with value ``val``.

        :param PaperFolderDeletedType val:
        :rtype: EventType
        """
        return cls('paper_folder_deleted', val)

    @classmethod
    def paper_folder_followed(cls, val):
        """
        Create an instance of this class set to the ``paper_folder_followed``
        tag with value ``val``.

        :param PaperFolderFollowedType val:
        :rtype: EventType
        """
        return cls('paper_folder_followed', val)

    @classmethod
    def paper_folder_team_invite(cls, val):
        """
        Create an instance of this class set to the ``paper_folder_team_invite``
        tag with value ``val``.

        :param PaperFolderTeamInviteType val:
        :rtype: EventType
        """
        return cls('paper_folder_team_invite', val)

    @classmethod
    def paper_published_link_create(cls, val):
        """
        Create an instance of this class set to the
        ``paper_published_link_create`` tag with value ``val``.

        :param PaperPublishedLinkCreateType val:
        :rtype: EventType
        """
        return cls('paper_published_link_create', val)

    @classmethod
    def paper_published_link_disabled(cls, val):
        """
        Create an instance of this class set to the
        ``paper_published_link_disabled`` tag with value ``val``.

        :param PaperPublishedLinkDisabledType val:
        :rtype: EventType
        """
        return cls('paper_published_link_disabled', val)

    @classmethod
    def paper_published_link_view(cls, val):
        """
        Create an instance of this class set to the
        ``paper_published_link_view`` tag with value ``val``.

        :param PaperPublishedLinkViewType val:
        :rtype: EventType
        """
        return cls('paper_published_link_view', val)

    @classmethod
    def password_change(cls, val):
        """
        Create an instance of this class set to the ``password_change`` tag with
        value ``val``.

        :param PasswordChangeType val:
        :rtype: EventType
        """
        return cls('password_change', val)

    @classmethod
    def password_reset(cls, val):
        """
        Create an instance of this class set to the ``password_reset`` tag with
        value ``val``.

        :param PasswordResetType val:
        :rtype: EventType
        """
        return cls('password_reset', val)

    @classmethod
    def password_reset_all(cls, val):
        """
        Create an instance of this class set to the ``password_reset_all`` tag
        with value ``val``.

        :param PasswordResetAllType val:
        :rtype: EventType
        """
        return cls('password_reset_all', val)

    @classmethod
    def emm_create_exceptions_report(cls, val):
        """
        Create an instance of this class set to the
        ``emm_create_exceptions_report`` tag with value ``val``.

        :param EmmCreateExceptionsReportType val:
        :rtype: EventType
        """
        return cls('emm_create_exceptions_report', val)

    @classmethod
    def emm_create_usage_report(cls, val):
        """
        Create an instance of this class set to the ``emm_create_usage_report``
        tag with value ``val``.

        :param EmmCreateUsageReportType val:
        :rtype: EventType
        """
        return cls('emm_create_usage_report', val)

    @classmethod
    def export_members_report(cls, val):
        """
        Create an instance of this class set to the ``export_members_report``
        tag with value ``val``.

        :param ExportMembersReportType val:
        :rtype: EventType
        """
        return cls('export_members_report', val)

    @classmethod
    def paper_admin_export_start(cls, val):
        """
        Create an instance of this class set to the ``paper_admin_export_start``
        tag with value ``val``.

        :param PaperAdminExportStartType val:
        :rtype: EventType
        """
        return cls('paper_admin_export_start', val)

    @classmethod
    def smart_sync_create_admin_privilege_report(cls, val):
        """
        Create an instance of this class set to the
        ``smart_sync_create_admin_privilege_report`` tag with value ``val``.

        :param SmartSyncCreateAdminPrivilegeReportType val:
        :rtype: EventType
        """
        return cls('smart_sync_create_admin_privilege_report', val)

    @classmethod
    def team_activity_create_report(cls, val):
        """
        Create an instance of this class set to the
        ``team_activity_create_report`` tag with value ``val``.

        :param TeamActivityCreateReportType val:
        :rtype: EventType
        """
        return cls('team_activity_create_report', val)

    @classmethod
    def team_activity_create_report_fail(cls, val):
        """
        Create an instance of this class set to the
        ``team_activity_create_report_fail`` tag with value ``val``.

        :param TeamActivityCreateReportFailType val:
        :rtype: EventType
        """
        return cls('team_activity_create_report_fail', val)

    @classmethod
    def collection_share(cls, val):
        """
        Create an instance of this class set to the ``collection_share`` tag
        with value ``val``.

        :param CollectionShareType val:
        :rtype: EventType
        """
        return cls('collection_share', val)

    @classmethod
    def note_acl_invite_only(cls, val):
        """
        Create an instance of this class set to the ``note_acl_invite_only`` tag
        with value ``val``.

        :param NoteAclInviteOnlyType val:
        :rtype: EventType
        """
        return cls('note_acl_invite_only', val)

    @classmethod
    def note_acl_link(cls, val):
        """
        Create an instance of this class set to the ``note_acl_link`` tag with
        value ``val``.

        :param NoteAclLinkType val:
        :rtype: EventType
        """
        return cls('note_acl_link', val)

    @classmethod
    def note_acl_team_link(cls, val):
        """
        Create an instance of this class set to the ``note_acl_team_link`` tag
        with value ``val``.

        :param NoteAclTeamLinkType val:
        :rtype: EventType
        """
        return cls('note_acl_team_link', val)

    @classmethod
    def note_shared(cls, val):
        """
        Create an instance of this class set to the ``note_shared`` tag with
        value ``val``.

        :param NoteSharedType val:
        :rtype: EventType
        """
        return cls('note_shared', val)

    @classmethod
    def note_share_receive(cls, val):
        """
        Create an instance of this class set to the ``note_share_receive`` tag
        with value ``val``.

        :param NoteShareReceiveType val:
        :rtype: EventType
        """
        return cls('note_share_receive', val)

    @classmethod
    def open_note_shared(cls, val):
        """
        Create an instance of this class set to the ``open_note_shared`` tag
        with value ``val``.

        :param OpenNoteSharedType val:
        :rtype: EventType
        """
        return cls('open_note_shared', val)

    @classmethod
    def sf_add_group(cls, val):
        """
        Create an instance of this class set to the ``sf_add_group`` tag with
        value ``val``.

        :param SfAddGroupType val:
        :rtype: EventType
        """
        return cls('sf_add_group', val)

    @classmethod
    def sf_allow_non_members_to_view_shared_links(cls, val):
        """
        Create an instance of this class set to the
        ``sf_allow_non_members_to_view_shared_links`` tag with value ``val``.

        :param SfAllowNonMembersToViewSharedLinksType val:
        :rtype: EventType
        """
        return cls('sf_allow_non_members_to_view_shared_links', val)

    @classmethod
    def sf_external_invite_warn(cls, val):
        """
        Create an instance of this class set to the ``sf_external_invite_warn``
        tag with value ``val``.

        :param SfExternalInviteWarnType val:
        :rtype: EventType
        """
        return cls('sf_external_invite_warn', val)

    @classmethod
    def sf_fb_invite(cls, val):
        """
        Create an instance of this class set to the ``sf_fb_invite`` tag with
        value ``val``.

        :param SfFbInviteType val:
        :rtype: EventType
        """
        return cls('sf_fb_invite', val)

    @classmethod
    def sf_fb_invite_change_role(cls, val):
        """
        Create an instance of this class set to the ``sf_fb_invite_change_role``
        tag with value ``val``.

        :param SfFbInviteChangeRoleType val:
        :rtype: EventType
        """
        return cls('sf_fb_invite_change_role', val)

    @classmethod
    def sf_fb_uninvite(cls, val):
        """
        Create an instance of this class set to the ``sf_fb_uninvite`` tag with
        value ``val``.

        :param SfFbUninviteType val:
        :rtype: EventType
        """
        return cls('sf_fb_uninvite', val)

    @classmethod
    def sf_invite_group(cls, val):
        """
        Create an instance of this class set to the ``sf_invite_group`` tag with
        value ``val``.

        :param SfInviteGroupType val:
        :rtype: EventType
        """
        return cls('sf_invite_group', val)

    @classmethod
    def sf_team_grant_access(cls, val):
        """
        Create an instance of this class set to the ``sf_team_grant_access`` tag
        with value ``val``.

        :param SfTeamGrantAccessType val:
        :rtype: EventType
        """
        return cls('sf_team_grant_access', val)

    @classmethod
    def sf_team_invite(cls, val):
        """
        Create an instance of this class set to the ``sf_team_invite`` tag with
        value ``val``.

        :param SfTeamInviteType val:
        :rtype: EventType
        """
        return cls('sf_team_invite', val)

    @classmethod
    def sf_team_invite_change_role(cls, val):
        """
        Create an instance of this class set to the
        ``sf_team_invite_change_role`` tag with value ``val``.

        :param SfTeamInviteChangeRoleType val:
        :rtype: EventType
        """
        return cls('sf_team_invite_change_role', val)

    @classmethod
    def sf_team_join(cls, val):
        """
        Create an instance of this class set to the ``sf_team_join`` tag with
        value ``val``.

        :param SfTeamJoinType val:
        :rtype: EventType
        """
        return cls('sf_team_join', val)

    @classmethod
    def sf_team_join_from_oob_link(cls, val):
        """
        Create an instance of this class set to the
        ``sf_team_join_from_oob_link`` tag with value ``val``.

        :param SfTeamJoinFromOobLinkType val:
        :rtype: EventType
        """
        return cls('sf_team_join_from_oob_link', val)

    @classmethod
    def sf_team_uninvite(cls, val):
        """
        Create an instance of this class set to the ``sf_team_uninvite`` tag
        with value ``val``.

        :param SfTeamUninviteType val:
        :rtype: EventType
        """
        return cls('sf_team_uninvite', val)

    @classmethod
    def shared_content_add_invitees(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_invitees`` tag with value ``val``.

        :param SharedContentAddInviteesType val:
        :rtype: EventType
        """
        return cls('shared_content_add_invitees', val)

    @classmethod
    def shared_content_add_link_expiry(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_link_expiry`` tag with value ``val``.

        :param SharedContentAddLinkExpiryType val:
        :rtype: EventType
        """
        return cls('shared_content_add_link_expiry', val)

    @classmethod
    def shared_content_add_link_password(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_link_password`` tag with value ``val``.

        :param SharedContentAddLinkPasswordType val:
        :rtype: EventType
        """
        return cls('shared_content_add_link_password', val)

    @classmethod
    def shared_content_add_member(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_member`` tag with value ``val``.

        :param SharedContentAddMemberType val:
        :rtype: EventType
        """
        return cls('shared_content_add_member', val)

    @classmethod
    def shared_content_change_downloads_policy(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_downloads_policy`` tag with value ``val``.

        :param SharedContentChangeDownloadsPolicyType val:
        :rtype: EventType
        """
        return cls('shared_content_change_downloads_policy', val)

    @classmethod
    def shared_content_change_invitee_role(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_invitee_role`` tag with value ``val``.

        :param SharedContentChangeInviteeRoleType val:
        :rtype: EventType
        """
        return cls('shared_content_change_invitee_role', val)

    @classmethod
    def shared_content_change_link_audience(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_link_audience`` tag with value ``val``.

        :param SharedContentChangeLinkAudienceType val:
        :rtype: EventType
        """
        return cls('shared_content_change_link_audience', val)

    @classmethod
    def shared_content_change_link_expiry(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_link_expiry`` tag with value ``val``.

        :param SharedContentChangeLinkExpiryType val:
        :rtype: EventType
        """
        return cls('shared_content_change_link_expiry', val)

    @classmethod
    def shared_content_change_link_password(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_link_password`` tag with value ``val``.

        :param SharedContentChangeLinkPasswordType val:
        :rtype: EventType
        """
        return cls('shared_content_change_link_password', val)

    @classmethod
    def shared_content_change_member_role(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_member_role`` tag with value ``val``.

        :param SharedContentChangeMemberRoleType val:
        :rtype: EventType
        """
        return cls('shared_content_change_member_role', val)

    @classmethod
    def shared_content_change_viewer_info_policy(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_viewer_info_policy`` tag with value ``val``.

        :param SharedContentChangeViewerInfoPolicyType val:
        :rtype: EventType
        """
        return cls('shared_content_change_viewer_info_policy', val)

    @classmethod
    def shared_content_claim_invitation(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_claim_invitation`` tag with value ``val``.

        :param SharedContentClaimInvitationType val:
        :rtype: EventType
        """
        return cls('shared_content_claim_invitation', val)

    @classmethod
    def shared_content_copy(cls, val):
        """
        Create an instance of this class set to the ``shared_content_copy`` tag
        with value ``val``.

        :param SharedContentCopyType val:
        :rtype: EventType
        """
        return cls('shared_content_copy', val)

    @classmethod
    def shared_content_download(cls, val):
        """
        Create an instance of this class set to the ``shared_content_download``
        tag with value ``val``.

        :param SharedContentDownloadType val:
        :rtype: EventType
        """
        return cls('shared_content_download', val)

    @classmethod
    def shared_content_relinquish_membership(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_relinquish_membership`` tag with value ``val``.

        :param SharedContentRelinquishMembershipType val:
        :rtype: EventType
        """
        return cls('shared_content_relinquish_membership', val)

    @classmethod
    def shared_content_remove_invitees(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_invitees`` tag with value ``val``.

        :param SharedContentRemoveInviteesType val:
        :rtype: EventType
        """
        return cls('shared_content_remove_invitees', val)

    @classmethod
    def shared_content_remove_link_expiry(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_link_expiry`` tag with value ``val``.

        :param SharedContentRemoveLinkExpiryType val:
        :rtype: EventType
        """
        return cls('shared_content_remove_link_expiry', val)

    @classmethod
    def shared_content_remove_link_password(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_link_password`` tag with value ``val``.

        :param SharedContentRemoveLinkPasswordType val:
        :rtype: EventType
        """
        return cls('shared_content_remove_link_password', val)

    @classmethod
    def shared_content_remove_member(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_member`` tag with value ``val``.

        :param SharedContentRemoveMemberType val:
        :rtype: EventType
        """
        return cls('shared_content_remove_member', val)

    @classmethod
    def shared_content_request_access(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_request_access`` tag with value ``val``.

        :param SharedContentRequestAccessType val:
        :rtype: EventType
        """
        return cls('shared_content_request_access', val)

    @classmethod
    def shared_content_unshare(cls, val):
        """
        Create an instance of this class set to the ``shared_content_unshare``
        tag with value ``val``.

        :param SharedContentUnshareType val:
        :rtype: EventType
        """
        return cls('shared_content_unshare', val)

    @classmethod
    def shared_content_view(cls, val):
        """
        Create an instance of this class set to the ``shared_content_view`` tag
        with value ``val``.

        :param SharedContentViewType val:
        :rtype: EventType
        """
        return cls('shared_content_view', val)

    @classmethod
    def shared_folder_change_link_policy(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_link_policy`` tag with value ``val``.

        :param SharedFolderChangeLinkPolicyType val:
        :rtype: EventType
        """
        return cls('shared_folder_change_link_policy', val)

    @classmethod
    def shared_folder_change_members_inheritance_policy(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_members_inheritance_policy`` tag with value
        ``val``.

        :param SharedFolderChangeMembersInheritancePolicyType val:
        :rtype: EventType
        """
        return cls('shared_folder_change_members_inheritance_policy', val)

    @classmethod
    def shared_folder_change_members_management_policy(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_members_management_policy`` tag with value
        ``val``.

        :param SharedFolderChangeMembersManagementPolicyType val:
        :rtype: EventType
        """
        return cls('shared_folder_change_members_management_policy', val)

    @classmethod
    def shared_folder_change_members_policy(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_members_policy`` tag with value ``val``.

        :param SharedFolderChangeMembersPolicyType val:
        :rtype: EventType
        """
        return cls('shared_folder_change_members_policy', val)

    @classmethod
    def shared_folder_create(cls, val):
        """
        Create an instance of this class set to the ``shared_folder_create`` tag
        with value ``val``.

        :param SharedFolderCreateType val:
        :rtype: EventType
        """
        return cls('shared_folder_create', val)

    @classmethod
    def shared_folder_decline_invitation(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_decline_invitation`` tag with value ``val``.

        :param SharedFolderDeclineInvitationType val:
        :rtype: EventType
        """
        return cls('shared_folder_decline_invitation', val)

    @classmethod
    def shared_folder_mount(cls, val):
        """
        Create an instance of this class set to the ``shared_folder_mount`` tag
        with value ``val``.

        :param SharedFolderMountType val:
        :rtype: EventType
        """
        return cls('shared_folder_mount', val)

    @classmethod
    def shared_folder_nest(cls, val):
        """
        Create an instance of this class set to the ``shared_folder_nest`` tag
        with value ``val``.

        :param SharedFolderNestType val:
        :rtype: EventType
        """
        return cls('shared_folder_nest', val)

    @classmethod
    def shared_folder_transfer_ownership(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_transfer_ownership`` tag with value ``val``.

        :param SharedFolderTransferOwnershipType val:
        :rtype: EventType
        """
        return cls('shared_folder_transfer_ownership', val)

    @classmethod
    def shared_folder_unmount(cls, val):
        """
        Create an instance of this class set to the ``shared_folder_unmount``
        tag with value ``val``.

        :param SharedFolderUnmountType val:
        :rtype: EventType
        """
        return cls('shared_folder_unmount', val)

    @classmethod
    def shared_link_add_expiry(cls, val):
        """
        Create an instance of this class set to the ``shared_link_add_expiry``
        tag with value ``val``.

        :param SharedLinkAddExpiryType val:
        :rtype: EventType
        """
        return cls('shared_link_add_expiry', val)

    @classmethod
    def shared_link_change_expiry(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_change_expiry`` tag with value ``val``.

        :param SharedLinkChangeExpiryType val:
        :rtype: EventType
        """
        return cls('shared_link_change_expiry', val)

    @classmethod
    def shared_link_change_visibility(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_change_visibility`` tag with value ``val``.

        :param SharedLinkChangeVisibilityType val:
        :rtype: EventType
        """
        return cls('shared_link_change_visibility', val)

    @classmethod
    def shared_link_copy(cls, val):
        """
        Create an instance of this class set to the ``shared_link_copy`` tag
        with value ``val``.

        :param SharedLinkCopyType val:
        :rtype: EventType
        """
        return cls('shared_link_copy', val)

    @classmethod
    def shared_link_create(cls, val):
        """
        Create an instance of this class set to the ``shared_link_create`` tag
        with value ``val``.

        :param SharedLinkCreateType val:
        :rtype: EventType
        """
        return cls('shared_link_create', val)

    @classmethod
    def shared_link_disable(cls, val):
        """
        Create an instance of this class set to the ``shared_link_disable`` tag
        with value ``val``.

        :param SharedLinkDisableType val:
        :rtype: EventType
        """
        return cls('shared_link_disable', val)

    @classmethod
    def shared_link_download(cls, val):
        """
        Create an instance of this class set to the ``shared_link_download`` tag
        with value ``val``.

        :param SharedLinkDownloadType val:
        :rtype: EventType
        """
        return cls('shared_link_download', val)

    @classmethod
    def shared_link_remove_expiry(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_remove_expiry`` tag with value ``val``.

        :param SharedLinkRemoveExpiryType val:
        :rtype: EventType
        """
        return cls('shared_link_remove_expiry', val)

    @classmethod
    def shared_link_share(cls, val):
        """
        Create an instance of this class set to the ``shared_link_share`` tag
        with value ``val``.

        :param SharedLinkShareType val:
        :rtype: EventType
        """
        return cls('shared_link_share', val)

    @classmethod
    def shared_link_view(cls, val):
        """
        Create an instance of this class set to the ``shared_link_view`` tag
        with value ``val``.

        :param SharedLinkViewType val:
        :rtype: EventType
        """
        return cls('shared_link_view', val)

    @classmethod
    def shared_note_opened(cls, val):
        """
        Create an instance of this class set to the ``shared_note_opened`` tag
        with value ``val``.

        :param SharedNoteOpenedType val:
        :rtype: EventType
        """
        return cls('shared_note_opened', val)

    @classmethod
    def shmodel_group_share(cls, val):
        """
        Create an instance of this class set to the ``shmodel_group_share`` tag
        with value ``val``.

        :param ShmodelGroupShareType val:
        :rtype: EventType
        """
        return cls('shmodel_group_share', val)

    @classmethod
    def showcase_access_granted(cls, val):
        """
        Create an instance of this class set to the ``showcase_access_granted``
        tag with value ``val``.

        :param ShowcaseAccessGrantedType val:
        :rtype: EventType
        """
        return cls('showcase_access_granted', val)

    @classmethod
    def showcase_add_member(cls, val):
        """
        Create an instance of this class set to the ``showcase_add_member`` tag
        with value ``val``.

        :param ShowcaseAddMemberType val:
        :rtype: EventType
        """
        return cls('showcase_add_member', val)

    @classmethod
    def showcase_archived(cls, val):
        """
        Create an instance of this class set to the ``showcase_archived`` tag
        with value ``val``.

        :param ShowcaseArchivedType val:
        :rtype: EventType
        """
        return cls('showcase_archived', val)

    @classmethod
    def showcase_created(cls, val):
        """
        Create an instance of this class set to the ``showcase_created`` tag
        with value ``val``.

        :param ShowcaseCreatedType val:
        :rtype: EventType
        """
        return cls('showcase_created', val)

    @classmethod
    def showcase_delete_comment(cls, val):
        """
        Create an instance of this class set to the ``showcase_delete_comment``
        tag with value ``val``.

        :param ShowcaseDeleteCommentType val:
        :rtype: EventType
        """
        return cls('showcase_delete_comment', val)

    @classmethod
    def showcase_edited(cls, val):
        """
        Create an instance of this class set to the ``showcase_edited`` tag with
        value ``val``.

        :param ShowcaseEditedType val:
        :rtype: EventType
        """
        return cls('showcase_edited', val)

    @classmethod
    def showcase_edit_comment(cls, val):
        """
        Create an instance of this class set to the ``showcase_edit_comment``
        tag with value ``val``.

        :param ShowcaseEditCommentType val:
        :rtype: EventType
        """
        return cls('showcase_edit_comment', val)

    @classmethod
    def showcase_file_added(cls, val):
        """
        Create an instance of this class set to the ``showcase_file_added`` tag
        with value ``val``.

        :param ShowcaseFileAddedType val:
        :rtype: EventType
        """
        return cls('showcase_file_added', val)

    @classmethod
    def showcase_file_download(cls, val):
        """
        Create an instance of this class set to the ``showcase_file_download``
        tag with value ``val``.

        :param ShowcaseFileDownloadType val:
        :rtype: EventType
        """
        return cls('showcase_file_download', val)

    @classmethod
    def showcase_file_removed(cls, val):
        """
        Create an instance of this class set to the ``showcase_file_removed``
        tag with value ``val``.

        :param ShowcaseFileRemovedType val:
        :rtype: EventType
        """
        return cls('showcase_file_removed', val)

    @classmethod
    def showcase_file_view(cls, val):
        """
        Create an instance of this class set to the ``showcase_file_view`` tag
        with value ``val``.

        :param ShowcaseFileViewType val:
        :rtype: EventType
        """
        return cls('showcase_file_view', val)

    @classmethod
    def showcase_permanently_deleted(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_permanently_deleted`` tag with value ``val``.

        :param ShowcasePermanentlyDeletedType val:
        :rtype: EventType
        """
        return cls('showcase_permanently_deleted', val)

    @classmethod
    def showcase_post_comment(cls, val):
        """
        Create an instance of this class set to the ``showcase_post_comment``
        tag with value ``val``.

        :param ShowcasePostCommentType val:
        :rtype: EventType
        """
        return cls('showcase_post_comment', val)

    @classmethod
    def showcase_remove_member(cls, val):
        """
        Create an instance of this class set to the ``showcase_remove_member``
        tag with value ``val``.

        :param ShowcaseRemoveMemberType val:
        :rtype: EventType
        """
        return cls('showcase_remove_member', val)

    @classmethod
    def showcase_renamed(cls, val):
        """
        Create an instance of this class set to the ``showcase_renamed`` tag
        with value ``val``.

        :param ShowcaseRenamedType val:
        :rtype: EventType
        """
        return cls('showcase_renamed', val)

    @classmethod
    def showcase_request_access(cls, val):
        """
        Create an instance of this class set to the ``showcase_request_access``
        tag with value ``val``.

        :param ShowcaseRequestAccessType val:
        :rtype: EventType
        """
        return cls('showcase_request_access', val)

    @classmethod
    def showcase_resolve_comment(cls, val):
        """
        Create an instance of this class set to the ``showcase_resolve_comment``
        tag with value ``val``.

        :param ShowcaseResolveCommentType val:
        :rtype: EventType
        """
        return cls('showcase_resolve_comment', val)

    @classmethod
    def showcase_restored(cls, val):
        """
        Create an instance of this class set to the ``showcase_restored`` tag
        with value ``val``.

        :param ShowcaseRestoredType val:
        :rtype: EventType
        """
        return cls('showcase_restored', val)

    @classmethod
    def showcase_trashed(cls, val):
        """
        Create an instance of this class set to the ``showcase_trashed`` tag
        with value ``val``.

        :param ShowcaseTrashedType val:
        :rtype: EventType
        """
        return cls('showcase_trashed', val)

    @classmethod
    def showcase_trashed_deprecated(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_trashed_deprecated`` tag with value ``val``.

        :param ShowcaseTrashedDeprecatedType val:
        :rtype: EventType
        """
        return cls('showcase_trashed_deprecated', val)

    @classmethod
    def showcase_unresolve_comment(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_unresolve_comment`` tag with value ``val``.

        :param ShowcaseUnresolveCommentType val:
        :rtype: EventType
        """
        return cls('showcase_unresolve_comment', val)

    @classmethod
    def showcase_untrashed(cls, val):
        """
        Create an instance of this class set to the ``showcase_untrashed`` tag
        with value ``val``.

        :param ShowcaseUntrashedType val:
        :rtype: EventType
        """
        return cls('showcase_untrashed', val)

    @classmethod
    def showcase_untrashed_deprecated(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_untrashed_deprecated`` tag with value ``val``.

        :param ShowcaseUntrashedDeprecatedType val:
        :rtype: EventType
        """
        return cls('showcase_untrashed_deprecated', val)

    @classmethod
    def showcase_view(cls, val):
        """
        Create an instance of this class set to the ``showcase_view`` tag with
        value ``val``.

        :param ShowcaseViewType val:
        :rtype: EventType
        """
        return cls('showcase_view', val)

    @classmethod
    def sso_add_cert(cls, val):
        """
        Create an instance of this class set to the ``sso_add_cert`` tag with
        value ``val``.

        :param SsoAddCertType val:
        :rtype: EventType
        """
        return cls('sso_add_cert', val)

    @classmethod
    def sso_add_login_url(cls, val):
        """
        Create an instance of this class set to the ``sso_add_login_url`` tag
        with value ``val``.

        :param SsoAddLoginUrlType val:
        :rtype: EventType
        """
        return cls('sso_add_login_url', val)

    @classmethod
    def sso_add_logout_url(cls, val):
        """
        Create an instance of this class set to the ``sso_add_logout_url`` tag
        with value ``val``.

        :param SsoAddLogoutUrlType val:
        :rtype: EventType
        """
        return cls('sso_add_logout_url', val)

    @classmethod
    def sso_change_cert(cls, val):
        """
        Create an instance of this class set to the ``sso_change_cert`` tag with
        value ``val``.

        :param SsoChangeCertType val:
        :rtype: EventType
        """
        return cls('sso_change_cert', val)

    @classmethod
    def sso_change_login_url(cls, val):
        """
        Create an instance of this class set to the ``sso_change_login_url`` tag
        with value ``val``.

        :param SsoChangeLoginUrlType val:
        :rtype: EventType
        """
        return cls('sso_change_login_url', val)

    @classmethod
    def sso_change_logout_url(cls, val):
        """
        Create an instance of this class set to the ``sso_change_logout_url``
        tag with value ``val``.

        :param SsoChangeLogoutUrlType val:
        :rtype: EventType
        """
        return cls('sso_change_logout_url', val)

    @classmethod
    def sso_change_saml_identity_mode(cls, val):
        """
        Create an instance of this class set to the
        ``sso_change_saml_identity_mode`` tag with value ``val``.

        :param SsoChangeSamlIdentityModeType val:
        :rtype: EventType
        """
        return cls('sso_change_saml_identity_mode', val)

    @classmethod
    def sso_remove_cert(cls, val):
        """
        Create an instance of this class set to the ``sso_remove_cert`` tag with
        value ``val``.

        :param SsoRemoveCertType val:
        :rtype: EventType
        """
        return cls('sso_remove_cert', val)

    @classmethod
    def sso_remove_login_url(cls, val):
        """
        Create an instance of this class set to the ``sso_remove_login_url`` tag
        with value ``val``.

        :param SsoRemoveLoginUrlType val:
        :rtype: EventType
        """
        return cls('sso_remove_login_url', val)

    @classmethod
    def sso_remove_logout_url(cls, val):
        """
        Create an instance of this class set to the ``sso_remove_logout_url``
        tag with value ``val``.

        :param SsoRemoveLogoutUrlType val:
        :rtype: EventType
        """
        return cls('sso_remove_logout_url', val)

    @classmethod
    def team_folder_change_status(cls, val):
        """
        Create an instance of this class set to the
        ``team_folder_change_status`` tag with value ``val``.

        :param TeamFolderChangeStatusType val:
        :rtype: EventType
        """
        return cls('team_folder_change_status', val)

    @classmethod
    def team_folder_create(cls, val):
        """
        Create an instance of this class set to the ``team_folder_create`` tag
        with value ``val``.

        :param TeamFolderCreateType val:
        :rtype: EventType
        """
        return cls('team_folder_create', val)

    @classmethod
    def team_folder_downgrade(cls, val):
        """
        Create an instance of this class set to the ``team_folder_downgrade``
        tag with value ``val``.

        :param TeamFolderDowngradeType val:
        :rtype: EventType
        """
        return cls('team_folder_downgrade', val)

    @classmethod
    def team_folder_permanently_delete(cls, val):
        """
        Create an instance of this class set to the
        ``team_folder_permanently_delete`` tag with value ``val``.

        :param TeamFolderPermanentlyDeleteType val:
        :rtype: EventType
        """
        return cls('team_folder_permanently_delete', val)

    @classmethod
    def team_folder_rename(cls, val):
        """
        Create an instance of this class set to the ``team_folder_rename`` tag
        with value ``val``.

        :param TeamFolderRenameType val:
        :rtype: EventType
        """
        return cls('team_folder_rename', val)

    @classmethod
    def team_selective_sync_settings_changed(cls, val):
        """
        Create an instance of this class set to the
        ``team_selective_sync_settings_changed`` tag with value ``val``.

        :param TeamSelectiveSyncSettingsChangedType val:
        :rtype: EventType
        """
        return cls('team_selective_sync_settings_changed', val)

    @classmethod
    def account_capture_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_change_policy`` tag with value ``val``.

        :param AccountCaptureChangePolicyType val:
        :rtype: EventType
        """
        return cls('account_capture_change_policy', val)

    @classmethod
    def allow_download_disabled(cls, val):
        """
        Create an instance of this class set to the ``allow_download_disabled``
        tag with value ``val``.

        :param AllowDownloadDisabledType val:
        :rtype: EventType
        """
        return cls('allow_download_disabled', val)

    @classmethod
    def allow_download_enabled(cls, val):
        """
        Create an instance of this class set to the ``allow_download_enabled``
        tag with value ``val``.

        :param AllowDownloadEnabledType val:
        :rtype: EventType
        """
        return cls('allow_download_enabled', val)

    @classmethod
    def camera_uploads_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``camera_uploads_policy_changed`` tag with value ``val``.

        :param CameraUploadsPolicyChangedType val:
        :rtype: EventType
        """
        return cls('camera_uploads_policy_changed', val)

    @classmethod
    def data_placement_restriction_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``data_placement_restriction_change_policy`` tag with value ``val``.

        :param DataPlacementRestrictionChangePolicyType val:
        :rtype: EventType
        """
        return cls('data_placement_restriction_change_policy', val)

    @classmethod
    def data_placement_restriction_satisfy_policy(cls, val):
        """
        Create an instance of this class set to the
        ``data_placement_restriction_satisfy_policy`` tag with value ``val``.

        :param DataPlacementRestrictionSatisfyPolicyType val:
        :rtype: EventType
        """
        return cls('data_placement_restriction_satisfy_policy', val)

    @classmethod
    def device_approvals_change_desktop_policy(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_desktop_policy`` tag with value ``val``.

        :param DeviceApprovalsChangeDesktopPolicyType val:
        :rtype: EventType
        """
        return cls('device_approvals_change_desktop_policy', val)

    @classmethod
    def device_approvals_change_mobile_policy(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_mobile_policy`` tag with value ``val``.

        :param DeviceApprovalsChangeMobilePolicyType val:
        :rtype: EventType
        """
        return cls('device_approvals_change_mobile_policy', val)

    @classmethod
    def device_approvals_change_overage_action(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_overage_action`` tag with value ``val``.

        :param DeviceApprovalsChangeOverageActionType val:
        :rtype: EventType
        """
        return cls('device_approvals_change_overage_action', val)

    @classmethod
    def device_approvals_change_unlink_action(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_unlink_action`` tag with value ``val``.

        :param DeviceApprovalsChangeUnlinkActionType val:
        :rtype: EventType
        """
        return cls('device_approvals_change_unlink_action', val)

    @classmethod
    def directory_restrictions_add_members(cls, val):
        """
        Create an instance of this class set to the
        ``directory_restrictions_add_members`` tag with value ``val``.

        :param DirectoryRestrictionsAddMembersType val:
        :rtype: EventType
        """
        return cls('directory_restrictions_add_members', val)

    @classmethod
    def directory_restrictions_remove_members(cls, val):
        """
        Create an instance of this class set to the
        ``directory_restrictions_remove_members`` tag with value ``val``.

        :param DirectoryRestrictionsRemoveMembersType val:
        :rtype: EventType
        """
        return cls('directory_restrictions_remove_members', val)

    @classmethod
    def emm_add_exception(cls, val):
        """
        Create an instance of this class set to the ``emm_add_exception`` tag
        with value ``val``.

        :param EmmAddExceptionType val:
        :rtype: EventType
        """
        return cls('emm_add_exception', val)

    @classmethod
    def emm_change_policy(cls, val):
        """
        Create an instance of this class set to the ``emm_change_policy`` tag
        with value ``val``.

        :param EmmChangePolicyType val:
        :rtype: EventType
        """
        return cls('emm_change_policy', val)

    @classmethod
    def emm_remove_exception(cls, val):
        """
        Create an instance of this class set to the ``emm_remove_exception`` tag
        with value ``val``.

        :param EmmRemoveExceptionType val:
        :rtype: EventType
        """
        return cls('emm_remove_exception', val)

    @classmethod
    def extended_version_history_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``extended_version_history_change_policy`` tag with value ``val``.

        :param ExtendedVersionHistoryChangePolicyType val:
        :rtype: EventType
        """
        return cls('extended_version_history_change_policy', val)

    @classmethod
    def file_comments_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``file_comments_change_policy`` tag with value ``val``.

        :param FileCommentsChangePolicyType val:
        :rtype: EventType
        """
        return cls('file_comments_change_policy', val)

    @classmethod
    def file_requests_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``file_requests_change_policy`` tag with value ``val``.

        :param FileRequestsChangePolicyType val:
        :rtype: EventType
        """
        return cls('file_requests_change_policy', val)

    @classmethod
    def file_requests_emails_enabled(cls, val):
        """
        Create an instance of this class set to the
        ``file_requests_emails_enabled`` tag with value ``val``.

        :param FileRequestsEmailsEnabledType val:
        :rtype: EventType
        """
        return cls('file_requests_emails_enabled', val)

    @classmethod
    def file_requests_emails_restricted_to_team_only(cls, val):
        """
        Create an instance of this class set to the
        ``file_requests_emails_restricted_to_team_only`` tag with value ``val``.

        :param FileRequestsEmailsRestrictedToTeamOnlyType val:
        :rtype: EventType
        """
        return cls('file_requests_emails_restricted_to_team_only', val)

    @classmethod
    def google_sso_change_policy(cls, val):
        """
        Create an instance of this class set to the ``google_sso_change_policy``
        tag with value ``val``.

        :param GoogleSsoChangePolicyType val:
        :rtype: EventType
        """
        return cls('google_sso_change_policy', val)

    @classmethod
    def group_user_management_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``group_user_management_change_policy`` tag with value ``val``.

        :param GroupUserManagementChangePolicyType val:
        :rtype: EventType
        """
        return cls('group_user_management_change_policy', val)

    @classmethod
    def integration_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``integration_policy_changed`` tag with value ``val``.

        :param IntegrationPolicyChangedType val:
        :rtype: EventType
        """
        return cls('integration_policy_changed', val)

    @classmethod
    def member_requests_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``member_requests_change_policy`` tag with value ``val``.

        :param MemberRequestsChangePolicyType val:
        :rtype: EventType
        """
        return cls('member_requests_change_policy', val)

    @classmethod
    def member_space_limits_add_exception(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_add_exception`` tag with value ``val``.

        :param MemberSpaceLimitsAddExceptionType val:
        :rtype: EventType
        """
        return cls('member_space_limits_add_exception', val)

    @classmethod
    def member_space_limits_change_caps_type_policy(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_caps_type_policy`` tag with value ``val``.

        :param MemberSpaceLimitsChangeCapsTypePolicyType val:
        :rtype: EventType
        """
        return cls('member_space_limits_change_caps_type_policy', val)

    @classmethod
    def member_space_limits_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_policy`` tag with value ``val``.

        :param MemberSpaceLimitsChangePolicyType val:
        :rtype: EventType
        """
        return cls('member_space_limits_change_policy', val)

    @classmethod
    def member_space_limits_remove_exception(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_remove_exception`` tag with value ``val``.

        :param MemberSpaceLimitsRemoveExceptionType val:
        :rtype: EventType
        """
        return cls('member_space_limits_remove_exception', val)

    @classmethod
    def member_suggestions_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``member_suggestions_change_policy`` tag with value ``val``.

        :param MemberSuggestionsChangePolicyType val:
        :rtype: EventType
        """
        return cls('member_suggestions_change_policy', val)

    @classmethod
    def microsoft_office_addin_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``microsoft_office_addin_change_policy`` tag with value ``val``.

        :param MicrosoftOfficeAddinChangePolicyType val:
        :rtype: EventType
        """
        return cls('microsoft_office_addin_change_policy', val)

    @classmethod
    def network_control_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``network_control_change_policy`` tag with value ``val``.

        :param NetworkControlChangePolicyType val:
        :rtype: EventType
        """
        return cls('network_control_change_policy', val)

    @classmethod
    def paper_change_deployment_policy(cls, val):
        """
        Create an instance of this class set to the
        ``paper_change_deployment_policy`` tag with value ``val``.

        :param PaperChangeDeploymentPolicyType val:
        :rtype: EventType
        """
        return cls('paper_change_deployment_policy', val)

    @classmethod
    def paper_change_member_link_policy(cls, val):
        """
        Create an instance of this class set to the
        ``paper_change_member_link_policy`` tag with value ``val``.

        :param PaperChangeMemberLinkPolicyType val:
        :rtype: EventType
        """
        return cls('paper_change_member_link_policy', val)

    @classmethod
    def paper_change_member_policy(cls, val):
        """
        Create an instance of this class set to the
        ``paper_change_member_policy`` tag with value ``val``.

        :param PaperChangeMemberPolicyType val:
        :rtype: EventType
        """
        return cls('paper_change_member_policy', val)

    @classmethod
    def paper_change_policy(cls, val):
        """
        Create an instance of this class set to the ``paper_change_policy`` tag
        with value ``val``.

        :param PaperChangePolicyType val:
        :rtype: EventType
        """
        return cls('paper_change_policy', val)

    @classmethod
    def paper_default_folder_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``paper_default_folder_policy_changed`` tag with value ``val``.

        :param PaperDefaultFolderPolicyChangedType val:
        :rtype: EventType
        """
        return cls('paper_default_folder_policy_changed', val)

    @classmethod
    def paper_desktop_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``paper_desktop_policy_changed`` tag with value ``val``.

        :param PaperDesktopPolicyChangedType val:
        :rtype: EventType
        """
        return cls('paper_desktop_policy_changed', val)

    @classmethod
    def paper_enabled_users_group_addition(cls, val):
        """
        Create an instance of this class set to the
        ``paper_enabled_users_group_addition`` tag with value ``val``.

        :param PaperEnabledUsersGroupAdditionType val:
        :rtype: EventType
        """
        return cls('paper_enabled_users_group_addition', val)

    @classmethod
    def paper_enabled_users_group_removal(cls, val):
        """
        Create an instance of this class set to the
        ``paper_enabled_users_group_removal`` tag with value ``val``.

        :param PaperEnabledUsersGroupRemovalType val:
        :rtype: EventType
        """
        return cls('paper_enabled_users_group_removal', val)

    @classmethod
    def permanent_delete_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``permanent_delete_change_policy`` tag with value ``val``.

        :param PermanentDeleteChangePolicyType val:
        :rtype: EventType
        """
        return cls('permanent_delete_change_policy', val)

    @classmethod
    def reseller_support_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``reseller_support_change_policy`` tag with value ``val``.

        :param ResellerSupportChangePolicyType val:
        :rtype: EventType
        """
        return cls('reseller_support_change_policy', val)

    @classmethod
    def sharing_change_folder_join_policy(cls, val):
        """
        Create an instance of this class set to the
        ``sharing_change_folder_join_policy`` tag with value ``val``.

        :param SharingChangeFolderJoinPolicyType val:
        :rtype: EventType
        """
        return cls('sharing_change_folder_join_policy', val)

    @classmethod
    def sharing_change_link_policy(cls, val):
        """
        Create an instance of this class set to the
        ``sharing_change_link_policy`` tag with value ``val``.

        :param SharingChangeLinkPolicyType val:
        :rtype: EventType
        """
        return cls('sharing_change_link_policy', val)

    @classmethod
    def sharing_change_member_policy(cls, val):
        """
        Create an instance of this class set to the
        ``sharing_change_member_policy`` tag with value ``val``.

        :param SharingChangeMemberPolicyType val:
        :rtype: EventType
        """
        return cls('sharing_change_member_policy', val)

    @classmethod
    def showcase_change_download_policy(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_change_download_policy`` tag with value ``val``.

        :param ShowcaseChangeDownloadPolicyType val:
        :rtype: EventType
        """
        return cls('showcase_change_download_policy', val)

    @classmethod
    def showcase_change_enabled_policy(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_change_enabled_policy`` tag with value ``val``.

        :param ShowcaseChangeEnabledPolicyType val:
        :rtype: EventType
        """
        return cls('showcase_change_enabled_policy', val)

    @classmethod
    def showcase_change_external_sharing_policy(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_change_external_sharing_policy`` tag with value ``val``.

        :param ShowcaseChangeExternalSharingPolicyType val:
        :rtype: EventType
        """
        return cls('showcase_change_external_sharing_policy', val)

    @classmethod
    def smart_sync_change_policy(cls, val):
        """
        Create an instance of this class set to the ``smart_sync_change_policy``
        tag with value ``val``.

        :param SmartSyncChangePolicyType val:
        :rtype: EventType
        """
        return cls('smart_sync_change_policy', val)

    @classmethod
    def smart_sync_not_opt_out(cls, val):
        """
        Create an instance of this class set to the ``smart_sync_not_opt_out``
        tag with value ``val``.

        :param SmartSyncNotOptOutType val:
        :rtype: EventType
        """
        return cls('smart_sync_not_opt_out', val)

    @classmethod
    def smart_sync_opt_out(cls, val):
        """
        Create an instance of this class set to the ``smart_sync_opt_out`` tag
        with value ``val``.

        :param SmartSyncOptOutType val:
        :rtype: EventType
        """
        return cls('smart_sync_opt_out', val)

    @classmethod
    def sso_change_policy(cls, val):
        """
        Create an instance of this class set to the ``sso_change_policy`` tag
        with value ``val``.

        :param SsoChangePolicyType val:
        :rtype: EventType
        """
        return cls('sso_change_policy', val)

    @classmethod
    def team_extensions_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``team_extensions_policy_changed`` tag with value ``val``.

        :param TeamExtensionsPolicyChangedType val:
        :rtype: EventType
        """
        return cls('team_extensions_policy_changed', val)

    @classmethod
    def team_selective_sync_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``team_selective_sync_policy_changed`` tag with value ``val``.

        :param TeamSelectiveSyncPolicyChangedType val:
        :rtype: EventType
        """
        return cls('team_selective_sync_policy_changed', val)

    @classmethod
    def tfa_change_policy(cls, val):
        """
        Create an instance of this class set to the ``tfa_change_policy`` tag
        with value ``val``.

        :param TfaChangePolicyType val:
        :rtype: EventType
        """
        return cls('tfa_change_policy', val)

    @classmethod
    def two_account_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``two_account_change_policy`` tag with value ``val``.

        :param TwoAccountChangePolicyType val:
        :rtype: EventType
        """
        return cls('two_account_change_policy', val)

    @classmethod
    def viewer_info_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``viewer_info_policy_changed`` tag with value ``val``.

        :param ViewerInfoPolicyChangedType val:
        :rtype: EventType
        """
        return cls('viewer_info_policy_changed', val)

    @classmethod
    def web_sessions_change_fixed_length_policy(cls, val):
        """
        Create an instance of this class set to the
        ``web_sessions_change_fixed_length_policy`` tag with value ``val``.

        :param WebSessionsChangeFixedLengthPolicyType val:
        :rtype: EventType
        """
        return cls('web_sessions_change_fixed_length_policy', val)

    @classmethod
    def web_sessions_change_idle_length_policy(cls, val):
        """
        Create an instance of this class set to the
        ``web_sessions_change_idle_length_policy`` tag with value ``val``.

        :param WebSessionsChangeIdleLengthPolicyType val:
        :rtype: EventType
        """
        return cls('web_sessions_change_idle_length_policy', val)

    @classmethod
    def team_merge_from(cls, val):
        """
        Create an instance of this class set to the ``team_merge_from`` tag with
        value ``val``.

        :param TeamMergeFromType val:
        :rtype: EventType
        """
        return cls('team_merge_from', val)

    @classmethod
    def team_merge_to(cls, val):
        """
        Create an instance of this class set to the ``team_merge_to`` tag with
        value ``val``.

        :param TeamMergeToType val:
        :rtype: EventType
        """
        return cls('team_merge_to', val)

    @classmethod
    def team_profile_add_logo(cls, val):
        """
        Create an instance of this class set to the ``team_profile_add_logo``
        tag with value ``val``.

        :param TeamProfileAddLogoType val:
        :rtype: EventType
        """
        return cls('team_profile_add_logo', val)

    @classmethod
    def team_profile_change_default_language(cls, val):
        """
        Create an instance of this class set to the
        ``team_profile_change_default_language`` tag with value ``val``.

        :param TeamProfileChangeDefaultLanguageType val:
        :rtype: EventType
        """
        return cls('team_profile_change_default_language', val)

    @classmethod
    def team_profile_change_logo(cls, val):
        """
        Create an instance of this class set to the ``team_profile_change_logo``
        tag with value ``val``.

        :param TeamProfileChangeLogoType val:
        :rtype: EventType
        """
        return cls('team_profile_change_logo', val)

    @classmethod
    def team_profile_change_name(cls, val):
        """
        Create an instance of this class set to the ``team_profile_change_name``
        tag with value ``val``.

        :param TeamProfileChangeNameType val:
        :rtype: EventType
        """
        return cls('team_profile_change_name', val)

    @classmethod
    def team_profile_remove_logo(cls, val):
        """
        Create an instance of this class set to the ``team_profile_remove_logo``
        tag with value ``val``.

        :param TeamProfileRemoveLogoType val:
        :rtype: EventType
        """
        return cls('team_profile_remove_logo', val)

    @classmethod
    def tfa_add_backup_phone(cls, val):
        """
        Create an instance of this class set to the ``tfa_add_backup_phone`` tag
        with value ``val``.

        :param TfaAddBackupPhoneType val:
        :rtype: EventType
        """
        return cls('tfa_add_backup_phone', val)

    @classmethod
    def tfa_add_security_key(cls, val):
        """
        Create an instance of this class set to the ``tfa_add_security_key`` tag
        with value ``val``.

        :param TfaAddSecurityKeyType val:
        :rtype: EventType
        """
        return cls('tfa_add_security_key', val)

    @classmethod
    def tfa_change_backup_phone(cls, val):
        """
        Create an instance of this class set to the ``tfa_change_backup_phone``
        tag with value ``val``.

        :param TfaChangeBackupPhoneType val:
        :rtype: EventType
        """
        return cls('tfa_change_backup_phone', val)

    @classmethod
    def tfa_change_status(cls, val):
        """
        Create an instance of this class set to the ``tfa_change_status`` tag
        with value ``val``.

        :param TfaChangeStatusType val:
        :rtype: EventType
        """
        return cls('tfa_change_status', val)

    @classmethod
    def tfa_remove_backup_phone(cls, val):
        """
        Create an instance of this class set to the ``tfa_remove_backup_phone``
        tag with value ``val``.

        :param TfaRemoveBackupPhoneType val:
        :rtype: EventType
        """
        return cls('tfa_remove_backup_phone', val)

    @classmethod
    def tfa_remove_security_key(cls, val):
        """
        Create an instance of this class set to the ``tfa_remove_security_key``
        tag with value ``val``.

        :param TfaRemoveSecurityKeyType val:
        :rtype: EventType
        """
        return cls('tfa_remove_security_key', val)

    @classmethod
    def tfa_reset(cls, val):
        """
        Create an instance of this class set to the ``tfa_reset`` tag with value
        ``val``.

        :param TfaResetType val:
        :rtype: EventType
        """
        return cls('tfa_reset', val)

    @classmethod
    def guest_admin_change_status(cls, val):
        """
        Create an instance of this class set to the
        ``guest_admin_change_status`` tag with value ``val``.

        :param GuestAdminChangeStatusType val:
        :rtype: EventType
        """
        return cls('guest_admin_change_status', val)

    @classmethod
    def team_merge_request_accepted(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_accepted`` tag with value ``val``.

        :param TeamMergeRequestAcceptedType val:
        :rtype: EventType
        """
        return cls('team_merge_request_accepted', val)

    @classmethod
    def team_merge_request_accepted_shown_to_primary_team(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_accepted_shown_to_primary_team`` tag with value
        ``val``.

        :param TeamMergeRequestAcceptedShownToPrimaryTeamType val:
        :rtype: EventType
        """
        return cls('team_merge_request_accepted_shown_to_primary_team', val)

    @classmethod
    def team_merge_request_accepted_shown_to_secondary_team(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_accepted_shown_to_secondary_team`` tag with value
        ``val``.

        :param TeamMergeRequestAcceptedShownToSecondaryTeamType val:
        :rtype: EventType
        """
        return cls('team_merge_request_accepted_shown_to_secondary_team', val)

    @classmethod
    def team_merge_request_auto_canceled(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_auto_canceled`` tag with value ``val``.

        :param TeamMergeRequestAutoCanceledType val:
        :rtype: EventType
        """
        return cls('team_merge_request_auto_canceled', val)

    @classmethod
    def team_merge_request_canceled(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_canceled`` tag with value ``val``.

        :param TeamMergeRequestCanceledType val:
        :rtype: EventType
        """
        return cls('team_merge_request_canceled', val)

    @classmethod
    def team_merge_request_canceled_shown_to_primary_team(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_canceled_shown_to_primary_team`` tag with value
        ``val``.

        :param TeamMergeRequestCanceledShownToPrimaryTeamType val:
        :rtype: EventType
        """
        return cls('team_merge_request_canceled_shown_to_primary_team', val)

    @classmethod
    def team_merge_request_canceled_shown_to_secondary_team(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_canceled_shown_to_secondary_team`` tag with value
        ``val``.

        :param TeamMergeRequestCanceledShownToSecondaryTeamType val:
        :rtype: EventType
        """
        return cls('team_merge_request_canceled_shown_to_secondary_team', val)

    @classmethod
    def team_merge_request_expired(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_expired`` tag with value ``val``.

        :param TeamMergeRequestExpiredType val:
        :rtype: EventType
        """
        return cls('team_merge_request_expired', val)

    @classmethod
    def team_merge_request_expired_shown_to_primary_team(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_expired_shown_to_primary_team`` tag with value
        ``val``.

        :param TeamMergeRequestExpiredShownToPrimaryTeamType val:
        :rtype: EventType
        """
        return cls('team_merge_request_expired_shown_to_primary_team', val)

    @classmethod
    def team_merge_request_expired_shown_to_secondary_team(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_expired_shown_to_secondary_team`` tag with value
        ``val``.

        :param TeamMergeRequestExpiredShownToSecondaryTeamType val:
        :rtype: EventType
        """
        return cls('team_merge_request_expired_shown_to_secondary_team', val)

    @classmethod
    def team_merge_request_rejected_shown_to_primary_team(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_rejected_shown_to_primary_team`` tag with value
        ``val``.

        :param TeamMergeRequestRejectedShownToPrimaryTeamType val:
        :rtype: EventType
        """
        return cls('team_merge_request_rejected_shown_to_primary_team', val)

    @classmethod
    def team_merge_request_rejected_shown_to_secondary_team(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_rejected_shown_to_secondary_team`` tag with value
        ``val``.

        :param TeamMergeRequestRejectedShownToSecondaryTeamType val:
        :rtype: EventType
        """
        return cls('team_merge_request_rejected_shown_to_secondary_team', val)

    @classmethod
    def team_merge_request_reminder(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_reminder`` tag with value ``val``.

        :param TeamMergeRequestReminderType val:
        :rtype: EventType
        """
        return cls('team_merge_request_reminder', val)

    @classmethod
    def team_merge_request_reminder_shown_to_primary_team(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_reminder_shown_to_primary_team`` tag with value
        ``val``.

        :param TeamMergeRequestReminderShownToPrimaryTeamType val:
        :rtype: EventType
        """
        return cls('team_merge_request_reminder_shown_to_primary_team', val)

    @classmethod
    def team_merge_request_reminder_shown_to_secondary_team(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_reminder_shown_to_secondary_team`` tag with value
        ``val``.

        :param TeamMergeRequestReminderShownToSecondaryTeamType val:
        :rtype: EventType
        """
        return cls('team_merge_request_reminder_shown_to_secondary_team', val)

    @classmethod
    def team_merge_request_revoked(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_revoked`` tag with value ``val``.

        :param TeamMergeRequestRevokedType val:
        :rtype: EventType
        """
        return cls('team_merge_request_revoked', val)

    @classmethod
    def team_merge_request_sent_shown_to_primary_team(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_sent_shown_to_primary_team`` tag with value
        ``val``.

        :param TeamMergeRequestSentShownToPrimaryTeamType val:
        :rtype: EventType
        """
        return cls('team_merge_request_sent_shown_to_primary_team', val)

    @classmethod
    def team_merge_request_sent_shown_to_secondary_team(cls, val):
        """
        Create an instance of this class set to the
        ``team_merge_request_sent_shown_to_secondary_team`` tag with value
        ``val``.

        :param TeamMergeRequestSentShownToSecondaryTeamType val:
        :rtype: EventType
        """
        return cls('team_merge_request_sent_shown_to_secondary_team', val)

    def is_app_link_team(self):
        """
        Check if the union tag is ``app_link_team``.

        :rtype: bool
        """
        return self._tag == 'app_link_team'

    def is_app_link_user(self):
        """
        Check if the union tag is ``app_link_user``.

        :rtype: bool
        """
        return self._tag == 'app_link_user'

    def is_app_unlink_team(self):
        """
        Check if the union tag is ``app_unlink_team``.

        :rtype: bool
        """
        return self._tag == 'app_unlink_team'

    def is_app_unlink_user(self):
        """
        Check if the union tag is ``app_unlink_user``.

        :rtype: bool
        """
        return self._tag == 'app_unlink_user'

    def is_integration_connected(self):
        """
        Check if the union tag is ``integration_connected``.

        :rtype: bool
        """
        return self._tag == 'integration_connected'

    def is_integration_disconnected(self):
        """
        Check if the union tag is ``integration_disconnected``.

        :rtype: bool
        """
        return self._tag == 'integration_disconnected'

    def is_file_add_comment(self):
        """
        Check if the union tag is ``file_add_comment``.

        :rtype: bool
        """
        return self._tag == 'file_add_comment'

    def is_file_change_comment_subscription(self):
        """
        Check if the union tag is ``file_change_comment_subscription``.

        :rtype: bool
        """
        return self._tag == 'file_change_comment_subscription'

    def is_file_delete_comment(self):
        """
        Check if the union tag is ``file_delete_comment``.

        :rtype: bool
        """
        return self._tag == 'file_delete_comment'

    def is_file_edit_comment(self):
        """
        Check if the union tag is ``file_edit_comment``.

        :rtype: bool
        """
        return self._tag == 'file_edit_comment'

    def is_file_like_comment(self):
        """
        Check if the union tag is ``file_like_comment``.

        :rtype: bool
        """
        return self._tag == 'file_like_comment'

    def is_file_resolve_comment(self):
        """
        Check if the union tag is ``file_resolve_comment``.

        :rtype: bool
        """
        return self._tag == 'file_resolve_comment'

    def is_file_unlike_comment(self):
        """
        Check if the union tag is ``file_unlike_comment``.

        :rtype: bool
        """
        return self._tag == 'file_unlike_comment'

    def is_file_unresolve_comment(self):
        """
        Check if the union tag is ``file_unresolve_comment``.

        :rtype: bool
        """
        return self._tag == 'file_unresolve_comment'

    def is_device_change_ip_desktop(self):
        """
        Check if the union tag is ``device_change_ip_desktop``.

        :rtype: bool
        """
        return self._tag == 'device_change_ip_desktop'

    def is_device_change_ip_mobile(self):
        """
        Check if the union tag is ``device_change_ip_mobile``.

        :rtype: bool
        """
        return self._tag == 'device_change_ip_mobile'

    def is_device_change_ip_web(self):
        """
        Check if the union tag is ``device_change_ip_web``.

        :rtype: bool
        """
        return self._tag == 'device_change_ip_web'

    def is_device_delete_on_unlink_fail(self):
        """
        Check if the union tag is ``device_delete_on_unlink_fail``.

        :rtype: bool
        """
        return self._tag == 'device_delete_on_unlink_fail'

    def is_device_delete_on_unlink_success(self):
        """
        Check if the union tag is ``device_delete_on_unlink_success``.

        :rtype: bool
        """
        return self._tag == 'device_delete_on_unlink_success'

    def is_device_link_fail(self):
        """
        Check if the union tag is ``device_link_fail``.

        :rtype: bool
        """
        return self._tag == 'device_link_fail'

    def is_device_link_success(self):
        """
        Check if the union tag is ``device_link_success``.

        :rtype: bool
        """
        return self._tag == 'device_link_success'

    def is_device_management_disabled(self):
        """
        Check if the union tag is ``device_management_disabled``.

        :rtype: bool
        """
        return self._tag == 'device_management_disabled'

    def is_device_management_enabled(self):
        """
        Check if the union tag is ``device_management_enabled``.

        :rtype: bool
        """
        return self._tag == 'device_management_enabled'

    def is_device_unlink(self):
        """
        Check if the union tag is ``device_unlink``.

        :rtype: bool
        """
        return self._tag == 'device_unlink'

    def is_emm_refresh_auth_token(self):
        """
        Check if the union tag is ``emm_refresh_auth_token``.

        :rtype: bool
        """
        return self._tag == 'emm_refresh_auth_token'

    def is_account_capture_change_availability(self):
        """
        Check if the union tag is ``account_capture_change_availability``.

        :rtype: bool
        """
        return self._tag == 'account_capture_change_availability'

    def is_account_capture_migrate_account(self):
        """
        Check if the union tag is ``account_capture_migrate_account``.

        :rtype: bool
        """
        return self._tag == 'account_capture_migrate_account'

    def is_account_capture_notification_emails_sent(self):
        """
        Check if the union tag is ``account_capture_notification_emails_sent``.

        :rtype: bool
        """
        return self._tag == 'account_capture_notification_emails_sent'

    def is_account_capture_relinquish_account(self):
        """
        Check if the union tag is ``account_capture_relinquish_account``.

        :rtype: bool
        """
        return self._tag == 'account_capture_relinquish_account'

    def is_disabled_domain_invites(self):
        """
        Check if the union tag is ``disabled_domain_invites``.

        :rtype: bool
        """
        return self._tag == 'disabled_domain_invites'

    def is_domain_invites_approve_request_to_join_team(self):
        """
        Check if the union tag is ``domain_invites_approve_request_to_join_team``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_approve_request_to_join_team'

    def is_domain_invites_decline_request_to_join_team(self):
        """
        Check if the union tag is ``domain_invites_decline_request_to_join_team``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_decline_request_to_join_team'

    def is_domain_invites_email_existing_users(self):
        """
        Check if the union tag is ``domain_invites_email_existing_users``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_email_existing_users'

    def is_domain_invites_request_to_join_team(self):
        """
        Check if the union tag is ``domain_invites_request_to_join_team``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_request_to_join_team'

    def is_domain_invites_set_invite_new_user_pref_to_no(self):
        """
        Check if the union tag is ``domain_invites_set_invite_new_user_pref_to_no``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_set_invite_new_user_pref_to_no'

    def is_domain_invites_set_invite_new_user_pref_to_yes(self):
        """
        Check if the union tag is ``domain_invites_set_invite_new_user_pref_to_yes``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_set_invite_new_user_pref_to_yes'

    def is_domain_verification_add_domain_fail(self):
        """
        Check if the union tag is ``domain_verification_add_domain_fail``.

        :rtype: bool
        """
        return self._tag == 'domain_verification_add_domain_fail'

    def is_domain_verification_add_domain_success(self):
        """
        Check if the union tag is ``domain_verification_add_domain_success``.

        :rtype: bool
        """
        return self._tag == 'domain_verification_add_domain_success'

    def is_domain_verification_remove_domain(self):
        """
        Check if the union tag is ``domain_verification_remove_domain``.

        :rtype: bool
        """
        return self._tag == 'domain_verification_remove_domain'

    def is_enabled_domain_invites(self):
        """
        Check if the union tag is ``enabled_domain_invites``.

        :rtype: bool
        """
        return self._tag == 'enabled_domain_invites'

    def is_create_folder(self):
        """
        Check if the union tag is ``create_folder``.

        :rtype: bool
        """
        return self._tag == 'create_folder'

    def is_file_add(self):
        """
        Check if the union tag is ``file_add``.

        :rtype: bool
        """
        return self._tag == 'file_add'

    def is_file_copy(self):
        """
        Check if the union tag is ``file_copy``.

        :rtype: bool
        """
        return self._tag == 'file_copy'

    def is_file_delete(self):
        """
        Check if the union tag is ``file_delete``.

        :rtype: bool
        """
        return self._tag == 'file_delete'

    def is_file_download(self):
        """
        Check if the union tag is ``file_download``.

        :rtype: bool
        """
        return self._tag == 'file_download'

    def is_file_edit(self):
        """
        Check if the union tag is ``file_edit``.

        :rtype: bool
        """
        return self._tag == 'file_edit'

    def is_file_get_copy_reference(self):
        """
        Check if the union tag is ``file_get_copy_reference``.

        :rtype: bool
        """
        return self._tag == 'file_get_copy_reference'

    def is_file_move(self):
        """
        Check if the union tag is ``file_move``.

        :rtype: bool
        """
        return self._tag == 'file_move'

    def is_file_permanently_delete(self):
        """
        Check if the union tag is ``file_permanently_delete``.

        :rtype: bool
        """
        return self._tag == 'file_permanently_delete'

    def is_file_preview(self):
        """
        Check if the union tag is ``file_preview``.

        :rtype: bool
        """
        return self._tag == 'file_preview'

    def is_file_rename(self):
        """
        Check if the union tag is ``file_rename``.

        :rtype: bool
        """
        return self._tag == 'file_rename'

    def is_file_restore(self):
        """
        Check if the union tag is ``file_restore``.

        :rtype: bool
        """
        return self._tag == 'file_restore'

    def is_file_revert(self):
        """
        Check if the union tag is ``file_revert``.

        :rtype: bool
        """
        return self._tag == 'file_revert'

    def is_file_rollback_changes(self):
        """
        Check if the union tag is ``file_rollback_changes``.

        :rtype: bool
        """
        return self._tag == 'file_rollback_changes'

    def is_file_save_copy_reference(self):
        """
        Check if the union tag is ``file_save_copy_reference``.

        :rtype: bool
        """
        return self._tag == 'file_save_copy_reference'

    def is_file_request_change(self):
        """
        Check if the union tag is ``file_request_change``.

        :rtype: bool
        """
        return self._tag == 'file_request_change'

    def is_file_request_close(self):
        """
        Check if the union tag is ``file_request_close``.

        :rtype: bool
        """
        return self._tag == 'file_request_close'

    def is_file_request_create(self):
        """
        Check if the union tag is ``file_request_create``.

        :rtype: bool
        """
        return self._tag == 'file_request_create'

    def is_file_request_delete(self):
        """
        Check if the union tag is ``file_request_delete``.

        :rtype: bool
        """
        return self._tag == 'file_request_delete'

    def is_file_request_receive_file(self):
        """
        Check if the union tag is ``file_request_receive_file``.

        :rtype: bool
        """
        return self._tag == 'file_request_receive_file'

    def is_group_add_external_id(self):
        """
        Check if the union tag is ``group_add_external_id``.

        :rtype: bool
        """
        return self._tag == 'group_add_external_id'

    def is_group_add_member(self):
        """
        Check if the union tag is ``group_add_member``.

        :rtype: bool
        """
        return self._tag == 'group_add_member'

    def is_group_change_external_id(self):
        """
        Check if the union tag is ``group_change_external_id``.

        :rtype: bool
        """
        return self._tag == 'group_change_external_id'

    def is_group_change_management_type(self):
        """
        Check if the union tag is ``group_change_management_type``.

        :rtype: bool
        """
        return self._tag == 'group_change_management_type'

    def is_group_change_member_role(self):
        """
        Check if the union tag is ``group_change_member_role``.

        :rtype: bool
        """
        return self._tag == 'group_change_member_role'

    def is_group_create(self):
        """
        Check if the union tag is ``group_create``.

        :rtype: bool
        """
        return self._tag == 'group_create'

    def is_group_delete(self):
        """
        Check if the union tag is ``group_delete``.

        :rtype: bool
        """
        return self._tag == 'group_delete'

    def is_group_description_updated(self):
        """
        Check if the union tag is ``group_description_updated``.

        :rtype: bool
        """
        return self._tag == 'group_description_updated'

    def is_group_join_policy_updated(self):
        """
        Check if the union tag is ``group_join_policy_updated``.

        :rtype: bool
        """
        return self._tag == 'group_join_policy_updated'

    def is_group_moved(self):
        """
        Check if the union tag is ``group_moved``.

        :rtype: bool
        """
        return self._tag == 'group_moved'

    def is_group_remove_external_id(self):
        """
        Check if the union tag is ``group_remove_external_id``.

        :rtype: bool
        """
        return self._tag == 'group_remove_external_id'

    def is_group_remove_member(self):
        """
        Check if the union tag is ``group_remove_member``.

        :rtype: bool
        """
        return self._tag == 'group_remove_member'

    def is_group_rename(self):
        """
        Check if the union tag is ``group_rename``.

        :rtype: bool
        """
        return self._tag == 'group_rename'

    def is_emm_error(self):
        """
        Check if the union tag is ``emm_error``.

        :rtype: bool
        """
        return self._tag == 'emm_error'

    def is_guest_admin_signed_in_via_trusted_teams(self):
        """
        Check if the union tag is ``guest_admin_signed_in_via_trusted_teams``.

        :rtype: bool
        """
        return self._tag == 'guest_admin_signed_in_via_trusted_teams'

    def is_guest_admin_signed_out_via_trusted_teams(self):
        """
        Check if the union tag is ``guest_admin_signed_out_via_trusted_teams``.

        :rtype: bool
        """
        return self._tag == 'guest_admin_signed_out_via_trusted_teams'

    def is_login_fail(self):
        """
        Check if the union tag is ``login_fail``.

        :rtype: bool
        """
        return self._tag == 'login_fail'

    def is_login_success(self):
        """
        Check if the union tag is ``login_success``.

        :rtype: bool
        """
        return self._tag == 'login_success'

    def is_logout(self):
        """
        Check if the union tag is ``logout``.

        :rtype: bool
        """
        return self._tag == 'logout'

    def is_reseller_support_session_end(self):
        """
        Check if the union tag is ``reseller_support_session_end``.

        :rtype: bool
        """
        return self._tag == 'reseller_support_session_end'

    def is_reseller_support_session_start(self):
        """
        Check if the union tag is ``reseller_support_session_start``.

        :rtype: bool
        """
        return self._tag == 'reseller_support_session_start'

    def is_sign_in_as_session_end(self):
        """
        Check if the union tag is ``sign_in_as_session_end``.

        :rtype: bool
        """
        return self._tag == 'sign_in_as_session_end'

    def is_sign_in_as_session_start(self):
        """
        Check if the union tag is ``sign_in_as_session_start``.

        :rtype: bool
        """
        return self._tag == 'sign_in_as_session_start'

    def is_sso_error(self):
        """
        Check if the union tag is ``sso_error``.

        :rtype: bool
        """
        return self._tag == 'sso_error'

    def is_member_add_external_id(self):
        """
        Check if the union tag is ``member_add_external_id``.

        :rtype: bool
        """
        return self._tag == 'member_add_external_id'

    def is_member_add_name(self):
        """
        Check if the union tag is ``member_add_name``.

        :rtype: bool
        """
        return self._tag == 'member_add_name'

    def is_member_change_admin_role(self):
        """
        Check if the union tag is ``member_change_admin_role``.

        :rtype: bool
        """
        return self._tag == 'member_change_admin_role'

    def is_member_change_email(self):
        """
        Check if the union tag is ``member_change_email``.

        :rtype: bool
        """
        return self._tag == 'member_change_email'

    def is_member_change_external_id(self):
        """
        Check if the union tag is ``member_change_external_id``.

        :rtype: bool
        """
        return self._tag == 'member_change_external_id'

    def is_member_change_membership_type(self):
        """
        Check if the union tag is ``member_change_membership_type``.

        :rtype: bool
        """
        return self._tag == 'member_change_membership_type'

    def is_member_change_name(self):
        """
        Check if the union tag is ``member_change_name``.

        :rtype: bool
        """
        return self._tag == 'member_change_name'

    def is_member_change_status(self):
        """
        Check if the union tag is ``member_change_status``.

        :rtype: bool
        """
        return self._tag == 'member_change_status'

    def is_member_delete_manual_contacts(self):
        """
        Check if the union tag is ``member_delete_manual_contacts``.

        :rtype: bool
        """
        return self._tag == 'member_delete_manual_contacts'

    def is_member_permanently_delete_account_contents(self):
        """
        Check if the union tag is ``member_permanently_delete_account_contents``.

        :rtype: bool
        """
        return self._tag == 'member_permanently_delete_account_contents'

    def is_member_remove_external_id(self):
        """
        Check if the union tag is ``member_remove_external_id``.

        :rtype: bool
        """
        return self._tag == 'member_remove_external_id'

    def is_member_space_limits_add_custom_quota(self):
        """
        Check if the union tag is ``member_space_limits_add_custom_quota``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_add_custom_quota'

    def is_member_space_limits_change_custom_quota(self):
        """
        Check if the union tag is ``member_space_limits_change_custom_quota``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_custom_quota'

    def is_member_space_limits_change_status(self):
        """
        Check if the union tag is ``member_space_limits_change_status``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_status'

    def is_member_space_limits_remove_custom_quota(self):
        """
        Check if the union tag is ``member_space_limits_remove_custom_quota``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_remove_custom_quota'

    def is_member_suggest(self):
        """
        Check if the union tag is ``member_suggest``.

        :rtype: bool
        """
        return self._tag == 'member_suggest'

    def is_member_transfer_account_contents(self):
        """
        Check if the union tag is ``member_transfer_account_contents``.

        :rtype: bool
        """
        return self._tag == 'member_transfer_account_contents'

    def is_secondary_mails_policy_changed(self):
        """
        Check if the union tag is ``secondary_mails_policy_changed``.

        :rtype: bool
        """
        return self._tag == 'secondary_mails_policy_changed'

    def is_paper_content_add_member(self):
        """
        Check if the union tag is ``paper_content_add_member``.

        :rtype: bool
        """
        return self._tag == 'paper_content_add_member'

    def is_paper_content_add_to_folder(self):
        """
        Check if the union tag is ``paper_content_add_to_folder``.

        :rtype: bool
        """
        return self._tag == 'paper_content_add_to_folder'

    def is_paper_content_archive(self):
        """
        Check if the union tag is ``paper_content_archive``.

        :rtype: bool
        """
        return self._tag == 'paper_content_archive'

    def is_paper_content_create(self):
        """
        Check if the union tag is ``paper_content_create``.

        :rtype: bool
        """
        return self._tag == 'paper_content_create'

    def is_paper_content_permanently_delete(self):
        """
        Check if the union tag is ``paper_content_permanently_delete``.

        :rtype: bool
        """
        return self._tag == 'paper_content_permanently_delete'

    def is_paper_content_remove_from_folder(self):
        """
        Check if the union tag is ``paper_content_remove_from_folder``.

        :rtype: bool
        """
        return self._tag == 'paper_content_remove_from_folder'

    def is_paper_content_remove_member(self):
        """
        Check if the union tag is ``paper_content_remove_member``.

        :rtype: bool
        """
        return self._tag == 'paper_content_remove_member'

    def is_paper_content_rename(self):
        """
        Check if the union tag is ``paper_content_rename``.

        :rtype: bool
        """
        return self._tag == 'paper_content_rename'

    def is_paper_content_restore(self):
        """
        Check if the union tag is ``paper_content_restore``.

        :rtype: bool
        """
        return self._tag == 'paper_content_restore'

    def is_paper_doc_add_comment(self):
        """
        Check if the union tag is ``paper_doc_add_comment``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_add_comment'

    def is_paper_doc_change_member_role(self):
        """
        Check if the union tag is ``paper_doc_change_member_role``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_change_member_role'

    def is_paper_doc_change_sharing_policy(self):
        """
        Check if the union tag is ``paper_doc_change_sharing_policy``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_change_sharing_policy'

    def is_paper_doc_change_subscription(self):
        """
        Check if the union tag is ``paper_doc_change_subscription``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_change_subscription'

    def is_paper_doc_deleted(self):
        """
        Check if the union tag is ``paper_doc_deleted``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_deleted'

    def is_paper_doc_delete_comment(self):
        """
        Check if the union tag is ``paper_doc_delete_comment``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_delete_comment'

    def is_paper_doc_download(self):
        """
        Check if the union tag is ``paper_doc_download``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_download'

    def is_paper_doc_edit(self):
        """
        Check if the union tag is ``paper_doc_edit``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_edit'

    def is_paper_doc_edit_comment(self):
        """
        Check if the union tag is ``paper_doc_edit_comment``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_edit_comment'

    def is_paper_doc_followed(self):
        """
        Check if the union tag is ``paper_doc_followed``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_followed'

    def is_paper_doc_mention(self):
        """
        Check if the union tag is ``paper_doc_mention``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_mention'

    def is_paper_doc_ownership_changed(self):
        """
        Check if the union tag is ``paper_doc_ownership_changed``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_ownership_changed'

    def is_paper_doc_request_access(self):
        """
        Check if the union tag is ``paper_doc_request_access``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_request_access'

    def is_paper_doc_resolve_comment(self):
        """
        Check if the union tag is ``paper_doc_resolve_comment``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_resolve_comment'

    def is_paper_doc_revert(self):
        """
        Check if the union tag is ``paper_doc_revert``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_revert'

    def is_paper_doc_slack_share(self):
        """
        Check if the union tag is ``paper_doc_slack_share``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_slack_share'

    def is_paper_doc_team_invite(self):
        """
        Check if the union tag is ``paper_doc_team_invite``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_team_invite'

    def is_paper_doc_trashed(self):
        """
        Check if the union tag is ``paper_doc_trashed``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_trashed'

    def is_paper_doc_unresolve_comment(self):
        """
        Check if the union tag is ``paper_doc_unresolve_comment``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_unresolve_comment'

    def is_paper_doc_untrashed(self):
        """
        Check if the union tag is ``paper_doc_untrashed``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_untrashed'

    def is_paper_doc_view(self):
        """
        Check if the union tag is ``paper_doc_view``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_view'

    def is_paper_external_view_allow(self):
        """
        Check if the union tag is ``paper_external_view_allow``.

        :rtype: bool
        """
        return self._tag == 'paper_external_view_allow'

    def is_paper_external_view_default_team(self):
        """
        Check if the union tag is ``paper_external_view_default_team``.

        :rtype: bool
        """
        return self._tag == 'paper_external_view_default_team'

    def is_paper_external_view_forbid(self):
        """
        Check if the union tag is ``paper_external_view_forbid``.

        :rtype: bool
        """
        return self._tag == 'paper_external_view_forbid'

    def is_paper_folder_change_subscription(self):
        """
        Check if the union tag is ``paper_folder_change_subscription``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_change_subscription'

    def is_paper_folder_deleted(self):
        """
        Check if the union tag is ``paper_folder_deleted``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_deleted'

    def is_paper_folder_followed(self):
        """
        Check if the union tag is ``paper_folder_followed``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_followed'

    def is_paper_folder_team_invite(self):
        """
        Check if the union tag is ``paper_folder_team_invite``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_team_invite'

    def is_paper_published_link_create(self):
        """
        Check if the union tag is ``paper_published_link_create``.

        :rtype: bool
        """
        return self._tag == 'paper_published_link_create'

    def is_paper_published_link_disabled(self):
        """
        Check if the union tag is ``paper_published_link_disabled``.

        :rtype: bool
        """
        return self._tag == 'paper_published_link_disabled'

    def is_paper_published_link_view(self):
        """
        Check if the union tag is ``paper_published_link_view``.

        :rtype: bool
        """
        return self._tag == 'paper_published_link_view'

    def is_password_change(self):
        """
        Check if the union tag is ``password_change``.

        :rtype: bool
        """
        return self._tag == 'password_change'

    def is_password_reset(self):
        """
        Check if the union tag is ``password_reset``.

        :rtype: bool
        """
        return self._tag == 'password_reset'

    def is_password_reset_all(self):
        """
        Check if the union tag is ``password_reset_all``.

        :rtype: bool
        """
        return self._tag == 'password_reset_all'

    def is_emm_create_exceptions_report(self):
        """
        Check if the union tag is ``emm_create_exceptions_report``.

        :rtype: bool
        """
        return self._tag == 'emm_create_exceptions_report'

    def is_emm_create_usage_report(self):
        """
        Check if the union tag is ``emm_create_usage_report``.

        :rtype: bool
        """
        return self._tag == 'emm_create_usage_report'

    def is_export_members_report(self):
        """
        Check if the union tag is ``export_members_report``.

        :rtype: bool
        """
        return self._tag == 'export_members_report'

    def is_paper_admin_export_start(self):
        """
        Check if the union tag is ``paper_admin_export_start``.

        :rtype: bool
        """
        return self._tag == 'paper_admin_export_start'

    def is_smart_sync_create_admin_privilege_report(self):
        """
        Check if the union tag is ``smart_sync_create_admin_privilege_report``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_create_admin_privilege_report'

    def is_team_activity_create_report(self):
        """
        Check if the union tag is ``team_activity_create_report``.

        :rtype: bool
        """
        return self._tag == 'team_activity_create_report'

    def is_team_activity_create_report_fail(self):
        """
        Check if the union tag is ``team_activity_create_report_fail``.

        :rtype: bool
        """
        return self._tag == 'team_activity_create_report_fail'

    def is_collection_share(self):
        """
        Check if the union tag is ``collection_share``.

        :rtype: bool
        """
        return self._tag == 'collection_share'

    def is_note_acl_invite_only(self):
        """
        Check if the union tag is ``note_acl_invite_only``.

        :rtype: bool
        """
        return self._tag == 'note_acl_invite_only'

    def is_note_acl_link(self):
        """
        Check if the union tag is ``note_acl_link``.

        :rtype: bool
        """
        return self._tag == 'note_acl_link'

    def is_note_acl_team_link(self):
        """
        Check if the union tag is ``note_acl_team_link``.

        :rtype: bool
        """
        return self._tag == 'note_acl_team_link'

    def is_note_shared(self):
        """
        Check if the union tag is ``note_shared``.

        :rtype: bool
        """
        return self._tag == 'note_shared'

    def is_note_share_receive(self):
        """
        Check if the union tag is ``note_share_receive``.

        :rtype: bool
        """
        return self._tag == 'note_share_receive'

    def is_open_note_shared(self):
        """
        Check if the union tag is ``open_note_shared``.

        :rtype: bool
        """
        return self._tag == 'open_note_shared'

    def is_sf_add_group(self):
        """
        Check if the union tag is ``sf_add_group``.

        :rtype: bool
        """
        return self._tag == 'sf_add_group'

    def is_sf_allow_non_members_to_view_shared_links(self):
        """
        Check if the union tag is ``sf_allow_non_members_to_view_shared_links``.

        :rtype: bool
        """
        return self._tag == 'sf_allow_non_members_to_view_shared_links'

    def is_sf_external_invite_warn(self):
        """
        Check if the union tag is ``sf_external_invite_warn``.

        :rtype: bool
        """
        return self._tag == 'sf_external_invite_warn'

    def is_sf_fb_invite(self):
        """
        Check if the union tag is ``sf_fb_invite``.

        :rtype: bool
        """
        return self._tag == 'sf_fb_invite'

    def is_sf_fb_invite_change_role(self):
        """
        Check if the union tag is ``sf_fb_invite_change_role``.

        :rtype: bool
        """
        return self._tag == 'sf_fb_invite_change_role'

    def is_sf_fb_uninvite(self):
        """
        Check if the union tag is ``sf_fb_uninvite``.

        :rtype: bool
        """
        return self._tag == 'sf_fb_uninvite'

    def is_sf_invite_group(self):
        """
        Check if the union tag is ``sf_invite_group``.

        :rtype: bool
        """
        return self._tag == 'sf_invite_group'

    def is_sf_team_grant_access(self):
        """
        Check if the union tag is ``sf_team_grant_access``.

        :rtype: bool
        """
        return self._tag == 'sf_team_grant_access'

    def is_sf_team_invite(self):
        """
        Check if the union tag is ``sf_team_invite``.

        :rtype: bool
        """
        return self._tag == 'sf_team_invite'

    def is_sf_team_invite_change_role(self):
        """
        Check if the union tag is ``sf_team_invite_change_role``.

        :rtype: bool
        """
        return self._tag == 'sf_team_invite_change_role'

    def is_sf_team_join(self):
        """
        Check if the union tag is ``sf_team_join``.

        :rtype: bool
        """
        return self._tag == 'sf_team_join'

    def is_sf_team_join_from_oob_link(self):
        """
        Check if the union tag is ``sf_team_join_from_oob_link``.

        :rtype: bool
        """
        return self._tag == 'sf_team_join_from_oob_link'

    def is_sf_team_uninvite(self):
        """
        Check if the union tag is ``sf_team_uninvite``.

        :rtype: bool
        """
        return self._tag == 'sf_team_uninvite'

    def is_shared_content_add_invitees(self):
        """
        Check if the union tag is ``shared_content_add_invitees``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_invitees'

    def is_shared_content_add_link_expiry(self):
        """
        Check if the union tag is ``shared_content_add_link_expiry``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_link_expiry'

    def is_shared_content_add_link_password(self):
        """
        Check if the union tag is ``shared_content_add_link_password``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_link_password'

    def is_shared_content_add_member(self):
        """
        Check if the union tag is ``shared_content_add_member``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_member'

    def is_shared_content_change_downloads_policy(self):
        """
        Check if the union tag is ``shared_content_change_downloads_policy``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_downloads_policy'

    def is_shared_content_change_invitee_role(self):
        """
        Check if the union tag is ``shared_content_change_invitee_role``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_invitee_role'

    def is_shared_content_change_link_audience(self):
        """
        Check if the union tag is ``shared_content_change_link_audience``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_link_audience'

    def is_shared_content_change_link_expiry(self):
        """
        Check if the union tag is ``shared_content_change_link_expiry``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_link_expiry'

    def is_shared_content_change_link_password(self):
        """
        Check if the union tag is ``shared_content_change_link_password``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_link_password'

    def is_shared_content_change_member_role(self):
        """
        Check if the union tag is ``shared_content_change_member_role``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_member_role'

    def is_shared_content_change_viewer_info_policy(self):
        """
        Check if the union tag is ``shared_content_change_viewer_info_policy``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_viewer_info_policy'

    def is_shared_content_claim_invitation(self):
        """
        Check if the union tag is ``shared_content_claim_invitation``.

        :rtype: bool
        """
        return self._tag == 'shared_content_claim_invitation'

    def is_shared_content_copy(self):
        """
        Check if the union tag is ``shared_content_copy``.

        :rtype: bool
        """
        return self._tag == 'shared_content_copy'

    def is_shared_content_download(self):
        """
        Check if the union tag is ``shared_content_download``.

        :rtype: bool
        """
        return self._tag == 'shared_content_download'

    def is_shared_content_relinquish_membership(self):
        """
        Check if the union tag is ``shared_content_relinquish_membership``.

        :rtype: bool
        """
        return self._tag == 'shared_content_relinquish_membership'

    def is_shared_content_remove_invitees(self):
        """
        Check if the union tag is ``shared_content_remove_invitees``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_invitees'

    def is_shared_content_remove_link_expiry(self):
        """
        Check if the union tag is ``shared_content_remove_link_expiry``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_link_expiry'

    def is_shared_content_remove_link_password(self):
        """
        Check if the union tag is ``shared_content_remove_link_password``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_link_password'

    def is_shared_content_remove_member(self):
        """
        Check if the union tag is ``shared_content_remove_member``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_member'

    def is_shared_content_request_access(self):
        """
        Check if the union tag is ``shared_content_request_access``.

        :rtype: bool
        """
        return self._tag == 'shared_content_request_access'

    def is_shared_content_unshare(self):
        """
        Check if the union tag is ``shared_content_unshare``.

        :rtype: bool
        """
        return self._tag == 'shared_content_unshare'

    def is_shared_content_view(self):
        """
        Check if the union tag is ``shared_content_view``.

        :rtype: bool
        """
        return self._tag == 'shared_content_view'

    def is_shared_folder_change_link_policy(self):
        """
        Check if the union tag is ``shared_folder_change_link_policy``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_link_policy'

    def is_shared_folder_change_members_inheritance_policy(self):
        """
        Check if the union tag is ``shared_folder_change_members_inheritance_policy``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_members_inheritance_policy'

    def is_shared_folder_change_members_management_policy(self):
        """
        Check if the union tag is ``shared_folder_change_members_management_policy``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_members_management_policy'

    def is_shared_folder_change_members_policy(self):
        """
        Check if the union tag is ``shared_folder_change_members_policy``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_members_policy'

    def is_shared_folder_create(self):
        """
        Check if the union tag is ``shared_folder_create``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_create'

    def is_shared_folder_decline_invitation(self):
        """
        Check if the union tag is ``shared_folder_decline_invitation``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_decline_invitation'

    def is_shared_folder_mount(self):
        """
        Check if the union tag is ``shared_folder_mount``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_mount'

    def is_shared_folder_nest(self):
        """
        Check if the union tag is ``shared_folder_nest``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_nest'

    def is_shared_folder_transfer_ownership(self):
        """
        Check if the union tag is ``shared_folder_transfer_ownership``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_transfer_ownership'

    def is_shared_folder_unmount(self):
        """
        Check if the union tag is ``shared_folder_unmount``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_unmount'

    def is_shared_link_add_expiry(self):
        """
        Check if the union tag is ``shared_link_add_expiry``.

        :rtype: bool
        """
        return self._tag == 'shared_link_add_expiry'

    def is_shared_link_change_expiry(self):
        """
        Check if the union tag is ``shared_link_change_expiry``.

        :rtype: bool
        """
        return self._tag == 'shared_link_change_expiry'

    def is_shared_link_change_visibility(self):
        """
        Check if the union tag is ``shared_link_change_visibility``.

        :rtype: bool
        """
        return self._tag == 'shared_link_change_visibility'

    def is_shared_link_copy(self):
        """
        Check if the union tag is ``shared_link_copy``.

        :rtype: bool
        """
        return self._tag == 'shared_link_copy'

    def is_shared_link_create(self):
        """
        Check if the union tag is ``shared_link_create``.

        :rtype: bool
        """
        return self._tag == 'shared_link_create'

    def is_shared_link_disable(self):
        """
        Check if the union tag is ``shared_link_disable``.

        :rtype: bool
        """
        return self._tag == 'shared_link_disable'

    def is_shared_link_download(self):
        """
        Check if the union tag is ``shared_link_download``.

        :rtype: bool
        """
        return self._tag == 'shared_link_download'

    def is_shared_link_remove_expiry(self):
        """
        Check if the union tag is ``shared_link_remove_expiry``.

        :rtype: bool
        """
        return self._tag == 'shared_link_remove_expiry'

    def is_shared_link_share(self):
        """
        Check if the union tag is ``shared_link_share``.

        :rtype: bool
        """
        return self._tag == 'shared_link_share'

    def is_shared_link_view(self):
        """
        Check if the union tag is ``shared_link_view``.

        :rtype: bool
        """
        return self._tag == 'shared_link_view'

    def is_shared_note_opened(self):
        """
        Check if the union tag is ``shared_note_opened``.

        :rtype: bool
        """
        return self._tag == 'shared_note_opened'

    def is_shmodel_group_share(self):
        """
        Check if the union tag is ``shmodel_group_share``.

        :rtype: bool
        """
        return self._tag == 'shmodel_group_share'

    def is_showcase_access_granted(self):
        """
        Check if the union tag is ``showcase_access_granted``.

        :rtype: bool
        """
        return self._tag == 'showcase_access_granted'

    def is_showcase_add_member(self):
        """
        Check if the union tag is ``showcase_add_member``.

        :rtype: bool
        """
        return self._tag == 'showcase_add_member'

    def is_showcase_archived(self):
        """
        Check if the union tag is ``showcase_archived``.

        :rtype: bool
        """
        return self._tag == 'showcase_archived'

    def is_showcase_created(self):
        """
        Check if the union tag is ``showcase_created``.

        :rtype: bool
        """
        return self._tag == 'showcase_created'

    def is_showcase_delete_comment(self):
        """
        Check if the union tag is ``showcase_delete_comment``.

        :rtype: bool
        """
        return self._tag == 'showcase_delete_comment'

    def is_showcase_edited(self):
        """
        Check if the union tag is ``showcase_edited``.

        :rtype: bool
        """
        return self._tag == 'showcase_edited'

    def is_showcase_edit_comment(self):
        """
        Check if the union tag is ``showcase_edit_comment``.

        :rtype: bool
        """
        return self._tag == 'showcase_edit_comment'

    def is_showcase_file_added(self):
        """
        Check if the union tag is ``showcase_file_added``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_added'

    def is_showcase_file_download(self):
        """
        Check if the union tag is ``showcase_file_download``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_download'

    def is_showcase_file_removed(self):
        """
        Check if the union tag is ``showcase_file_removed``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_removed'

    def is_showcase_file_view(self):
        """
        Check if the union tag is ``showcase_file_view``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_view'

    def is_showcase_permanently_deleted(self):
        """
        Check if the union tag is ``showcase_permanently_deleted``.

        :rtype: bool
        """
        return self._tag == 'showcase_permanently_deleted'

    def is_showcase_post_comment(self):
        """
        Check if the union tag is ``showcase_post_comment``.

        :rtype: bool
        """
        return self._tag == 'showcase_post_comment'

    def is_showcase_remove_member(self):
        """
        Check if the union tag is ``showcase_remove_member``.

        :rtype: bool
        """
        return self._tag == 'showcase_remove_member'

    def is_showcase_renamed(self):
        """
        Check if the union tag is ``showcase_renamed``.

        :rtype: bool
        """
        return self._tag == 'showcase_renamed'

    def is_showcase_request_access(self):
        """
        Check if the union tag is ``showcase_request_access``.

        :rtype: bool
        """
        return self._tag == 'showcase_request_access'

    def is_showcase_resolve_comment(self):
        """
        Check if the union tag is ``showcase_resolve_comment``.

        :rtype: bool
        """
        return self._tag == 'showcase_resolve_comment'

    def is_showcase_restored(self):
        """
        Check if the union tag is ``showcase_restored``.

        :rtype: bool
        """
        return self._tag == 'showcase_restored'

    def is_showcase_trashed(self):
        """
        Check if the union tag is ``showcase_trashed``.

        :rtype: bool
        """
        return self._tag == 'showcase_trashed'

    def is_showcase_trashed_deprecated(self):
        """
        Check if the union tag is ``showcase_trashed_deprecated``.

        :rtype: bool
        """
        return self._tag == 'showcase_trashed_deprecated'

    def is_showcase_unresolve_comment(self):
        """
        Check if the union tag is ``showcase_unresolve_comment``.

        :rtype: bool
        """
        return self._tag == 'showcase_unresolve_comment'

    def is_showcase_untrashed(self):
        """
        Check if the union tag is ``showcase_untrashed``.

        :rtype: bool
        """
        return self._tag == 'showcase_untrashed'

    def is_showcase_untrashed_deprecated(self):
        """
        Check if the union tag is ``showcase_untrashed_deprecated``.

        :rtype: bool
        """
        return self._tag == 'showcase_untrashed_deprecated'

    def is_showcase_view(self):
        """
        Check if the union tag is ``showcase_view``.

        :rtype: bool
        """
        return self._tag == 'showcase_view'

    def is_sso_add_cert(self):
        """
        Check if the union tag is ``sso_add_cert``.

        :rtype: bool
        """
        return self._tag == 'sso_add_cert'

    def is_sso_add_login_url(self):
        """
        Check if the union tag is ``sso_add_login_url``.

        :rtype: bool
        """
        return self._tag == 'sso_add_login_url'

    def is_sso_add_logout_url(self):
        """
        Check if the union tag is ``sso_add_logout_url``.

        :rtype: bool
        """
        return self._tag == 'sso_add_logout_url'

    def is_sso_change_cert(self):
        """
        Check if the union tag is ``sso_change_cert``.

        :rtype: bool
        """
        return self._tag == 'sso_change_cert'

    def is_sso_change_login_url(self):
        """
        Check if the union tag is ``sso_change_login_url``.

        :rtype: bool
        """
        return self._tag == 'sso_change_login_url'

    def is_sso_change_logout_url(self):
        """
        Check if the union tag is ``sso_change_logout_url``.

        :rtype: bool
        """
        return self._tag == 'sso_change_logout_url'

    def is_sso_change_saml_identity_mode(self):
        """
        Check if the union tag is ``sso_change_saml_identity_mode``.

        :rtype: bool
        """
        return self._tag == 'sso_change_saml_identity_mode'

    def is_sso_remove_cert(self):
        """
        Check if the union tag is ``sso_remove_cert``.

        :rtype: bool
        """
        return self._tag == 'sso_remove_cert'

    def is_sso_remove_login_url(self):
        """
        Check if the union tag is ``sso_remove_login_url``.

        :rtype: bool
        """
        return self._tag == 'sso_remove_login_url'

    def is_sso_remove_logout_url(self):
        """
        Check if the union tag is ``sso_remove_logout_url``.

        :rtype: bool
        """
        return self._tag == 'sso_remove_logout_url'

    def is_team_folder_change_status(self):
        """
        Check if the union tag is ``team_folder_change_status``.

        :rtype: bool
        """
        return self._tag == 'team_folder_change_status'

    def is_team_folder_create(self):
        """
        Check if the union tag is ``team_folder_create``.

        :rtype: bool
        """
        return self._tag == 'team_folder_create'

    def is_team_folder_downgrade(self):
        """
        Check if the union tag is ``team_folder_downgrade``.

        :rtype: bool
        """
        return self._tag == 'team_folder_downgrade'

    def is_team_folder_permanently_delete(self):
        """
        Check if the union tag is ``team_folder_permanently_delete``.

        :rtype: bool
        """
        return self._tag == 'team_folder_permanently_delete'

    def is_team_folder_rename(self):
        """
        Check if the union tag is ``team_folder_rename``.

        :rtype: bool
        """
        return self._tag == 'team_folder_rename'

    def is_team_selective_sync_settings_changed(self):
        """
        Check if the union tag is ``team_selective_sync_settings_changed``.

        :rtype: bool
        """
        return self._tag == 'team_selective_sync_settings_changed'

    def is_account_capture_change_policy(self):
        """
        Check if the union tag is ``account_capture_change_policy``.

        :rtype: bool
        """
        return self._tag == 'account_capture_change_policy'

    def is_allow_download_disabled(self):
        """
        Check if the union tag is ``allow_download_disabled``.

        :rtype: bool
        """
        return self._tag == 'allow_download_disabled'

    def is_allow_download_enabled(self):
        """
        Check if the union tag is ``allow_download_enabled``.

        :rtype: bool
        """
        return self._tag == 'allow_download_enabled'

    def is_camera_uploads_policy_changed(self):
        """
        Check if the union tag is ``camera_uploads_policy_changed``.

        :rtype: bool
        """
        return self._tag == 'camera_uploads_policy_changed'

    def is_data_placement_restriction_change_policy(self):
        """
        Check if the union tag is ``data_placement_restriction_change_policy``.

        :rtype: bool
        """
        return self._tag == 'data_placement_restriction_change_policy'

    def is_data_placement_restriction_satisfy_policy(self):
        """
        Check if the union tag is ``data_placement_restriction_satisfy_policy``.

        :rtype: bool
        """
        return self._tag == 'data_placement_restriction_satisfy_policy'

    def is_device_approvals_change_desktop_policy(self):
        """
        Check if the union tag is ``device_approvals_change_desktop_policy``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_desktop_policy'

    def is_device_approvals_change_mobile_policy(self):
        """
        Check if the union tag is ``device_approvals_change_mobile_policy``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_mobile_policy'

    def is_device_approvals_change_overage_action(self):
        """
        Check if the union tag is ``device_approvals_change_overage_action``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_overage_action'

    def is_device_approvals_change_unlink_action(self):
        """
        Check if the union tag is ``device_approvals_change_unlink_action``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_unlink_action'

    def is_directory_restrictions_add_members(self):
        """
        Check if the union tag is ``directory_restrictions_add_members``.

        :rtype: bool
        """
        return self._tag == 'directory_restrictions_add_members'

    def is_directory_restrictions_remove_members(self):
        """
        Check if the union tag is ``directory_restrictions_remove_members``.

        :rtype: bool
        """
        return self._tag == 'directory_restrictions_remove_members'

    def is_emm_add_exception(self):
        """
        Check if the union tag is ``emm_add_exception``.

        :rtype: bool
        """
        return self._tag == 'emm_add_exception'

    def is_emm_change_policy(self):
        """
        Check if the union tag is ``emm_change_policy``.

        :rtype: bool
        """
        return self._tag == 'emm_change_policy'

    def is_emm_remove_exception(self):
        """
        Check if the union tag is ``emm_remove_exception``.

        :rtype: bool
        """
        return self._tag == 'emm_remove_exception'

    def is_extended_version_history_change_policy(self):
        """
        Check if the union tag is ``extended_version_history_change_policy``.

        :rtype: bool
        """
        return self._tag == 'extended_version_history_change_policy'

    def is_file_comments_change_policy(self):
        """
        Check if the union tag is ``file_comments_change_policy``.

        :rtype: bool
        """
        return self._tag == 'file_comments_change_policy'

    def is_file_requests_change_policy(self):
        """
        Check if the union tag is ``file_requests_change_policy``.

        :rtype: bool
        """
        return self._tag == 'file_requests_change_policy'

    def is_file_requests_emails_enabled(self):
        """
        Check if the union tag is ``file_requests_emails_enabled``.

        :rtype: bool
        """
        return self._tag == 'file_requests_emails_enabled'

    def is_file_requests_emails_restricted_to_team_only(self):
        """
        Check if the union tag is ``file_requests_emails_restricted_to_team_only``.

        :rtype: bool
        """
        return self._tag == 'file_requests_emails_restricted_to_team_only'

    def is_google_sso_change_policy(self):
        """
        Check if the union tag is ``google_sso_change_policy``.

        :rtype: bool
        """
        return self._tag == 'google_sso_change_policy'

    def is_group_user_management_change_policy(self):
        """
        Check if the union tag is ``group_user_management_change_policy``.

        :rtype: bool
        """
        return self._tag == 'group_user_management_change_policy'

    def is_integration_policy_changed(self):
        """
        Check if the union tag is ``integration_policy_changed``.

        :rtype: bool
        """
        return self._tag == 'integration_policy_changed'

    def is_member_requests_change_policy(self):
        """
        Check if the union tag is ``member_requests_change_policy``.

        :rtype: bool
        """
        return self._tag == 'member_requests_change_policy'

    def is_member_space_limits_add_exception(self):
        """
        Check if the union tag is ``member_space_limits_add_exception``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_add_exception'

    def is_member_space_limits_change_caps_type_policy(self):
        """
        Check if the union tag is ``member_space_limits_change_caps_type_policy``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_caps_type_policy'

    def is_member_space_limits_change_policy(self):
        """
        Check if the union tag is ``member_space_limits_change_policy``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_policy'

    def is_member_space_limits_remove_exception(self):
        """
        Check if the union tag is ``member_space_limits_remove_exception``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_remove_exception'

    def is_member_suggestions_change_policy(self):
        """
        Check if the union tag is ``member_suggestions_change_policy``.

        :rtype: bool
        """
        return self._tag == 'member_suggestions_change_policy'

    def is_microsoft_office_addin_change_policy(self):
        """
        Check if the union tag is ``microsoft_office_addin_change_policy``.

        :rtype: bool
        """
        return self._tag == 'microsoft_office_addin_change_policy'

    def is_network_control_change_policy(self):
        """
        Check if the union tag is ``network_control_change_policy``.

        :rtype: bool
        """
        return self._tag == 'network_control_change_policy'

    def is_paper_change_deployment_policy(self):
        """
        Check if the union tag is ``paper_change_deployment_policy``.

        :rtype: bool
        """
        return self._tag == 'paper_change_deployment_policy'

    def is_paper_change_member_link_policy(self):
        """
        Check if the union tag is ``paper_change_member_link_policy``.

        :rtype: bool
        """
        return self._tag == 'paper_change_member_link_policy'

    def is_paper_change_member_policy(self):
        """
        Check if the union tag is ``paper_change_member_policy``.

        :rtype: bool
        """
        return self._tag == 'paper_change_member_policy'

    def is_paper_change_policy(self):
        """
        Check if the union tag is ``paper_change_policy``.

        :rtype: bool
        """
        return self._tag == 'paper_change_policy'

    def is_paper_default_folder_policy_changed(self):
        """
        Check if the union tag is ``paper_default_folder_policy_changed``.

        :rtype: bool
        """
        return self._tag == 'paper_default_folder_policy_changed'

    def is_paper_desktop_policy_changed(self):
        """
        Check if the union tag is ``paper_desktop_policy_changed``.

        :rtype: bool
        """
        return self._tag == 'paper_desktop_policy_changed'

    def is_paper_enabled_users_group_addition(self):
        """
        Check if the union tag is ``paper_enabled_users_group_addition``.

        :rtype: bool
        """
        return self._tag == 'paper_enabled_users_group_addition'

    def is_paper_enabled_users_group_removal(self):
        """
        Check if the union tag is ``paper_enabled_users_group_removal``.

        :rtype: bool
        """
        return self._tag == 'paper_enabled_users_group_removal'

    def is_permanent_delete_change_policy(self):
        """
        Check if the union tag is ``permanent_delete_change_policy``.

        :rtype: bool
        """
        return self._tag == 'permanent_delete_change_policy'

    def is_reseller_support_change_policy(self):
        """
        Check if the union tag is ``reseller_support_change_policy``.

        :rtype: bool
        """
        return self._tag == 'reseller_support_change_policy'

    def is_sharing_change_folder_join_policy(self):
        """
        Check if the union tag is ``sharing_change_folder_join_policy``.

        :rtype: bool
        """
        return self._tag == 'sharing_change_folder_join_policy'

    def is_sharing_change_link_policy(self):
        """
        Check if the union tag is ``sharing_change_link_policy``.

        :rtype: bool
        """
        return self._tag == 'sharing_change_link_policy'

    def is_sharing_change_member_policy(self):
        """
        Check if the union tag is ``sharing_change_member_policy``.

        :rtype: bool
        """
        return self._tag == 'sharing_change_member_policy'

    def is_showcase_change_download_policy(self):
        """
        Check if the union tag is ``showcase_change_download_policy``.

        :rtype: bool
        """
        return self._tag == 'showcase_change_download_policy'

    def is_showcase_change_enabled_policy(self):
        """
        Check if the union tag is ``showcase_change_enabled_policy``.

        :rtype: bool
        """
        return self._tag == 'showcase_change_enabled_policy'

    def is_showcase_change_external_sharing_policy(self):
        """
        Check if the union tag is ``showcase_change_external_sharing_policy``.

        :rtype: bool
        """
        return self._tag == 'showcase_change_external_sharing_policy'

    def is_smart_sync_change_policy(self):
        """
        Check if the union tag is ``smart_sync_change_policy``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_change_policy'

    def is_smart_sync_not_opt_out(self):
        """
        Check if the union tag is ``smart_sync_not_opt_out``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_not_opt_out'

    def is_smart_sync_opt_out(self):
        """
        Check if the union tag is ``smart_sync_opt_out``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_opt_out'

    def is_sso_change_policy(self):
        """
        Check if the union tag is ``sso_change_policy``.

        :rtype: bool
        """
        return self._tag == 'sso_change_policy'

    def is_team_extensions_policy_changed(self):
        """
        Check if the union tag is ``team_extensions_policy_changed``.

        :rtype: bool
        """
        return self._tag == 'team_extensions_policy_changed'

    def is_team_selective_sync_policy_changed(self):
        """
        Check if the union tag is ``team_selective_sync_policy_changed``.

        :rtype: bool
        """
        return self._tag == 'team_selective_sync_policy_changed'

    def is_tfa_change_policy(self):
        """
        Check if the union tag is ``tfa_change_policy``.

        :rtype: bool
        """
        return self._tag == 'tfa_change_policy'

    def is_two_account_change_policy(self):
        """
        Check if the union tag is ``two_account_change_policy``.

        :rtype: bool
        """
        return self._tag == 'two_account_change_policy'

    def is_viewer_info_policy_changed(self):
        """
        Check if the union tag is ``viewer_info_policy_changed``.

        :rtype: bool
        """
        return self._tag == 'viewer_info_policy_changed'

    def is_web_sessions_change_fixed_length_policy(self):
        """
        Check if the union tag is ``web_sessions_change_fixed_length_policy``.

        :rtype: bool
        """
        return self._tag == 'web_sessions_change_fixed_length_policy'

    def is_web_sessions_change_idle_length_policy(self):
        """
        Check if the union tag is ``web_sessions_change_idle_length_policy``.

        :rtype: bool
        """
        return self._tag == 'web_sessions_change_idle_length_policy'

    def is_team_merge_from(self):
        """
        Check if the union tag is ``team_merge_from``.

        :rtype: bool
        """
        return self._tag == 'team_merge_from'

    def is_team_merge_to(self):
        """
        Check if the union tag is ``team_merge_to``.

        :rtype: bool
        """
        return self._tag == 'team_merge_to'

    def is_team_profile_add_logo(self):
        """
        Check if the union tag is ``team_profile_add_logo``.

        :rtype: bool
        """
        return self._tag == 'team_profile_add_logo'

    def is_team_profile_change_default_language(self):
        """
        Check if the union tag is ``team_profile_change_default_language``.

        :rtype: bool
        """
        return self._tag == 'team_profile_change_default_language'

    def is_team_profile_change_logo(self):
        """
        Check if the union tag is ``team_profile_change_logo``.

        :rtype: bool
        """
        return self._tag == 'team_profile_change_logo'

    def is_team_profile_change_name(self):
        """
        Check if the union tag is ``team_profile_change_name``.

        :rtype: bool
        """
        return self._tag == 'team_profile_change_name'

    def is_team_profile_remove_logo(self):
        """
        Check if the union tag is ``team_profile_remove_logo``.

        :rtype: bool
        """
        return self._tag == 'team_profile_remove_logo'

    def is_tfa_add_backup_phone(self):
        """
        Check if the union tag is ``tfa_add_backup_phone``.

        :rtype: bool
        """
        return self._tag == 'tfa_add_backup_phone'

    def is_tfa_add_security_key(self):
        """
        Check if the union tag is ``tfa_add_security_key``.

        :rtype: bool
        """
        return self._tag == 'tfa_add_security_key'

    def is_tfa_change_backup_phone(self):
        """
        Check if the union tag is ``tfa_change_backup_phone``.

        :rtype: bool
        """
        return self._tag == 'tfa_change_backup_phone'

    def is_tfa_change_status(self):
        """
        Check if the union tag is ``tfa_change_status``.

        :rtype: bool
        """
        return self._tag == 'tfa_change_status'

    def is_tfa_remove_backup_phone(self):
        """
        Check if the union tag is ``tfa_remove_backup_phone``.

        :rtype: bool
        """
        return self._tag == 'tfa_remove_backup_phone'

    def is_tfa_remove_security_key(self):
        """
        Check if the union tag is ``tfa_remove_security_key``.

        :rtype: bool
        """
        return self._tag == 'tfa_remove_security_key'

    def is_tfa_reset(self):
        """
        Check if the union tag is ``tfa_reset``.

        :rtype: bool
        """
        return self._tag == 'tfa_reset'

    def is_guest_admin_change_status(self):
        """
        Check if the union tag is ``guest_admin_change_status``.

        :rtype: bool
        """
        return self._tag == 'guest_admin_change_status'

    def is_team_merge_request_accepted(self):
        """
        Check if the union tag is ``team_merge_request_accepted``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_accepted'

    def is_team_merge_request_accepted_shown_to_primary_team(self):
        """
        Check if the union tag is ``team_merge_request_accepted_shown_to_primary_team``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_accepted_shown_to_primary_team'

    def is_team_merge_request_accepted_shown_to_secondary_team(self):
        """
        Check if the union tag is ``team_merge_request_accepted_shown_to_secondary_team``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_accepted_shown_to_secondary_team'

    def is_team_merge_request_auto_canceled(self):
        """
        Check if the union tag is ``team_merge_request_auto_canceled``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_auto_canceled'

    def is_team_merge_request_canceled(self):
        """
        Check if the union tag is ``team_merge_request_canceled``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_canceled'

    def is_team_merge_request_canceled_shown_to_primary_team(self):
        """
        Check if the union tag is ``team_merge_request_canceled_shown_to_primary_team``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_canceled_shown_to_primary_team'

    def is_team_merge_request_canceled_shown_to_secondary_team(self):
        """
        Check if the union tag is ``team_merge_request_canceled_shown_to_secondary_team``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_canceled_shown_to_secondary_team'

    def is_team_merge_request_expired(self):
        """
        Check if the union tag is ``team_merge_request_expired``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_expired'

    def is_team_merge_request_expired_shown_to_primary_team(self):
        """
        Check if the union tag is ``team_merge_request_expired_shown_to_primary_team``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_expired_shown_to_primary_team'

    def is_team_merge_request_expired_shown_to_secondary_team(self):
        """
        Check if the union tag is ``team_merge_request_expired_shown_to_secondary_team``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_expired_shown_to_secondary_team'

    def is_team_merge_request_rejected_shown_to_primary_team(self):
        """
        Check if the union tag is ``team_merge_request_rejected_shown_to_primary_team``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_rejected_shown_to_primary_team'

    def is_team_merge_request_rejected_shown_to_secondary_team(self):
        """
        Check if the union tag is ``team_merge_request_rejected_shown_to_secondary_team``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_rejected_shown_to_secondary_team'

    def is_team_merge_request_reminder(self):
        """
        Check if the union tag is ``team_merge_request_reminder``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_reminder'

    def is_team_merge_request_reminder_shown_to_primary_team(self):
        """
        Check if the union tag is ``team_merge_request_reminder_shown_to_primary_team``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_reminder_shown_to_primary_team'

    def is_team_merge_request_reminder_shown_to_secondary_team(self):
        """
        Check if the union tag is ``team_merge_request_reminder_shown_to_secondary_team``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_reminder_shown_to_secondary_team'

    def is_team_merge_request_revoked(self):
        """
        Check if the union tag is ``team_merge_request_revoked``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_revoked'

    def is_team_merge_request_sent_shown_to_primary_team(self):
        """
        Check if the union tag is ``team_merge_request_sent_shown_to_primary_team``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_sent_shown_to_primary_team'

    def is_team_merge_request_sent_shown_to_secondary_team(self):
        """
        Check if the union tag is ``team_merge_request_sent_shown_to_secondary_team``.

        :rtype: bool
        """
        return self._tag == 'team_merge_request_sent_shown_to_secondary_team'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_app_link_team(self):
        """
        (apps) Linked app for team

        Only call this if :meth:`is_app_link_team` is true.

        :rtype: AppLinkTeamType
        """
        if not self.is_app_link_team():
            raise AttributeError("tag 'app_link_team' not set")
        return self._value

    def get_app_link_user(self):
        """
        (apps) Linked app for member

        Only call this if :meth:`is_app_link_user` is true.

        :rtype: AppLinkUserType
        """
        if not self.is_app_link_user():
            raise AttributeError("tag 'app_link_user' not set")
        return self._value

    def get_app_unlink_team(self):
        """
        (apps) Unlinked app for team

        Only call this if :meth:`is_app_unlink_team` is true.

        :rtype: AppUnlinkTeamType
        """
        if not self.is_app_unlink_team():
            raise AttributeError("tag 'app_unlink_team' not set")
        return self._value

    def get_app_unlink_user(self):
        """
        (apps) Unlinked app for member

        Only call this if :meth:`is_app_unlink_user` is true.

        :rtype: AppUnlinkUserType
        """
        if not self.is_app_unlink_user():
            raise AttributeError("tag 'app_unlink_user' not set")
        return self._value

    def get_integration_connected(self):
        """
        (apps) Connected integration for member

        Only call this if :meth:`is_integration_connected` is true.

        :rtype: IntegrationConnectedType
        """
        if not self.is_integration_connected():
            raise AttributeError("tag 'integration_connected' not set")
        return self._value

    def get_integration_disconnected(self):
        """
        (apps) Disconnected integration for member

        Only call this if :meth:`is_integration_disconnected` is true.

        :rtype: IntegrationDisconnectedType
        """
        if not self.is_integration_disconnected():
            raise AttributeError("tag 'integration_disconnected' not set")
        return self._value

    def get_file_add_comment(self):
        """
        (comments) Added file comment

        Only call this if :meth:`is_file_add_comment` is true.

        :rtype: FileAddCommentType
        """
        if not self.is_file_add_comment():
            raise AttributeError("tag 'file_add_comment' not set")
        return self._value

    def get_file_change_comment_subscription(self):
        """
        (comments) Subscribed to or unsubscribed from comment notifications for
        file

        Only call this if :meth:`is_file_change_comment_subscription` is true.

        :rtype: FileChangeCommentSubscriptionType
        """
        if not self.is_file_change_comment_subscription():
            raise AttributeError("tag 'file_change_comment_subscription' not set")
        return self._value

    def get_file_delete_comment(self):
        """
        (comments) Deleted file comment

        Only call this if :meth:`is_file_delete_comment` is true.

        :rtype: FileDeleteCommentType
        """
        if not self.is_file_delete_comment():
            raise AttributeError("tag 'file_delete_comment' not set")
        return self._value

    def get_file_edit_comment(self):
        """
        (comments) Edited file comment

        Only call this if :meth:`is_file_edit_comment` is true.

        :rtype: FileEditCommentType
        """
        if not self.is_file_edit_comment():
            raise AttributeError("tag 'file_edit_comment' not set")
        return self._value

    def get_file_like_comment(self):
        """
        (comments) Liked file comment (deprecated, no longer logged)

        Only call this if :meth:`is_file_like_comment` is true.

        :rtype: FileLikeCommentType
        """
        if not self.is_file_like_comment():
            raise AttributeError("tag 'file_like_comment' not set")
        return self._value

    def get_file_resolve_comment(self):
        """
        (comments) Resolved file comment

        Only call this if :meth:`is_file_resolve_comment` is true.

        :rtype: FileResolveCommentType
        """
        if not self.is_file_resolve_comment():
            raise AttributeError("tag 'file_resolve_comment' not set")
        return self._value

    def get_file_unlike_comment(self):
        """
        (comments) Unliked file comment (deprecated, no longer logged)

        Only call this if :meth:`is_file_unlike_comment` is true.

        :rtype: FileUnlikeCommentType
        """
        if not self.is_file_unlike_comment():
            raise AttributeError("tag 'file_unlike_comment' not set")
        return self._value

    def get_file_unresolve_comment(self):
        """
        (comments) Unresolved file comment

        Only call this if :meth:`is_file_unresolve_comment` is true.

        :rtype: FileUnresolveCommentType
        """
        if not self.is_file_unresolve_comment():
            raise AttributeError("tag 'file_unresolve_comment' not set")
        return self._value

    def get_device_change_ip_desktop(self):
        """
        (devices) Changed IP address associated with active desktop session

        Only call this if :meth:`is_device_change_ip_desktop` is true.

        :rtype: DeviceChangeIpDesktopType
        """
        if not self.is_device_change_ip_desktop():
            raise AttributeError("tag 'device_change_ip_desktop' not set")
        return self._value

    def get_device_change_ip_mobile(self):
        """
        (devices) Changed IP address associated with active mobile session

        Only call this if :meth:`is_device_change_ip_mobile` is true.

        :rtype: DeviceChangeIpMobileType
        """
        if not self.is_device_change_ip_mobile():
            raise AttributeError("tag 'device_change_ip_mobile' not set")
        return self._value

    def get_device_change_ip_web(self):
        """
        (devices) Changed IP address associated with active web session

        Only call this if :meth:`is_device_change_ip_web` is true.

        :rtype: DeviceChangeIpWebType
        """
        if not self.is_device_change_ip_web():
            raise AttributeError("tag 'device_change_ip_web' not set")
        return self._value

    def get_device_delete_on_unlink_fail(self):
        """
        (devices) Failed to delete all files from unlinked device

        Only call this if :meth:`is_device_delete_on_unlink_fail` is true.

        :rtype: DeviceDeleteOnUnlinkFailType
        """
        if not self.is_device_delete_on_unlink_fail():
            raise AttributeError("tag 'device_delete_on_unlink_fail' not set")
        return self._value

    def get_device_delete_on_unlink_success(self):
        """
        (devices) Deleted all files from unlinked device

        Only call this if :meth:`is_device_delete_on_unlink_success` is true.

        :rtype: DeviceDeleteOnUnlinkSuccessType
        """
        if not self.is_device_delete_on_unlink_success():
            raise AttributeError("tag 'device_delete_on_unlink_success' not set")
        return self._value

    def get_device_link_fail(self):
        """
        (devices) Failed to link device

        Only call this if :meth:`is_device_link_fail` is true.

        :rtype: DeviceLinkFailType
        """
        if not self.is_device_link_fail():
            raise AttributeError("tag 'device_link_fail' not set")
        return self._value

    def get_device_link_success(self):
        """
        (devices) Linked device

        Only call this if :meth:`is_device_link_success` is true.

        :rtype: DeviceLinkSuccessType
        """
        if not self.is_device_link_success():
            raise AttributeError("tag 'device_link_success' not set")
        return self._value

    def get_device_management_disabled(self):
        """
        (devices) Disabled device management (deprecated, no longer logged)

        Only call this if :meth:`is_device_management_disabled` is true.

        :rtype: DeviceManagementDisabledType
        """
        if not self.is_device_management_disabled():
            raise AttributeError("tag 'device_management_disabled' not set")
        return self._value

    def get_device_management_enabled(self):
        """
        (devices) Enabled device management (deprecated, no longer logged)

        Only call this if :meth:`is_device_management_enabled` is true.

        :rtype: DeviceManagementEnabledType
        """
        if not self.is_device_management_enabled():
            raise AttributeError("tag 'device_management_enabled' not set")
        return self._value

    def get_device_unlink(self):
        """
        (devices) Disconnected device

        Only call this if :meth:`is_device_unlink` is true.

        :rtype: DeviceUnlinkType
        """
        if not self.is_device_unlink():
            raise AttributeError("tag 'device_unlink' not set")
        return self._value

    def get_emm_refresh_auth_token(self):
        """
        (devices) Refreshed auth token used for setting up EMM

        Only call this if :meth:`is_emm_refresh_auth_token` is true.

        :rtype: EmmRefreshAuthTokenType
        """
        if not self.is_emm_refresh_auth_token():
            raise AttributeError("tag 'emm_refresh_auth_token' not set")
        return self._value

    def get_account_capture_change_availability(self):
        """
        (domains) Granted/revoked option to enable account capture on team
        domains

        Only call this if :meth:`is_account_capture_change_availability` is true.

        :rtype: AccountCaptureChangeAvailabilityType
        """
        if not self.is_account_capture_change_availability():
            raise AttributeError("tag 'account_capture_change_availability' not set")
        return self._value

    def get_account_capture_migrate_account(self):
        """
        (domains) Account-captured user migrated account to team

        Only call this if :meth:`is_account_capture_migrate_account` is true.

        :rtype: AccountCaptureMigrateAccountType
        """
        if not self.is_account_capture_migrate_account():
            raise AttributeError("tag 'account_capture_migrate_account' not set")
        return self._value

    def get_account_capture_notification_emails_sent(self):
        """
        (domains) Sent proactive account capture email to all unmanaged members

        Only call this if :meth:`is_account_capture_notification_emails_sent` is true.

        :rtype: AccountCaptureNotificationEmailsSentType
        """
        if not self.is_account_capture_notification_emails_sent():
            raise AttributeError("tag 'account_capture_notification_emails_sent' not set")
        return self._value

    def get_account_capture_relinquish_account(self):
        """
        (domains) Account-captured user changed account email to personal email

        Only call this if :meth:`is_account_capture_relinquish_account` is true.

        :rtype: AccountCaptureRelinquishAccountType
        """
        if not self.is_account_capture_relinquish_account():
            raise AttributeError("tag 'account_capture_relinquish_account' not set")
        return self._value

    def get_disabled_domain_invites(self):
        """
        (domains) Disabled domain invites (deprecated, no longer logged)

        Only call this if :meth:`is_disabled_domain_invites` is true.

        :rtype: DisabledDomainInvitesType
        """
        if not self.is_disabled_domain_invites():
            raise AttributeError("tag 'disabled_domain_invites' not set")
        return self._value

    def get_domain_invites_approve_request_to_join_team(self):
        """
        (domains) Approved user's request to join team

        Only call this if :meth:`is_domain_invites_approve_request_to_join_team` is true.

        :rtype: DomainInvitesApproveRequestToJoinTeamType
        """
        if not self.is_domain_invites_approve_request_to_join_team():
            raise AttributeError("tag 'domain_invites_approve_request_to_join_team' not set")
        return self._value

    def get_domain_invites_decline_request_to_join_team(self):
        """
        (domains) Declined user's request to join team

        Only call this if :meth:`is_domain_invites_decline_request_to_join_team` is true.

        :rtype: DomainInvitesDeclineRequestToJoinTeamType
        """
        if not self.is_domain_invites_decline_request_to_join_team():
            raise AttributeError("tag 'domain_invites_decline_request_to_join_team' not set")
        return self._value

    def get_domain_invites_email_existing_users(self):
        """
        (domains) Sent domain invites to existing domain accounts (deprecated,
        no longer logged)

        Only call this if :meth:`is_domain_invites_email_existing_users` is true.

        :rtype: DomainInvitesEmailExistingUsersType
        """
        if not self.is_domain_invites_email_existing_users():
            raise AttributeError("tag 'domain_invites_email_existing_users' not set")
        return self._value

    def get_domain_invites_request_to_join_team(self):
        """
        (domains) Requested to join team

        Only call this if :meth:`is_domain_invites_request_to_join_team` is true.

        :rtype: DomainInvitesRequestToJoinTeamType
        """
        if not self.is_domain_invites_request_to_join_team():
            raise AttributeError("tag 'domain_invites_request_to_join_team' not set")
        return self._value

    def get_domain_invites_set_invite_new_user_pref_to_no(self):
        """
        (domains) Disabled "Automatically invite new users" (deprecated, no
        longer logged)

        Only call this if :meth:`is_domain_invites_set_invite_new_user_pref_to_no` is true.

        :rtype: DomainInvitesSetInviteNewUserPrefToNoType
        """
        if not self.is_domain_invites_set_invite_new_user_pref_to_no():
            raise AttributeError("tag 'domain_invites_set_invite_new_user_pref_to_no' not set")
        return self._value

    def get_domain_invites_set_invite_new_user_pref_to_yes(self):
        """
        (domains) Enabled "Automatically invite new users" (deprecated, no
        longer logged)

        Only call this if :meth:`is_domain_invites_set_invite_new_user_pref_to_yes` is true.

        :rtype: DomainInvitesSetInviteNewUserPrefToYesType
        """
        if not self.is_domain_invites_set_invite_new_user_pref_to_yes():
            raise AttributeError("tag 'domain_invites_set_invite_new_user_pref_to_yes' not set")
        return self._value

    def get_domain_verification_add_domain_fail(self):
        """
        (domains) Failed to verify team domain

        Only call this if :meth:`is_domain_verification_add_domain_fail` is true.

        :rtype: DomainVerificationAddDomainFailType
        """
        if not self.is_domain_verification_add_domain_fail():
            raise AttributeError("tag 'domain_verification_add_domain_fail' not set")
        return self._value

    def get_domain_verification_add_domain_success(self):
        """
        (domains) Verified team domain

        Only call this if :meth:`is_domain_verification_add_domain_success` is true.

        :rtype: DomainVerificationAddDomainSuccessType
        """
        if not self.is_domain_verification_add_domain_success():
            raise AttributeError("tag 'domain_verification_add_domain_success' not set")
        return self._value

    def get_domain_verification_remove_domain(self):
        """
        (domains) Removed domain from list of verified team domains

        Only call this if :meth:`is_domain_verification_remove_domain` is true.

        :rtype: DomainVerificationRemoveDomainType
        """
        if not self.is_domain_verification_remove_domain():
            raise AttributeError("tag 'domain_verification_remove_domain' not set")
        return self._value

    def get_enabled_domain_invites(self):
        """
        (domains) Enabled domain invites (deprecated, no longer logged)

        Only call this if :meth:`is_enabled_domain_invites` is true.

        :rtype: EnabledDomainInvitesType
        """
        if not self.is_enabled_domain_invites():
            raise AttributeError("tag 'enabled_domain_invites' not set")
        return self._value

    def get_create_folder(self):
        """
        (file_operations) Created folders (deprecated, no longer logged)

        Only call this if :meth:`is_create_folder` is true.

        :rtype: CreateFolderType
        """
        if not self.is_create_folder():
            raise AttributeError("tag 'create_folder' not set")
        return self._value

    def get_file_add(self):
        """
        (file_operations) Added files and/or folders

        Only call this if :meth:`is_file_add` is true.

        :rtype: FileAddType
        """
        if not self.is_file_add():
            raise AttributeError("tag 'file_add' not set")
        return self._value

    def get_file_copy(self):
        """
        (file_operations) Copied files and/or folders

        Only call this if :meth:`is_file_copy` is true.

        :rtype: FileCopyType
        """
        if not self.is_file_copy():
            raise AttributeError("tag 'file_copy' not set")
        return self._value

    def get_file_delete(self):
        """
        (file_operations) Deleted files and/or folders

        Only call this if :meth:`is_file_delete` is true.

        :rtype: FileDeleteType
        """
        if not self.is_file_delete():
            raise AttributeError("tag 'file_delete' not set")
        return self._value

    def get_file_download(self):
        """
        (file_operations) Downloaded files and/or folders

        Only call this if :meth:`is_file_download` is true.

        :rtype: FileDownloadType
        """
        if not self.is_file_download():
            raise AttributeError("tag 'file_download' not set")
        return self._value

    def get_file_edit(self):
        """
        (file_operations) Edited files

        Only call this if :meth:`is_file_edit` is true.

        :rtype: FileEditType
        """
        if not self.is_file_edit():
            raise AttributeError("tag 'file_edit' not set")
        return self._value

    def get_file_get_copy_reference(self):
        """
        (file_operations) Created copy reference to file/folder

        Only call this if :meth:`is_file_get_copy_reference` is true.

        :rtype: FileGetCopyReferenceType
        """
        if not self.is_file_get_copy_reference():
            raise AttributeError("tag 'file_get_copy_reference' not set")
        return self._value

    def get_file_move(self):
        """
        (file_operations) Moved files and/or folders

        Only call this if :meth:`is_file_move` is true.

        :rtype: FileMoveType
        """
        if not self.is_file_move():
            raise AttributeError("tag 'file_move' not set")
        return self._value

    def get_file_permanently_delete(self):
        """
        (file_operations) Permanently deleted files and/or folders

        Only call this if :meth:`is_file_permanently_delete` is true.

        :rtype: FilePermanentlyDeleteType
        """
        if not self.is_file_permanently_delete():
            raise AttributeError("tag 'file_permanently_delete' not set")
        return self._value

    def get_file_preview(self):
        """
        (file_operations) Previewed files and/or folders

        Only call this if :meth:`is_file_preview` is true.

        :rtype: FilePreviewType
        """
        if not self.is_file_preview():
            raise AttributeError("tag 'file_preview' not set")
        return self._value

    def get_file_rename(self):
        """
        (file_operations) Renamed files and/or folders

        Only call this if :meth:`is_file_rename` is true.

        :rtype: FileRenameType
        """
        if not self.is_file_rename():
            raise AttributeError("tag 'file_rename' not set")
        return self._value

    def get_file_restore(self):
        """
        (file_operations) Restored deleted files and/or folders

        Only call this if :meth:`is_file_restore` is true.

        :rtype: FileRestoreType
        """
        if not self.is_file_restore():
            raise AttributeError("tag 'file_restore' not set")
        return self._value

    def get_file_revert(self):
        """
        (file_operations) Reverted files to previous version

        Only call this if :meth:`is_file_revert` is true.

        :rtype: FileRevertType
        """
        if not self.is_file_revert():
            raise AttributeError("tag 'file_revert' not set")
        return self._value

    def get_file_rollback_changes(self):
        """
        (file_operations) Rolled back file actions

        Only call this if :meth:`is_file_rollback_changes` is true.

        :rtype: FileRollbackChangesType
        """
        if not self.is_file_rollback_changes():
            raise AttributeError("tag 'file_rollback_changes' not set")
        return self._value

    def get_file_save_copy_reference(self):
        """
        (file_operations) Saved file/folder using copy reference

        Only call this if :meth:`is_file_save_copy_reference` is true.

        :rtype: FileSaveCopyReferenceType
        """
        if not self.is_file_save_copy_reference():
            raise AttributeError("tag 'file_save_copy_reference' not set")
        return self._value

    def get_file_request_change(self):
        """
        (file_requests) Changed file request

        Only call this if :meth:`is_file_request_change` is true.

        :rtype: FileRequestChangeType
        """
        if not self.is_file_request_change():
            raise AttributeError("tag 'file_request_change' not set")
        return self._value

    def get_file_request_close(self):
        """
        (file_requests) Closed file request

        Only call this if :meth:`is_file_request_close` is true.

        :rtype: FileRequestCloseType
        """
        if not self.is_file_request_close():
            raise AttributeError("tag 'file_request_close' not set")
        return self._value

    def get_file_request_create(self):
        """
        (file_requests) Created file request

        Only call this if :meth:`is_file_request_create` is true.

        :rtype: FileRequestCreateType
        """
        if not self.is_file_request_create():
            raise AttributeError("tag 'file_request_create' not set")
        return self._value

    def get_file_request_delete(self):
        """
        (file_requests) Delete file request

        Only call this if :meth:`is_file_request_delete` is true.

        :rtype: FileRequestDeleteType
        """
        if not self.is_file_request_delete():
            raise AttributeError("tag 'file_request_delete' not set")
        return self._value

    def get_file_request_receive_file(self):
        """
        (file_requests) Received files for file request

        Only call this if :meth:`is_file_request_receive_file` is true.

        :rtype: FileRequestReceiveFileType
        """
        if not self.is_file_request_receive_file():
            raise AttributeError("tag 'file_request_receive_file' not set")
        return self._value

    def get_group_add_external_id(self):
        """
        (groups) Added external ID for group

        Only call this if :meth:`is_group_add_external_id` is true.

        :rtype: GroupAddExternalIdType
        """
        if not self.is_group_add_external_id():
            raise AttributeError("tag 'group_add_external_id' not set")
        return self._value

    def get_group_add_member(self):
        """
        (groups) Added team members to group

        Only call this if :meth:`is_group_add_member` is true.

        :rtype: GroupAddMemberType
        """
        if not self.is_group_add_member():
            raise AttributeError("tag 'group_add_member' not set")
        return self._value

    def get_group_change_external_id(self):
        """
        (groups) Changed external ID for group

        Only call this if :meth:`is_group_change_external_id` is true.

        :rtype: GroupChangeExternalIdType
        """
        if not self.is_group_change_external_id():
            raise AttributeError("tag 'group_change_external_id' not set")
        return self._value

    def get_group_change_management_type(self):
        """
        (groups) Changed group management type

        Only call this if :meth:`is_group_change_management_type` is true.

        :rtype: GroupChangeManagementTypeType
        """
        if not self.is_group_change_management_type():
            raise AttributeError("tag 'group_change_management_type' not set")
        return self._value

    def get_group_change_member_role(self):
        """
        (groups) Changed manager permissions of group member

        Only call this if :meth:`is_group_change_member_role` is true.

        :rtype: GroupChangeMemberRoleType
        """
        if not self.is_group_change_member_role():
            raise AttributeError("tag 'group_change_member_role' not set")
        return self._value

    def get_group_create(self):
        """
        (groups) Created group

        Only call this if :meth:`is_group_create` is true.

        :rtype: GroupCreateType
        """
        if not self.is_group_create():
            raise AttributeError("tag 'group_create' not set")
        return self._value

    def get_group_delete(self):
        """
        (groups) Deleted group

        Only call this if :meth:`is_group_delete` is true.

        :rtype: GroupDeleteType
        """
        if not self.is_group_delete():
            raise AttributeError("tag 'group_delete' not set")
        return self._value

    def get_group_description_updated(self):
        """
        (groups) Updated group (deprecated, no longer logged)

        Only call this if :meth:`is_group_description_updated` is true.

        :rtype: GroupDescriptionUpdatedType
        """
        if not self.is_group_description_updated():
            raise AttributeError("tag 'group_description_updated' not set")
        return self._value

    def get_group_join_policy_updated(self):
        """
        (groups) Updated group join policy (deprecated, no longer logged)

        Only call this if :meth:`is_group_join_policy_updated` is true.

        :rtype: GroupJoinPolicyUpdatedType
        """
        if not self.is_group_join_policy_updated():
            raise AttributeError("tag 'group_join_policy_updated' not set")
        return self._value

    def get_group_moved(self):
        """
        (groups) Moved group (deprecated, no longer logged)

        Only call this if :meth:`is_group_moved` is true.

        :rtype: GroupMovedType
        """
        if not self.is_group_moved():
            raise AttributeError("tag 'group_moved' not set")
        return self._value

    def get_group_remove_external_id(self):
        """
        (groups) Removed external ID for group

        Only call this if :meth:`is_group_remove_external_id` is true.

        :rtype: GroupRemoveExternalIdType
        """
        if not self.is_group_remove_external_id():
            raise AttributeError("tag 'group_remove_external_id' not set")
        return self._value

    def get_group_remove_member(self):
        """
        (groups) Removed team members from group

        Only call this if :meth:`is_group_remove_member` is true.

        :rtype: GroupRemoveMemberType
        """
        if not self.is_group_remove_member():
            raise AttributeError("tag 'group_remove_member' not set")
        return self._value

    def get_group_rename(self):
        """
        (groups) Renamed group

        Only call this if :meth:`is_group_rename` is true.

        :rtype: GroupRenameType
        """
        if not self.is_group_rename():
            raise AttributeError("tag 'group_rename' not set")
        return self._value

    def get_emm_error(self):
        """
        (logins) Failed to sign in via EMM (deprecated, replaced by 'Failed to
        sign in')

        Only call this if :meth:`is_emm_error` is true.

        :rtype: EmmErrorType
        """
        if not self.is_emm_error():
            raise AttributeError("tag 'emm_error' not set")
        return self._value

    def get_guest_admin_signed_in_via_trusted_teams(self):
        """
        (logins) Started trusted team admin session

        Only call this if :meth:`is_guest_admin_signed_in_via_trusted_teams` is true.

        :rtype: GuestAdminSignedInViaTrustedTeamsType
        """
        if not self.is_guest_admin_signed_in_via_trusted_teams():
            raise AttributeError("tag 'guest_admin_signed_in_via_trusted_teams' not set")
        return self._value

    def get_guest_admin_signed_out_via_trusted_teams(self):
        """
        (logins) Ended trusted team admin session

        Only call this if :meth:`is_guest_admin_signed_out_via_trusted_teams` is true.

        :rtype: GuestAdminSignedOutViaTrustedTeamsType
        """
        if not self.is_guest_admin_signed_out_via_trusted_teams():
            raise AttributeError("tag 'guest_admin_signed_out_via_trusted_teams' not set")
        return self._value

    def get_login_fail(self):
        """
        (logins) Failed to sign in

        Only call this if :meth:`is_login_fail` is true.

        :rtype: LoginFailType
        """
        if not self.is_login_fail():
            raise AttributeError("tag 'login_fail' not set")
        return self._value

    def get_login_success(self):
        """
        (logins) Signed in

        Only call this if :meth:`is_login_success` is true.

        :rtype: LoginSuccessType
        """
        if not self.is_login_success():
            raise AttributeError("tag 'login_success' not set")
        return self._value

    def get_logout(self):
        """
        (logins) Signed out

        Only call this if :meth:`is_logout` is true.

        :rtype: LogoutType
        """
        if not self.is_logout():
            raise AttributeError("tag 'logout' not set")
        return self._value

    def get_reseller_support_session_end(self):
        """
        (logins) Ended reseller support session

        Only call this if :meth:`is_reseller_support_session_end` is true.

        :rtype: ResellerSupportSessionEndType
        """
        if not self.is_reseller_support_session_end():
            raise AttributeError("tag 'reseller_support_session_end' not set")
        return self._value

    def get_reseller_support_session_start(self):
        """
        (logins) Started reseller support session

        Only call this if :meth:`is_reseller_support_session_start` is true.

        :rtype: ResellerSupportSessionStartType
        """
        if not self.is_reseller_support_session_start():
            raise AttributeError("tag 'reseller_support_session_start' not set")
        return self._value

    def get_sign_in_as_session_end(self):
        """
        (logins) Ended admin sign-in-as session

        Only call this if :meth:`is_sign_in_as_session_end` is true.

        :rtype: SignInAsSessionEndType
        """
        if not self.is_sign_in_as_session_end():
            raise AttributeError("tag 'sign_in_as_session_end' not set")
        return self._value

    def get_sign_in_as_session_start(self):
        """
        (logins) Started admin sign-in-as session

        Only call this if :meth:`is_sign_in_as_session_start` is true.

        :rtype: SignInAsSessionStartType
        """
        if not self.is_sign_in_as_session_start():
            raise AttributeError("tag 'sign_in_as_session_start' not set")
        return self._value

    def get_sso_error(self):
        """
        (logins) Failed to sign in via SSO (deprecated, replaced by 'Failed to
        sign in')

        Only call this if :meth:`is_sso_error` is true.

        :rtype: SsoErrorType
        """
        if not self.is_sso_error():
            raise AttributeError("tag 'sso_error' not set")
        return self._value

    def get_member_add_external_id(self):
        """
        (members) Added an external ID for team member

        Only call this if :meth:`is_member_add_external_id` is true.

        :rtype: MemberAddExternalIdType
        """
        if not self.is_member_add_external_id():
            raise AttributeError("tag 'member_add_external_id' not set")
        return self._value

    def get_member_add_name(self):
        """
        (members) Added team member name

        Only call this if :meth:`is_member_add_name` is true.

        :rtype: MemberAddNameType
        """
        if not self.is_member_add_name():
            raise AttributeError("tag 'member_add_name' not set")
        return self._value

    def get_member_change_admin_role(self):
        """
        (members) Changed team member admin role

        Only call this if :meth:`is_member_change_admin_role` is true.

        :rtype: MemberChangeAdminRoleType
        """
        if not self.is_member_change_admin_role():
            raise AttributeError("tag 'member_change_admin_role' not set")
        return self._value

    def get_member_change_email(self):
        """
        (members) Changed team member email

        Only call this if :meth:`is_member_change_email` is true.

        :rtype: MemberChangeEmailType
        """
        if not self.is_member_change_email():
            raise AttributeError("tag 'member_change_email' not set")
        return self._value

    def get_member_change_external_id(self):
        """
        (members) Changed the external ID for team member

        Only call this if :meth:`is_member_change_external_id` is true.

        :rtype: MemberChangeExternalIdType
        """
        if not self.is_member_change_external_id():
            raise AttributeError("tag 'member_change_external_id' not set")
        return self._value

    def get_member_change_membership_type(self):
        """
        (members) Changed membership type (limited/full) of member (deprecated,
        no longer logged)

        Only call this if :meth:`is_member_change_membership_type` is true.

        :rtype: MemberChangeMembershipTypeType
        """
        if not self.is_member_change_membership_type():
            raise AttributeError("tag 'member_change_membership_type' not set")
        return self._value

    def get_member_change_name(self):
        """
        (members) Changed team member name

        Only call this if :meth:`is_member_change_name` is true.

        :rtype: MemberChangeNameType
        """
        if not self.is_member_change_name():
            raise AttributeError("tag 'member_change_name' not set")
        return self._value

    def get_member_change_status(self):
        """
        (members) Changed member status (invited, joined, suspended, etc.)

        Only call this if :meth:`is_member_change_status` is true.

        :rtype: MemberChangeStatusType
        """
        if not self.is_member_change_status():
            raise AttributeError("tag 'member_change_status' not set")
        return self._value

    def get_member_delete_manual_contacts(self):
        """
        (members) Cleared manually added contacts

        Only call this if :meth:`is_member_delete_manual_contacts` is true.

        :rtype: MemberDeleteManualContactsType
        """
        if not self.is_member_delete_manual_contacts():
            raise AttributeError("tag 'member_delete_manual_contacts' not set")
        return self._value

    def get_member_permanently_delete_account_contents(self):
        """
        (members) Permanently deleted contents of deleted team member account

        Only call this if :meth:`is_member_permanently_delete_account_contents` is true.

        :rtype: MemberPermanentlyDeleteAccountContentsType
        """
        if not self.is_member_permanently_delete_account_contents():
            raise AttributeError("tag 'member_permanently_delete_account_contents' not set")
        return self._value

    def get_member_remove_external_id(self):
        """
        (members) Removed the external ID for team member

        Only call this if :meth:`is_member_remove_external_id` is true.

        :rtype: MemberRemoveExternalIdType
        """
        if not self.is_member_remove_external_id():
            raise AttributeError("tag 'member_remove_external_id' not set")
        return self._value

    def get_member_space_limits_add_custom_quota(self):
        """
        (members) Set custom member space limit

        Only call this if :meth:`is_member_space_limits_add_custom_quota` is true.

        :rtype: MemberSpaceLimitsAddCustomQuotaType
        """
        if not self.is_member_space_limits_add_custom_quota():
            raise AttributeError("tag 'member_space_limits_add_custom_quota' not set")
        return self._value

    def get_member_space_limits_change_custom_quota(self):
        """
        (members) Changed custom member space limit

        Only call this if :meth:`is_member_space_limits_change_custom_quota` is true.

        :rtype: MemberSpaceLimitsChangeCustomQuotaType
        """
        if not self.is_member_space_limits_change_custom_quota():
            raise AttributeError("tag 'member_space_limits_change_custom_quota' not set")
        return self._value

    def get_member_space_limits_change_status(self):
        """
        (members) Changed space limit status

        Only call this if :meth:`is_member_space_limits_change_status` is true.

        :rtype: MemberSpaceLimitsChangeStatusType
        """
        if not self.is_member_space_limits_change_status():
            raise AttributeError("tag 'member_space_limits_change_status' not set")
        return self._value

    def get_member_space_limits_remove_custom_quota(self):
        """
        (members) Removed custom member space limit

        Only call this if :meth:`is_member_space_limits_remove_custom_quota` is true.

        :rtype: MemberSpaceLimitsRemoveCustomQuotaType
        """
        if not self.is_member_space_limits_remove_custom_quota():
            raise AttributeError("tag 'member_space_limits_remove_custom_quota' not set")
        return self._value

    def get_member_suggest(self):
        """
        (members) Suggested person to add to team

        Only call this if :meth:`is_member_suggest` is true.

        :rtype: MemberSuggestType
        """
        if not self.is_member_suggest():
            raise AttributeError("tag 'member_suggest' not set")
        return self._value

    def get_member_transfer_account_contents(self):
        """
        (members) Transferred contents of deleted member account to another
        member

        Only call this if :meth:`is_member_transfer_account_contents` is true.

        :rtype: MemberTransferAccountContentsType
        """
        if not self.is_member_transfer_account_contents():
            raise AttributeError("tag 'member_transfer_account_contents' not set")
        return self._value

    def get_secondary_mails_policy_changed(self):
        """
        (members) Secondary mails policy changed

        Only call this if :meth:`is_secondary_mails_policy_changed` is true.

        :rtype: SecondaryMailsPolicyChangedType
        """
        if not self.is_secondary_mails_policy_changed():
            raise AttributeError("tag 'secondary_mails_policy_changed' not set")
        return self._value

    def get_paper_content_add_member(self):
        """
        (paper) Added team member to Paper doc/folder

        Only call this if :meth:`is_paper_content_add_member` is true.

        :rtype: PaperContentAddMemberType
        """
        if not self.is_paper_content_add_member():
            raise AttributeError("tag 'paper_content_add_member' not set")
        return self._value

    def get_paper_content_add_to_folder(self):
        """
        (paper) Added Paper doc/folder to folder

        Only call this if :meth:`is_paper_content_add_to_folder` is true.

        :rtype: PaperContentAddToFolderType
        """
        if not self.is_paper_content_add_to_folder():
            raise AttributeError("tag 'paper_content_add_to_folder' not set")
        return self._value

    def get_paper_content_archive(self):
        """
        (paper) Archived Paper doc/folder

        Only call this if :meth:`is_paper_content_archive` is true.

        :rtype: PaperContentArchiveType
        """
        if not self.is_paper_content_archive():
            raise AttributeError("tag 'paper_content_archive' not set")
        return self._value

    def get_paper_content_create(self):
        """
        (paper) Created Paper doc/folder

        Only call this if :meth:`is_paper_content_create` is true.

        :rtype: PaperContentCreateType
        """
        if not self.is_paper_content_create():
            raise AttributeError("tag 'paper_content_create' not set")
        return self._value

    def get_paper_content_permanently_delete(self):
        """
        (paper) Permanently deleted Paper doc/folder

        Only call this if :meth:`is_paper_content_permanently_delete` is true.

        :rtype: PaperContentPermanentlyDeleteType
        """
        if not self.is_paper_content_permanently_delete():
            raise AttributeError("tag 'paper_content_permanently_delete' not set")
        return self._value

    def get_paper_content_remove_from_folder(self):
        """
        (paper) Removed Paper doc/folder from folder

        Only call this if :meth:`is_paper_content_remove_from_folder` is true.

        :rtype: PaperContentRemoveFromFolderType
        """
        if not self.is_paper_content_remove_from_folder():
            raise AttributeError("tag 'paper_content_remove_from_folder' not set")
        return self._value

    def get_paper_content_remove_member(self):
        """
        (paper) Removed team member from Paper doc/folder

        Only call this if :meth:`is_paper_content_remove_member` is true.

        :rtype: PaperContentRemoveMemberType
        """
        if not self.is_paper_content_remove_member():
            raise AttributeError("tag 'paper_content_remove_member' not set")
        return self._value

    def get_paper_content_rename(self):
        """
        (paper) Renamed Paper doc/folder

        Only call this if :meth:`is_paper_content_rename` is true.

        :rtype: PaperContentRenameType
        """
        if not self.is_paper_content_rename():
            raise AttributeError("tag 'paper_content_rename' not set")
        return self._value

    def get_paper_content_restore(self):
        """
        (paper) Restored archived Paper doc/folder

        Only call this if :meth:`is_paper_content_restore` is true.

        :rtype: PaperContentRestoreType
        """
        if not self.is_paper_content_restore():
            raise AttributeError("tag 'paper_content_restore' not set")
        return self._value

    def get_paper_doc_add_comment(self):
        """
        (paper) Added Paper doc comment

        Only call this if :meth:`is_paper_doc_add_comment` is true.

        :rtype: PaperDocAddCommentType
        """
        if not self.is_paper_doc_add_comment():
            raise AttributeError("tag 'paper_doc_add_comment' not set")
        return self._value

    def get_paper_doc_change_member_role(self):
        """
        (paper) Changed team member permissions for Paper doc

        Only call this if :meth:`is_paper_doc_change_member_role` is true.

        :rtype: PaperDocChangeMemberRoleType
        """
        if not self.is_paper_doc_change_member_role():
            raise AttributeError("tag 'paper_doc_change_member_role' not set")
        return self._value

    def get_paper_doc_change_sharing_policy(self):
        """
        (paper) Changed sharing setting for Paper doc

        Only call this if :meth:`is_paper_doc_change_sharing_policy` is true.

        :rtype: PaperDocChangeSharingPolicyType
        """
        if not self.is_paper_doc_change_sharing_policy():
            raise AttributeError("tag 'paper_doc_change_sharing_policy' not set")
        return self._value

    def get_paper_doc_change_subscription(self):
        """
        (paper) Followed/unfollowed Paper doc

        Only call this if :meth:`is_paper_doc_change_subscription` is true.

        :rtype: PaperDocChangeSubscriptionType
        """
        if not self.is_paper_doc_change_subscription():
            raise AttributeError("tag 'paper_doc_change_subscription' not set")
        return self._value

    def get_paper_doc_deleted(self):
        """
        (paper) Archived Paper doc (deprecated, no longer logged)

        Only call this if :meth:`is_paper_doc_deleted` is true.

        :rtype: PaperDocDeletedType
        """
        if not self.is_paper_doc_deleted():
            raise AttributeError("tag 'paper_doc_deleted' not set")
        return self._value

    def get_paper_doc_delete_comment(self):
        """
        (paper) Deleted Paper doc comment

        Only call this if :meth:`is_paper_doc_delete_comment` is true.

        :rtype: PaperDocDeleteCommentType
        """
        if not self.is_paper_doc_delete_comment():
            raise AttributeError("tag 'paper_doc_delete_comment' not set")
        return self._value

    def get_paper_doc_download(self):
        """
        (paper) Downloaded Paper doc in specific format

        Only call this if :meth:`is_paper_doc_download` is true.

        :rtype: PaperDocDownloadType
        """
        if not self.is_paper_doc_download():
            raise AttributeError("tag 'paper_doc_download' not set")
        return self._value

    def get_paper_doc_edit(self):
        """
        (paper) Edited Paper doc

        Only call this if :meth:`is_paper_doc_edit` is true.

        :rtype: PaperDocEditType
        """
        if not self.is_paper_doc_edit():
            raise AttributeError("tag 'paper_doc_edit' not set")
        return self._value

    def get_paper_doc_edit_comment(self):
        """
        (paper) Edited Paper doc comment

        Only call this if :meth:`is_paper_doc_edit_comment` is true.

        :rtype: PaperDocEditCommentType
        """
        if not self.is_paper_doc_edit_comment():
            raise AttributeError("tag 'paper_doc_edit_comment' not set")
        return self._value

    def get_paper_doc_followed(self):
        """
        (paper) Followed Paper doc (deprecated, replaced by 'Followed/unfollowed
        Paper doc')

        Only call this if :meth:`is_paper_doc_followed` is true.

        :rtype: PaperDocFollowedType
        """
        if not self.is_paper_doc_followed():
            raise AttributeError("tag 'paper_doc_followed' not set")
        return self._value

    def get_paper_doc_mention(self):
        """
        (paper) Mentioned team member in Paper doc

        Only call this if :meth:`is_paper_doc_mention` is true.

        :rtype: PaperDocMentionType
        """
        if not self.is_paper_doc_mention():
            raise AttributeError("tag 'paper_doc_mention' not set")
        return self._value

    def get_paper_doc_ownership_changed(self):
        """
        (paper) Transferred ownership of Paper doc

        Only call this if :meth:`is_paper_doc_ownership_changed` is true.

        :rtype: PaperDocOwnershipChangedType
        """
        if not self.is_paper_doc_ownership_changed():
            raise AttributeError("tag 'paper_doc_ownership_changed' not set")
        return self._value

    def get_paper_doc_request_access(self):
        """
        (paper) Requested access to Paper doc

        Only call this if :meth:`is_paper_doc_request_access` is true.

        :rtype: PaperDocRequestAccessType
        """
        if not self.is_paper_doc_request_access():
            raise AttributeError("tag 'paper_doc_request_access' not set")
        return self._value

    def get_paper_doc_resolve_comment(self):
        """
        (paper) Resolved Paper doc comment

        Only call this if :meth:`is_paper_doc_resolve_comment` is true.

        :rtype: PaperDocResolveCommentType
        """
        if not self.is_paper_doc_resolve_comment():
            raise AttributeError("tag 'paper_doc_resolve_comment' not set")
        return self._value

    def get_paper_doc_revert(self):
        """
        (paper) Restored Paper doc to previous version

        Only call this if :meth:`is_paper_doc_revert` is true.

        :rtype: PaperDocRevertType
        """
        if not self.is_paper_doc_revert():
            raise AttributeError("tag 'paper_doc_revert' not set")
        return self._value

    def get_paper_doc_slack_share(self):
        """
        (paper) Shared Paper doc via Slack

        Only call this if :meth:`is_paper_doc_slack_share` is true.

        :rtype: PaperDocSlackShareType
        """
        if not self.is_paper_doc_slack_share():
            raise AttributeError("tag 'paper_doc_slack_share' not set")
        return self._value

    def get_paper_doc_team_invite(self):
        """
        (paper) Shared Paper doc with team member (deprecated, no longer logged)

        Only call this if :meth:`is_paper_doc_team_invite` is true.

        :rtype: PaperDocTeamInviteType
        """
        if not self.is_paper_doc_team_invite():
            raise AttributeError("tag 'paper_doc_team_invite' not set")
        return self._value

    def get_paper_doc_trashed(self):
        """
        (paper) Deleted Paper doc

        Only call this if :meth:`is_paper_doc_trashed` is true.

        :rtype: PaperDocTrashedType
        """
        if not self.is_paper_doc_trashed():
            raise AttributeError("tag 'paper_doc_trashed' not set")
        return self._value

    def get_paper_doc_unresolve_comment(self):
        """
        (paper) Unresolved Paper doc comment

        Only call this if :meth:`is_paper_doc_unresolve_comment` is true.

        :rtype: PaperDocUnresolveCommentType
        """
        if not self.is_paper_doc_unresolve_comment():
            raise AttributeError("tag 'paper_doc_unresolve_comment' not set")
        return self._value

    def get_paper_doc_untrashed(self):
        """
        (paper) Restored Paper doc

        Only call this if :meth:`is_paper_doc_untrashed` is true.

        :rtype: PaperDocUntrashedType
        """
        if not self.is_paper_doc_untrashed():
            raise AttributeError("tag 'paper_doc_untrashed' not set")
        return self._value

    def get_paper_doc_view(self):
        """
        (paper) Viewed Paper doc

        Only call this if :meth:`is_paper_doc_view` is true.

        :rtype: PaperDocViewType
        """
        if not self.is_paper_doc_view():
            raise AttributeError("tag 'paper_doc_view' not set")
        return self._value

    def get_paper_external_view_allow(self):
        """
        (paper) Changed Paper external sharing setting to anyone (deprecated, no
        longer logged)

        Only call this if :meth:`is_paper_external_view_allow` is true.

        :rtype: PaperExternalViewAllowType
        """
        if not self.is_paper_external_view_allow():
            raise AttributeError("tag 'paper_external_view_allow' not set")
        return self._value

    def get_paper_external_view_default_team(self):
        """
        (paper) Changed Paper external sharing setting to default team
        (deprecated, no longer logged)

        Only call this if :meth:`is_paper_external_view_default_team` is true.

        :rtype: PaperExternalViewDefaultTeamType
        """
        if not self.is_paper_external_view_default_team():
            raise AttributeError("tag 'paper_external_view_default_team' not set")
        return self._value

    def get_paper_external_view_forbid(self):
        """
        (paper) Changed Paper external sharing setting to team-only (deprecated,
        no longer logged)

        Only call this if :meth:`is_paper_external_view_forbid` is true.

        :rtype: PaperExternalViewForbidType
        """
        if not self.is_paper_external_view_forbid():
            raise AttributeError("tag 'paper_external_view_forbid' not set")
        return self._value

    def get_paper_folder_change_subscription(self):
        """
        (paper) Followed/unfollowed Paper folder

        Only call this if :meth:`is_paper_folder_change_subscription` is true.

        :rtype: PaperFolderChangeSubscriptionType
        """
        if not self.is_paper_folder_change_subscription():
            raise AttributeError("tag 'paper_folder_change_subscription' not set")
        return self._value

    def get_paper_folder_deleted(self):
        """
        (paper) Archived Paper folder (deprecated, no longer logged)

        Only call this if :meth:`is_paper_folder_deleted` is true.

        :rtype: PaperFolderDeletedType
        """
        if not self.is_paper_folder_deleted():
            raise AttributeError("tag 'paper_folder_deleted' not set")
        return self._value

    def get_paper_folder_followed(self):
        """
        (paper) Followed Paper folder (deprecated, replaced by
        'Followed/unfollowed Paper folder')

        Only call this if :meth:`is_paper_folder_followed` is true.

        :rtype: PaperFolderFollowedType
        """
        if not self.is_paper_folder_followed():
            raise AttributeError("tag 'paper_folder_followed' not set")
        return self._value

    def get_paper_folder_team_invite(self):
        """
        (paper) Shared Paper folder with member (deprecated, no longer logged)

        Only call this if :meth:`is_paper_folder_team_invite` is true.

        :rtype: PaperFolderTeamInviteType
        """
        if not self.is_paper_folder_team_invite():
            raise AttributeError("tag 'paper_folder_team_invite' not set")
        return self._value

    def get_paper_published_link_create(self):
        """
        (paper) Published doc

        Only call this if :meth:`is_paper_published_link_create` is true.

        :rtype: PaperPublishedLinkCreateType
        """
        if not self.is_paper_published_link_create():
            raise AttributeError("tag 'paper_published_link_create' not set")
        return self._value

    def get_paper_published_link_disabled(self):
        """
        (paper) Unpublished doc

        Only call this if :meth:`is_paper_published_link_disabled` is true.

        :rtype: PaperPublishedLinkDisabledType
        """
        if not self.is_paper_published_link_disabled():
            raise AttributeError("tag 'paper_published_link_disabled' not set")
        return self._value

    def get_paper_published_link_view(self):
        """
        (paper) Viewed published doc

        Only call this if :meth:`is_paper_published_link_view` is true.

        :rtype: PaperPublishedLinkViewType
        """
        if not self.is_paper_published_link_view():
            raise AttributeError("tag 'paper_published_link_view' not set")
        return self._value

    def get_password_change(self):
        """
        (passwords) Changed password

        Only call this if :meth:`is_password_change` is true.

        :rtype: PasswordChangeType
        """
        if not self.is_password_change():
            raise AttributeError("tag 'password_change' not set")
        return self._value

    def get_password_reset(self):
        """
        (passwords) Reset password

        Only call this if :meth:`is_password_reset` is true.

        :rtype: PasswordResetType
        """
        if not self.is_password_reset():
            raise AttributeError("tag 'password_reset' not set")
        return self._value

    def get_password_reset_all(self):
        """
        (passwords) Reset all team member passwords

        Only call this if :meth:`is_password_reset_all` is true.

        :rtype: PasswordResetAllType
        """
        if not self.is_password_reset_all():
            raise AttributeError("tag 'password_reset_all' not set")
        return self._value

    def get_emm_create_exceptions_report(self):
        """
        (reports) Created EMM-excluded users report

        Only call this if :meth:`is_emm_create_exceptions_report` is true.

        :rtype: EmmCreateExceptionsReportType
        """
        if not self.is_emm_create_exceptions_report():
            raise AttributeError("tag 'emm_create_exceptions_report' not set")
        return self._value

    def get_emm_create_usage_report(self):
        """
        (reports) Created EMM mobile app usage report

        Only call this if :meth:`is_emm_create_usage_report` is true.

        :rtype: EmmCreateUsageReportType
        """
        if not self.is_emm_create_usage_report():
            raise AttributeError("tag 'emm_create_usage_report' not set")
        return self._value

    def get_export_members_report(self):
        """
        (reports) Created member data report

        Only call this if :meth:`is_export_members_report` is true.

        :rtype: ExportMembersReportType
        """
        if not self.is_export_members_report():
            raise AttributeError("tag 'export_members_report' not set")
        return self._value

    def get_paper_admin_export_start(self):
        """
        (reports) Exported all team Paper docs

        Only call this if :meth:`is_paper_admin_export_start` is true.

        :rtype: PaperAdminExportStartType
        """
        if not self.is_paper_admin_export_start():
            raise AttributeError("tag 'paper_admin_export_start' not set")
        return self._value

    def get_smart_sync_create_admin_privilege_report(self):
        """
        (reports) Created Smart Sync non-admin devices report

        Only call this if :meth:`is_smart_sync_create_admin_privilege_report` is true.

        :rtype: SmartSyncCreateAdminPrivilegeReportType
        """
        if not self.is_smart_sync_create_admin_privilege_report():
            raise AttributeError("tag 'smart_sync_create_admin_privilege_report' not set")
        return self._value

    def get_team_activity_create_report(self):
        """
        (reports) Created team activity report

        Only call this if :meth:`is_team_activity_create_report` is true.

        :rtype: TeamActivityCreateReportType
        """
        if not self.is_team_activity_create_report():
            raise AttributeError("tag 'team_activity_create_report' not set")
        return self._value

    def get_team_activity_create_report_fail(self):
        """
        (reports) Couldn't generate team activity report

        Only call this if :meth:`is_team_activity_create_report_fail` is true.

        :rtype: TeamActivityCreateReportFailType
        """
        if not self.is_team_activity_create_report_fail():
            raise AttributeError("tag 'team_activity_create_report_fail' not set")
        return self._value

    def get_collection_share(self):
        """
        (sharing) Shared album

        Only call this if :meth:`is_collection_share` is true.

        :rtype: CollectionShareType
        """
        if not self.is_collection_share():
            raise AttributeError("tag 'collection_share' not set")
        return self._value

    def get_note_acl_invite_only(self):
        """
        (sharing) Changed Paper doc to invite-only (deprecated, no longer
        logged)

        Only call this if :meth:`is_note_acl_invite_only` is true.

        :rtype: NoteAclInviteOnlyType
        """
        if not self.is_note_acl_invite_only():
            raise AttributeError("tag 'note_acl_invite_only' not set")
        return self._value

    def get_note_acl_link(self):
        """
        (sharing) Changed Paper doc to link-accessible (deprecated, no longer
        logged)

        Only call this if :meth:`is_note_acl_link` is true.

        :rtype: NoteAclLinkType
        """
        if not self.is_note_acl_link():
            raise AttributeError("tag 'note_acl_link' not set")
        return self._value

    def get_note_acl_team_link(self):
        """
        (sharing) Changed Paper doc to link-accessible for team (deprecated, no
        longer logged)

        Only call this if :meth:`is_note_acl_team_link` is true.

        :rtype: NoteAclTeamLinkType
        """
        if not self.is_note_acl_team_link():
            raise AttributeError("tag 'note_acl_team_link' not set")
        return self._value

    def get_note_shared(self):
        """
        (sharing) Shared Paper doc (deprecated, no longer logged)

        Only call this if :meth:`is_note_shared` is true.

        :rtype: NoteSharedType
        """
        if not self.is_note_shared():
            raise AttributeError("tag 'note_shared' not set")
        return self._value

    def get_note_share_receive(self):
        """
        (sharing) Shared received Paper doc (deprecated, no longer logged)

        Only call this if :meth:`is_note_share_receive` is true.

        :rtype: NoteShareReceiveType
        """
        if not self.is_note_share_receive():
            raise AttributeError("tag 'note_share_receive' not set")
        return self._value

    def get_open_note_shared(self):
        """
        (sharing) Opened shared Paper doc (deprecated, no longer logged)

        Only call this if :meth:`is_open_note_shared` is true.

        :rtype: OpenNoteSharedType
        """
        if not self.is_open_note_shared():
            raise AttributeError("tag 'open_note_shared' not set")
        return self._value

    def get_sf_add_group(self):
        """
        (sharing) Added team to shared folder (deprecated, no longer logged)

        Only call this if :meth:`is_sf_add_group` is true.

        :rtype: SfAddGroupType
        """
        if not self.is_sf_add_group():
            raise AttributeError("tag 'sf_add_group' not set")
        return self._value

    def get_sf_allow_non_members_to_view_shared_links(self):
        """
        (sharing) Allowed non-collaborators to view links to files in shared
        folder (deprecated, no longer logged)

        Only call this if :meth:`is_sf_allow_non_members_to_view_shared_links` is true.

        :rtype: SfAllowNonMembersToViewSharedLinksType
        """
        if not self.is_sf_allow_non_members_to_view_shared_links():
            raise AttributeError("tag 'sf_allow_non_members_to_view_shared_links' not set")
        return self._value

    def get_sf_external_invite_warn(self):
        """
        (sharing) Set team members to see warning before sharing folders outside
        team (deprecated, no longer logged)

        Only call this if :meth:`is_sf_external_invite_warn` is true.

        :rtype: SfExternalInviteWarnType
        """
        if not self.is_sf_external_invite_warn():
            raise AttributeError("tag 'sf_external_invite_warn' not set")
        return self._value

    def get_sf_fb_invite(self):
        """
        (sharing) Invited Facebook users to shared folder (deprecated, no longer
        logged)

        Only call this if :meth:`is_sf_fb_invite` is true.

        :rtype: SfFbInviteType
        """
        if not self.is_sf_fb_invite():
            raise AttributeError("tag 'sf_fb_invite' not set")
        return self._value

    def get_sf_fb_invite_change_role(self):
        """
        (sharing) Changed Facebook user's role in shared folder (deprecated, no
        longer logged)

        Only call this if :meth:`is_sf_fb_invite_change_role` is true.

        :rtype: SfFbInviteChangeRoleType
        """
        if not self.is_sf_fb_invite_change_role():
            raise AttributeError("tag 'sf_fb_invite_change_role' not set")
        return self._value

    def get_sf_fb_uninvite(self):
        """
        (sharing) Uninvited Facebook user from shared folder (deprecated, no
        longer logged)

        Only call this if :meth:`is_sf_fb_uninvite` is true.

        :rtype: SfFbUninviteType
        """
        if not self.is_sf_fb_uninvite():
            raise AttributeError("tag 'sf_fb_uninvite' not set")
        return self._value

    def get_sf_invite_group(self):
        """
        (sharing) Invited group to shared folder (deprecated, no longer logged)

        Only call this if :meth:`is_sf_invite_group` is true.

        :rtype: SfInviteGroupType
        """
        if not self.is_sf_invite_group():
            raise AttributeError("tag 'sf_invite_group' not set")
        return self._value

    def get_sf_team_grant_access(self):
        """
        (sharing) Granted access to shared folder (deprecated, no longer logged)

        Only call this if :meth:`is_sf_team_grant_access` is true.

        :rtype: SfTeamGrantAccessType
        """
        if not self.is_sf_team_grant_access():
            raise AttributeError("tag 'sf_team_grant_access' not set")
        return self._value

    def get_sf_team_invite(self):
        """
        (sharing) Invited team members to shared folder (deprecated, replaced by
        'Invited user to Dropbox and added them to shared file/folder')

        Only call this if :meth:`is_sf_team_invite` is true.

        :rtype: SfTeamInviteType
        """
        if not self.is_sf_team_invite():
            raise AttributeError("tag 'sf_team_invite' not set")
        return self._value

    def get_sf_team_invite_change_role(self):
        """
        (sharing) Changed team member's role in shared folder (deprecated, no
        longer logged)

        Only call this if :meth:`is_sf_team_invite_change_role` is true.

        :rtype: SfTeamInviteChangeRoleType
        """
        if not self.is_sf_team_invite_change_role():
            raise AttributeError("tag 'sf_team_invite_change_role' not set")
        return self._value

    def get_sf_team_join(self):
        """
        (sharing) Joined team member's shared folder (deprecated, no longer
        logged)

        Only call this if :meth:`is_sf_team_join` is true.

        :rtype: SfTeamJoinType
        """
        if not self.is_sf_team_join():
            raise AttributeError("tag 'sf_team_join' not set")
        return self._value

    def get_sf_team_join_from_oob_link(self):
        """
        (sharing) Joined team member's shared folder from link (deprecated, no
        longer logged)

        Only call this if :meth:`is_sf_team_join_from_oob_link` is true.

        :rtype: SfTeamJoinFromOobLinkType
        """
        if not self.is_sf_team_join_from_oob_link():
            raise AttributeError("tag 'sf_team_join_from_oob_link' not set")
        return self._value

    def get_sf_team_uninvite(self):
        """
        (sharing) Unshared folder with team member (deprecated, replaced by
        'Removed invitee from shared file/folder before invite was accepted')

        Only call this if :meth:`is_sf_team_uninvite` is true.

        :rtype: SfTeamUninviteType
        """
        if not self.is_sf_team_uninvite():
            raise AttributeError("tag 'sf_team_uninvite' not set")
        return self._value

    def get_shared_content_add_invitees(self):
        """
        (sharing) Invited user to Dropbox and added them to shared file/folder

        Only call this if :meth:`is_shared_content_add_invitees` is true.

        :rtype: SharedContentAddInviteesType
        """
        if not self.is_shared_content_add_invitees():
            raise AttributeError("tag 'shared_content_add_invitees' not set")
        return self._value

    def get_shared_content_add_link_expiry(self):
        """
        (sharing) Added expiration date to link for shared file/folder

        Only call this if :meth:`is_shared_content_add_link_expiry` is true.

        :rtype: SharedContentAddLinkExpiryType
        """
        if not self.is_shared_content_add_link_expiry():
            raise AttributeError("tag 'shared_content_add_link_expiry' not set")
        return self._value

    def get_shared_content_add_link_password(self):
        """
        (sharing) Added password to link for shared file/folder

        Only call this if :meth:`is_shared_content_add_link_password` is true.

        :rtype: SharedContentAddLinkPasswordType
        """
        if not self.is_shared_content_add_link_password():
            raise AttributeError("tag 'shared_content_add_link_password' not set")
        return self._value

    def get_shared_content_add_member(self):
        """
        (sharing) Added users and/or groups to shared file/folder

        Only call this if :meth:`is_shared_content_add_member` is true.

        :rtype: SharedContentAddMemberType
        """
        if not self.is_shared_content_add_member():
            raise AttributeError("tag 'shared_content_add_member' not set")
        return self._value

    def get_shared_content_change_downloads_policy(self):
        """
        (sharing) Changed whether members can download shared file/folder

        Only call this if :meth:`is_shared_content_change_downloads_policy` is true.

        :rtype: SharedContentChangeDownloadsPolicyType
        """
        if not self.is_shared_content_change_downloads_policy():
            raise AttributeError("tag 'shared_content_change_downloads_policy' not set")
        return self._value

    def get_shared_content_change_invitee_role(self):
        """
        (sharing) Changed access type of invitee to shared file/folder before
        invite was accepted

        Only call this if :meth:`is_shared_content_change_invitee_role` is true.

        :rtype: SharedContentChangeInviteeRoleType
        """
        if not self.is_shared_content_change_invitee_role():
            raise AttributeError("tag 'shared_content_change_invitee_role' not set")
        return self._value

    def get_shared_content_change_link_audience(self):
        """
        (sharing) Changed link audience of shared file/folder

        Only call this if :meth:`is_shared_content_change_link_audience` is true.

        :rtype: SharedContentChangeLinkAudienceType
        """
        if not self.is_shared_content_change_link_audience():
            raise AttributeError("tag 'shared_content_change_link_audience' not set")
        return self._value

    def get_shared_content_change_link_expiry(self):
        """
        (sharing) Changed link expiration of shared file/folder

        Only call this if :meth:`is_shared_content_change_link_expiry` is true.

        :rtype: SharedContentChangeLinkExpiryType
        """
        if not self.is_shared_content_change_link_expiry():
            raise AttributeError("tag 'shared_content_change_link_expiry' not set")
        return self._value

    def get_shared_content_change_link_password(self):
        """
        (sharing) Changed link password of shared file/folder

        Only call this if :meth:`is_shared_content_change_link_password` is true.

        :rtype: SharedContentChangeLinkPasswordType
        """
        if not self.is_shared_content_change_link_password():
            raise AttributeError("tag 'shared_content_change_link_password' not set")
        return self._value

    def get_shared_content_change_member_role(self):
        """
        (sharing) Changed access type of shared file/folder member

        Only call this if :meth:`is_shared_content_change_member_role` is true.

        :rtype: SharedContentChangeMemberRoleType
        """
        if not self.is_shared_content_change_member_role():
            raise AttributeError("tag 'shared_content_change_member_role' not set")
        return self._value

    def get_shared_content_change_viewer_info_policy(self):
        """
        (sharing) Changed whether members can see who viewed shared file/folder

        Only call this if :meth:`is_shared_content_change_viewer_info_policy` is true.

        :rtype: SharedContentChangeViewerInfoPolicyType
        """
        if not self.is_shared_content_change_viewer_info_policy():
            raise AttributeError("tag 'shared_content_change_viewer_info_policy' not set")
        return self._value

    def get_shared_content_claim_invitation(self):
        """
        (sharing) Acquired membership of shared file/folder by accepting invite

        Only call this if :meth:`is_shared_content_claim_invitation` is true.

        :rtype: SharedContentClaimInvitationType
        """
        if not self.is_shared_content_claim_invitation():
            raise AttributeError("tag 'shared_content_claim_invitation' not set")
        return self._value

    def get_shared_content_copy(self):
        """
        (sharing) Copied shared file/folder to own Dropbox

        Only call this if :meth:`is_shared_content_copy` is true.

        :rtype: SharedContentCopyType
        """
        if not self.is_shared_content_copy():
            raise AttributeError("tag 'shared_content_copy' not set")
        return self._value

    def get_shared_content_download(self):
        """
        (sharing) Downloaded shared file/folder

        Only call this if :meth:`is_shared_content_download` is true.

        :rtype: SharedContentDownloadType
        """
        if not self.is_shared_content_download():
            raise AttributeError("tag 'shared_content_download' not set")
        return self._value

    def get_shared_content_relinquish_membership(self):
        """
        (sharing) Left shared file/folder

        Only call this if :meth:`is_shared_content_relinquish_membership` is true.

        :rtype: SharedContentRelinquishMembershipType
        """
        if not self.is_shared_content_relinquish_membership():
            raise AttributeError("tag 'shared_content_relinquish_membership' not set")
        return self._value

    def get_shared_content_remove_invitees(self):
        """
        (sharing) Removed invitee from shared file/folder before invite was
        accepted

        Only call this if :meth:`is_shared_content_remove_invitees` is true.

        :rtype: SharedContentRemoveInviteesType
        """
        if not self.is_shared_content_remove_invitees():
            raise AttributeError("tag 'shared_content_remove_invitees' not set")
        return self._value

    def get_shared_content_remove_link_expiry(self):
        """
        (sharing) Removed link expiration date of shared file/folder

        Only call this if :meth:`is_shared_content_remove_link_expiry` is true.

        :rtype: SharedContentRemoveLinkExpiryType
        """
        if not self.is_shared_content_remove_link_expiry():
            raise AttributeError("tag 'shared_content_remove_link_expiry' not set")
        return self._value

    def get_shared_content_remove_link_password(self):
        """
        (sharing) Removed link password of shared file/folder

        Only call this if :meth:`is_shared_content_remove_link_password` is true.

        :rtype: SharedContentRemoveLinkPasswordType
        """
        if not self.is_shared_content_remove_link_password():
            raise AttributeError("tag 'shared_content_remove_link_password' not set")
        return self._value

    def get_shared_content_remove_member(self):
        """
        (sharing) Removed user/group from shared file/folder

        Only call this if :meth:`is_shared_content_remove_member` is true.

        :rtype: SharedContentRemoveMemberType
        """
        if not self.is_shared_content_remove_member():
            raise AttributeError("tag 'shared_content_remove_member' not set")
        return self._value

    def get_shared_content_request_access(self):
        """
        (sharing) Requested access to shared file/folder

        Only call this if :meth:`is_shared_content_request_access` is true.

        :rtype: SharedContentRequestAccessType
        """
        if not self.is_shared_content_request_access():
            raise AttributeError("tag 'shared_content_request_access' not set")
        return self._value

    def get_shared_content_unshare(self):
        """
        (sharing) Unshared file/folder by clearing membership and turning off
        link

        Only call this if :meth:`is_shared_content_unshare` is true.

        :rtype: SharedContentUnshareType
        """
        if not self.is_shared_content_unshare():
            raise AttributeError("tag 'shared_content_unshare' not set")
        return self._value

    def get_shared_content_view(self):
        """
        (sharing) Previewed shared file/folder

        Only call this if :meth:`is_shared_content_view` is true.

        :rtype: SharedContentViewType
        """
        if not self.is_shared_content_view():
            raise AttributeError("tag 'shared_content_view' not set")
        return self._value

    def get_shared_folder_change_link_policy(self):
        """
        (sharing) Changed who can access shared folder via link

        Only call this if :meth:`is_shared_folder_change_link_policy` is true.

        :rtype: SharedFolderChangeLinkPolicyType
        """
        if not self.is_shared_folder_change_link_policy():
            raise AttributeError("tag 'shared_folder_change_link_policy' not set")
        return self._value

    def get_shared_folder_change_members_inheritance_policy(self):
        """
        (sharing) Changed whether shared folder inherits members from parent
        folder

        Only call this if :meth:`is_shared_folder_change_members_inheritance_policy` is true.

        :rtype: SharedFolderChangeMembersInheritancePolicyType
        """
        if not self.is_shared_folder_change_members_inheritance_policy():
            raise AttributeError("tag 'shared_folder_change_members_inheritance_policy' not set")
        return self._value

    def get_shared_folder_change_members_management_policy(self):
        """
        (sharing) Changed who can add/remove members of shared folder

        Only call this if :meth:`is_shared_folder_change_members_management_policy` is true.

        :rtype: SharedFolderChangeMembersManagementPolicyType
        """
        if not self.is_shared_folder_change_members_management_policy():
            raise AttributeError("tag 'shared_folder_change_members_management_policy' not set")
        return self._value

    def get_shared_folder_change_members_policy(self):
        """
        (sharing) Changed who can become member of shared folder

        Only call this if :meth:`is_shared_folder_change_members_policy` is true.

        :rtype: SharedFolderChangeMembersPolicyType
        """
        if not self.is_shared_folder_change_members_policy():
            raise AttributeError("tag 'shared_folder_change_members_policy' not set")
        return self._value

    def get_shared_folder_create(self):
        """
        (sharing) Created shared folder

        Only call this if :meth:`is_shared_folder_create` is true.

        :rtype: SharedFolderCreateType
        """
        if not self.is_shared_folder_create():
            raise AttributeError("tag 'shared_folder_create' not set")
        return self._value

    def get_shared_folder_decline_invitation(self):
        """
        (sharing) Declined team member's invite to shared folder

        Only call this if :meth:`is_shared_folder_decline_invitation` is true.

        :rtype: SharedFolderDeclineInvitationType
        """
        if not self.is_shared_folder_decline_invitation():
            raise AttributeError("tag 'shared_folder_decline_invitation' not set")
        return self._value

    def get_shared_folder_mount(self):
        """
        (sharing) Added shared folder to own Dropbox

        Only call this if :meth:`is_shared_folder_mount` is true.

        :rtype: SharedFolderMountType
        """
        if not self.is_shared_folder_mount():
            raise AttributeError("tag 'shared_folder_mount' not set")
        return self._value

    def get_shared_folder_nest(self):
        """
        (sharing) Changed parent of shared folder

        Only call this if :meth:`is_shared_folder_nest` is true.

        :rtype: SharedFolderNestType
        """
        if not self.is_shared_folder_nest():
            raise AttributeError("tag 'shared_folder_nest' not set")
        return self._value

    def get_shared_folder_transfer_ownership(self):
        """
        (sharing) Transferred ownership of shared folder to another member

        Only call this if :meth:`is_shared_folder_transfer_ownership` is true.

        :rtype: SharedFolderTransferOwnershipType
        """
        if not self.is_shared_folder_transfer_ownership():
            raise AttributeError("tag 'shared_folder_transfer_ownership' not set")
        return self._value

    def get_shared_folder_unmount(self):
        """
        (sharing) Deleted shared folder from Dropbox

        Only call this if :meth:`is_shared_folder_unmount` is true.

        :rtype: SharedFolderUnmountType
        """
        if not self.is_shared_folder_unmount():
            raise AttributeError("tag 'shared_folder_unmount' not set")
        return self._value

    def get_shared_link_add_expiry(self):
        """
        (sharing) Added shared link expiration date

        Only call this if :meth:`is_shared_link_add_expiry` is true.

        :rtype: SharedLinkAddExpiryType
        """
        if not self.is_shared_link_add_expiry():
            raise AttributeError("tag 'shared_link_add_expiry' not set")
        return self._value

    def get_shared_link_change_expiry(self):
        """
        (sharing) Changed shared link expiration date

        Only call this if :meth:`is_shared_link_change_expiry` is true.

        :rtype: SharedLinkChangeExpiryType
        """
        if not self.is_shared_link_change_expiry():
            raise AttributeError("tag 'shared_link_change_expiry' not set")
        return self._value

    def get_shared_link_change_visibility(self):
        """
        (sharing) Changed visibility of shared link

        Only call this if :meth:`is_shared_link_change_visibility` is true.

        :rtype: SharedLinkChangeVisibilityType
        """
        if not self.is_shared_link_change_visibility():
            raise AttributeError("tag 'shared_link_change_visibility' not set")
        return self._value

    def get_shared_link_copy(self):
        """
        (sharing) Added file/folder to Dropbox from shared link

        Only call this if :meth:`is_shared_link_copy` is true.

        :rtype: SharedLinkCopyType
        """
        if not self.is_shared_link_copy():
            raise AttributeError("tag 'shared_link_copy' not set")
        return self._value

    def get_shared_link_create(self):
        """
        (sharing) Created shared link

        Only call this if :meth:`is_shared_link_create` is true.

        :rtype: SharedLinkCreateType
        """
        if not self.is_shared_link_create():
            raise AttributeError("tag 'shared_link_create' not set")
        return self._value

    def get_shared_link_disable(self):
        """
        (sharing) Removed shared link

        Only call this if :meth:`is_shared_link_disable` is true.

        :rtype: SharedLinkDisableType
        """
        if not self.is_shared_link_disable():
            raise AttributeError("tag 'shared_link_disable' not set")
        return self._value

    def get_shared_link_download(self):
        """
        (sharing) Downloaded file/folder from shared link

        Only call this if :meth:`is_shared_link_download` is true.

        :rtype: SharedLinkDownloadType
        """
        if not self.is_shared_link_download():
            raise AttributeError("tag 'shared_link_download' not set")
        return self._value

    def get_shared_link_remove_expiry(self):
        """
        (sharing) Removed shared link expiration date

        Only call this if :meth:`is_shared_link_remove_expiry` is true.

        :rtype: SharedLinkRemoveExpiryType
        """
        if not self.is_shared_link_remove_expiry():
            raise AttributeError("tag 'shared_link_remove_expiry' not set")
        return self._value

    def get_shared_link_share(self):
        """
        (sharing) Added members as audience of shared link

        Only call this if :meth:`is_shared_link_share` is true.

        :rtype: SharedLinkShareType
        """
        if not self.is_shared_link_share():
            raise AttributeError("tag 'shared_link_share' not set")
        return self._value

    def get_shared_link_view(self):
        """
        (sharing) Opened shared link

        Only call this if :meth:`is_shared_link_view` is true.

        :rtype: SharedLinkViewType
        """
        if not self.is_shared_link_view():
            raise AttributeError("tag 'shared_link_view' not set")
        return self._value

    def get_shared_note_opened(self):
        """
        (sharing) Opened shared Paper doc (deprecated, no longer logged)

        Only call this if :meth:`is_shared_note_opened` is true.

        :rtype: SharedNoteOpenedType
        """
        if not self.is_shared_note_opened():
            raise AttributeError("tag 'shared_note_opened' not set")
        return self._value

    def get_shmodel_group_share(self):
        """
        (sharing) Shared link with group (deprecated, no longer logged)

        Only call this if :meth:`is_shmodel_group_share` is true.

        :rtype: ShmodelGroupShareType
        """
        if not self.is_shmodel_group_share():
            raise AttributeError("tag 'shmodel_group_share' not set")
        return self._value

    def get_showcase_access_granted(self):
        """
        (showcase) Granted access to showcase

        Only call this if :meth:`is_showcase_access_granted` is true.

        :rtype: ShowcaseAccessGrantedType
        """
        if not self.is_showcase_access_granted():
            raise AttributeError("tag 'showcase_access_granted' not set")
        return self._value

    def get_showcase_add_member(self):
        """
        (showcase) Added member to showcase

        Only call this if :meth:`is_showcase_add_member` is true.

        :rtype: ShowcaseAddMemberType
        """
        if not self.is_showcase_add_member():
            raise AttributeError("tag 'showcase_add_member' not set")
        return self._value

    def get_showcase_archived(self):
        """
        (showcase) Archived showcase

        Only call this if :meth:`is_showcase_archived` is true.

        :rtype: ShowcaseArchivedType
        """
        if not self.is_showcase_archived():
            raise AttributeError("tag 'showcase_archived' not set")
        return self._value

    def get_showcase_created(self):
        """
        (showcase) Created showcase

        Only call this if :meth:`is_showcase_created` is true.

        :rtype: ShowcaseCreatedType
        """
        if not self.is_showcase_created():
            raise AttributeError("tag 'showcase_created' not set")
        return self._value

    def get_showcase_delete_comment(self):
        """
        (showcase) Deleted showcase comment

        Only call this if :meth:`is_showcase_delete_comment` is true.

        :rtype: ShowcaseDeleteCommentType
        """
        if not self.is_showcase_delete_comment():
            raise AttributeError("tag 'showcase_delete_comment' not set")
        return self._value

    def get_showcase_edited(self):
        """
        (showcase) Edited showcase

        Only call this if :meth:`is_showcase_edited` is true.

        :rtype: ShowcaseEditedType
        """
        if not self.is_showcase_edited():
            raise AttributeError("tag 'showcase_edited' not set")
        return self._value

    def get_showcase_edit_comment(self):
        """
        (showcase) Edited showcase comment

        Only call this if :meth:`is_showcase_edit_comment` is true.

        :rtype: ShowcaseEditCommentType
        """
        if not self.is_showcase_edit_comment():
            raise AttributeError("tag 'showcase_edit_comment' not set")
        return self._value

    def get_showcase_file_added(self):
        """
        (showcase) Added file to showcase

        Only call this if :meth:`is_showcase_file_added` is true.

        :rtype: ShowcaseFileAddedType
        """
        if not self.is_showcase_file_added():
            raise AttributeError("tag 'showcase_file_added' not set")
        return self._value

    def get_showcase_file_download(self):
        """
        (showcase) Downloaded file from showcase

        Only call this if :meth:`is_showcase_file_download` is true.

        :rtype: ShowcaseFileDownloadType
        """
        if not self.is_showcase_file_download():
            raise AttributeError("tag 'showcase_file_download' not set")
        return self._value

    def get_showcase_file_removed(self):
        """
        (showcase) Removed file from showcase

        Only call this if :meth:`is_showcase_file_removed` is true.

        :rtype: ShowcaseFileRemovedType
        """
        if not self.is_showcase_file_removed():
            raise AttributeError("tag 'showcase_file_removed' not set")
        return self._value

    def get_showcase_file_view(self):
        """
        (showcase) Viewed file in showcase

        Only call this if :meth:`is_showcase_file_view` is true.

        :rtype: ShowcaseFileViewType
        """
        if not self.is_showcase_file_view():
            raise AttributeError("tag 'showcase_file_view' not set")
        return self._value

    def get_showcase_permanently_deleted(self):
        """
        (showcase) Permanently deleted showcase

        Only call this if :meth:`is_showcase_permanently_deleted` is true.

        :rtype: ShowcasePermanentlyDeletedType
        """
        if not self.is_showcase_permanently_deleted():
            raise AttributeError("tag 'showcase_permanently_deleted' not set")
        return self._value

    def get_showcase_post_comment(self):
        """
        (showcase) Added showcase comment

        Only call this if :meth:`is_showcase_post_comment` is true.

        :rtype: ShowcasePostCommentType
        """
        if not self.is_showcase_post_comment():
            raise AttributeError("tag 'showcase_post_comment' not set")
        return self._value

    def get_showcase_remove_member(self):
        """
        (showcase) Removed member from showcase

        Only call this if :meth:`is_showcase_remove_member` is true.

        :rtype: ShowcaseRemoveMemberType
        """
        if not self.is_showcase_remove_member():
            raise AttributeError("tag 'showcase_remove_member' not set")
        return self._value

    def get_showcase_renamed(self):
        """
        (showcase) Renamed showcase

        Only call this if :meth:`is_showcase_renamed` is true.

        :rtype: ShowcaseRenamedType
        """
        if not self.is_showcase_renamed():
            raise AttributeError("tag 'showcase_renamed' not set")
        return self._value

    def get_showcase_request_access(self):
        """
        (showcase) Requested access to showcase

        Only call this if :meth:`is_showcase_request_access` is true.

        :rtype: ShowcaseRequestAccessType
        """
        if not self.is_showcase_request_access():
            raise AttributeError("tag 'showcase_request_access' not set")
        return self._value

    def get_showcase_resolve_comment(self):
        """
        (showcase) Resolved showcase comment

        Only call this if :meth:`is_showcase_resolve_comment` is true.

        :rtype: ShowcaseResolveCommentType
        """
        if not self.is_showcase_resolve_comment():
            raise AttributeError("tag 'showcase_resolve_comment' not set")
        return self._value

    def get_showcase_restored(self):
        """
        (showcase) Unarchived showcase

        Only call this if :meth:`is_showcase_restored` is true.

        :rtype: ShowcaseRestoredType
        """
        if not self.is_showcase_restored():
            raise AttributeError("tag 'showcase_restored' not set")
        return self._value

    def get_showcase_trashed(self):
        """
        (showcase) Deleted showcase

        Only call this if :meth:`is_showcase_trashed` is true.

        :rtype: ShowcaseTrashedType
        """
        if not self.is_showcase_trashed():
            raise AttributeError("tag 'showcase_trashed' not set")
        return self._value

    def get_showcase_trashed_deprecated(self):
        """
        (showcase) Deleted showcase (old version) (deprecated, replaced by
        'Deleted showcase')

        Only call this if :meth:`is_showcase_trashed_deprecated` is true.

        :rtype: ShowcaseTrashedDeprecatedType
        """
        if not self.is_showcase_trashed_deprecated():
            raise AttributeError("tag 'showcase_trashed_deprecated' not set")
        return self._value

    def get_showcase_unresolve_comment(self):
        """
        (showcase) Unresolved showcase comment

        Only call this if :meth:`is_showcase_unresolve_comment` is true.

        :rtype: ShowcaseUnresolveCommentType
        """
        if not self.is_showcase_unresolve_comment():
            raise AttributeError("tag 'showcase_unresolve_comment' not set")
        return self._value

    def get_showcase_untrashed(self):
        """
        (showcase) Restored showcase

        Only call this if :meth:`is_showcase_untrashed` is true.

        :rtype: ShowcaseUntrashedType
        """
        if not self.is_showcase_untrashed():
            raise AttributeError("tag 'showcase_untrashed' not set")
        return self._value

    def get_showcase_untrashed_deprecated(self):
        """
        (showcase) Restored showcase (old version) (deprecated, replaced by
        'Restored showcase')

        Only call this if :meth:`is_showcase_untrashed_deprecated` is true.

        :rtype: ShowcaseUntrashedDeprecatedType
        """
        if not self.is_showcase_untrashed_deprecated():
            raise AttributeError("tag 'showcase_untrashed_deprecated' not set")
        return self._value

    def get_showcase_view(self):
        """
        (showcase) Viewed showcase

        Only call this if :meth:`is_showcase_view` is true.

        :rtype: ShowcaseViewType
        """
        if not self.is_showcase_view():
            raise AttributeError("tag 'showcase_view' not set")
        return self._value

    def get_sso_add_cert(self):
        """
        (sso) Added X.509 certificate for SSO

        Only call this if :meth:`is_sso_add_cert` is true.

        :rtype: SsoAddCertType
        """
        if not self.is_sso_add_cert():
            raise AttributeError("tag 'sso_add_cert' not set")
        return self._value

    def get_sso_add_login_url(self):
        """
        (sso) Added sign-in URL for SSO

        Only call this if :meth:`is_sso_add_login_url` is true.

        :rtype: SsoAddLoginUrlType
        """
        if not self.is_sso_add_login_url():
            raise AttributeError("tag 'sso_add_login_url' not set")
        return self._value

    def get_sso_add_logout_url(self):
        """
        (sso) Added sign-out URL for SSO

        Only call this if :meth:`is_sso_add_logout_url` is true.

        :rtype: SsoAddLogoutUrlType
        """
        if not self.is_sso_add_logout_url():
            raise AttributeError("tag 'sso_add_logout_url' not set")
        return self._value

    def get_sso_change_cert(self):
        """
        (sso) Changed X.509 certificate for SSO

        Only call this if :meth:`is_sso_change_cert` is true.

        :rtype: SsoChangeCertType
        """
        if not self.is_sso_change_cert():
            raise AttributeError("tag 'sso_change_cert' not set")
        return self._value

    def get_sso_change_login_url(self):
        """
        (sso) Changed sign-in URL for SSO

        Only call this if :meth:`is_sso_change_login_url` is true.

        :rtype: SsoChangeLoginUrlType
        """
        if not self.is_sso_change_login_url():
            raise AttributeError("tag 'sso_change_login_url' not set")
        return self._value

    def get_sso_change_logout_url(self):
        """
        (sso) Changed sign-out URL for SSO

        Only call this if :meth:`is_sso_change_logout_url` is true.

        :rtype: SsoChangeLogoutUrlType
        """
        if not self.is_sso_change_logout_url():
            raise AttributeError("tag 'sso_change_logout_url' not set")
        return self._value

    def get_sso_change_saml_identity_mode(self):
        """
        (sso) Changed SAML identity mode for SSO

        Only call this if :meth:`is_sso_change_saml_identity_mode` is true.

        :rtype: SsoChangeSamlIdentityModeType
        """
        if not self.is_sso_change_saml_identity_mode():
            raise AttributeError("tag 'sso_change_saml_identity_mode' not set")
        return self._value

    def get_sso_remove_cert(self):
        """
        (sso) Removed X.509 certificate for SSO

        Only call this if :meth:`is_sso_remove_cert` is true.

        :rtype: SsoRemoveCertType
        """
        if not self.is_sso_remove_cert():
            raise AttributeError("tag 'sso_remove_cert' not set")
        return self._value

    def get_sso_remove_login_url(self):
        """
        (sso) Removed sign-in URL for SSO

        Only call this if :meth:`is_sso_remove_login_url` is true.

        :rtype: SsoRemoveLoginUrlType
        """
        if not self.is_sso_remove_login_url():
            raise AttributeError("tag 'sso_remove_login_url' not set")
        return self._value

    def get_sso_remove_logout_url(self):
        """
        (sso) Removed sign-out URL for SSO

        Only call this if :meth:`is_sso_remove_logout_url` is true.

        :rtype: SsoRemoveLogoutUrlType
        """
        if not self.is_sso_remove_logout_url():
            raise AttributeError("tag 'sso_remove_logout_url' not set")
        return self._value

    def get_team_folder_change_status(self):
        """
        (team_folders) Changed archival status of team folder

        Only call this if :meth:`is_team_folder_change_status` is true.

        :rtype: TeamFolderChangeStatusType
        """
        if not self.is_team_folder_change_status():
            raise AttributeError("tag 'team_folder_change_status' not set")
        return self._value

    def get_team_folder_create(self):
        """
        (team_folders) Created team folder in active status

        Only call this if :meth:`is_team_folder_create` is true.

        :rtype: TeamFolderCreateType
        """
        if not self.is_team_folder_create():
            raise AttributeError("tag 'team_folder_create' not set")
        return self._value

    def get_team_folder_downgrade(self):
        """
        (team_folders) Downgraded team folder to regular shared folder

        Only call this if :meth:`is_team_folder_downgrade` is true.

        :rtype: TeamFolderDowngradeType
        """
        if not self.is_team_folder_downgrade():
            raise AttributeError("tag 'team_folder_downgrade' not set")
        return self._value

    def get_team_folder_permanently_delete(self):
        """
        (team_folders) Permanently deleted archived team folder

        Only call this if :meth:`is_team_folder_permanently_delete` is true.

        :rtype: TeamFolderPermanentlyDeleteType
        """
        if not self.is_team_folder_permanently_delete():
            raise AttributeError("tag 'team_folder_permanently_delete' not set")
        return self._value

    def get_team_folder_rename(self):
        """
        (team_folders) Renamed active/archived team folder

        Only call this if :meth:`is_team_folder_rename` is true.

        :rtype: TeamFolderRenameType
        """
        if not self.is_team_folder_rename():
            raise AttributeError("tag 'team_folder_rename' not set")
        return self._value

    def get_team_selective_sync_settings_changed(self):
        """
        (team_folders) Changed sync default

        Only call this if :meth:`is_team_selective_sync_settings_changed` is true.

        :rtype: TeamSelectiveSyncSettingsChangedType
        """
        if not self.is_team_selective_sync_settings_changed():
            raise AttributeError("tag 'team_selective_sync_settings_changed' not set")
        return self._value

    def get_account_capture_change_policy(self):
        """
        (team_policies) Changed account capture setting on team domain

        Only call this if :meth:`is_account_capture_change_policy` is true.

        :rtype: AccountCaptureChangePolicyType
        """
        if not self.is_account_capture_change_policy():
            raise AttributeError("tag 'account_capture_change_policy' not set")
        return self._value

    def get_allow_download_disabled(self):
        """
        (team_policies) Disabled downloads (deprecated, no longer logged)

        Only call this if :meth:`is_allow_download_disabled` is true.

        :rtype: AllowDownloadDisabledType
        """
        if not self.is_allow_download_disabled():
            raise AttributeError("tag 'allow_download_disabled' not set")
        return self._value

    def get_allow_download_enabled(self):
        """
        (team_policies) Enabled downloads (deprecated, no longer logged)

        Only call this if :meth:`is_allow_download_enabled` is true.

        :rtype: AllowDownloadEnabledType
        """
        if not self.is_allow_download_enabled():
            raise AttributeError("tag 'allow_download_enabled' not set")
        return self._value

    def get_camera_uploads_policy_changed(self):
        """
        (team_policies) Changed camera uploads setting for team

        Only call this if :meth:`is_camera_uploads_policy_changed` is true.

        :rtype: CameraUploadsPolicyChangedType
        """
        if not self.is_camera_uploads_policy_changed():
            raise AttributeError("tag 'camera_uploads_policy_changed' not set")
        return self._value

    def get_data_placement_restriction_change_policy(self):
        """
        (team_policies) Set restrictions on data center locations where team
        data resides

        Only call this if :meth:`is_data_placement_restriction_change_policy` is true.

        :rtype: DataPlacementRestrictionChangePolicyType
        """
        if not self.is_data_placement_restriction_change_policy():
            raise AttributeError("tag 'data_placement_restriction_change_policy' not set")
        return self._value

    def get_data_placement_restriction_satisfy_policy(self):
        """
        (team_policies) Completed restrictions on data center locations where
        team data resides

        Only call this if :meth:`is_data_placement_restriction_satisfy_policy` is true.

        :rtype: DataPlacementRestrictionSatisfyPolicyType
        """
        if not self.is_data_placement_restriction_satisfy_policy():
            raise AttributeError("tag 'data_placement_restriction_satisfy_policy' not set")
        return self._value

    def get_device_approvals_change_desktop_policy(self):
        """
        (team_policies) Set/removed limit on number of computers member can link
        to team Dropbox account

        Only call this if :meth:`is_device_approvals_change_desktop_policy` is true.

        :rtype: DeviceApprovalsChangeDesktopPolicyType
        """
        if not self.is_device_approvals_change_desktop_policy():
            raise AttributeError("tag 'device_approvals_change_desktop_policy' not set")
        return self._value

    def get_device_approvals_change_mobile_policy(self):
        """
        (team_policies) Set/removed limit on number of mobile devices member can
        link to team Dropbox account

        Only call this if :meth:`is_device_approvals_change_mobile_policy` is true.

        :rtype: DeviceApprovalsChangeMobilePolicyType
        """
        if not self.is_device_approvals_change_mobile_policy():
            raise AttributeError("tag 'device_approvals_change_mobile_policy' not set")
        return self._value

    def get_device_approvals_change_overage_action(self):
        """
        (team_policies) Changed device approvals setting when member is over
        limit

        Only call this if :meth:`is_device_approvals_change_overage_action` is true.

        :rtype: DeviceApprovalsChangeOverageActionType
        """
        if not self.is_device_approvals_change_overage_action():
            raise AttributeError("tag 'device_approvals_change_overage_action' not set")
        return self._value

    def get_device_approvals_change_unlink_action(self):
        """
        (team_policies) Changed device approvals setting when member unlinks
        approved device

        Only call this if :meth:`is_device_approvals_change_unlink_action` is true.

        :rtype: DeviceApprovalsChangeUnlinkActionType
        """
        if not self.is_device_approvals_change_unlink_action():
            raise AttributeError("tag 'device_approvals_change_unlink_action' not set")
        return self._value

    def get_directory_restrictions_add_members(self):
        """
        (team_policies) Added members to directory restrictions list

        Only call this if :meth:`is_directory_restrictions_add_members` is true.

        :rtype: DirectoryRestrictionsAddMembersType
        """
        if not self.is_directory_restrictions_add_members():
            raise AttributeError("tag 'directory_restrictions_add_members' not set")
        return self._value

    def get_directory_restrictions_remove_members(self):
        """
        (team_policies) Removed members from directory restrictions list

        Only call this if :meth:`is_directory_restrictions_remove_members` is true.

        :rtype: DirectoryRestrictionsRemoveMembersType
        """
        if not self.is_directory_restrictions_remove_members():
            raise AttributeError("tag 'directory_restrictions_remove_members' not set")
        return self._value

    def get_emm_add_exception(self):
        """
        (team_policies) Added members to EMM exception list

        Only call this if :meth:`is_emm_add_exception` is true.

        :rtype: EmmAddExceptionType
        """
        if not self.is_emm_add_exception():
            raise AttributeError("tag 'emm_add_exception' not set")
        return self._value

    def get_emm_change_policy(self):
        """
        (team_policies) Enabled/disabled enterprise mobility management for
        members

        Only call this if :meth:`is_emm_change_policy` is true.

        :rtype: EmmChangePolicyType
        """
        if not self.is_emm_change_policy():
            raise AttributeError("tag 'emm_change_policy' not set")
        return self._value

    def get_emm_remove_exception(self):
        """
        (team_policies) Removed members from EMM exception list

        Only call this if :meth:`is_emm_remove_exception` is true.

        :rtype: EmmRemoveExceptionType
        """
        if not self.is_emm_remove_exception():
            raise AttributeError("tag 'emm_remove_exception' not set")
        return self._value

    def get_extended_version_history_change_policy(self):
        """
        (team_policies) Accepted/opted out of extended version history

        Only call this if :meth:`is_extended_version_history_change_policy` is true.

        :rtype: ExtendedVersionHistoryChangePolicyType
        """
        if not self.is_extended_version_history_change_policy():
            raise AttributeError("tag 'extended_version_history_change_policy' not set")
        return self._value

    def get_file_comments_change_policy(self):
        """
        (team_policies) Enabled/disabled commenting on team files

        Only call this if :meth:`is_file_comments_change_policy` is true.

        :rtype: FileCommentsChangePolicyType
        """
        if not self.is_file_comments_change_policy():
            raise AttributeError("tag 'file_comments_change_policy' not set")
        return self._value

    def get_file_requests_change_policy(self):
        """
        (team_policies) Enabled/disabled file requests

        Only call this if :meth:`is_file_requests_change_policy` is true.

        :rtype: FileRequestsChangePolicyType
        """
        if not self.is_file_requests_change_policy():
            raise AttributeError("tag 'file_requests_change_policy' not set")
        return self._value

    def get_file_requests_emails_enabled(self):
        """
        (team_policies) Enabled file request emails for everyone (deprecated, no
        longer logged)

        Only call this if :meth:`is_file_requests_emails_enabled` is true.

        :rtype: FileRequestsEmailsEnabledType
        """
        if not self.is_file_requests_emails_enabled():
            raise AttributeError("tag 'file_requests_emails_enabled' not set")
        return self._value

    def get_file_requests_emails_restricted_to_team_only(self):
        """
        (team_policies) Enabled file request emails for team (deprecated, no
        longer logged)

        Only call this if :meth:`is_file_requests_emails_restricted_to_team_only` is true.

        :rtype: FileRequestsEmailsRestrictedToTeamOnlyType
        """
        if not self.is_file_requests_emails_restricted_to_team_only():
            raise AttributeError("tag 'file_requests_emails_restricted_to_team_only' not set")
        return self._value

    def get_google_sso_change_policy(self):
        """
        (team_policies) Enabled/disabled Google single sign-on for team

        Only call this if :meth:`is_google_sso_change_policy` is true.

        :rtype: GoogleSsoChangePolicyType
        """
        if not self.is_google_sso_change_policy():
            raise AttributeError("tag 'google_sso_change_policy' not set")
        return self._value

    def get_group_user_management_change_policy(self):
        """
        (team_policies) Changed who can create groups

        Only call this if :meth:`is_group_user_management_change_policy` is true.

        :rtype: GroupUserManagementChangePolicyType
        """
        if not self.is_group_user_management_change_policy():
            raise AttributeError("tag 'group_user_management_change_policy' not set")
        return self._value

    def get_integration_policy_changed(self):
        """
        (team_policies) Changed integration policy for team

        Only call this if :meth:`is_integration_policy_changed` is true.

        :rtype: IntegrationPolicyChangedType
        """
        if not self.is_integration_policy_changed():
            raise AttributeError("tag 'integration_policy_changed' not set")
        return self._value

    def get_member_requests_change_policy(self):
        """
        (team_policies) Changed whether users can find team when not invited

        Only call this if :meth:`is_member_requests_change_policy` is true.

        :rtype: MemberRequestsChangePolicyType
        """
        if not self.is_member_requests_change_policy():
            raise AttributeError("tag 'member_requests_change_policy' not set")
        return self._value

    def get_member_space_limits_add_exception(self):
        """
        (team_policies) Added members to member space limit exception list

        Only call this if :meth:`is_member_space_limits_add_exception` is true.

        :rtype: MemberSpaceLimitsAddExceptionType
        """
        if not self.is_member_space_limits_add_exception():
            raise AttributeError("tag 'member_space_limits_add_exception' not set")
        return self._value

    def get_member_space_limits_change_caps_type_policy(self):
        """
        (team_policies) Changed member space limit type for team

        Only call this if :meth:`is_member_space_limits_change_caps_type_policy` is true.

        :rtype: MemberSpaceLimitsChangeCapsTypePolicyType
        """
        if not self.is_member_space_limits_change_caps_type_policy():
            raise AttributeError("tag 'member_space_limits_change_caps_type_policy' not set")
        return self._value

    def get_member_space_limits_change_policy(self):
        """
        (team_policies) Changed team default member space limit

        Only call this if :meth:`is_member_space_limits_change_policy` is true.

        :rtype: MemberSpaceLimitsChangePolicyType
        """
        if not self.is_member_space_limits_change_policy():
            raise AttributeError("tag 'member_space_limits_change_policy' not set")
        return self._value

    def get_member_space_limits_remove_exception(self):
        """
        (team_policies) Removed members from member space limit exception list

        Only call this if :meth:`is_member_space_limits_remove_exception` is true.

        :rtype: MemberSpaceLimitsRemoveExceptionType
        """
        if not self.is_member_space_limits_remove_exception():
            raise AttributeError("tag 'member_space_limits_remove_exception' not set")
        return self._value

    def get_member_suggestions_change_policy(self):
        """
        (team_policies) Enabled/disabled option for team members to suggest
        people to add to team

        Only call this if :meth:`is_member_suggestions_change_policy` is true.

        :rtype: MemberSuggestionsChangePolicyType
        """
        if not self.is_member_suggestions_change_policy():
            raise AttributeError("tag 'member_suggestions_change_policy' not set")
        return self._value

    def get_microsoft_office_addin_change_policy(self):
        """
        (team_policies) Enabled/disabled Microsoft Office add-in

        Only call this if :meth:`is_microsoft_office_addin_change_policy` is true.

        :rtype: MicrosoftOfficeAddinChangePolicyType
        """
        if not self.is_microsoft_office_addin_change_policy():
            raise AttributeError("tag 'microsoft_office_addin_change_policy' not set")
        return self._value

    def get_network_control_change_policy(self):
        """
        (team_policies) Enabled/disabled network control

        Only call this if :meth:`is_network_control_change_policy` is true.

        :rtype: NetworkControlChangePolicyType
        """
        if not self.is_network_control_change_policy():
            raise AttributeError("tag 'network_control_change_policy' not set")
        return self._value

    def get_paper_change_deployment_policy(self):
        """
        (team_policies) Changed whether Dropbox Paper, when enabled, is deployed
        to all members or to specific members

        Only call this if :meth:`is_paper_change_deployment_policy` is true.

        :rtype: PaperChangeDeploymentPolicyType
        """
        if not self.is_paper_change_deployment_policy():
            raise AttributeError("tag 'paper_change_deployment_policy' not set")
        return self._value

    def get_paper_change_member_link_policy(self):
        """
        (team_policies) Changed whether non-members can view Paper docs with
        link (deprecated, no longer logged)

        Only call this if :meth:`is_paper_change_member_link_policy` is true.

        :rtype: PaperChangeMemberLinkPolicyType
        """
        if not self.is_paper_change_member_link_policy():
            raise AttributeError("tag 'paper_change_member_link_policy' not set")
        return self._value

    def get_paper_change_member_policy(self):
        """
        (team_policies) Changed whether members can share Paper docs outside
        team, and if docs are accessible only by team members or anyone by
        default

        Only call this if :meth:`is_paper_change_member_policy` is true.

        :rtype: PaperChangeMemberPolicyType
        """
        if not self.is_paper_change_member_policy():
            raise AttributeError("tag 'paper_change_member_policy' not set")
        return self._value

    def get_paper_change_policy(self):
        """
        (team_policies) Enabled/disabled Dropbox Paper for team

        Only call this if :meth:`is_paper_change_policy` is true.

        :rtype: PaperChangePolicyType
        """
        if not self.is_paper_change_policy():
            raise AttributeError("tag 'paper_change_policy' not set")
        return self._value

    def get_paper_default_folder_policy_changed(self):
        """
        (team_policies) Changed Paper Default Folder Policy setting for team

        Only call this if :meth:`is_paper_default_folder_policy_changed` is true.

        :rtype: PaperDefaultFolderPolicyChangedType
        """
        if not self.is_paper_default_folder_policy_changed():
            raise AttributeError("tag 'paper_default_folder_policy_changed' not set")
        return self._value

    def get_paper_desktop_policy_changed(self):
        """
        (team_policies) Enabled/disabled Paper Desktop for team

        Only call this if :meth:`is_paper_desktop_policy_changed` is true.

        :rtype: PaperDesktopPolicyChangedType
        """
        if not self.is_paper_desktop_policy_changed():
            raise AttributeError("tag 'paper_desktop_policy_changed' not set")
        return self._value

    def get_paper_enabled_users_group_addition(self):
        """
        (team_policies) Added users to Paper-enabled users list

        Only call this if :meth:`is_paper_enabled_users_group_addition` is true.

        :rtype: PaperEnabledUsersGroupAdditionType
        """
        if not self.is_paper_enabled_users_group_addition():
            raise AttributeError("tag 'paper_enabled_users_group_addition' not set")
        return self._value

    def get_paper_enabled_users_group_removal(self):
        """
        (team_policies) Removed users from Paper-enabled users list

        Only call this if :meth:`is_paper_enabled_users_group_removal` is true.

        :rtype: PaperEnabledUsersGroupRemovalType
        """
        if not self.is_paper_enabled_users_group_removal():
            raise AttributeError("tag 'paper_enabled_users_group_removal' not set")
        return self._value

    def get_permanent_delete_change_policy(self):
        """
        (team_policies) Enabled/disabled ability of team members to permanently
        delete content

        Only call this if :meth:`is_permanent_delete_change_policy` is true.

        :rtype: PermanentDeleteChangePolicyType
        """
        if not self.is_permanent_delete_change_policy():
            raise AttributeError("tag 'permanent_delete_change_policy' not set")
        return self._value

    def get_reseller_support_change_policy(self):
        """
        (team_policies) Enabled/disabled reseller support

        Only call this if :meth:`is_reseller_support_change_policy` is true.

        :rtype: ResellerSupportChangePolicyType
        """
        if not self.is_reseller_support_change_policy():
            raise AttributeError("tag 'reseller_support_change_policy' not set")
        return self._value

    def get_sharing_change_folder_join_policy(self):
        """
        (team_policies) Changed whether team members can join shared folders
        owned outside team

        Only call this if :meth:`is_sharing_change_folder_join_policy` is true.

        :rtype: SharingChangeFolderJoinPolicyType
        """
        if not self.is_sharing_change_folder_join_policy():
            raise AttributeError("tag 'sharing_change_folder_join_policy' not set")
        return self._value

    def get_sharing_change_link_policy(self):
        """
        (team_policies) Changed whether members can share links outside team,
        and if links are accessible only by team members or anyone by default

        Only call this if :meth:`is_sharing_change_link_policy` is true.

        :rtype: SharingChangeLinkPolicyType
        """
        if not self.is_sharing_change_link_policy():
            raise AttributeError("tag 'sharing_change_link_policy' not set")
        return self._value

    def get_sharing_change_member_policy(self):
        """
        (team_policies) Changed whether members can share files/folders outside
        team

        Only call this if :meth:`is_sharing_change_member_policy` is true.

        :rtype: SharingChangeMemberPolicyType
        """
        if not self.is_sharing_change_member_policy():
            raise AttributeError("tag 'sharing_change_member_policy' not set")
        return self._value

    def get_showcase_change_download_policy(self):
        """
        (team_policies) Enabled/disabled downloading files from Dropbox Showcase
        for team

        Only call this if :meth:`is_showcase_change_download_policy` is true.

        :rtype: ShowcaseChangeDownloadPolicyType
        """
        if not self.is_showcase_change_download_policy():
            raise AttributeError("tag 'showcase_change_download_policy' not set")
        return self._value

    def get_showcase_change_enabled_policy(self):
        """
        (team_policies) Enabled/disabled Dropbox Showcase for team

        Only call this if :meth:`is_showcase_change_enabled_policy` is true.

        :rtype: ShowcaseChangeEnabledPolicyType
        """
        if not self.is_showcase_change_enabled_policy():
            raise AttributeError("tag 'showcase_change_enabled_policy' not set")
        return self._value

    def get_showcase_change_external_sharing_policy(self):
        """
        (team_policies) Enabled/disabled sharing Dropbox Showcase externally for
        team

        Only call this if :meth:`is_showcase_change_external_sharing_policy` is true.

        :rtype: ShowcaseChangeExternalSharingPolicyType
        """
        if not self.is_showcase_change_external_sharing_policy():
            raise AttributeError("tag 'showcase_change_external_sharing_policy' not set")
        return self._value

    def get_smart_sync_change_policy(self):
        """
        (team_policies) Changed default Smart Sync setting for team members

        Only call this if :meth:`is_smart_sync_change_policy` is true.

        :rtype: SmartSyncChangePolicyType
        """
        if not self.is_smart_sync_change_policy():
            raise AttributeError("tag 'smart_sync_change_policy' not set")
        return self._value

    def get_smart_sync_not_opt_out(self):
        """
        (team_policies) Opted team into Smart Sync

        Only call this if :meth:`is_smart_sync_not_opt_out` is true.

        :rtype: SmartSyncNotOptOutType
        """
        if not self.is_smart_sync_not_opt_out():
            raise AttributeError("tag 'smart_sync_not_opt_out' not set")
        return self._value

    def get_smart_sync_opt_out(self):
        """
        (team_policies) Opted team out of Smart Sync

        Only call this if :meth:`is_smart_sync_opt_out` is true.

        :rtype: SmartSyncOptOutType
        """
        if not self.is_smart_sync_opt_out():
            raise AttributeError("tag 'smart_sync_opt_out' not set")
        return self._value

    def get_sso_change_policy(self):
        """
        (team_policies) Changed single sign-on setting for team

        Only call this if :meth:`is_sso_change_policy` is true.

        :rtype: SsoChangePolicyType
        """
        if not self.is_sso_change_policy():
            raise AttributeError("tag 'sso_change_policy' not set")
        return self._value

    def get_team_extensions_policy_changed(self):
        """
        (team_policies) Changed App Integrations setting for team

        Only call this if :meth:`is_team_extensions_policy_changed` is true.

        :rtype: TeamExtensionsPolicyChangedType
        """
        if not self.is_team_extensions_policy_changed():
            raise AttributeError("tag 'team_extensions_policy_changed' not set")
        return self._value

    def get_team_selective_sync_policy_changed(self):
        """
        (team_policies) Enabled/disabled Team Selective Sync for team

        Only call this if :meth:`is_team_selective_sync_policy_changed` is true.

        :rtype: TeamSelectiveSyncPolicyChangedType
        """
        if not self.is_team_selective_sync_policy_changed():
            raise AttributeError("tag 'team_selective_sync_policy_changed' not set")
        return self._value

    def get_tfa_change_policy(self):
        """
        (team_policies) Changed two-step verification setting for team

        Only call this if :meth:`is_tfa_change_policy` is true.

        :rtype: TfaChangePolicyType
        """
        if not self.is_tfa_change_policy():
            raise AttributeError("tag 'tfa_change_policy' not set")
        return self._value

    def get_two_account_change_policy(self):
        """
        (team_policies) Enabled/disabled option for members to link personal
        Dropbox account and team account to same computer

        Only call this if :meth:`is_two_account_change_policy` is true.

        :rtype: TwoAccountChangePolicyType
        """
        if not self.is_two_account_change_policy():
            raise AttributeError("tag 'two_account_change_policy' not set")
        return self._value

    def get_viewer_info_policy_changed(self):
        """
        (team_policies) Changed team policy for viewer info

        Only call this if :meth:`is_viewer_info_policy_changed` is true.

        :rtype: ViewerInfoPolicyChangedType
        """
        if not self.is_viewer_info_policy_changed():
            raise AttributeError("tag 'viewer_info_policy_changed' not set")
        return self._value

    def get_web_sessions_change_fixed_length_policy(self):
        """
        (team_policies) Changed how long members can stay signed in to
        Dropbox.com

        Only call this if :meth:`is_web_sessions_change_fixed_length_policy` is true.

        :rtype: WebSessionsChangeFixedLengthPolicyType
        """
        if not self.is_web_sessions_change_fixed_length_policy():
            raise AttributeError("tag 'web_sessions_change_fixed_length_policy' not set")
        return self._value

    def get_web_sessions_change_idle_length_policy(self):
        """
        (team_policies) Changed how long team members can be idle while signed
        in to Dropbox.com

        Only call this if :meth:`is_web_sessions_change_idle_length_policy` is true.

        :rtype: WebSessionsChangeIdleLengthPolicyType
        """
        if not self.is_web_sessions_change_idle_length_policy():
            raise AttributeError("tag 'web_sessions_change_idle_length_policy' not set")
        return self._value

    def get_team_merge_from(self):
        """
        (team_profile) Merged another team into this team

        Only call this if :meth:`is_team_merge_from` is true.

        :rtype: TeamMergeFromType
        """
        if not self.is_team_merge_from():
            raise AttributeError("tag 'team_merge_from' not set")
        return self._value

    def get_team_merge_to(self):
        """
        (team_profile) Merged this team into another team

        Only call this if :meth:`is_team_merge_to` is true.

        :rtype: TeamMergeToType
        """
        if not self.is_team_merge_to():
            raise AttributeError("tag 'team_merge_to' not set")
        return self._value

    def get_team_profile_add_logo(self):
        """
        (team_profile) Added team logo to display on shared link headers

        Only call this if :meth:`is_team_profile_add_logo` is true.

        :rtype: TeamProfileAddLogoType
        """
        if not self.is_team_profile_add_logo():
            raise AttributeError("tag 'team_profile_add_logo' not set")
        return self._value

    def get_team_profile_change_default_language(self):
        """
        (team_profile) Changed default language for team

        Only call this if :meth:`is_team_profile_change_default_language` is true.

        :rtype: TeamProfileChangeDefaultLanguageType
        """
        if not self.is_team_profile_change_default_language():
            raise AttributeError("tag 'team_profile_change_default_language' not set")
        return self._value

    def get_team_profile_change_logo(self):
        """
        (team_profile) Changed team logo displayed on shared link headers

        Only call this if :meth:`is_team_profile_change_logo` is true.

        :rtype: TeamProfileChangeLogoType
        """
        if not self.is_team_profile_change_logo():
            raise AttributeError("tag 'team_profile_change_logo' not set")
        return self._value

    def get_team_profile_change_name(self):
        """
        (team_profile) Changed team name

        Only call this if :meth:`is_team_profile_change_name` is true.

        :rtype: TeamProfileChangeNameType
        """
        if not self.is_team_profile_change_name():
            raise AttributeError("tag 'team_profile_change_name' not set")
        return self._value

    def get_team_profile_remove_logo(self):
        """
        (team_profile) Removed team logo displayed on shared link headers

        Only call this if :meth:`is_team_profile_remove_logo` is true.

        :rtype: TeamProfileRemoveLogoType
        """
        if not self.is_team_profile_remove_logo():
            raise AttributeError("tag 'team_profile_remove_logo' not set")
        return self._value

    def get_tfa_add_backup_phone(self):
        """
        (tfa) Added backup phone for two-step verification

        Only call this if :meth:`is_tfa_add_backup_phone` is true.

        :rtype: TfaAddBackupPhoneType
        """
        if not self.is_tfa_add_backup_phone():
            raise AttributeError("tag 'tfa_add_backup_phone' not set")
        return self._value

    def get_tfa_add_security_key(self):
        """
        (tfa) Added security key for two-step verification

        Only call this if :meth:`is_tfa_add_security_key` is true.

        :rtype: TfaAddSecurityKeyType
        """
        if not self.is_tfa_add_security_key():
            raise AttributeError("tag 'tfa_add_security_key' not set")
        return self._value

    def get_tfa_change_backup_phone(self):
        """
        (tfa) Changed backup phone for two-step verification

        Only call this if :meth:`is_tfa_change_backup_phone` is true.

        :rtype: TfaChangeBackupPhoneType
        """
        if not self.is_tfa_change_backup_phone():
            raise AttributeError("tag 'tfa_change_backup_phone' not set")
        return self._value

    def get_tfa_change_status(self):
        """
        (tfa) Enabled/disabled/changed two-step verification setting

        Only call this if :meth:`is_tfa_change_status` is true.

        :rtype: TfaChangeStatusType
        """
        if not self.is_tfa_change_status():
            raise AttributeError("tag 'tfa_change_status' not set")
        return self._value

    def get_tfa_remove_backup_phone(self):
        """
        (tfa) Removed backup phone for two-step verification

        Only call this if :meth:`is_tfa_remove_backup_phone` is true.

        :rtype: TfaRemoveBackupPhoneType
        """
        if not self.is_tfa_remove_backup_phone():
            raise AttributeError("tag 'tfa_remove_backup_phone' not set")
        return self._value

    def get_tfa_remove_security_key(self):
        """
        (tfa) Removed security key for two-step verification

        Only call this if :meth:`is_tfa_remove_security_key` is true.

        :rtype: TfaRemoveSecurityKeyType
        """
        if not self.is_tfa_remove_security_key():
            raise AttributeError("tag 'tfa_remove_security_key' not set")
        return self._value

    def get_tfa_reset(self):
        """
        (tfa) Reset two-step verification for team member

        Only call this if :meth:`is_tfa_reset` is true.

        :rtype: TfaResetType
        """
        if not self.is_tfa_reset():
            raise AttributeError("tag 'tfa_reset' not set")
        return self._value

    def get_guest_admin_change_status(self):
        """
        (trusted_teams) Changed guest team admin status

        Only call this if :meth:`is_guest_admin_change_status` is true.

        :rtype: GuestAdminChangeStatusType
        """
        if not self.is_guest_admin_change_status():
            raise AttributeError("tag 'guest_admin_change_status' not set")
        return self._value

    def get_team_merge_request_accepted(self):
        """
        (trusted_teams) Accepted a team merge request

        Only call this if :meth:`is_team_merge_request_accepted` is true.

        :rtype: TeamMergeRequestAcceptedType
        """
        if not self.is_team_merge_request_accepted():
            raise AttributeError("tag 'team_merge_request_accepted' not set")
        return self._value

    def get_team_merge_request_accepted_shown_to_primary_team(self):
        """
        (trusted_teams) Accepted a team merge request (deprecated, replaced by
        'Accepted a team merge request')

        Only call this if :meth:`is_team_merge_request_accepted_shown_to_primary_team` is true.

        :rtype: TeamMergeRequestAcceptedShownToPrimaryTeamType
        """
        if not self.is_team_merge_request_accepted_shown_to_primary_team():
            raise AttributeError("tag 'team_merge_request_accepted_shown_to_primary_team' not set")
        return self._value

    def get_team_merge_request_accepted_shown_to_secondary_team(self):
        """
        (trusted_teams) Accepted a team merge request (deprecated, replaced by
        'Accepted a team merge request')

        Only call this if :meth:`is_team_merge_request_accepted_shown_to_secondary_team` is true.

        :rtype: TeamMergeRequestAcceptedShownToSecondaryTeamType
        """
        if not self.is_team_merge_request_accepted_shown_to_secondary_team():
            raise AttributeError("tag 'team_merge_request_accepted_shown_to_secondary_team' not set")
        return self._value

    def get_team_merge_request_auto_canceled(self):
        """
        (trusted_teams) Automatically canceled team merge request

        Only call this if :meth:`is_team_merge_request_auto_canceled` is true.

        :rtype: TeamMergeRequestAutoCanceledType
        """
        if not self.is_team_merge_request_auto_canceled():
            raise AttributeError("tag 'team_merge_request_auto_canceled' not set")
        return self._value

    def get_team_merge_request_canceled(self):
        """
        (trusted_teams) Canceled a team merge request

        Only call this if :meth:`is_team_merge_request_canceled` is true.

        :rtype: TeamMergeRequestCanceledType
        """
        if not self.is_team_merge_request_canceled():
            raise AttributeError("tag 'team_merge_request_canceled' not set")
        return self._value

    def get_team_merge_request_canceled_shown_to_primary_team(self):
        """
        (trusted_teams) Canceled a team merge request (deprecated, replaced by
        'Canceled a team merge request')

        Only call this if :meth:`is_team_merge_request_canceled_shown_to_primary_team` is true.

        :rtype: TeamMergeRequestCanceledShownToPrimaryTeamType
        """
        if not self.is_team_merge_request_canceled_shown_to_primary_team():
            raise AttributeError("tag 'team_merge_request_canceled_shown_to_primary_team' not set")
        return self._value

    def get_team_merge_request_canceled_shown_to_secondary_team(self):
        """
        (trusted_teams) Canceled a team merge request (deprecated, replaced by
        'Canceled a team merge request')

        Only call this if :meth:`is_team_merge_request_canceled_shown_to_secondary_team` is true.

        :rtype: TeamMergeRequestCanceledShownToSecondaryTeamType
        """
        if not self.is_team_merge_request_canceled_shown_to_secondary_team():
            raise AttributeError("tag 'team_merge_request_canceled_shown_to_secondary_team' not set")
        return self._value

    def get_team_merge_request_expired(self):
        """
        (trusted_teams) Team merge request expired

        Only call this if :meth:`is_team_merge_request_expired` is true.

        :rtype: TeamMergeRequestExpiredType
        """
        if not self.is_team_merge_request_expired():
            raise AttributeError("tag 'team_merge_request_expired' not set")
        return self._value

    def get_team_merge_request_expired_shown_to_primary_team(self):
        """
        (trusted_teams) Team merge request expired (deprecated, replaced by
        'Team merge request expired')

        Only call this if :meth:`is_team_merge_request_expired_shown_to_primary_team` is true.

        :rtype: TeamMergeRequestExpiredShownToPrimaryTeamType
        """
        if not self.is_team_merge_request_expired_shown_to_primary_team():
            raise AttributeError("tag 'team_merge_request_expired_shown_to_primary_team' not set")
        return self._value

    def get_team_merge_request_expired_shown_to_secondary_team(self):
        """
        (trusted_teams) Team merge request expired (deprecated, replaced by
        'Team merge request expired')

        Only call this if :meth:`is_team_merge_request_expired_shown_to_secondary_team` is true.

        :rtype: TeamMergeRequestExpiredShownToSecondaryTeamType
        """
        if not self.is_team_merge_request_expired_shown_to_secondary_team():
            raise AttributeError("tag 'team_merge_request_expired_shown_to_secondary_team' not set")
        return self._value

    def get_team_merge_request_rejected_shown_to_primary_team(self):
        """
        (trusted_teams) Rejected a team merge request (deprecated, no longer
        logged)

        Only call this if :meth:`is_team_merge_request_rejected_shown_to_primary_team` is true.

        :rtype: TeamMergeRequestRejectedShownToPrimaryTeamType
        """
        if not self.is_team_merge_request_rejected_shown_to_primary_team():
            raise AttributeError("tag 'team_merge_request_rejected_shown_to_primary_team' not set")
        return self._value

    def get_team_merge_request_rejected_shown_to_secondary_team(self):
        """
        (trusted_teams) Rejected a team merge request (deprecated, no longer
        logged)

        Only call this if :meth:`is_team_merge_request_rejected_shown_to_secondary_team` is true.

        :rtype: TeamMergeRequestRejectedShownToSecondaryTeamType
        """
        if not self.is_team_merge_request_rejected_shown_to_secondary_team():
            raise AttributeError("tag 'team_merge_request_rejected_shown_to_secondary_team' not set")
        return self._value

    def get_team_merge_request_reminder(self):
        """
        (trusted_teams) Sent a team merge request reminder

        Only call this if :meth:`is_team_merge_request_reminder` is true.

        :rtype: TeamMergeRequestReminderType
        """
        if not self.is_team_merge_request_reminder():
            raise AttributeError("tag 'team_merge_request_reminder' not set")
        return self._value

    def get_team_merge_request_reminder_shown_to_primary_team(self):
        """
        (trusted_teams) Sent a team merge request reminder (deprecated, replaced
        by 'Sent a team merge request reminder')

        Only call this if :meth:`is_team_merge_request_reminder_shown_to_primary_team` is true.

        :rtype: TeamMergeRequestReminderShownToPrimaryTeamType
        """
        if not self.is_team_merge_request_reminder_shown_to_primary_team():
            raise AttributeError("tag 'team_merge_request_reminder_shown_to_primary_team' not set")
        return self._value

    def get_team_merge_request_reminder_shown_to_secondary_team(self):
        """
        (trusted_teams) Sent a team merge request reminder (deprecated, replaced
        by 'Sent a team merge request reminder')

        Only call this if :meth:`is_team_merge_request_reminder_shown_to_secondary_team` is true.

        :rtype: TeamMergeRequestReminderShownToSecondaryTeamType
        """
        if not self.is_team_merge_request_reminder_shown_to_secondary_team():
            raise AttributeError("tag 'team_merge_request_reminder_shown_to_secondary_team' not set")
        return self._value

    def get_team_merge_request_revoked(self):
        """
        (trusted_teams) Canceled the team merge

        Only call this if :meth:`is_team_merge_request_revoked` is true.

        :rtype: TeamMergeRequestRevokedType
        """
        if not self.is_team_merge_request_revoked():
            raise AttributeError("tag 'team_merge_request_revoked' not set")
        return self._value

    def get_team_merge_request_sent_shown_to_primary_team(self):
        """
        (trusted_teams) Requested to merge their Dropbox team into yours

        Only call this if :meth:`is_team_merge_request_sent_shown_to_primary_team` is true.

        :rtype: TeamMergeRequestSentShownToPrimaryTeamType
        """
        if not self.is_team_merge_request_sent_shown_to_primary_team():
            raise AttributeError("tag 'team_merge_request_sent_shown_to_primary_team' not set")
        return self._value

    def get_team_merge_request_sent_shown_to_secondary_team(self):
        """
        (trusted_teams) Requested to merge your team into another Dropbox team

        Only call this if :meth:`is_team_merge_request_sent_shown_to_secondary_team` is true.

        :rtype: TeamMergeRequestSentShownToSecondaryTeamType
        """
        if not self.is_team_merge_request_sent_shown_to_secondary_team():
            raise AttributeError("tag 'team_merge_request_sent_shown_to_secondary_team' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EventType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'EventType(%r, %r)' % (self._tag, self._value)

EventType_validator = bv.Union(EventType)

class ExportMembersReportDetails(bb.Struct):
    """
    Created member data report.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ExportMembersReportDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ExportMembersReportDetails()'

ExportMembersReportDetails_validator = bv.Struct(ExportMembersReportDetails)

class ExportMembersReportType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ExportMembersReportType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ExportMembersReportType(description={!r})'.format(
            self._description_value,
        )

ExportMembersReportType_validator = bv.Struct(ExportMembersReportType)

class ExtendedVersionHistoryChangePolicyDetails(bb.Struct):
    """
    Accepted/opted out of extended version history.

    :ivar team_log.ExtendedVersionHistoryChangePolicyDetails.new_value: New
        extended version history policy.
    :ivar team_log.ExtendedVersionHistoryChangePolicyDetails.previous_value:
        Previous extended version history policy. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New extended version history policy.

        :rtype: ExtendedVersionHistoryPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous extended version history policy. Might be missing due to
        historical data gap.

        :rtype: ExtendedVersionHistoryPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ExtendedVersionHistoryChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ExtendedVersionHistoryChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

ExtendedVersionHistoryChangePolicyDetails_validator = bv.Struct(ExtendedVersionHistoryChangePolicyDetails)

class ExtendedVersionHistoryChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ExtendedVersionHistoryChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ExtendedVersionHistoryChangePolicyType(description={!r})'.format(
            self._description_value,
        )

ExtendedVersionHistoryChangePolicyType_validator = bv.Struct(ExtendedVersionHistoryChangePolicyType)

class ExtendedVersionHistoryPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    explicitly_limited = None
    # Attribute is overwritten below the class definition
    explicitly_unlimited = None
    # Attribute is overwritten below the class definition
    implicitly_limited = None
    # Attribute is overwritten below the class definition
    implicitly_unlimited = None
    # Attribute is overwritten below the class definition
    other = None

    def is_explicitly_limited(self):
        """
        Check if the union tag is ``explicitly_limited``.

        :rtype: bool
        """
        return self._tag == 'explicitly_limited'

    def is_explicitly_unlimited(self):
        """
        Check if the union tag is ``explicitly_unlimited``.

        :rtype: bool
        """
        return self._tag == 'explicitly_unlimited'

    def is_implicitly_limited(self):
        """
        Check if the union tag is ``implicitly_limited``.

        :rtype: bool
        """
        return self._tag == 'implicitly_limited'

    def is_implicitly_unlimited(self):
        """
        Check if the union tag is ``implicitly_unlimited``.

        :rtype: bool
        """
        return self._tag == 'implicitly_unlimited'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ExtendedVersionHistoryPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ExtendedVersionHistoryPolicy(%r, %r)' % (self._tag, self._value)

ExtendedVersionHistoryPolicy_validator = bv.Union(ExtendedVersionHistoryPolicy)

class ExternalUserLogInfo(bb.Struct):
    """
    A user without a Dropbox account.

    :ivar team_log.ExternalUserLogInfo.user_identifier: An external user
        identifier.
    :ivar team_log.ExternalUserLogInfo.identifier_type: Identifier type.
    """

    __slots__ = [
        '_user_identifier_value',
        '_user_identifier_present',
        '_identifier_type_value',
        '_identifier_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 user_identifier=None,
                 identifier_type=None):
        self._user_identifier_value = None
        self._user_identifier_present = False
        self._identifier_type_value = None
        self._identifier_type_present = False
        if user_identifier is not None:
            self.user_identifier = user_identifier
        if identifier_type is not None:
            self.identifier_type = identifier_type

    @property
    def user_identifier(self):
        """
        An external user identifier.

        :rtype: str
        """
        if self._user_identifier_present:
            return self._user_identifier_value
        else:
            raise AttributeError("missing required field 'user_identifier'")

    @user_identifier.setter
    def user_identifier(self, val):
        val = self._user_identifier_validator.validate(val)
        self._user_identifier_value = val
        self._user_identifier_present = True

    @user_identifier.deleter
    def user_identifier(self):
        self._user_identifier_value = None
        self._user_identifier_present = False

    @property
    def identifier_type(self):
        """
        Identifier type.

        :rtype: IdentifierType
        """
        if self._identifier_type_present:
            return self._identifier_type_value
        else:
            raise AttributeError("missing required field 'identifier_type'")

    @identifier_type.setter
    def identifier_type(self, val):
        self._identifier_type_validator.validate_type_only(val)
        self._identifier_type_value = val
        self._identifier_type_present = True

    @identifier_type.deleter
    def identifier_type(self):
        self._identifier_type_value = None
        self._identifier_type_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ExternalUserLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ExternalUserLogInfo(user_identifier={!r}, identifier_type={!r})'.format(
            self._user_identifier_value,
            self._identifier_type_value,
        )

ExternalUserLogInfo_validator = bv.Struct(ExternalUserLogInfo)

class FailureDetailsLogInfo(bb.Struct):
    """
    Provides details about a failure

    :ivar team_log.FailureDetailsLogInfo.user_friendly_message: A user friendly
        explanation of the error. Might be missing due to historical data gap.
    :ivar team_log.FailureDetailsLogInfo.technical_error_message: A technical
        explanation of the error. This is relevant for some errors.
    """

    __slots__ = [
        '_user_friendly_message_value',
        '_user_friendly_message_present',
        '_technical_error_message_value',
        '_technical_error_message_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 user_friendly_message=None,
                 technical_error_message=None):
        self._user_friendly_message_value = None
        self._user_friendly_message_present = False
        self._technical_error_message_value = None
        self._technical_error_message_present = False
        if user_friendly_message is not None:
            self.user_friendly_message = user_friendly_message
        if technical_error_message is not None:
            self.technical_error_message = technical_error_message

    @property
    def user_friendly_message(self):
        """
        A user friendly explanation of the error. Might be missing due to
        historical data gap.

        :rtype: str
        """
        if self._user_friendly_message_present:
            return self._user_friendly_message_value
        else:
            return None

    @user_friendly_message.setter
    def user_friendly_message(self, val):
        if val is None:
            del self.user_friendly_message
            return
        val = self._user_friendly_message_validator.validate(val)
        self._user_friendly_message_value = val
        self._user_friendly_message_present = True

    @user_friendly_message.deleter
    def user_friendly_message(self):
        self._user_friendly_message_value = None
        self._user_friendly_message_present = False

    @property
    def technical_error_message(self):
        """
        A technical explanation of the error. This is relevant for some errors.

        :rtype: str
        """
        if self._technical_error_message_present:
            return self._technical_error_message_value
        else:
            return None

    @technical_error_message.setter
    def technical_error_message(self, val):
        if val is None:
            del self.technical_error_message
            return
        val = self._technical_error_message_validator.validate(val)
        self._technical_error_message_value = val
        self._technical_error_message_present = True

    @technical_error_message.deleter
    def technical_error_message(self):
        self._technical_error_message_value = None
        self._technical_error_message_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FailureDetailsLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FailureDetailsLogInfo(user_friendly_message={!r}, technical_error_message={!r})'.format(
            self._user_friendly_message_value,
            self._technical_error_message_value,
        )

FailureDetailsLogInfo_validator = bv.Struct(FailureDetailsLogInfo)

class FileAddCommentDetails(bb.Struct):
    """
    Added file comment.

    :ivar team_log.FileAddCommentDetails.comment_text: Comment text. Might be
        missing due to historical data gap.
    """

    __slots__ = [
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 comment_text=None):
        self._comment_text_value = None
        self._comment_text_present = False
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileAddCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileAddCommentDetails(comment_text={!r})'.format(
            self._comment_text_value,
        )

FileAddCommentDetails_validator = bv.Struct(FileAddCommentDetails)

class FileAddCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileAddCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileAddCommentType(description={!r})'.format(
            self._description_value,
        )

FileAddCommentType_validator = bv.Struct(FileAddCommentType)

class FileAddDetails(bb.Struct):
    """
    Added files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileAddDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileAddDetails()'

FileAddDetails_validator = bv.Struct(FileAddDetails)

class FileAddType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileAddType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileAddType(description={!r})'.format(
            self._description_value,
        )

FileAddType_validator = bv.Struct(FileAddType)

class FileChangeCommentSubscriptionDetails(bb.Struct):
    """
    Subscribed to or unsubscribed from comment notifications for file.

    :ivar team_log.FileChangeCommentSubscriptionDetails.new_value: New file
        comment subscription.
    :ivar team_log.FileChangeCommentSubscriptionDetails.previous_value: Previous
        file comment subscription. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New file comment subscription.

        :rtype: FileCommentNotificationPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous file comment subscription. Might be missing due to historical
        data gap.

        :rtype: FileCommentNotificationPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileChangeCommentSubscriptionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileChangeCommentSubscriptionDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

FileChangeCommentSubscriptionDetails_validator = bv.Struct(FileChangeCommentSubscriptionDetails)

class FileChangeCommentSubscriptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileChangeCommentSubscriptionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileChangeCommentSubscriptionType(description={!r})'.format(
            self._description_value,
        )

FileChangeCommentSubscriptionType_validator = bv.Struct(FileChangeCommentSubscriptionType)

class FileCommentNotificationPolicy(bb.Union):
    """
    Enable or disable file comments notifications

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileCommentNotificationPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileCommentNotificationPolicy(%r, %r)' % (self._tag, self._value)

FileCommentNotificationPolicy_validator = bv.Union(FileCommentNotificationPolicy)

class FileCommentsChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled commenting on team files.

    :ivar team_log.FileCommentsChangePolicyDetails.new_value: New commenting on
        team files policy.
    :ivar team_log.FileCommentsChangePolicyDetails.previous_value: Previous
        commenting on team files policy. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New commenting on team files policy.

        :rtype: FileCommentsPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous commenting on team files policy. Might be missing due to
        historical data gap.

        :rtype: FileCommentsPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileCommentsChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileCommentsChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

FileCommentsChangePolicyDetails_validator = bv.Struct(FileCommentsChangePolicyDetails)

class FileCommentsChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileCommentsChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileCommentsChangePolicyType(description={!r})'.format(
            self._description_value,
        )

FileCommentsChangePolicyType_validator = bv.Struct(FileCommentsChangePolicyType)

class FileCommentsPolicy(bb.Union):
    """
    File comments policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileCommentsPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileCommentsPolicy(%r, %r)' % (self._tag, self._value)

FileCommentsPolicy_validator = bv.Union(FileCommentsPolicy)

class FileCopyDetails(bb.Struct):
    """
    Copied files and/or folders.

    :ivar team_log.FileCopyDetails.relocate_action_details: Relocate action
        details.
    """

    __slots__ = [
        '_relocate_action_details_value',
        '_relocate_action_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 relocate_action_details=None):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False
        if relocate_action_details is not None:
            self.relocate_action_details = relocate_action_details

    @property
    def relocate_action_details(self):
        """
        Relocate action details.

        :rtype: list of [RelocateAssetReferencesLogInfo]
        """
        if self._relocate_action_details_present:
            return self._relocate_action_details_value
        else:
            raise AttributeError("missing required field 'relocate_action_details'")

    @relocate_action_details.setter
    def relocate_action_details(self, val):
        val = self._relocate_action_details_validator.validate(val)
        self._relocate_action_details_value = val
        self._relocate_action_details_present = True

    @relocate_action_details.deleter
    def relocate_action_details(self):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileCopyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileCopyDetails(relocate_action_details={!r})'.format(
            self._relocate_action_details_value,
        )

FileCopyDetails_validator = bv.Struct(FileCopyDetails)

class FileCopyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileCopyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileCopyType(description={!r})'.format(
            self._description_value,
        )

FileCopyType_validator = bv.Struct(FileCopyType)

class FileDeleteCommentDetails(bb.Struct):
    """
    Deleted file comment.

    :ivar team_log.FileDeleteCommentDetails.comment_text: Comment text. Might be
        missing due to historical data gap.
    """

    __slots__ = [
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 comment_text=None):
        self._comment_text_value = None
        self._comment_text_present = False
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileDeleteCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileDeleteCommentDetails(comment_text={!r})'.format(
            self._comment_text_value,
        )

FileDeleteCommentDetails_validator = bv.Struct(FileDeleteCommentDetails)

class FileDeleteCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileDeleteCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileDeleteCommentType(description={!r})'.format(
            self._description_value,
        )

FileDeleteCommentType_validator = bv.Struct(FileDeleteCommentType)

class FileDeleteDetails(bb.Struct):
    """
    Deleted files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileDeleteDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileDeleteDetails()'

FileDeleteDetails_validator = bv.Struct(FileDeleteDetails)

class FileDeleteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileDeleteType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileDeleteType(description={!r})'.format(
            self._description_value,
        )

FileDeleteType_validator = bv.Struct(FileDeleteType)

class FileDownloadDetails(bb.Struct):
    """
    Downloaded files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileDownloadDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileDownloadDetails()'

FileDownloadDetails_validator = bv.Struct(FileDownloadDetails)

class FileDownloadType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileDownloadType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileDownloadType(description={!r})'.format(
            self._description_value,
        )

FileDownloadType_validator = bv.Struct(FileDownloadType)

class FileEditCommentDetails(bb.Struct):
    """
    Edited file comment.

    :ivar team_log.FileEditCommentDetails.comment_text: Comment text. Might be
        missing due to historical data gap.
    :ivar team_log.FileEditCommentDetails.previous_comment_text: Previous
        comment text.
    """

    __slots__ = [
        '_comment_text_value',
        '_comment_text_present',
        '_previous_comment_text_value',
        '_previous_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_comment_text=None,
                 comment_text=None):
        self._comment_text_value = None
        self._comment_text_present = False
        self._previous_comment_text_value = None
        self._previous_comment_text_present = False
        if comment_text is not None:
            self.comment_text = comment_text
        if previous_comment_text is not None:
            self.previous_comment_text = previous_comment_text

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    @property
    def previous_comment_text(self):
        """
        Previous comment text.

        :rtype: str
        """
        if self._previous_comment_text_present:
            return self._previous_comment_text_value
        else:
            raise AttributeError("missing required field 'previous_comment_text'")

    @previous_comment_text.setter
    def previous_comment_text(self, val):
        val = self._previous_comment_text_validator.validate(val)
        self._previous_comment_text_value = val
        self._previous_comment_text_present = True

    @previous_comment_text.deleter
    def previous_comment_text(self):
        self._previous_comment_text_value = None
        self._previous_comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileEditCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileEditCommentDetails(previous_comment_text={!r}, comment_text={!r})'.format(
            self._previous_comment_text_value,
            self._comment_text_value,
        )

FileEditCommentDetails_validator = bv.Struct(FileEditCommentDetails)

class FileEditCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileEditCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileEditCommentType(description={!r})'.format(
            self._description_value,
        )

FileEditCommentType_validator = bv.Struct(FileEditCommentType)

class FileEditDetails(bb.Struct):
    """
    Edited files.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileEditDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileEditDetails()'

FileEditDetails_validator = bv.Struct(FileEditDetails)

class FileEditType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileEditType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileEditType(description={!r})'.format(
            self._description_value,
        )

FileEditType_validator = bv.Struct(FileEditType)

class FileGetCopyReferenceDetails(bb.Struct):
    """
    Created copy reference to file/folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileGetCopyReferenceDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileGetCopyReferenceDetails()'

FileGetCopyReferenceDetails_validator = bv.Struct(FileGetCopyReferenceDetails)

class FileGetCopyReferenceType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileGetCopyReferenceType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileGetCopyReferenceType(description={!r})'.format(
            self._description_value,
        )

FileGetCopyReferenceType_validator = bv.Struct(FileGetCopyReferenceType)

class FileLikeCommentDetails(bb.Struct):
    """
    Liked file comment.

    :ivar team_log.FileLikeCommentDetails.comment_text: Comment text. Might be
        missing due to historical data gap.
    """

    __slots__ = [
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 comment_text=None):
        self._comment_text_value = None
        self._comment_text_present = False
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileLikeCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileLikeCommentDetails(comment_text={!r})'.format(
            self._comment_text_value,
        )

FileLikeCommentDetails_validator = bv.Struct(FileLikeCommentDetails)

class FileLikeCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileLikeCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileLikeCommentType(description={!r})'.format(
            self._description_value,
        )

FileLikeCommentType_validator = bv.Struct(FileLikeCommentType)

class FileOrFolderLogInfo(bb.Struct):
    """
    Generic information relevant both for files and folders

    :ivar team_log.FileOrFolderLogInfo.path: Path relative to event context.
    :ivar team_log.FileOrFolderLogInfo.display_name: Display name. Might be
        missing due to historical data gap.
    :ivar team_log.FileOrFolderLogInfo.file_id: Unique ID. Might be missing due
        to historical data gap.
    """

    __slots__ = [
        '_path_value',
        '_path_present',
        '_display_name_value',
        '_display_name_present',
        '_file_id_value',
        '_file_id_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 path=None,
                 display_name=None,
                 file_id=None):
        self._path_value = None
        self._path_present = False
        self._display_name_value = None
        self._display_name_present = False
        self._file_id_value = None
        self._file_id_present = False
        if path is not None:
            self.path = path
        if display_name is not None:
            self.display_name = display_name
        if file_id is not None:
            self.file_id = file_id

    @property
    def path(self):
        """
        Path relative to event context.

        :rtype: PathLogInfo
        """
        if self._path_present:
            return self._path_value
        else:
            raise AttributeError("missing required field 'path'")

    @path.setter
    def path(self, val):
        self._path_validator.validate_type_only(val)
        self._path_value = val
        self._path_present = True

    @path.deleter
    def path(self):
        self._path_value = None
        self._path_present = False

    @property
    def display_name(self):
        """
        Display name. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._display_name_present:
            return self._display_name_value
        else:
            return None

    @display_name.setter
    def display_name(self, val):
        if val is None:
            del self.display_name
            return
        val = self._display_name_validator.validate(val)
        self._display_name_value = val
        self._display_name_present = True

    @display_name.deleter
    def display_name(self):
        self._display_name_value = None
        self._display_name_present = False

    @property
    def file_id(self):
        """
        Unique ID. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._file_id_present:
            return self._file_id_value
        else:
            return None

    @file_id.setter
    def file_id(self, val):
        if val is None:
            del self.file_id
            return
        val = self._file_id_validator.validate(val)
        self._file_id_value = val
        self._file_id_present = True

    @file_id.deleter
    def file_id(self):
        self._file_id_value = None
        self._file_id_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileOrFolderLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileOrFolderLogInfo(path={!r}, display_name={!r}, file_id={!r})'.format(
            self._path_value,
            self._display_name_value,
            self._file_id_value,
        )

FileOrFolderLogInfo_validator = bv.Struct(FileOrFolderLogInfo)

class FileLogInfo(FileOrFolderLogInfo):
    """
    File's logged information.
    """

    __slots__ = [
    ]

    _has_required_fields = True

    def __init__(self,
                 path=None,
                 display_name=None,
                 file_id=None):
        super(FileLogInfo, self).__init__(path,
                                          display_name,
                                          file_id)

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileLogInfo(path={!r}, display_name={!r}, file_id={!r})'.format(
            self._path_value,
            self._display_name_value,
            self._file_id_value,
        )

FileLogInfo_validator = bv.Struct(FileLogInfo)

class FileMoveDetails(bb.Struct):
    """
    Moved files and/or folders.

    :ivar team_log.FileMoveDetails.relocate_action_details: Relocate action
        details.
    """

    __slots__ = [
        '_relocate_action_details_value',
        '_relocate_action_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 relocate_action_details=None):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False
        if relocate_action_details is not None:
            self.relocate_action_details = relocate_action_details

    @property
    def relocate_action_details(self):
        """
        Relocate action details.

        :rtype: list of [RelocateAssetReferencesLogInfo]
        """
        if self._relocate_action_details_present:
            return self._relocate_action_details_value
        else:
            raise AttributeError("missing required field 'relocate_action_details'")

    @relocate_action_details.setter
    def relocate_action_details(self, val):
        val = self._relocate_action_details_validator.validate(val)
        self._relocate_action_details_value = val
        self._relocate_action_details_present = True

    @relocate_action_details.deleter
    def relocate_action_details(self):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileMoveDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileMoveDetails(relocate_action_details={!r})'.format(
            self._relocate_action_details_value,
        )

FileMoveDetails_validator = bv.Struct(FileMoveDetails)

class FileMoveType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileMoveType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileMoveType(description={!r})'.format(
            self._description_value,
        )

FileMoveType_validator = bv.Struct(FileMoveType)

class FilePermanentlyDeleteDetails(bb.Struct):
    """
    Permanently deleted files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FilePermanentlyDeleteDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FilePermanentlyDeleteDetails()'

FilePermanentlyDeleteDetails_validator = bv.Struct(FilePermanentlyDeleteDetails)

class FilePermanentlyDeleteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FilePermanentlyDeleteType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FilePermanentlyDeleteType(description={!r})'.format(
            self._description_value,
        )

FilePermanentlyDeleteType_validator = bv.Struct(FilePermanentlyDeleteType)

class FilePreviewDetails(bb.Struct):
    """
    Previewed files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FilePreviewDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FilePreviewDetails()'

FilePreviewDetails_validator = bv.Struct(FilePreviewDetails)

class FilePreviewType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FilePreviewType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FilePreviewType(description={!r})'.format(
            self._description_value,
        )

FilePreviewType_validator = bv.Struct(FilePreviewType)

class FileRenameDetails(bb.Struct):
    """
    Renamed files and/or folders.

    :ivar team_log.FileRenameDetails.relocate_action_details: Relocate action
        details.
    """

    __slots__ = [
        '_relocate_action_details_value',
        '_relocate_action_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 relocate_action_details=None):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False
        if relocate_action_details is not None:
            self.relocate_action_details = relocate_action_details

    @property
    def relocate_action_details(self):
        """
        Relocate action details.

        :rtype: list of [RelocateAssetReferencesLogInfo]
        """
        if self._relocate_action_details_present:
            return self._relocate_action_details_value
        else:
            raise AttributeError("missing required field 'relocate_action_details'")

    @relocate_action_details.setter
    def relocate_action_details(self, val):
        val = self._relocate_action_details_validator.validate(val)
        self._relocate_action_details_value = val
        self._relocate_action_details_present = True

    @relocate_action_details.deleter
    def relocate_action_details(self):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRenameDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRenameDetails(relocate_action_details={!r})'.format(
            self._relocate_action_details_value,
        )

FileRenameDetails_validator = bv.Struct(FileRenameDetails)

class FileRenameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRenameType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRenameType(description={!r})'.format(
            self._description_value,
        )

FileRenameType_validator = bv.Struct(FileRenameType)

class FileRequestChangeDetails(bb.Struct):
    """
    Changed file request.

    :ivar team_log.FileRequestChangeDetails.file_request_id: File request id.
        Might be missing due to historical data gap.
    :ivar team_log.FileRequestChangeDetails.previous_details: Previous file
        request details. Might be missing due to historical data gap.
    :ivar team_log.FileRequestChangeDetails.new_details: New file request
        details.
    """

    __slots__ = [
        '_file_request_id_value',
        '_file_request_id_present',
        '_previous_details_value',
        '_previous_details_present',
        '_new_details_value',
        '_new_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_details=None,
                 file_request_id=None,
                 previous_details=None):
        self._file_request_id_value = None
        self._file_request_id_present = False
        self._previous_details_value = None
        self._previous_details_present = False
        self._new_details_value = None
        self._new_details_present = False
        if file_request_id is not None:
            self.file_request_id = file_request_id
        if previous_details is not None:
            self.previous_details = previous_details
        if new_details is not None:
            self.new_details = new_details

    @property
    def file_request_id(self):
        """
        File request id. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._file_request_id_present:
            return self._file_request_id_value
        else:
            return None

    @file_request_id.setter
    def file_request_id(self, val):
        if val is None:
            del self.file_request_id
            return
        val = self._file_request_id_validator.validate(val)
        self._file_request_id_value = val
        self._file_request_id_present = True

    @file_request_id.deleter
    def file_request_id(self):
        self._file_request_id_value = None
        self._file_request_id_present = False

    @property
    def previous_details(self):
        """
        Previous file request details. Might be missing due to historical data
        gap.

        :rtype: FileRequestDetails
        """
        if self._previous_details_present:
            return self._previous_details_value
        else:
            return None

    @previous_details.setter
    def previous_details(self, val):
        if val is None:
            del self.previous_details
            return
        self._previous_details_validator.validate_type_only(val)
        self._previous_details_value = val
        self._previous_details_present = True

    @previous_details.deleter
    def previous_details(self):
        self._previous_details_value = None
        self._previous_details_present = False

    @property
    def new_details(self):
        """
        New file request details.

        :rtype: FileRequestDetails
        """
        if self._new_details_present:
            return self._new_details_value
        else:
            raise AttributeError("missing required field 'new_details'")

    @new_details.setter
    def new_details(self, val):
        self._new_details_validator.validate_type_only(val)
        self._new_details_value = val
        self._new_details_present = True

    @new_details.deleter
    def new_details(self):
        self._new_details_value = None
        self._new_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestChangeDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestChangeDetails(new_details={!r}, file_request_id={!r}, previous_details={!r})'.format(
            self._new_details_value,
            self._file_request_id_value,
            self._previous_details_value,
        )

FileRequestChangeDetails_validator = bv.Struct(FileRequestChangeDetails)

class FileRequestChangeType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestChangeType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestChangeType(description={!r})'.format(
            self._description_value,
        )

FileRequestChangeType_validator = bv.Struct(FileRequestChangeType)

class FileRequestCloseDetails(bb.Struct):
    """
    Closed file request.

    :ivar team_log.FileRequestCloseDetails.file_request_id: File request id.
        Might be missing due to historical data gap.
    :ivar team_log.FileRequestCloseDetails.previous_details: Previous file
        request details. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_file_request_id_value',
        '_file_request_id_present',
        '_previous_details_value',
        '_previous_details_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 file_request_id=None,
                 previous_details=None):
        self._file_request_id_value = None
        self._file_request_id_present = False
        self._previous_details_value = None
        self._previous_details_present = False
        if file_request_id is not None:
            self.file_request_id = file_request_id
        if previous_details is not None:
            self.previous_details = previous_details

    @property
    def file_request_id(self):
        """
        File request id. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._file_request_id_present:
            return self._file_request_id_value
        else:
            return None

    @file_request_id.setter
    def file_request_id(self, val):
        if val is None:
            del self.file_request_id
            return
        val = self._file_request_id_validator.validate(val)
        self._file_request_id_value = val
        self._file_request_id_present = True

    @file_request_id.deleter
    def file_request_id(self):
        self._file_request_id_value = None
        self._file_request_id_present = False

    @property
    def previous_details(self):
        """
        Previous file request details. Might be missing due to historical data
        gap.

        :rtype: FileRequestDetails
        """
        if self._previous_details_present:
            return self._previous_details_value
        else:
            return None

    @previous_details.setter
    def previous_details(self, val):
        if val is None:
            del self.previous_details
            return
        self._previous_details_validator.validate_type_only(val)
        self._previous_details_value = val
        self._previous_details_present = True

    @previous_details.deleter
    def previous_details(self):
        self._previous_details_value = None
        self._previous_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestCloseDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestCloseDetails(file_request_id={!r}, previous_details={!r})'.format(
            self._file_request_id_value,
            self._previous_details_value,
        )

FileRequestCloseDetails_validator = bv.Struct(FileRequestCloseDetails)

class FileRequestCloseType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestCloseType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestCloseType(description={!r})'.format(
            self._description_value,
        )

FileRequestCloseType_validator = bv.Struct(FileRequestCloseType)

class FileRequestCreateDetails(bb.Struct):
    """
    Created file request.

    :ivar team_log.FileRequestCreateDetails.file_request_id: File request id.
        Might be missing due to historical data gap.
    :ivar team_log.FileRequestCreateDetails.request_details: File request
        details. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_file_request_id_value',
        '_file_request_id_present',
        '_request_details_value',
        '_request_details_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 file_request_id=None,
                 request_details=None):
        self._file_request_id_value = None
        self._file_request_id_present = False
        self._request_details_value = None
        self._request_details_present = False
        if file_request_id is not None:
            self.file_request_id = file_request_id
        if request_details is not None:
            self.request_details = request_details

    @property
    def file_request_id(self):
        """
        File request id. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._file_request_id_present:
            return self._file_request_id_value
        else:
            return None

    @file_request_id.setter
    def file_request_id(self, val):
        if val is None:
            del self.file_request_id
            return
        val = self._file_request_id_validator.validate(val)
        self._file_request_id_value = val
        self._file_request_id_present = True

    @file_request_id.deleter
    def file_request_id(self):
        self._file_request_id_value = None
        self._file_request_id_present = False

    @property
    def request_details(self):
        """
        File request details. Might be missing due to historical data gap.

        :rtype: FileRequestDetails
        """
        if self._request_details_present:
            return self._request_details_value
        else:
            return None

    @request_details.setter
    def request_details(self, val):
        if val is None:
            del self.request_details
            return
        self._request_details_validator.validate_type_only(val)
        self._request_details_value = val
        self._request_details_present = True

    @request_details.deleter
    def request_details(self):
        self._request_details_value = None
        self._request_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestCreateDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestCreateDetails(file_request_id={!r}, request_details={!r})'.format(
            self._file_request_id_value,
            self._request_details_value,
        )

FileRequestCreateDetails_validator = bv.Struct(FileRequestCreateDetails)

class FileRequestCreateType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestCreateType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestCreateType(description={!r})'.format(
            self._description_value,
        )

FileRequestCreateType_validator = bv.Struct(FileRequestCreateType)

class FileRequestDeadline(bb.Struct):
    """
    File request deadline

    :ivar team_log.FileRequestDeadline.deadline: The deadline for this file
        request. Might be missing due to historical data gap.
    :ivar team_log.FileRequestDeadline.allow_late_uploads: If set, allow uploads
        after the deadline has passed. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_deadline_value',
        '_deadline_present',
        '_allow_late_uploads_value',
        '_allow_late_uploads_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 deadline=None,
                 allow_late_uploads=None):
        self._deadline_value = None
        self._deadline_present = False
        self._allow_late_uploads_value = None
        self._allow_late_uploads_present = False
        if deadline is not None:
            self.deadline = deadline
        if allow_late_uploads is not None:
            self.allow_late_uploads = allow_late_uploads

    @property
    def deadline(self):
        """
        The deadline for this file request. Might be missing due to historical
        data gap.

        :rtype: datetime.datetime
        """
        if self._deadline_present:
            return self._deadline_value
        else:
            return None

    @deadline.setter
    def deadline(self, val):
        if val is None:
            del self.deadline
            return
        val = self._deadline_validator.validate(val)
        self._deadline_value = val
        self._deadline_present = True

    @deadline.deleter
    def deadline(self):
        self._deadline_value = None
        self._deadline_present = False

    @property
    def allow_late_uploads(self):
        """
        If set, allow uploads after the deadline has passed. Might be missing
        due to historical data gap.

        :rtype: str
        """
        if self._allow_late_uploads_present:
            return self._allow_late_uploads_value
        else:
            return None

    @allow_late_uploads.setter
    def allow_late_uploads(self, val):
        if val is None:
            del self.allow_late_uploads
            return
        val = self._allow_late_uploads_validator.validate(val)
        self._allow_late_uploads_value = val
        self._allow_late_uploads_present = True

    @allow_late_uploads.deleter
    def allow_late_uploads(self):
        self._allow_late_uploads_value = None
        self._allow_late_uploads_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestDeadline, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestDeadline(deadline={!r}, allow_late_uploads={!r})'.format(
            self._deadline_value,
            self._allow_late_uploads_value,
        )

FileRequestDeadline_validator = bv.Struct(FileRequestDeadline)

class FileRequestDeleteDetails(bb.Struct):
    """
    Delete file request.

    :ivar team_log.FileRequestDeleteDetails.file_request_id: File request id.
        Might be missing due to historical data gap.
    :ivar team_log.FileRequestDeleteDetails.previous_details: Previous file
        request details. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_file_request_id_value',
        '_file_request_id_present',
        '_previous_details_value',
        '_previous_details_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 file_request_id=None,
                 previous_details=None):
        self._file_request_id_value = None
        self._file_request_id_present = False
        self._previous_details_value = None
        self._previous_details_present = False
        if file_request_id is not None:
            self.file_request_id = file_request_id
        if previous_details is not None:
            self.previous_details = previous_details

    @property
    def file_request_id(self):
        """
        File request id. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._file_request_id_present:
            return self._file_request_id_value
        else:
            return None

    @file_request_id.setter
    def file_request_id(self, val):
        if val is None:
            del self.file_request_id
            return
        val = self._file_request_id_validator.validate(val)
        self._file_request_id_value = val
        self._file_request_id_present = True

    @file_request_id.deleter
    def file_request_id(self):
        self._file_request_id_value = None
        self._file_request_id_present = False

    @property
    def previous_details(self):
        """
        Previous file request details. Might be missing due to historical data
        gap.

        :rtype: FileRequestDetails
        """
        if self._previous_details_present:
            return self._previous_details_value
        else:
            return None

    @previous_details.setter
    def previous_details(self, val):
        if val is None:
            del self.previous_details
            return
        self._previous_details_validator.validate_type_only(val)
        self._previous_details_value = val
        self._previous_details_present = True

    @previous_details.deleter
    def previous_details(self):
        self._previous_details_value = None
        self._previous_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestDeleteDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestDeleteDetails(file_request_id={!r}, previous_details={!r})'.format(
            self._file_request_id_value,
            self._previous_details_value,
        )

FileRequestDeleteDetails_validator = bv.Struct(FileRequestDeleteDetails)

class FileRequestDeleteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestDeleteType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestDeleteType(description={!r})'.format(
            self._description_value,
        )

FileRequestDeleteType_validator = bv.Struct(FileRequestDeleteType)

class FileRequestDetails(bb.Struct):
    """
    File request details

    :ivar team_log.FileRequestDetails.asset_index: Asset position in the Assets
        list.
    :ivar team_log.FileRequestDetails.deadline: File request deadline. Might be
        missing due to historical data gap.
    """

    __slots__ = [
        '_asset_index_value',
        '_asset_index_present',
        '_deadline_value',
        '_deadline_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 asset_index=None,
                 deadline=None):
        self._asset_index_value = None
        self._asset_index_present = False
        self._deadline_value = None
        self._deadline_present = False
        if asset_index is not None:
            self.asset_index = asset_index
        if deadline is not None:
            self.deadline = deadline

    @property
    def asset_index(self):
        """
        Asset position in the Assets list.

        :rtype: int
        """
        if self._asset_index_present:
            return self._asset_index_value
        else:
            raise AttributeError("missing required field 'asset_index'")

    @asset_index.setter
    def asset_index(self, val):
        val = self._asset_index_validator.validate(val)
        self._asset_index_value = val
        self._asset_index_present = True

    @asset_index.deleter
    def asset_index(self):
        self._asset_index_value = None
        self._asset_index_present = False

    @property
    def deadline(self):
        """
        File request deadline. Might be missing due to historical data gap.

        :rtype: FileRequestDeadline
        """
        if self._deadline_present:
            return self._deadline_value
        else:
            return None

    @deadline.setter
    def deadline(self, val):
        if val is None:
            del self.deadline
            return
        self._deadline_validator.validate_type_only(val)
        self._deadline_value = val
        self._deadline_present = True

    @deadline.deleter
    def deadline(self):
        self._deadline_value = None
        self._deadline_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestDetails(asset_index={!r}, deadline={!r})'.format(
            self._asset_index_value,
            self._deadline_value,
        )

FileRequestDetails_validator = bv.Struct(FileRequestDetails)

class FileRequestReceiveFileDetails(bb.Struct):
    """
    Received files for file request.

    :ivar team_log.FileRequestReceiveFileDetails.file_request_id: File request
        id. Might be missing due to historical data gap.
    :ivar team_log.FileRequestReceiveFileDetails.file_request_details: File
        request details. Might be missing due to historical data gap.
    :ivar team_log.FileRequestReceiveFileDetails.submitted_file_names: Submitted
        file names.
    :ivar team_log.FileRequestReceiveFileDetails.submitter_name: The name as
        provided by the submitter. Might be missing due to historical data gap.
    :ivar team_log.FileRequestReceiveFileDetails.submitter_email: The email as
        provided by the submitter. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_file_request_id_value',
        '_file_request_id_present',
        '_file_request_details_value',
        '_file_request_details_present',
        '_submitted_file_names_value',
        '_submitted_file_names_present',
        '_submitter_name_value',
        '_submitter_name_present',
        '_submitter_email_value',
        '_submitter_email_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 submitted_file_names=None,
                 file_request_id=None,
                 file_request_details=None,
                 submitter_name=None,
                 submitter_email=None):
        self._file_request_id_value = None
        self._file_request_id_present = False
        self._file_request_details_value = None
        self._file_request_details_present = False
        self._submitted_file_names_value = None
        self._submitted_file_names_present = False
        self._submitter_name_value = None
        self._submitter_name_present = False
        self._submitter_email_value = None
        self._submitter_email_present = False
        if file_request_id is not None:
            self.file_request_id = file_request_id
        if file_request_details is not None:
            self.file_request_details = file_request_details
        if submitted_file_names is not None:
            self.submitted_file_names = submitted_file_names
        if submitter_name is not None:
            self.submitter_name = submitter_name
        if submitter_email is not None:
            self.submitter_email = submitter_email

    @property
    def file_request_id(self):
        """
        File request id. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._file_request_id_present:
            return self._file_request_id_value
        else:
            return None

    @file_request_id.setter
    def file_request_id(self, val):
        if val is None:
            del self.file_request_id
            return
        val = self._file_request_id_validator.validate(val)
        self._file_request_id_value = val
        self._file_request_id_present = True

    @file_request_id.deleter
    def file_request_id(self):
        self._file_request_id_value = None
        self._file_request_id_present = False

    @property
    def file_request_details(self):
        """
        File request details. Might be missing due to historical data gap.

        :rtype: FileRequestDetails
        """
        if self._file_request_details_present:
            return self._file_request_details_value
        else:
            return None

    @file_request_details.setter
    def file_request_details(self, val):
        if val is None:
            del self.file_request_details
            return
        self._file_request_details_validator.validate_type_only(val)
        self._file_request_details_value = val
        self._file_request_details_present = True

    @file_request_details.deleter
    def file_request_details(self):
        self._file_request_details_value = None
        self._file_request_details_present = False

    @property
    def submitted_file_names(self):
        """
        Submitted file names.

        :rtype: list of [str]
        """
        if self._submitted_file_names_present:
            return self._submitted_file_names_value
        else:
            raise AttributeError("missing required field 'submitted_file_names'")

    @submitted_file_names.setter
    def submitted_file_names(self, val):
        val = self._submitted_file_names_validator.validate(val)
        self._submitted_file_names_value = val
        self._submitted_file_names_present = True

    @submitted_file_names.deleter
    def submitted_file_names(self):
        self._submitted_file_names_value = None
        self._submitted_file_names_present = False

    @property
    def submitter_name(self):
        """
        The name as provided by the submitter. Might be missing due to
        historical data gap.

        :rtype: str
        """
        if self._submitter_name_present:
            return self._submitter_name_value
        else:
            return None

    @submitter_name.setter
    def submitter_name(self, val):
        if val is None:
            del self.submitter_name
            return
        val = self._submitter_name_validator.validate(val)
        self._submitter_name_value = val
        self._submitter_name_present = True

    @submitter_name.deleter
    def submitter_name(self):
        self._submitter_name_value = None
        self._submitter_name_present = False

    @property
    def submitter_email(self):
        """
        The email as provided by the submitter. Might be missing due to
        historical data gap.

        :rtype: str
        """
        if self._submitter_email_present:
            return self._submitter_email_value
        else:
            return None

    @submitter_email.setter
    def submitter_email(self, val):
        if val is None:
            del self.submitter_email
            return
        val = self._submitter_email_validator.validate(val)
        self._submitter_email_value = val
        self._submitter_email_present = True

    @submitter_email.deleter
    def submitter_email(self):
        self._submitter_email_value = None
        self._submitter_email_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestReceiveFileDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestReceiveFileDetails(submitted_file_names={!r}, file_request_id={!r}, file_request_details={!r}, submitter_name={!r}, submitter_email={!r})'.format(
            self._submitted_file_names_value,
            self._file_request_id_value,
            self._file_request_details_value,
            self._submitter_name_value,
            self._submitter_email_value,
        )

FileRequestReceiveFileDetails_validator = bv.Struct(FileRequestReceiveFileDetails)

class FileRequestReceiveFileType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestReceiveFileType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestReceiveFileType(description={!r})'.format(
            self._description_value,
        )

FileRequestReceiveFileType_validator = bv.Struct(FileRequestReceiveFileType)

class FileRequestsChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled file requests.

    :ivar team_log.FileRequestsChangePolicyDetails.new_value: New file requests
        policy.
    :ivar team_log.FileRequestsChangePolicyDetails.previous_value: Previous file
        requests policy. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New file requests policy.

        :rtype: FileRequestsPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous file requests policy. Might be missing due to historical data
        gap.

        :rtype: FileRequestsPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestsChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestsChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

FileRequestsChangePolicyDetails_validator = bv.Struct(FileRequestsChangePolicyDetails)

class FileRequestsChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestsChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestsChangePolicyType(description={!r})'.format(
            self._description_value,
        )

FileRequestsChangePolicyType_validator = bv.Struct(FileRequestsChangePolicyType)

class FileRequestsEmailsEnabledDetails(bb.Struct):
    """
    Enabled file request emails for everyone.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestsEmailsEnabledDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestsEmailsEnabledDetails()'

FileRequestsEmailsEnabledDetails_validator = bv.Struct(FileRequestsEmailsEnabledDetails)

class FileRequestsEmailsEnabledType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestsEmailsEnabledType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestsEmailsEnabledType(description={!r})'.format(
            self._description_value,
        )

FileRequestsEmailsEnabledType_validator = bv.Struct(FileRequestsEmailsEnabledType)

class FileRequestsEmailsRestrictedToTeamOnlyDetails(bb.Struct):
    """
    Enabled file request emails for team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestsEmailsRestrictedToTeamOnlyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestsEmailsRestrictedToTeamOnlyDetails()'

FileRequestsEmailsRestrictedToTeamOnlyDetails_validator = bv.Struct(FileRequestsEmailsRestrictedToTeamOnlyDetails)

class FileRequestsEmailsRestrictedToTeamOnlyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestsEmailsRestrictedToTeamOnlyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestsEmailsRestrictedToTeamOnlyType(description={!r})'.format(
            self._description_value,
        )

FileRequestsEmailsRestrictedToTeamOnlyType_validator = bv.Struct(FileRequestsEmailsRestrictedToTeamOnlyType)

class FileRequestsPolicy(bb.Union):
    """
    File requests policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRequestsPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRequestsPolicy(%r, %r)' % (self._tag, self._value)

FileRequestsPolicy_validator = bv.Union(FileRequestsPolicy)

class FileResolveCommentDetails(bb.Struct):
    """
    Resolved file comment.

    :ivar team_log.FileResolveCommentDetails.comment_text: Comment text. Might
        be missing due to historical data gap.
    """

    __slots__ = [
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 comment_text=None):
        self._comment_text_value = None
        self._comment_text_present = False
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileResolveCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileResolveCommentDetails(comment_text={!r})'.format(
            self._comment_text_value,
        )

FileResolveCommentDetails_validator = bv.Struct(FileResolveCommentDetails)

class FileResolveCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileResolveCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileResolveCommentType(description={!r})'.format(
            self._description_value,
        )

FileResolveCommentType_validator = bv.Struct(FileResolveCommentType)

class FileRestoreDetails(bb.Struct):
    """
    Restored deleted files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRestoreDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRestoreDetails()'

FileRestoreDetails_validator = bv.Struct(FileRestoreDetails)

class FileRestoreType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRestoreType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRestoreType(description={!r})'.format(
            self._description_value,
        )

FileRestoreType_validator = bv.Struct(FileRestoreType)

class FileRevertDetails(bb.Struct):
    """
    Reverted files to previous version.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRevertDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRevertDetails()'

FileRevertDetails_validator = bv.Struct(FileRevertDetails)

class FileRevertType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRevertType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRevertType(description={!r})'.format(
            self._description_value,
        )

FileRevertType_validator = bv.Struct(FileRevertType)

class FileRollbackChangesDetails(bb.Struct):
    """
    Rolled back file actions.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRollbackChangesDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRollbackChangesDetails()'

FileRollbackChangesDetails_validator = bv.Struct(FileRollbackChangesDetails)

class FileRollbackChangesType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileRollbackChangesType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileRollbackChangesType(description={!r})'.format(
            self._description_value,
        )

FileRollbackChangesType_validator = bv.Struct(FileRollbackChangesType)

class FileSaveCopyReferenceDetails(bb.Struct):
    """
    Saved file/folder using copy reference.

    :ivar team_log.FileSaveCopyReferenceDetails.relocate_action_details:
        Relocate action details.
    """

    __slots__ = [
        '_relocate_action_details_value',
        '_relocate_action_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 relocate_action_details=None):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False
        if relocate_action_details is not None:
            self.relocate_action_details = relocate_action_details

    @property
    def relocate_action_details(self):
        """
        Relocate action details.

        :rtype: list of [RelocateAssetReferencesLogInfo]
        """
        if self._relocate_action_details_present:
            return self._relocate_action_details_value
        else:
            raise AttributeError("missing required field 'relocate_action_details'")

    @relocate_action_details.setter
    def relocate_action_details(self, val):
        val = self._relocate_action_details_validator.validate(val)
        self._relocate_action_details_value = val
        self._relocate_action_details_present = True

    @relocate_action_details.deleter
    def relocate_action_details(self):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileSaveCopyReferenceDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileSaveCopyReferenceDetails(relocate_action_details={!r})'.format(
            self._relocate_action_details_value,
        )

FileSaveCopyReferenceDetails_validator = bv.Struct(FileSaveCopyReferenceDetails)

class FileSaveCopyReferenceType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileSaveCopyReferenceType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileSaveCopyReferenceType(description={!r})'.format(
            self._description_value,
        )

FileSaveCopyReferenceType_validator = bv.Struct(FileSaveCopyReferenceType)

class FileUnlikeCommentDetails(bb.Struct):
    """
    Unliked file comment.

    :ivar team_log.FileUnlikeCommentDetails.comment_text: Comment text. Might be
        missing due to historical data gap.
    """

    __slots__ = [
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 comment_text=None):
        self._comment_text_value = None
        self._comment_text_present = False
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileUnlikeCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileUnlikeCommentDetails(comment_text={!r})'.format(
            self._comment_text_value,
        )

FileUnlikeCommentDetails_validator = bv.Struct(FileUnlikeCommentDetails)

class FileUnlikeCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileUnlikeCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileUnlikeCommentType(description={!r})'.format(
            self._description_value,
        )

FileUnlikeCommentType_validator = bv.Struct(FileUnlikeCommentType)

class FileUnresolveCommentDetails(bb.Struct):
    """
    Unresolved file comment.

    :ivar team_log.FileUnresolveCommentDetails.comment_text: Comment text. Might
        be missing due to historical data gap.
    """

    __slots__ = [
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 comment_text=None):
        self._comment_text_value = None
        self._comment_text_present = False
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileUnresolveCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileUnresolveCommentDetails(comment_text={!r})'.format(
            self._comment_text_value,
        )

FileUnresolveCommentDetails_validator = bv.Struct(FileUnresolveCommentDetails)

class FileUnresolveCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileUnresolveCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileUnresolveCommentType(description={!r})'.format(
            self._description_value,
        )

FileUnresolveCommentType_validator = bv.Struct(FileUnresolveCommentType)

class FolderLogInfo(FileOrFolderLogInfo):
    """
    Folder's logged information.
    """

    __slots__ = [
    ]

    _has_required_fields = True

    def __init__(self,
                 path=None,
                 display_name=None,
                 file_id=None):
        super(FolderLogInfo, self).__init__(path,
                                            display_name,
                                            file_id)

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FolderLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FolderLogInfo(path={!r}, display_name={!r}, file_id={!r})'.format(
            self._path_value,
            self._display_name_value,
            self._file_id_value,
        )

FolderLogInfo_validator = bv.Struct(FolderLogInfo)

class GeoLocationLogInfo(bb.Struct):
    """
    Geographic location details.

    :ivar team_log.GeoLocationLogInfo.city: City name.
    :ivar team_log.GeoLocationLogInfo.region: Region name.
    :ivar team_log.GeoLocationLogInfo.country: Country code.
    :ivar team_log.GeoLocationLogInfo.ip_address: IP address.
    """

    __slots__ = [
        '_city_value',
        '_city_present',
        '_region_value',
        '_region_present',
        '_country_value',
        '_country_present',
        '_ip_address_value',
        '_ip_address_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 ip_address=None,
                 city=None,
                 region=None,
                 country=None):
        self._city_value = None
        self._city_present = False
        self._region_value = None
        self._region_present = False
        self._country_value = None
        self._country_present = False
        self._ip_address_value = None
        self._ip_address_present = False
        if city is not None:
            self.city = city
        if region is not None:
            self.region = region
        if country is not None:
            self.country = country
        if ip_address is not None:
            self.ip_address = ip_address

    @property
    def city(self):
        """
        City name.

        :rtype: str
        """
        if self._city_present:
            return self._city_value
        else:
            return None

    @city.setter
    def city(self, val):
        if val is None:
            del self.city
            return
        val = self._city_validator.validate(val)
        self._city_value = val
        self._city_present = True

    @city.deleter
    def city(self):
        self._city_value = None
        self._city_present = False

    @property
    def region(self):
        """
        Region name.

        :rtype: str
        """
        if self._region_present:
            return self._region_value
        else:
            return None

    @region.setter
    def region(self, val):
        if val is None:
            del self.region
            return
        val = self._region_validator.validate(val)
        self._region_value = val
        self._region_present = True

    @region.deleter
    def region(self):
        self._region_value = None
        self._region_present = False

    @property
    def country(self):
        """
        Country code.

        :rtype: str
        """
        if self._country_present:
            return self._country_value
        else:
            return None

    @country.setter
    def country(self, val):
        if val is None:
            del self.country
            return
        val = self._country_validator.validate(val)
        self._country_value = val
        self._country_present = True

    @country.deleter
    def country(self):
        self._country_value = None
        self._country_present = False

    @property
    def ip_address(self):
        """
        IP address.

        :rtype: str
        """
        if self._ip_address_present:
            return self._ip_address_value
        else:
            raise AttributeError("missing required field 'ip_address'")

    @ip_address.setter
    def ip_address(self, val):
        val = self._ip_address_validator.validate(val)
        self._ip_address_value = val
        self._ip_address_present = True

    @ip_address.deleter
    def ip_address(self):
        self._ip_address_value = None
        self._ip_address_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GeoLocationLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GeoLocationLogInfo(ip_address={!r}, city={!r}, region={!r}, country={!r})'.format(
            self._ip_address_value,
            self._city_value,
            self._region_value,
            self._country_value,
        )

GeoLocationLogInfo_validator = bv.Struct(GeoLocationLogInfo)

class GetTeamEventsArg(bb.Struct):
    """
    :ivar team_log.GetTeamEventsArg.limit: The maximal number of results to
        return per call. Note that some calls may not return ``limit`` number of
        events, and may even return no events, even with `has_more` set to true.
        In this case, callers should fetch again using
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue`.
    :ivar team_log.GetTeamEventsArg.account_id: Filter the events by account ID.
        Return ony events with this account_id as either Actor, Context, or
        Participants.
    :ivar team_log.GetTeamEventsArg.time: Filter by time range.
    :ivar team_log.GetTeamEventsArg.category: Filter the returned events to a
        single category.
    """

    __slots__ = [
        '_limit_value',
        '_limit_present',
        '_account_id_value',
        '_account_id_present',
        '_time_value',
        '_time_present',
        '_category_value',
        '_category_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 limit=None,
                 account_id=None,
                 time=None,
                 category=None):
        self._limit_value = None
        self._limit_present = False
        self._account_id_value = None
        self._account_id_present = False
        self._time_value = None
        self._time_present = False
        self._category_value = None
        self._category_present = False
        if limit is not None:
            self.limit = limit
        if account_id is not None:
            self.account_id = account_id
        if time is not None:
            self.time = time
        if category is not None:
            self.category = category

    @property
    def limit(self):
        """
        The maximal number of results to return per call. Note that some calls
        may not return ``limit`` number of events, and may even return no
        events, even with `has_more` set to true. In this case, callers should
        fetch again using
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue`.

        :rtype: int
        """
        if self._limit_present:
            return self._limit_value
        else:
            return 1000

    @limit.setter
    def limit(self, val):
        val = self._limit_validator.validate(val)
        self._limit_value = val
        self._limit_present = True

    @limit.deleter
    def limit(self):
        self._limit_value = None
        self._limit_present = False

    @property
    def account_id(self):
        """
        Filter the events by account ID. Return ony events with this account_id
        as either Actor, Context, or Participants.

        :rtype: str
        """
        if self._account_id_present:
            return self._account_id_value
        else:
            return None

    @account_id.setter
    def account_id(self, val):
        if val is None:
            del self.account_id
            return
        val = self._account_id_validator.validate(val)
        self._account_id_value = val
        self._account_id_present = True

    @account_id.deleter
    def account_id(self):
        self._account_id_value = None
        self._account_id_present = False

    @property
    def time(self):
        """
        Filter by time range.

        :rtype: team_common.TimeRange
        """
        if self._time_present:
            return self._time_value
        else:
            return None

    @time.setter
    def time(self, val):
        if val is None:
            del self.time
            return
        self._time_validator.validate_type_only(val)
        self._time_value = val
        self._time_present = True

    @time.deleter
    def time(self):
        self._time_value = None
        self._time_present = False

    @property
    def category(self):
        """
        Filter the returned events to a single category.

        :rtype: EventCategory
        """
        if self._category_present:
            return self._category_value
        else:
            return None

    @category.setter
    def category(self, val):
        if val is None:
            del self.category
            return
        self._category_validator.validate_type_only(val)
        self._category_value = val
        self._category_present = True

    @category.deleter
    def category(self):
        self._category_value = None
        self._category_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GetTeamEventsArg, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GetTeamEventsArg(limit={!r}, account_id={!r}, time={!r}, category={!r})'.format(
            self._limit_value,
            self._account_id_value,
            self._time_value,
            self._category_value,
        )

GetTeamEventsArg_validator = bv.Struct(GetTeamEventsArg)

class GetTeamEventsContinueArg(bb.Struct):
    """
    :ivar team_log.GetTeamEventsContinueArg.cursor: Indicates from what point to
        get the next set of events.
    """

    __slots__ = [
        '_cursor_value',
        '_cursor_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 cursor=None):
        self._cursor_value = None
        self._cursor_present = False
        if cursor is not None:
            self.cursor = cursor

    @property
    def cursor(self):
        """
        Indicates from what point to get the next set of events.

        :rtype: str
        """
        if self._cursor_present:
            return self._cursor_value
        else:
            raise AttributeError("missing required field 'cursor'")

    @cursor.setter
    def cursor(self, val):
        val = self._cursor_validator.validate(val)
        self._cursor_value = val
        self._cursor_present = True

    @cursor.deleter
    def cursor(self):
        self._cursor_value = None
        self._cursor_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GetTeamEventsContinueArg, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GetTeamEventsContinueArg(cursor={!r})'.format(
            self._cursor_value,
        )

GetTeamEventsContinueArg_validator = bv.Struct(GetTeamEventsContinueArg)

class GetTeamEventsContinueError(bb.Union):
    """
    Errors that can be raised when calling
    :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue`.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar team_log.GetTeamEventsContinueError.bad_cursor: Bad cursor.
    :ivar datetime.datetime team_log.GetTeamEventsContinueError.reset: Cursors
        are intended to be used quickly. Individual cursor values are normally
        valid for days, but in rare cases may be reset sooner. Cursor reset
        errors should be handled by fetching a new cursor from
        :route:`get_events`. The associated value is the approximate timestamp
        of the most recent event returned by the cursor. This should be used as
        a resumption point when calling :route:`get_events` to obtain a new
        cursor.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    bad_cursor = None
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def reset(cls, val):
        """
        Create an instance of this class set to the ``reset`` tag with value
        ``val``.

        :param datetime.datetime val:
        :rtype: GetTeamEventsContinueError
        """
        return cls('reset', val)

    def is_bad_cursor(self):
        """
        Check if the union tag is ``bad_cursor``.

        :rtype: bool
        """
        return self._tag == 'bad_cursor'

    def is_reset(self):
        """
        Check if the union tag is ``reset``.

        :rtype: bool
        """
        return self._tag == 'reset'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_reset(self):
        """
        Cursors are intended to be used quickly. Individual cursor values are
        normally valid for days, but in rare cases may be reset sooner. Cursor
        reset errors should be handled by fetching a new cursor from
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events`. The associated
        value is the approximate timestamp of the most recent event returned by
        the cursor. This should be used as a resumption point when calling
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events` to obtain a new
        cursor.

        Only call this if :meth:`is_reset` is true.

        :rtype: datetime.datetime
        """
        if not self.is_reset():
            raise AttributeError("tag 'reset' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GetTeamEventsContinueError, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GetTeamEventsContinueError(%r, %r)' % (self._tag, self._value)

GetTeamEventsContinueError_validator = bv.Union(GetTeamEventsContinueError)

class GetTeamEventsError(bb.Union):
    """
    Errors that can be raised when calling
    :meth:`dropbox.dropbox.Dropbox.team_log_get_events`.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar team_log.GetTeamEventsError.account_id_not_found: No user found
        matching the provided account_id.
    :ivar team_log.GetTeamEventsError.invalid_time_range: Invalid time range.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    account_id_not_found = None
    # Attribute is overwritten below the class definition
    invalid_time_range = None
    # Attribute is overwritten below the class definition
    other = None

    def is_account_id_not_found(self):
        """
        Check if the union tag is ``account_id_not_found``.

        :rtype: bool
        """
        return self._tag == 'account_id_not_found'

    def is_invalid_time_range(self):
        """
        Check if the union tag is ``invalid_time_range``.

        :rtype: bool
        """
        return self._tag == 'invalid_time_range'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GetTeamEventsError, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GetTeamEventsError(%r, %r)' % (self._tag, self._value)

GetTeamEventsError_validator = bv.Union(GetTeamEventsError)

class GetTeamEventsResult(bb.Struct):
    """
    :ivar team_log.GetTeamEventsResult.events: List of events. Note that events
        are not guaranteed to be sorted by their timestamp value.
    :ivar team_log.GetTeamEventsResult.cursor: Pass the cursor into
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue` to obtain
        additional events. The value of ``cursor`` may change for each response
        from :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue`,
        regardless of the value of ``has_more``; older cursor strings may
        expire. Thus, callers should ensure that they update their cursor based
        on the latest value of ``cursor`` after each call, and poll regularly if
        they wish to poll for new events. Callers should handle reset exceptions
        for expired cursors.
    :ivar team_log.GetTeamEventsResult.has_more: Is true if there may be
        additional events that have not been returned yet. An additional call to
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue` can
        retrieve them. Note that ``has_more`` may be ``True``, even if
        ``events`` is empty.
    """

    __slots__ = [
        '_events_value',
        '_events_present',
        '_cursor_value',
        '_cursor_present',
        '_has_more_value',
        '_has_more_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 events=None,
                 cursor=None,
                 has_more=None):
        self._events_value = None
        self._events_present = False
        self._cursor_value = None
        self._cursor_present = False
        self._has_more_value = None
        self._has_more_present = False
        if events is not None:
            self.events = events
        if cursor is not None:
            self.cursor = cursor
        if has_more is not None:
            self.has_more = has_more

    @property
    def events(self):
        """
        List of events. Note that events are not guaranteed to be sorted by
        their timestamp value.

        :rtype: list of [TeamEvent]
        """
        if self._events_present:
            return self._events_value
        else:
            raise AttributeError("missing required field 'events'")

    @events.setter
    def events(self, val):
        val = self._events_validator.validate(val)
        self._events_value = val
        self._events_present = True

    @events.deleter
    def events(self):
        self._events_value = None
        self._events_present = False

    @property
    def cursor(self):
        """
        Pass the cursor into
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue` to obtain
        additional events. The value of ``cursor`` may change for each response
        from :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue`,
        regardless of the value of ``has_more``; older cursor strings may
        expire. Thus, callers should ensure that they update their cursor based
        on the latest value of ``cursor`` after each call, and poll regularly if
        they wish to poll for new events. Callers should handle reset exceptions
        for expired cursors.

        :rtype: str
        """
        if self._cursor_present:
            return self._cursor_value
        else:
            raise AttributeError("missing required field 'cursor'")

    @cursor.setter
    def cursor(self, val):
        val = self._cursor_validator.validate(val)
        self._cursor_value = val
        self._cursor_present = True

    @cursor.deleter
    def cursor(self):
        self._cursor_value = None
        self._cursor_present = False

    @property
    def has_more(self):
        """
        Is true if there may be additional events that have not been returned
        yet. An additional call to
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue` can
        retrieve them. Note that ``has_more`` may be ``True``, even if
        ``events`` is empty.

        :rtype: bool
        """
        if self._has_more_present:
            return self._has_more_value
        else:
            raise AttributeError("missing required field 'has_more'")

    @has_more.setter
    def has_more(self, val):
        val = self._has_more_validator.validate(val)
        self._has_more_value = val
        self._has_more_present = True

    @has_more.deleter
    def has_more(self):
        self._has_more_value = None
        self._has_more_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GetTeamEventsResult, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GetTeamEventsResult(events={!r}, cursor={!r}, has_more={!r})'.format(
            self._events_value,
            self._cursor_value,
            self._has_more_value,
        )

GetTeamEventsResult_validator = bv.Struct(GetTeamEventsResult)

class GoogleSsoChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled Google single sign-on for team.

    :ivar team_log.GoogleSsoChangePolicyDetails.new_value: New Google single
        sign-on policy.
    :ivar team_log.GoogleSsoChangePolicyDetails.previous_value: Previous Google
        single sign-on policy. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Google single sign-on policy.

        :rtype: GoogleSsoPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Google single sign-on policy. Might be missing due to
        historical data gap.

        :rtype: GoogleSsoPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GoogleSsoChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GoogleSsoChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

GoogleSsoChangePolicyDetails_validator = bv.Struct(GoogleSsoChangePolicyDetails)

class GoogleSsoChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GoogleSsoChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GoogleSsoChangePolicyType(description={!r})'.format(
            self._description_value,
        )

GoogleSsoChangePolicyType_validator = bv.Struct(GoogleSsoChangePolicyType)

class GoogleSsoPolicy(bb.Union):
    """
    Google SSO policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GoogleSsoPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GoogleSsoPolicy(%r, %r)' % (self._tag, self._value)

GoogleSsoPolicy_validator = bv.Union(GoogleSsoPolicy)

class GroupAddExternalIdDetails(bb.Struct):
    """
    Added external ID for group.

    :ivar team_log.GroupAddExternalIdDetails.new_value: Current external id.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        Current external id.

        :rtype: str
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupAddExternalIdDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupAddExternalIdDetails(new_value={!r})'.format(
            self._new_value_value,
        )

GroupAddExternalIdDetails_validator = bv.Struct(GroupAddExternalIdDetails)

class GroupAddExternalIdType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupAddExternalIdType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupAddExternalIdType(description={!r})'.format(
            self._description_value,
        )

GroupAddExternalIdType_validator = bv.Struct(GroupAddExternalIdType)

class GroupAddMemberDetails(bb.Struct):
    """
    Added team members to group.

    :ivar team_log.GroupAddMemberDetails.is_group_owner: Is group owner.
    """

    __slots__ = [
        '_is_group_owner_value',
        '_is_group_owner_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 is_group_owner=None):
        self._is_group_owner_value = None
        self._is_group_owner_present = False
        if is_group_owner is not None:
            self.is_group_owner = is_group_owner

    @property
    def is_group_owner(self):
        """
        Is group owner.

        :rtype: bool
        """
        if self._is_group_owner_present:
            return self._is_group_owner_value
        else:
            raise AttributeError("missing required field 'is_group_owner'")

    @is_group_owner.setter
    def is_group_owner(self, val):
        val = self._is_group_owner_validator.validate(val)
        self._is_group_owner_value = val
        self._is_group_owner_present = True

    @is_group_owner.deleter
    def is_group_owner(self):
        self._is_group_owner_value = None
        self._is_group_owner_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupAddMemberDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupAddMemberDetails(is_group_owner={!r})'.format(
            self._is_group_owner_value,
        )

GroupAddMemberDetails_validator = bv.Struct(GroupAddMemberDetails)

class GroupAddMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupAddMemberType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupAddMemberType(description={!r})'.format(
            self._description_value,
        )

GroupAddMemberType_validator = bv.Struct(GroupAddMemberType)

class GroupChangeExternalIdDetails(bb.Struct):
    """
    Changed external ID for group.

    :ivar team_log.GroupChangeExternalIdDetails.new_value: Current external id.
    :ivar team_log.GroupChangeExternalIdDetails.previous_value: Old external id.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        Current external id.

        :rtype: str
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Old external id.

        :rtype: str
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupChangeExternalIdDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupChangeExternalIdDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

GroupChangeExternalIdDetails_validator = bv.Struct(GroupChangeExternalIdDetails)

class GroupChangeExternalIdType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupChangeExternalIdType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupChangeExternalIdType(description={!r})'.format(
            self._description_value,
        )

GroupChangeExternalIdType_validator = bv.Struct(GroupChangeExternalIdType)

class GroupChangeManagementTypeDetails(bb.Struct):
    """
    Changed group management type.

    :ivar team_log.GroupChangeManagementTypeDetails.new_value: New group
        management type.
    :ivar team_log.GroupChangeManagementTypeDetails.previous_value: Previous
        group management type. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New group management type.

        :rtype: team_common.GroupManagementType
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous group management type. Might be missing due to historical data
        gap.

        :rtype: team_common.GroupManagementType
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupChangeManagementTypeDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupChangeManagementTypeDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

GroupChangeManagementTypeDetails_validator = bv.Struct(GroupChangeManagementTypeDetails)

class GroupChangeManagementTypeType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupChangeManagementTypeType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupChangeManagementTypeType(description={!r})'.format(
            self._description_value,
        )

GroupChangeManagementTypeType_validator = bv.Struct(GroupChangeManagementTypeType)

class GroupChangeMemberRoleDetails(bb.Struct):
    """
    Changed manager permissions of group member.

    :ivar team_log.GroupChangeMemberRoleDetails.is_group_owner: Is group owner.
    """

    __slots__ = [
        '_is_group_owner_value',
        '_is_group_owner_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 is_group_owner=None):
        self._is_group_owner_value = None
        self._is_group_owner_present = False
        if is_group_owner is not None:
            self.is_group_owner = is_group_owner

    @property
    def is_group_owner(self):
        """
        Is group owner.

        :rtype: bool
        """
        if self._is_group_owner_present:
            return self._is_group_owner_value
        else:
            raise AttributeError("missing required field 'is_group_owner'")

    @is_group_owner.setter
    def is_group_owner(self, val):
        val = self._is_group_owner_validator.validate(val)
        self._is_group_owner_value = val
        self._is_group_owner_present = True

    @is_group_owner.deleter
    def is_group_owner(self):
        self._is_group_owner_value = None
        self._is_group_owner_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupChangeMemberRoleDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupChangeMemberRoleDetails(is_group_owner={!r})'.format(
            self._is_group_owner_value,
        )

GroupChangeMemberRoleDetails_validator = bv.Struct(GroupChangeMemberRoleDetails)

class GroupChangeMemberRoleType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupChangeMemberRoleType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupChangeMemberRoleType(description={!r})'.format(
            self._description_value,
        )

GroupChangeMemberRoleType_validator = bv.Struct(GroupChangeMemberRoleType)

class GroupCreateDetails(bb.Struct):
    """
    Created group.

    :ivar team_log.GroupCreateDetails.is_company_managed: Is company managed
        group. Might be missing due to historical data gap.
    :ivar team_log.GroupCreateDetails.join_policy: Group join policy.
    """

    __slots__ = [
        '_is_company_managed_value',
        '_is_company_managed_present',
        '_join_policy_value',
        '_join_policy_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 is_company_managed=None,
                 join_policy=None):
        self._is_company_managed_value = None
        self._is_company_managed_present = False
        self._join_policy_value = None
        self._join_policy_present = False
        if is_company_managed is not None:
            self.is_company_managed = is_company_managed
        if join_policy is not None:
            self.join_policy = join_policy

    @property
    def is_company_managed(self):
        """
        Is company managed group. Might be missing due to historical data gap.

        :rtype: bool
        """
        if self._is_company_managed_present:
            return self._is_company_managed_value
        else:
            return None

    @is_company_managed.setter
    def is_company_managed(self, val):
        if val is None:
            del self.is_company_managed
            return
        val = self._is_company_managed_validator.validate(val)
        self._is_company_managed_value = val
        self._is_company_managed_present = True

    @is_company_managed.deleter
    def is_company_managed(self):
        self._is_company_managed_value = None
        self._is_company_managed_present = False

    @property
    def join_policy(self):
        """
        Group join policy.

        :rtype: GroupJoinPolicy
        """
        if self._join_policy_present:
            return self._join_policy_value
        else:
            return None

    @join_policy.setter
    def join_policy(self, val):
        if val is None:
            del self.join_policy
            return
        self._join_policy_validator.validate_type_only(val)
        self._join_policy_value = val
        self._join_policy_present = True

    @join_policy.deleter
    def join_policy(self):
        self._join_policy_value = None
        self._join_policy_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupCreateDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupCreateDetails(is_company_managed={!r}, join_policy={!r})'.format(
            self._is_company_managed_value,
            self._join_policy_value,
        )

GroupCreateDetails_validator = bv.Struct(GroupCreateDetails)

class GroupCreateType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupCreateType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupCreateType(description={!r})'.format(
            self._description_value,
        )

GroupCreateType_validator = bv.Struct(GroupCreateType)

class GroupDeleteDetails(bb.Struct):
    """
    Deleted group.

    :ivar team_log.GroupDeleteDetails.is_company_managed: Is company managed
        group. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_is_company_managed_value',
        '_is_company_managed_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 is_company_managed=None):
        self._is_company_managed_value = None
        self._is_company_managed_present = False
        if is_company_managed is not None:
            self.is_company_managed = is_company_managed

    @property
    def is_company_managed(self):
        """
        Is company managed group. Might be missing due to historical data gap.

        :rtype: bool
        """
        if self._is_company_managed_present:
            return self._is_company_managed_value
        else:
            return None

    @is_company_managed.setter
    def is_company_managed(self, val):
        if val is None:
            del self.is_company_managed
            return
        val = self._is_company_managed_validator.validate(val)
        self._is_company_managed_value = val
        self._is_company_managed_present = True

    @is_company_managed.deleter
    def is_company_managed(self):
        self._is_company_managed_value = None
        self._is_company_managed_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupDeleteDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupDeleteDetails(is_company_managed={!r})'.format(
            self._is_company_managed_value,
        )

GroupDeleteDetails_validator = bv.Struct(GroupDeleteDetails)

class GroupDeleteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupDeleteType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupDeleteType(description={!r})'.format(
            self._description_value,
        )

GroupDeleteType_validator = bv.Struct(GroupDeleteType)

class GroupDescriptionUpdatedDetails(bb.Struct):
    """
    Updated group.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupDescriptionUpdatedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupDescriptionUpdatedDetails()'

GroupDescriptionUpdatedDetails_validator = bv.Struct(GroupDescriptionUpdatedDetails)

class GroupDescriptionUpdatedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupDescriptionUpdatedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupDescriptionUpdatedType(description={!r})'.format(
            self._description_value,
        )

GroupDescriptionUpdatedType_validator = bv.Struct(GroupDescriptionUpdatedType)

class GroupJoinPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    open = None
    # Attribute is overwritten below the class definition
    request_to_join = None
    # Attribute is overwritten below the class definition
    other = None

    def is_open(self):
        """
        Check if the union tag is ``open``.

        :rtype: bool
        """
        return self._tag == 'open'

    def is_request_to_join(self):
        """
        Check if the union tag is ``request_to_join``.

        :rtype: bool
        """
        return self._tag == 'request_to_join'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupJoinPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupJoinPolicy(%r, %r)' % (self._tag, self._value)

GroupJoinPolicy_validator = bv.Union(GroupJoinPolicy)

class GroupJoinPolicyUpdatedDetails(bb.Struct):
    """
    Updated group join policy.

    :ivar team_log.GroupJoinPolicyUpdatedDetails.is_company_managed: Is company
        managed group. Might be missing due to historical data gap.
    :ivar team_log.GroupJoinPolicyUpdatedDetails.join_policy: Group join policy.
    """

    __slots__ = [
        '_is_company_managed_value',
        '_is_company_managed_present',
        '_join_policy_value',
        '_join_policy_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 is_company_managed=None,
                 join_policy=None):
        self._is_company_managed_value = None
        self._is_company_managed_present = False
        self._join_policy_value = None
        self._join_policy_present = False
        if is_company_managed is not None:
            self.is_company_managed = is_company_managed
        if join_policy is not None:
            self.join_policy = join_policy

    @property
    def is_company_managed(self):
        """
        Is company managed group. Might be missing due to historical data gap.

        :rtype: bool
        """
        if self._is_company_managed_present:
            return self._is_company_managed_value
        else:
            return None

    @is_company_managed.setter
    def is_company_managed(self, val):
        if val is None:
            del self.is_company_managed
            return
        val = self._is_company_managed_validator.validate(val)
        self._is_company_managed_value = val
        self._is_company_managed_present = True

    @is_company_managed.deleter
    def is_company_managed(self):
        self._is_company_managed_value = None
        self._is_company_managed_present = False

    @property
    def join_policy(self):
        """
        Group join policy.

        :rtype: GroupJoinPolicy
        """
        if self._join_policy_present:
            return self._join_policy_value
        else:
            return None

    @join_policy.setter
    def join_policy(self, val):
        if val is None:
            del self.join_policy
            return
        self._join_policy_validator.validate_type_only(val)
        self._join_policy_value = val
        self._join_policy_present = True

    @join_policy.deleter
    def join_policy(self):
        self._join_policy_value = None
        self._join_policy_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupJoinPolicyUpdatedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupJoinPolicyUpdatedDetails(is_company_managed={!r}, join_policy={!r})'.format(
            self._is_company_managed_value,
            self._join_policy_value,
        )

GroupJoinPolicyUpdatedDetails_validator = bv.Struct(GroupJoinPolicyUpdatedDetails)

class GroupJoinPolicyUpdatedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupJoinPolicyUpdatedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupJoinPolicyUpdatedType(description={!r})'.format(
            self._description_value,
        )

GroupJoinPolicyUpdatedType_validator = bv.Struct(GroupJoinPolicyUpdatedType)

class GroupLogInfo(bb.Struct):
    """
    Group's logged information.

    :ivar team_log.GroupLogInfo.group_id: The unique id of this group. Might be
        missing due to historical data gap.
    :ivar team_log.GroupLogInfo.display_name: The name of this group.
    :ivar team_log.GroupLogInfo.external_id: External group ID. Might be missing
        due to historical data gap.
    """

    __slots__ = [
        '_group_id_value',
        '_group_id_present',
        '_display_name_value',
        '_display_name_present',
        '_external_id_value',
        '_external_id_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 display_name=None,
                 group_id=None,
                 external_id=None):
        self._group_id_value = None
        self._group_id_present = False
        self._display_name_value = None
        self._display_name_present = False
        self._external_id_value = None
        self._external_id_present = False
        if group_id is not None:
            self.group_id = group_id
        if display_name is not None:
            self.display_name = display_name
        if external_id is not None:
            self.external_id = external_id

    @property
    def group_id(self):
        """
        The unique id of this group. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._group_id_present:
            return self._group_id_value
        else:
            return None

    @group_id.setter
    def group_id(self, val):
        if val is None:
            del self.group_id
            return
        val = self._group_id_validator.validate(val)
        self._group_id_value = val
        self._group_id_present = True

    @group_id.deleter
    def group_id(self):
        self._group_id_value = None
        self._group_id_present = False

    @property
    def display_name(self):
        """
        The name of this group.

        :rtype: str
        """
        if self._display_name_present:
            return self._display_name_value
        else:
            raise AttributeError("missing required field 'display_name'")

    @display_name.setter
    def display_name(self, val):
        val = self._display_name_validator.validate(val)
        self._display_name_value = val
        self._display_name_present = True

    @display_name.deleter
    def display_name(self):
        self._display_name_value = None
        self._display_name_present = False

    @property
    def external_id(self):
        """
        External group ID. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._external_id_present:
            return self._external_id_value
        else:
            return None

    @external_id.setter
    def external_id(self, val):
        if val is None:
            del self.external_id
            return
        val = self._external_id_validator.validate(val)
        self._external_id_value = val
        self._external_id_present = True

    @external_id.deleter
    def external_id(self):
        self._external_id_value = None
        self._external_id_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupLogInfo(display_name={!r}, group_id={!r}, external_id={!r})'.format(
            self._display_name_value,
            self._group_id_value,
            self._external_id_value,
        )

GroupLogInfo_validator = bv.Struct(GroupLogInfo)

class GroupMovedDetails(bb.Struct):
    """
    Moved group.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupMovedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupMovedDetails()'

GroupMovedDetails_validator = bv.Struct(GroupMovedDetails)

class GroupMovedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupMovedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupMovedType(description={!r})'.format(
            self._description_value,
        )

GroupMovedType_validator = bv.Struct(GroupMovedType)

class GroupRemoveExternalIdDetails(bb.Struct):
    """
    Removed external ID for group.

    :ivar team_log.GroupRemoveExternalIdDetails.previous_value: Old external id.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def previous_value(self):
        """
        Old external id.

        :rtype: str
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupRemoveExternalIdDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupRemoveExternalIdDetails(previous_value={!r})'.format(
            self._previous_value_value,
        )

GroupRemoveExternalIdDetails_validator = bv.Struct(GroupRemoveExternalIdDetails)

class GroupRemoveExternalIdType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupRemoveExternalIdType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupRemoveExternalIdType(description={!r})'.format(
            self._description_value,
        )

GroupRemoveExternalIdType_validator = bv.Struct(GroupRemoveExternalIdType)

class GroupRemoveMemberDetails(bb.Struct):
    """
    Removed team members from group.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupRemoveMemberDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupRemoveMemberDetails()'

GroupRemoveMemberDetails_validator = bv.Struct(GroupRemoveMemberDetails)

class GroupRemoveMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupRemoveMemberType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupRemoveMemberType(description={!r})'.format(
            self._description_value,
        )

GroupRemoveMemberType_validator = bv.Struct(GroupRemoveMemberType)

class GroupRenameDetails(bb.Struct):
    """
    Renamed group.

    :ivar team_log.GroupRenameDetails.previous_value: Previous display name.
    :ivar team_log.GroupRenameDetails.new_value: New display name.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous display name.

        :rtype: str
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New display name.

        :rtype: str
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupRenameDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupRenameDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

GroupRenameDetails_validator = bv.Struct(GroupRenameDetails)

class GroupRenameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupRenameType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupRenameType(description={!r})'.format(
            self._description_value,
        )

GroupRenameType_validator = bv.Struct(GroupRenameType)

class GroupUserManagementChangePolicyDetails(bb.Struct):
    """
    Changed who can create groups.

    :ivar team_log.GroupUserManagementChangePolicyDetails.new_value: New group
        users management policy.
    :ivar team_log.GroupUserManagementChangePolicyDetails.previous_value:
        Previous group users management policy. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New group users management policy.

        :rtype: team_policies.GroupCreation
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous group users management policy. Might be missing due to
        historical data gap.

        :rtype: team_policies.GroupCreation
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupUserManagementChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupUserManagementChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

GroupUserManagementChangePolicyDetails_validator = bv.Struct(GroupUserManagementChangePolicyDetails)

class GroupUserManagementChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GroupUserManagementChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GroupUserManagementChangePolicyType(description={!r})'.format(
            self._description_value,
        )

GroupUserManagementChangePolicyType_validator = bv.Struct(GroupUserManagementChangePolicyType)

class GuestAdminChangeStatusDetails(bb.Struct):
    """
    Changed guest team admin status.

    :ivar team_log.GuestAdminChangeStatusDetails.is_guest: True for guest, false
        for host.
    :ivar team_log.GuestAdminChangeStatusDetails.guest_team_name: The name of
        the guest team.
    :ivar team_log.GuestAdminChangeStatusDetails.host_team_name: The name of the
        host team.
    :ivar team_log.GuestAdminChangeStatusDetails.previous_value: Previous
        request state.
    :ivar team_log.GuestAdminChangeStatusDetails.new_value: New request state.
    :ivar team_log.GuestAdminChangeStatusDetails.action_details: Action details.
    """

    __slots__ = [
        '_is_guest_value',
        '_is_guest_present',
        '_guest_team_name_value',
        '_guest_team_name_present',
        '_host_team_name_value',
        '_host_team_name_present',
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
        '_action_details_value',
        '_action_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 is_guest=None,
                 previous_value=None,
                 new_value=None,
                 action_details=None,
                 guest_team_name=None,
                 host_team_name=None):
        self._is_guest_value = None
        self._is_guest_present = False
        self._guest_team_name_value = None
        self._guest_team_name_present = False
        self._host_team_name_value = None
        self._host_team_name_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        self._action_details_value = None
        self._action_details_present = False
        if is_guest is not None:
            self.is_guest = is_guest
        if guest_team_name is not None:
            self.guest_team_name = guest_team_name
        if host_team_name is not None:
            self.host_team_name = host_team_name
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value
        if action_details is not None:
            self.action_details = action_details

    @property
    def is_guest(self):
        """
        True for guest, false for host.

        :rtype: bool
        """
        if self._is_guest_present:
            return self._is_guest_value
        else:
            raise AttributeError("missing required field 'is_guest'")

    @is_guest.setter
    def is_guest(self, val):
        val = self._is_guest_validator.validate(val)
        self._is_guest_value = val
        self._is_guest_present = True

    @is_guest.deleter
    def is_guest(self):
        self._is_guest_value = None
        self._is_guest_present = False

    @property
    def guest_team_name(self):
        """
        The name of the guest team.

        :rtype: str
        """
        if self._guest_team_name_present:
            return self._guest_team_name_value
        else:
            return None

    @guest_team_name.setter
    def guest_team_name(self, val):
        if val is None:
            del self.guest_team_name
            return
        val = self._guest_team_name_validator.validate(val)
        self._guest_team_name_value = val
        self._guest_team_name_present = True

    @guest_team_name.deleter
    def guest_team_name(self):
        self._guest_team_name_value = None
        self._guest_team_name_present = False

    @property
    def host_team_name(self):
        """
        The name of the host team.

        :rtype: str
        """
        if self._host_team_name_present:
            return self._host_team_name_value
        else:
            return None

    @host_team_name.setter
    def host_team_name(self, val):
        if val is None:
            del self.host_team_name
            return
        val = self._host_team_name_validator.validate(val)
        self._host_team_name_value = val
        self._host_team_name_present = True

    @host_team_name.deleter
    def host_team_name(self):
        self._host_team_name_value = None
        self._host_team_name_present = False

    @property
    def previous_value(self):
        """
        Previous request state.

        :rtype: TrustedTeamsRequestState
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New request state.

        :rtype: TrustedTeamsRequestState
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def action_details(self):
        """
        Action details.

        :rtype: TrustedTeamsRequestAction
        """
        if self._action_details_present:
            return self._action_details_value
        else:
            raise AttributeError("missing required field 'action_details'")

    @action_details.setter
    def action_details(self, val):
        self._action_details_validator.validate_type_only(val)
        self._action_details_value = val
        self._action_details_present = True

    @action_details.deleter
    def action_details(self):
        self._action_details_value = None
        self._action_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GuestAdminChangeStatusDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GuestAdminChangeStatusDetails(is_guest={!r}, previous_value={!r}, new_value={!r}, action_details={!r}, guest_team_name={!r}, host_team_name={!r})'.format(
            self._is_guest_value,
            self._previous_value_value,
            self._new_value_value,
            self._action_details_value,
            self._guest_team_name_value,
            self._host_team_name_value,
        )

GuestAdminChangeStatusDetails_validator = bv.Struct(GuestAdminChangeStatusDetails)

class GuestAdminChangeStatusType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GuestAdminChangeStatusType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GuestAdminChangeStatusType(description={!r})'.format(
            self._description_value,
        )

GuestAdminChangeStatusType_validator = bv.Struct(GuestAdminChangeStatusType)

class GuestAdminSignedInViaTrustedTeamsDetails(bb.Struct):
    """
    Started trusted team admin session.

    :ivar team_log.GuestAdminSignedInViaTrustedTeamsDetails.team_name: Host team
        name.
    :ivar team_log.GuestAdminSignedInViaTrustedTeamsDetails.trusted_team_name:
        Trusted team name.
    """

    __slots__ = [
        '_team_name_value',
        '_team_name_present',
        '_trusted_team_name_value',
        '_trusted_team_name_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 team_name=None,
                 trusted_team_name=None):
        self._team_name_value = None
        self._team_name_present = False
        self._trusted_team_name_value = None
        self._trusted_team_name_present = False
        if team_name is not None:
            self.team_name = team_name
        if trusted_team_name is not None:
            self.trusted_team_name = trusted_team_name

    @property
    def team_name(self):
        """
        Host team name.

        :rtype: str
        """
        if self._team_name_present:
            return self._team_name_value
        else:
            return None

    @team_name.setter
    def team_name(self, val):
        if val is None:
            del self.team_name
            return
        val = self._team_name_validator.validate(val)
        self._team_name_value = val
        self._team_name_present = True

    @team_name.deleter
    def team_name(self):
        self._team_name_value = None
        self._team_name_present = False

    @property
    def trusted_team_name(self):
        """
        Trusted team name.

        :rtype: str
        """
        if self._trusted_team_name_present:
            return self._trusted_team_name_value
        else:
            return None

    @trusted_team_name.setter
    def trusted_team_name(self, val):
        if val is None:
            del self.trusted_team_name
            return
        val = self._trusted_team_name_validator.validate(val)
        self._trusted_team_name_value = val
        self._trusted_team_name_present = True

    @trusted_team_name.deleter
    def trusted_team_name(self):
        self._trusted_team_name_value = None
        self._trusted_team_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GuestAdminSignedInViaTrustedTeamsDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GuestAdminSignedInViaTrustedTeamsDetails(team_name={!r}, trusted_team_name={!r})'.format(
            self._team_name_value,
            self._trusted_team_name_value,
        )

GuestAdminSignedInViaTrustedTeamsDetails_validator = bv.Struct(GuestAdminSignedInViaTrustedTeamsDetails)

class GuestAdminSignedInViaTrustedTeamsType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GuestAdminSignedInViaTrustedTeamsType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GuestAdminSignedInViaTrustedTeamsType(description={!r})'.format(
            self._description_value,
        )

GuestAdminSignedInViaTrustedTeamsType_validator = bv.Struct(GuestAdminSignedInViaTrustedTeamsType)

class GuestAdminSignedOutViaTrustedTeamsDetails(bb.Struct):
    """
    Ended trusted team admin session.

    :ivar team_log.GuestAdminSignedOutViaTrustedTeamsDetails.team_name: Host
        team name.
    :ivar team_log.GuestAdminSignedOutViaTrustedTeamsDetails.trusted_team_name:
        Trusted team name.
    """

    __slots__ = [
        '_team_name_value',
        '_team_name_present',
        '_trusted_team_name_value',
        '_trusted_team_name_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 team_name=None,
                 trusted_team_name=None):
        self._team_name_value = None
        self._team_name_present = False
        self._trusted_team_name_value = None
        self._trusted_team_name_present = False
        if team_name is not None:
            self.team_name = team_name
        if trusted_team_name is not None:
            self.trusted_team_name = trusted_team_name

    @property
    def team_name(self):
        """
        Host team name.

        :rtype: str
        """
        if self._team_name_present:
            return self._team_name_value
        else:
            return None

    @team_name.setter
    def team_name(self, val):
        if val is None:
            del self.team_name
            return
        val = self._team_name_validator.validate(val)
        self._team_name_value = val
        self._team_name_present = True

    @team_name.deleter
    def team_name(self):
        self._team_name_value = None
        self._team_name_present = False

    @property
    def trusted_team_name(self):
        """
        Trusted team name.

        :rtype: str
        """
        if self._trusted_team_name_present:
            return self._trusted_team_name_value
        else:
            return None

    @trusted_team_name.setter
    def trusted_team_name(self, val):
        if val is None:
            del self.trusted_team_name
            return
        val = self._trusted_team_name_validator.validate(val)
        self._trusted_team_name_value = val
        self._trusted_team_name_present = True

    @trusted_team_name.deleter
    def trusted_team_name(self):
        self._trusted_team_name_value = None
        self._trusted_team_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GuestAdminSignedOutViaTrustedTeamsDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GuestAdminSignedOutViaTrustedTeamsDetails(team_name={!r}, trusted_team_name={!r})'.format(
            self._team_name_value,
            self._trusted_team_name_value,
        )

GuestAdminSignedOutViaTrustedTeamsDetails_validator = bv.Struct(GuestAdminSignedOutViaTrustedTeamsDetails)

class GuestAdminSignedOutViaTrustedTeamsType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GuestAdminSignedOutViaTrustedTeamsType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GuestAdminSignedOutViaTrustedTeamsType(description={!r})'.format(
            self._description_value,
        )

GuestAdminSignedOutViaTrustedTeamsType_validator = bv.Struct(GuestAdminSignedOutViaTrustedTeamsType)

class IdentifierType(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    email = None
    # Attribute is overwritten below the class definition
    facebook_profile_name = None
    # Attribute is overwritten below the class definition
    other = None

    def is_email(self):
        """
        Check if the union tag is ``email``.

        :rtype: bool
        """
        return self._tag == 'email'

    def is_facebook_profile_name(self):
        """
        Check if the union tag is ``facebook_profile_name``.

        :rtype: bool
        """
        return self._tag == 'facebook_profile_name'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(IdentifierType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'IdentifierType(%r, %r)' % (self._tag, self._value)

IdentifierType_validator = bv.Union(IdentifierType)

class IntegrationConnectedDetails(bb.Struct):
    """
    Connected integration for member.

    :ivar team_log.IntegrationConnectedDetails.integration_name: Name of the
        third-party integration.
    """

    __slots__ = [
        '_integration_name_value',
        '_integration_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 integration_name=None):
        self._integration_name_value = None
        self._integration_name_present = False
        if integration_name is not None:
            self.integration_name = integration_name

    @property
    def integration_name(self):
        """
        Name of the third-party integration.

        :rtype: str
        """
        if self._integration_name_present:
            return self._integration_name_value
        else:
            raise AttributeError("missing required field 'integration_name'")

    @integration_name.setter
    def integration_name(self, val):
        val = self._integration_name_validator.validate(val)
        self._integration_name_value = val
        self._integration_name_present = True

    @integration_name.deleter
    def integration_name(self):
        self._integration_name_value = None
        self._integration_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(IntegrationConnectedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'IntegrationConnectedDetails(integration_name={!r})'.format(
            self._integration_name_value,
        )

IntegrationConnectedDetails_validator = bv.Struct(IntegrationConnectedDetails)

class IntegrationConnectedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(IntegrationConnectedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'IntegrationConnectedType(description={!r})'.format(
            self._description_value,
        )

IntegrationConnectedType_validator = bv.Struct(IntegrationConnectedType)

class IntegrationDisconnectedDetails(bb.Struct):
    """
    Disconnected integration for member.

    :ivar team_log.IntegrationDisconnectedDetails.integration_name: Name of the
        third-party integration.
    """

    __slots__ = [
        '_integration_name_value',
        '_integration_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 integration_name=None):
        self._integration_name_value = None
        self._integration_name_present = False
        if integration_name is not None:
            self.integration_name = integration_name

    @property
    def integration_name(self):
        """
        Name of the third-party integration.

        :rtype: str
        """
        if self._integration_name_present:
            return self._integration_name_value
        else:
            raise AttributeError("missing required field 'integration_name'")

    @integration_name.setter
    def integration_name(self, val):
        val = self._integration_name_validator.validate(val)
        self._integration_name_value = val
        self._integration_name_present = True

    @integration_name.deleter
    def integration_name(self):
        self._integration_name_value = None
        self._integration_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(IntegrationDisconnectedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'IntegrationDisconnectedDetails(integration_name={!r})'.format(
            self._integration_name_value,
        )

IntegrationDisconnectedDetails_validator = bv.Struct(IntegrationDisconnectedDetails)

class IntegrationDisconnectedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(IntegrationDisconnectedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'IntegrationDisconnectedType(description={!r})'.format(
            self._description_value,
        )

IntegrationDisconnectedType_validator = bv.Struct(IntegrationDisconnectedType)

class IntegrationPolicy(bb.Union):
    """
    Policy for controlling whether a service integration is enabled for the
    team.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(IntegrationPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'IntegrationPolicy(%r, %r)' % (self._tag, self._value)

IntegrationPolicy_validator = bv.Union(IntegrationPolicy)

class IntegrationPolicyChangedDetails(bb.Struct):
    """
    Changed integration policy for team.

    :ivar team_log.IntegrationPolicyChangedDetails.integration_name: Name of the
        third-party integration.
    :ivar team_log.IntegrationPolicyChangedDetails.new_value: New integration
        policy.
    :ivar team_log.IntegrationPolicyChangedDetails.previous_value: Previous
        integration policy.
    """

    __slots__ = [
        '_integration_name_value',
        '_integration_name_present',
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 integration_name=None,
                 new_value=None,
                 previous_value=None):
        self._integration_name_value = None
        self._integration_name_present = False
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if integration_name is not None:
            self.integration_name = integration_name
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def integration_name(self):
        """
        Name of the third-party integration.

        :rtype: str
        """
        if self._integration_name_present:
            return self._integration_name_value
        else:
            raise AttributeError("missing required field 'integration_name'")

    @integration_name.setter
    def integration_name(self, val):
        val = self._integration_name_validator.validate(val)
        self._integration_name_value = val
        self._integration_name_present = True

    @integration_name.deleter
    def integration_name(self):
        self._integration_name_value = None
        self._integration_name_present = False

    @property
    def new_value(self):
        """
        New integration policy.

        :rtype: IntegrationPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous integration policy.

        :rtype: IntegrationPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(IntegrationPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'IntegrationPolicyChangedDetails(integration_name={!r}, new_value={!r}, previous_value={!r})'.format(
            self._integration_name_value,
            self._new_value_value,
            self._previous_value_value,
        )

IntegrationPolicyChangedDetails_validator = bv.Struct(IntegrationPolicyChangedDetails)

class IntegrationPolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(IntegrationPolicyChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'IntegrationPolicyChangedType(description={!r})'.format(
            self._description_value,
        )

IntegrationPolicyChangedType_validator = bv.Struct(IntegrationPolicyChangedType)

class JoinTeamDetails(bb.Struct):
    """
    Additional information relevant when a new member joins the team.

    :ivar team_log.JoinTeamDetails.linked_apps: Linked applications.
    :ivar team_log.JoinTeamDetails.linked_devices: Linked devices.
    :ivar team_log.JoinTeamDetails.linked_shared_folders: Linked shared folders.
    """

    __slots__ = [
        '_linked_apps_value',
        '_linked_apps_present',
        '_linked_devices_value',
        '_linked_devices_present',
        '_linked_shared_folders_value',
        '_linked_shared_folders_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 linked_apps=None,
                 linked_devices=None,
                 linked_shared_folders=None):
        self._linked_apps_value = None
        self._linked_apps_present = False
        self._linked_devices_value = None
        self._linked_devices_present = False
        self._linked_shared_folders_value = None
        self._linked_shared_folders_present = False
        if linked_apps is not None:
            self.linked_apps = linked_apps
        if linked_devices is not None:
            self.linked_devices = linked_devices
        if linked_shared_folders is not None:
            self.linked_shared_folders = linked_shared_folders

    @property
    def linked_apps(self):
        """
        Linked applications.

        :rtype: list of [UserLinkedAppLogInfo]
        """
        if self._linked_apps_present:
            return self._linked_apps_value
        else:
            raise AttributeError("missing required field 'linked_apps'")

    @linked_apps.setter
    def linked_apps(self, val):
        val = self._linked_apps_validator.validate(val)
        self._linked_apps_value = val
        self._linked_apps_present = True

    @linked_apps.deleter
    def linked_apps(self):
        self._linked_apps_value = None
        self._linked_apps_present = False

    @property
    def linked_devices(self):
        """
        Linked devices.

        :rtype: list of [LinkedDeviceLogInfo]
        """
        if self._linked_devices_present:
            return self._linked_devices_value
        else:
            raise AttributeError("missing required field 'linked_devices'")

    @linked_devices.setter
    def linked_devices(self, val):
        val = self._linked_devices_validator.validate(val)
        self._linked_devices_value = val
        self._linked_devices_present = True

    @linked_devices.deleter
    def linked_devices(self):
        self._linked_devices_value = None
        self._linked_devices_present = False

    @property
    def linked_shared_folders(self):
        """
        Linked shared folders.

        :rtype: list of [FolderLogInfo]
        """
        if self._linked_shared_folders_present:
            return self._linked_shared_folders_value
        else:
            raise AttributeError("missing required field 'linked_shared_folders'")

    @linked_shared_folders.setter
    def linked_shared_folders(self, val):
        val = self._linked_shared_folders_validator.validate(val)
        self._linked_shared_folders_value = val
        self._linked_shared_folders_present = True

    @linked_shared_folders.deleter
    def linked_shared_folders(self):
        self._linked_shared_folders_value = None
        self._linked_shared_folders_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(JoinTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'JoinTeamDetails(linked_apps={!r}, linked_devices={!r}, linked_shared_folders={!r})'.format(
            self._linked_apps_value,
            self._linked_devices_value,
            self._linked_shared_folders_value,
        )

JoinTeamDetails_validator = bv.Struct(JoinTeamDetails)

class LegacyDeviceSessionLogInfo(DeviceSessionLogInfo):
    """
    Information on sessions, in legacy format

    :ivar team_log.LegacyDeviceSessionLogInfo.session_info: Session unique id.
        Might be missing due to historical data gap.
    :ivar team_log.LegacyDeviceSessionLogInfo.display_name: The device name.
        Might be missing due to historical data gap.
    :ivar team_log.LegacyDeviceSessionLogInfo.is_emm_managed: Is device managed
        by emm. Might be missing due to historical data gap.
    :ivar team_log.LegacyDeviceSessionLogInfo.platform: Information on the
        hosting platform. Might be missing due to historical data gap.
    :ivar team_log.LegacyDeviceSessionLogInfo.mac_address: The mac address of
        the last activity from this session. Might be missing due to historical
        data gap.
    :ivar team_log.LegacyDeviceSessionLogInfo.os_version: The hosting OS
        version. Might be missing due to historical data gap.
    :ivar team_log.LegacyDeviceSessionLogInfo.device_type: Information on the
        hosting device type. Might be missing due to historical data gap.
    :ivar team_log.LegacyDeviceSessionLogInfo.client_version: The Dropbox client
        version. Might be missing due to historical data gap.
    :ivar team_log.LegacyDeviceSessionLogInfo.legacy_uniq_id: Alternative unique
        device session id, instead of session id field. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_session_info_value',
        '_session_info_present',
        '_display_name_value',
        '_display_name_present',
        '_is_emm_managed_value',
        '_is_emm_managed_present',
        '_platform_value',
        '_platform_present',
        '_mac_address_value',
        '_mac_address_present',
        '_os_version_value',
        '_os_version_present',
        '_device_type_value',
        '_device_type_present',
        '_client_version_value',
        '_client_version_present',
        '_legacy_uniq_id_value',
        '_legacy_uniq_id_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 ip_address=None,
                 created=None,
                 updated=None,
                 session_info=None,
                 display_name=None,
                 is_emm_managed=None,
                 platform=None,
                 mac_address=None,
                 os_version=None,
                 device_type=None,
                 client_version=None,
                 legacy_uniq_id=None):
        super(LegacyDeviceSessionLogInfo, self).__init__(ip_address,
                                                         created,
                                                         updated)
        self._session_info_value = None
        self._session_info_present = False
        self._display_name_value = None
        self._display_name_present = False
        self._is_emm_managed_value = None
        self._is_emm_managed_present = False
        self._platform_value = None
        self._platform_present = False
        self._mac_address_value = None
        self._mac_address_present = False
        self._os_version_value = None
        self._os_version_present = False
        self._device_type_value = None
        self._device_type_present = False
        self._client_version_value = None
        self._client_version_present = False
        self._legacy_uniq_id_value = None
        self._legacy_uniq_id_present = False
        if session_info is not None:
            self.session_info = session_info
        if display_name is not None:
            self.display_name = display_name
        if is_emm_managed is not None:
            self.is_emm_managed = is_emm_managed
        if platform is not None:
            self.platform = platform
        if mac_address is not None:
            self.mac_address = mac_address
        if os_version is not None:
            self.os_version = os_version
        if device_type is not None:
            self.device_type = device_type
        if client_version is not None:
            self.client_version = client_version
        if legacy_uniq_id is not None:
            self.legacy_uniq_id = legacy_uniq_id

    @property
    def session_info(self):
        """
        Session unique id. Might be missing due to historical data gap.

        :rtype: SessionLogInfo
        """
        if self._session_info_present:
            return self._session_info_value
        else:
            return None

    @session_info.setter
    def session_info(self, val):
        if val is None:
            del self.session_info
            return
        self._session_info_validator.validate_type_only(val)
        self._session_info_value = val
        self._session_info_present = True

    @session_info.deleter
    def session_info(self):
        self._session_info_value = None
        self._session_info_present = False

    @property
    def display_name(self):
        """
        The device name. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._display_name_present:
            return self._display_name_value
        else:
            return None

    @display_name.setter
    def display_name(self, val):
        if val is None:
            del self.display_name
            return
        val = self._display_name_validator.validate(val)
        self._display_name_value = val
        self._display_name_present = True

    @display_name.deleter
    def display_name(self):
        self._display_name_value = None
        self._display_name_present = False

    @property
    def is_emm_managed(self):
        """
        Is device managed by emm. Might be missing due to historical data gap.

        :rtype: bool
        """
        if self._is_emm_managed_present:
            return self._is_emm_managed_value
        else:
            return None

    @is_emm_managed.setter
    def is_emm_managed(self, val):
        if val is None:
            del self.is_emm_managed
            return
        val = self._is_emm_managed_validator.validate(val)
        self._is_emm_managed_value = val
        self._is_emm_managed_present = True

    @is_emm_managed.deleter
    def is_emm_managed(self):
        self._is_emm_managed_value = None
        self._is_emm_managed_present = False

    @property
    def platform(self):
        """
        Information on the hosting platform. Might be missing due to historical
        data gap.

        :rtype: str
        """
        if self._platform_present:
            return self._platform_value
        else:
            return None

    @platform.setter
    def platform(self, val):
        if val is None:
            del self.platform
            return
        val = self._platform_validator.validate(val)
        self._platform_value = val
        self._platform_present = True

    @platform.deleter
    def platform(self):
        self._platform_value = None
        self._platform_present = False

    @property
    def mac_address(self):
        """
        The mac address of the last activity from this session. Might be missing
        due to historical data gap.

        :rtype: str
        """
        if self._mac_address_present:
            return self._mac_address_value
        else:
            return None

    @mac_address.setter
    def mac_address(self, val):
        if val is None:
            del self.mac_address
            return
        val = self._mac_address_validator.validate(val)
        self._mac_address_value = val
        self._mac_address_present = True

    @mac_address.deleter
    def mac_address(self):
        self._mac_address_value = None
        self._mac_address_present = False

    @property
    def os_version(self):
        """
        The hosting OS version. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._os_version_present:
            return self._os_version_value
        else:
            return None

    @os_version.setter
    def os_version(self, val):
        if val is None:
            del self.os_version
            return
        val = self._os_version_validator.validate(val)
        self._os_version_value = val
        self._os_version_present = True

    @os_version.deleter
    def os_version(self):
        self._os_version_value = None
        self._os_version_present = False

    @property
    def device_type(self):
        """
        Information on the hosting device type. Might be missing due to
        historical data gap.

        :rtype: str
        """
        if self._device_type_present:
            return self._device_type_value
        else:
            return None

    @device_type.setter
    def device_type(self, val):
        if val is None:
            del self.device_type
            return
        val = self._device_type_validator.validate(val)
        self._device_type_value = val
        self._device_type_present = True

    @device_type.deleter
    def device_type(self):
        self._device_type_value = None
        self._device_type_present = False

    @property
    def client_version(self):
        """
        The Dropbox client version. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._client_version_present:
            return self._client_version_value
        else:
            return None

    @client_version.setter
    def client_version(self, val):
        if val is None:
            del self.client_version
            return
        val = self._client_version_validator.validate(val)
        self._client_version_value = val
        self._client_version_present = True

    @client_version.deleter
    def client_version(self):
        self._client_version_value = None
        self._client_version_present = False

    @property
    def legacy_uniq_id(self):
        """
        Alternative unique device session id, instead of session id field. Might
        be missing due to historical data gap.

        :rtype: str
        """
        if self._legacy_uniq_id_present:
            return self._legacy_uniq_id_value
        else:
            return None

    @legacy_uniq_id.setter
    def legacy_uniq_id(self, val):
        if val is None:
            del self.legacy_uniq_id
            return
        val = self._legacy_uniq_id_validator.validate(val)
        self._legacy_uniq_id_value = val
        self._legacy_uniq_id_present = True

    @legacy_uniq_id.deleter
    def legacy_uniq_id(self):
        self._legacy_uniq_id_value = None
        self._legacy_uniq_id_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegacyDeviceSessionLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegacyDeviceSessionLogInfo(ip_address={!r}, created={!r}, updated={!r}, session_info={!r}, display_name={!r}, is_emm_managed={!r}, platform={!r}, mac_address={!r}, os_version={!r}, device_type={!r}, client_version={!r}, legacy_uniq_id={!r})'.format(
            self._ip_address_value,
            self._created_value,
            self._updated_value,
            self._session_info_value,
            self._display_name_value,
            self._is_emm_managed_value,
            self._platform_value,
            self._mac_address_value,
            self._os_version_value,
            self._device_type_value,
            self._client_version_value,
            self._legacy_uniq_id_value,
        )

LegacyDeviceSessionLogInfo_validator = bv.Struct(LegacyDeviceSessionLogInfo)

class LinkedDeviceLogInfo(bb.Union):
    """
    The device sessions that user is linked to.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar MobileDeviceSessionLogInfo LinkedDeviceLogInfo.mobile_device_session:
        mobile device session's details.
    :ivar DesktopDeviceSessionLogInfo
        LinkedDeviceLogInfo.desktop_device_session: desktop device session's
        details.
    :ivar WebDeviceSessionLogInfo LinkedDeviceLogInfo.web_device_session: web
        device session's details.
    :ivar LegacyDeviceSessionLogInfo LinkedDeviceLogInfo.legacy_device_session:
        legacy device session's details.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def mobile_device_session(cls, val):
        """
        Create an instance of this class set to the ``mobile_device_session``
        tag with value ``val``.

        :param MobileDeviceSessionLogInfo val:
        :rtype: LinkedDeviceLogInfo
        """
        return cls('mobile_device_session', val)

    @classmethod
    def desktop_device_session(cls, val):
        """
        Create an instance of this class set to the ``desktop_device_session``
        tag with value ``val``.

        :param DesktopDeviceSessionLogInfo val:
        :rtype: LinkedDeviceLogInfo
        """
        return cls('desktop_device_session', val)

    @classmethod
    def web_device_session(cls, val):
        """
        Create an instance of this class set to the ``web_device_session`` tag
        with value ``val``.

        :param WebDeviceSessionLogInfo val:
        :rtype: LinkedDeviceLogInfo
        """
        return cls('web_device_session', val)

    @classmethod
    def legacy_device_session(cls, val):
        """
        Create an instance of this class set to the ``legacy_device_session``
        tag with value ``val``.

        :param LegacyDeviceSessionLogInfo val:
        :rtype: LinkedDeviceLogInfo
        """
        return cls('legacy_device_session', val)

    def is_mobile_device_session(self):
        """
        Check if the union tag is ``mobile_device_session``.

        :rtype: bool
        """
        return self._tag == 'mobile_device_session'

    def is_desktop_device_session(self):
        """
        Check if the union tag is ``desktop_device_session``.

        :rtype: bool
        """
        return self._tag == 'desktop_device_session'

    def is_web_device_session(self):
        """
        Check if the union tag is ``web_device_session``.

        :rtype: bool
        """
        return self._tag == 'web_device_session'

    def is_legacy_device_session(self):
        """
        Check if the union tag is ``legacy_device_session``.

        :rtype: bool
        """
        return self._tag == 'legacy_device_session'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_mobile_device_session(self):
        """
        mobile device session's details.

        Only call this if :meth:`is_mobile_device_session` is true.

        :rtype: MobileDeviceSessionLogInfo
        """
        if not self.is_mobile_device_session():
            raise AttributeError("tag 'mobile_device_session' not set")
        return self._value

    def get_desktop_device_session(self):
        """
        desktop device session's details.

        Only call this if :meth:`is_desktop_device_session` is true.

        :rtype: DesktopDeviceSessionLogInfo
        """
        if not self.is_desktop_device_session():
            raise AttributeError("tag 'desktop_device_session' not set")
        return self._value

    def get_web_device_session(self):
        """
        web device session's details.

        Only call this if :meth:`is_web_device_session` is true.

        :rtype: WebDeviceSessionLogInfo
        """
        if not self.is_web_device_session():
            raise AttributeError("tag 'web_device_session' not set")
        return self._value

    def get_legacy_device_session(self):
        """
        legacy device session's details.

        Only call this if :meth:`is_legacy_device_session` is true.

        :rtype: LegacyDeviceSessionLogInfo
        """
        if not self.is_legacy_device_session():
            raise AttributeError("tag 'legacy_device_session' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LinkedDeviceLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LinkedDeviceLogInfo(%r, %r)' % (self._tag, self._value)

LinkedDeviceLogInfo_validator = bv.Union(LinkedDeviceLogInfo)

class LoginFailDetails(bb.Struct):
    """
    Failed to sign in.

    :ivar team_log.LoginFailDetails.is_emm_managed: Tells if the login device is
        EMM managed. Might be missing due to historical data gap.
    :ivar team_log.LoginFailDetails.login_method: Login method.
    :ivar team_log.LoginFailDetails.error_details: Error details.
    """

    __slots__ = [
        '_is_emm_managed_value',
        '_is_emm_managed_present',
        '_login_method_value',
        '_login_method_present',
        '_error_details_value',
        '_error_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 login_method=None,
                 error_details=None,
                 is_emm_managed=None):
        self._is_emm_managed_value = None
        self._is_emm_managed_present = False
        self._login_method_value = None
        self._login_method_present = False
        self._error_details_value = None
        self._error_details_present = False
        if is_emm_managed is not None:
            self.is_emm_managed = is_emm_managed
        if login_method is not None:
            self.login_method = login_method
        if error_details is not None:
            self.error_details = error_details

    @property
    def is_emm_managed(self):
        """
        Tells if the login device is EMM managed. Might be missing due to
        historical data gap.

        :rtype: bool
        """
        if self._is_emm_managed_present:
            return self._is_emm_managed_value
        else:
            return None

    @is_emm_managed.setter
    def is_emm_managed(self, val):
        if val is None:
            del self.is_emm_managed
            return
        val = self._is_emm_managed_validator.validate(val)
        self._is_emm_managed_value = val
        self._is_emm_managed_present = True

    @is_emm_managed.deleter
    def is_emm_managed(self):
        self._is_emm_managed_value = None
        self._is_emm_managed_present = False

    @property
    def login_method(self):
        """
        Login method.

        :rtype: LoginMethod
        """
        if self._login_method_present:
            return self._login_method_value
        else:
            raise AttributeError("missing required field 'login_method'")

    @login_method.setter
    def login_method(self, val):
        self._login_method_validator.validate_type_only(val)
        self._login_method_value = val
        self._login_method_present = True

    @login_method.deleter
    def login_method(self):
        self._login_method_value = None
        self._login_method_present = False

    @property
    def error_details(self):
        """
        Error details.

        :rtype: FailureDetailsLogInfo
        """
        if self._error_details_present:
            return self._error_details_value
        else:
            raise AttributeError("missing required field 'error_details'")

    @error_details.setter
    def error_details(self, val):
        self._error_details_validator.validate_type_only(val)
        self._error_details_value = val
        self._error_details_present = True

    @error_details.deleter
    def error_details(self):
        self._error_details_value = None
        self._error_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LoginFailDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LoginFailDetails(login_method={!r}, error_details={!r}, is_emm_managed={!r})'.format(
            self._login_method_value,
            self._error_details_value,
            self._is_emm_managed_value,
        )

LoginFailDetails_validator = bv.Struct(LoginFailDetails)

class LoginFailType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LoginFailType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LoginFailType(description={!r})'.format(
            self._description_value,
        )

LoginFailType_validator = bv.Struct(LoginFailType)

class LoginMethod(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    password = None
    # Attribute is overwritten below the class definition
    two_factor_authentication = None
    # Attribute is overwritten below the class definition
    saml = None
    # Attribute is overwritten below the class definition
    google_oauth = None
    # Attribute is overwritten below the class definition
    other = None

    def is_password(self):
        """
        Check if the union tag is ``password``.

        :rtype: bool
        """
        return self._tag == 'password'

    def is_two_factor_authentication(self):
        """
        Check if the union tag is ``two_factor_authentication``.

        :rtype: bool
        """
        return self._tag == 'two_factor_authentication'

    def is_saml(self):
        """
        Check if the union tag is ``saml``.

        :rtype: bool
        """
        return self._tag == 'saml'

    def is_google_oauth(self):
        """
        Check if the union tag is ``google_oauth``.

        :rtype: bool
        """
        return self._tag == 'google_oauth'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LoginMethod, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LoginMethod(%r, %r)' % (self._tag, self._value)

LoginMethod_validator = bv.Union(LoginMethod)

class LoginSuccessDetails(bb.Struct):
    """
    Signed in.

    :ivar team_log.LoginSuccessDetails.is_emm_managed: Tells if the login device
        is EMM managed. Might be missing due to historical data gap.
    :ivar team_log.LoginSuccessDetails.login_method: Login method.
    """

    __slots__ = [
        '_is_emm_managed_value',
        '_is_emm_managed_present',
        '_login_method_value',
        '_login_method_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 login_method=None,
                 is_emm_managed=None):
        self._is_emm_managed_value = None
        self._is_emm_managed_present = False
        self._login_method_value = None
        self._login_method_present = False
        if is_emm_managed is not None:
            self.is_emm_managed = is_emm_managed
        if login_method is not None:
            self.login_method = login_method

    @property
    def is_emm_managed(self):
        """
        Tells if the login device is EMM managed. Might be missing due to
        historical data gap.

        :rtype: bool
        """
        if self._is_emm_managed_present:
            return self._is_emm_managed_value
        else:
            return None

    @is_emm_managed.setter
    def is_emm_managed(self, val):
        if val is None:
            del self.is_emm_managed
            return
        val = self._is_emm_managed_validator.validate(val)
        self._is_emm_managed_value = val
        self._is_emm_managed_present = True

    @is_emm_managed.deleter
    def is_emm_managed(self):
        self._is_emm_managed_value = None
        self._is_emm_managed_present = False

    @property
    def login_method(self):
        """
        Login method.

        :rtype: LoginMethod
        """
        if self._login_method_present:
            return self._login_method_value
        else:
            raise AttributeError("missing required field 'login_method'")

    @login_method.setter
    def login_method(self, val):
        self._login_method_validator.validate_type_only(val)
        self._login_method_value = val
        self._login_method_present = True

    @login_method.deleter
    def login_method(self):
        self._login_method_value = None
        self._login_method_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LoginSuccessDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LoginSuccessDetails(login_method={!r}, is_emm_managed={!r})'.format(
            self._login_method_value,
            self._is_emm_managed_value,
        )

LoginSuccessDetails_validator = bv.Struct(LoginSuccessDetails)

class LoginSuccessType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LoginSuccessType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LoginSuccessType(description={!r})'.format(
            self._description_value,
        )

LoginSuccessType_validator = bv.Struct(LoginSuccessType)

class LogoutDetails(bb.Struct):
    """
    Signed out.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LogoutDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LogoutDetails()'

LogoutDetails_validator = bv.Struct(LogoutDetails)

class LogoutType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LogoutType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LogoutType(description={!r})'.format(
            self._description_value,
        )

LogoutType_validator = bv.Struct(LogoutType)

class MemberAddExternalIdDetails(bb.Struct):
    """
    Added an external ID for team member.

    :ivar team_log.MemberAddExternalIdDetails.new_value: Current external id.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        Current external id.

        :rtype: str
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberAddExternalIdDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberAddExternalIdDetails(new_value={!r})'.format(
            self._new_value_value,
        )

MemberAddExternalIdDetails_validator = bv.Struct(MemberAddExternalIdDetails)

class MemberAddExternalIdType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberAddExternalIdType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberAddExternalIdType(description={!r})'.format(
            self._description_value,
        )

MemberAddExternalIdType_validator = bv.Struct(MemberAddExternalIdType)

class MemberAddNameDetails(bb.Struct):
    """
    Added team member name.

    :ivar team_log.MemberAddNameDetails.new_value: New user's name.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        New user's name.

        :rtype: UserNameLogInfo
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberAddNameDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberAddNameDetails(new_value={!r})'.format(
            self._new_value_value,
        )

MemberAddNameDetails_validator = bv.Struct(MemberAddNameDetails)

class MemberAddNameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberAddNameType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberAddNameType(description={!r})'.format(
            self._description_value,
        )

MemberAddNameType_validator = bv.Struct(MemberAddNameType)

class MemberChangeAdminRoleDetails(bb.Struct):
    """
    Changed team member admin role.

    :ivar team_log.MemberChangeAdminRoleDetails.new_value: New admin role. This
        field is relevant when the admin role is changed or whenthe user role
        changes from no admin rights to with admin rights.
    :ivar team_log.MemberChangeAdminRoleDetails.previous_value: Previous admin
        role. This field is relevant when the admin role is changed or when the
        admin role is removed.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New admin role. This field is relevant when the admin role is changed or
        whenthe user role changes from no admin rights to with admin rights.

        :rtype: AdminRole
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous admin role. This field is relevant when the admin role is
        changed or when the admin role is removed.

        :rtype: AdminRole
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberChangeAdminRoleDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberChangeAdminRoleDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

MemberChangeAdminRoleDetails_validator = bv.Struct(MemberChangeAdminRoleDetails)

class MemberChangeAdminRoleType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberChangeAdminRoleType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberChangeAdminRoleType(description={!r})'.format(
            self._description_value,
        )

MemberChangeAdminRoleType_validator = bv.Struct(MemberChangeAdminRoleType)

class MemberChangeEmailDetails(bb.Struct):
    """
    Changed team member email.

    :ivar team_log.MemberChangeEmailDetails.new_value: New email.
    :ivar team_log.MemberChangeEmailDetails.previous_value: Previous email.
        Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New email.

        :rtype: str
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous email. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberChangeEmailDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberChangeEmailDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

MemberChangeEmailDetails_validator = bv.Struct(MemberChangeEmailDetails)

class MemberChangeEmailType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberChangeEmailType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberChangeEmailType(description={!r})'.format(
            self._description_value,
        )

MemberChangeEmailType_validator = bv.Struct(MemberChangeEmailType)

class MemberChangeExternalIdDetails(bb.Struct):
    """
    Changed the external ID for team member.

    :ivar team_log.MemberChangeExternalIdDetails.new_value: Current external id.
    :ivar team_log.MemberChangeExternalIdDetails.previous_value: Old external
        id.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        Current external id.

        :rtype: str
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Old external id.

        :rtype: str
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberChangeExternalIdDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberChangeExternalIdDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

MemberChangeExternalIdDetails_validator = bv.Struct(MemberChangeExternalIdDetails)

class MemberChangeExternalIdType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberChangeExternalIdType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberChangeExternalIdType(description={!r})'.format(
            self._description_value,
        )

MemberChangeExternalIdType_validator = bv.Struct(MemberChangeExternalIdType)

class MemberChangeMembershipTypeDetails(bb.Struct):
    """
    Changed membership type (limited/full) of member.

    :ivar team_log.MemberChangeMembershipTypeDetails.prev_value: Previous
        membership type.
    :ivar team_log.MemberChangeMembershipTypeDetails.new_value: New membership
        type.
    """

    __slots__ = [
        '_prev_value_value',
        '_prev_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 prev_value=None,
                 new_value=None):
        self._prev_value_value = None
        self._prev_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if prev_value is not None:
            self.prev_value = prev_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def prev_value(self):
        """
        Previous membership type.

        :rtype: TeamMembershipType
        """
        if self._prev_value_present:
            return self._prev_value_value
        else:
            raise AttributeError("missing required field 'prev_value'")

    @prev_value.setter
    def prev_value(self, val):
        self._prev_value_validator.validate_type_only(val)
        self._prev_value_value = val
        self._prev_value_present = True

    @prev_value.deleter
    def prev_value(self):
        self._prev_value_value = None
        self._prev_value_present = False

    @property
    def new_value(self):
        """
        New membership type.

        :rtype: TeamMembershipType
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberChangeMembershipTypeDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberChangeMembershipTypeDetails(prev_value={!r}, new_value={!r})'.format(
            self._prev_value_value,
            self._new_value_value,
        )

MemberChangeMembershipTypeDetails_validator = bv.Struct(MemberChangeMembershipTypeDetails)

class MemberChangeMembershipTypeType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberChangeMembershipTypeType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberChangeMembershipTypeType(description={!r})'.format(
            self._description_value,
        )

MemberChangeMembershipTypeType_validator = bv.Struct(MemberChangeMembershipTypeType)

class MemberChangeNameDetails(bb.Struct):
    """
    Changed team member name.

    :ivar team_log.MemberChangeNameDetails.new_value: New user's name.
    :ivar team_log.MemberChangeNameDetails.previous_value: Previous user's name.
        Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New user's name.

        :rtype: UserNameLogInfo
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous user's name. Might be missing due to historical data gap.

        :rtype: UserNameLogInfo
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberChangeNameDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberChangeNameDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

MemberChangeNameDetails_validator = bv.Struct(MemberChangeNameDetails)

class MemberChangeNameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberChangeNameType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberChangeNameType(description={!r})'.format(
            self._description_value,
        )

MemberChangeNameType_validator = bv.Struct(MemberChangeNameType)

class MemberChangeStatusDetails(bb.Struct):
    """
    Changed member status (invited, joined, suspended, etc.).

    :ivar team_log.MemberChangeStatusDetails.previous_value: Previous member
        status. Might be missing due to historical data gap.
    :ivar team_log.MemberChangeStatusDetails.new_value: New member status.
    :ivar team_log.MemberChangeStatusDetails.action: Additional information
        indicating the action taken that caused status change.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
        '_action_value',
        '_action_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None,
                 action=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        self._action_value = None
        self._action_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value
        if action is not None:
            self.action = action

    @property
    def previous_value(self):
        """
        Previous member status. Might be missing due to historical data gap.

        :rtype: MemberStatus
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New member status.

        :rtype: MemberStatus
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def action(self):
        """
        Additional information indicating the action taken that caused status
        change.

        :rtype: ActionDetails
        """
        if self._action_present:
            return self._action_value
        else:
            return None

    @action.setter
    def action(self, val):
        if val is None:
            del self.action
            return
        self._action_validator.validate_type_only(val)
        self._action_value = val
        self._action_present = True

    @action.deleter
    def action(self):
        self._action_value = None
        self._action_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberChangeStatusDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberChangeStatusDetails(new_value={!r}, previous_value={!r}, action={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
            self._action_value,
        )

MemberChangeStatusDetails_validator = bv.Struct(MemberChangeStatusDetails)

class MemberChangeStatusType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberChangeStatusType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberChangeStatusType(description={!r})'.format(
            self._description_value,
        )

MemberChangeStatusType_validator = bv.Struct(MemberChangeStatusType)

class MemberDeleteManualContactsDetails(bb.Struct):
    """
    Cleared manually added contacts.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberDeleteManualContactsDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberDeleteManualContactsDetails()'

MemberDeleteManualContactsDetails_validator = bv.Struct(MemberDeleteManualContactsDetails)

class MemberDeleteManualContactsType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberDeleteManualContactsType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberDeleteManualContactsType(description={!r})'.format(
            self._description_value,
        )

MemberDeleteManualContactsType_validator = bv.Struct(MemberDeleteManualContactsType)

class MemberPermanentlyDeleteAccountContentsDetails(bb.Struct):
    """
    Permanently deleted contents of deleted team member account.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberPermanentlyDeleteAccountContentsDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberPermanentlyDeleteAccountContentsDetails()'

MemberPermanentlyDeleteAccountContentsDetails_validator = bv.Struct(MemberPermanentlyDeleteAccountContentsDetails)

class MemberPermanentlyDeleteAccountContentsType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberPermanentlyDeleteAccountContentsType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberPermanentlyDeleteAccountContentsType(description={!r})'.format(
            self._description_value,
        )

MemberPermanentlyDeleteAccountContentsType_validator = bv.Struct(MemberPermanentlyDeleteAccountContentsType)

class MemberRemoveActionType(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    delete = None
    # Attribute is overwritten below the class definition
    offboard = None
    # Attribute is overwritten below the class definition
    leave = None
    # Attribute is overwritten below the class definition
    offboard_and_retain_team_folders = None
    # Attribute is overwritten below the class definition
    other = None

    def is_delete(self):
        """
        Check if the union tag is ``delete``.

        :rtype: bool
        """
        return self._tag == 'delete'

    def is_offboard(self):
        """
        Check if the union tag is ``offboard``.

        :rtype: bool
        """
        return self._tag == 'offboard'

    def is_leave(self):
        """
        Check if the union tag is ``leave``.

        :rtype: bool
        """
        return self._tag == 'leave'

    def is_offboard_and_retain_team_folders(self):
        """
        Check if the union tag is ``offboard_and_retain_team_folders``.

        :rtype: bool
        """
        return self._tag == 'offboard_and_retain_team_folders'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberRemoveActionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberRemoveActionType(%r, %r)' % (self._tag, self._value)

MemberRemoveActionType_validator = bv.Union(MemberRemoveActionType)

class MemberRemoveExternalIdDetails(bb.Struct):
    """
    Removed the external ID for team member.

    :ivar team_log.MemberRemoveExternalIdDetails.previous_value: Old external
        id.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def previous_value(self):
        """
        Old external id.

        :rtype: str
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberRemoveExternalIdDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberRemoveExternalIdDetails(previous_value={!r})'.format(
            self._previous_value_value,
        )

MemberRemoveExternalIdDetails_validator = bv.Struct(MemberRemoveExternalIdDetails)

class MemberRemoveExternalIdType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberRemoveExternalIdType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberRemoveExternalIdType(description={!r})'.format(
            self._description_value,
        )

MemberRemoveExternalIdType_validator = bv.Struct(MemberRemoveExternalIdType)

class MemberRequestsChangePolicyDetails(bb.Struct):
    """
    Changed whether users can find team when not invited.

    :ivar team_log.MemberRequestsChangePolicyDetails.new_value: New member
        change requests policy.
    :ivar team_log.MemberRequestsChangePolicyDetails.previous_value: Previous
        member change requests policy. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New member change requests policy.

        :rtype: MemberRequestsPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous member change requests policy. Might be missing due to
        historical data gap.

        :rtype: MemberRequestsPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberRequestsChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberRequestsChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

MemberRequestsChangePolicyDetails_validator = bv.Struct(MemberRequestsChangePolicyDetails)

class MemberRequestsChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberRequestsChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberRequestsChangePolicyType(description={!r})'.format(
            self._description_value,
        )

MemberRequestsChangePolicyType_validator = bv.Struct(MemberRequestsChangePolicyType)

class MemberRequestsPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    auto_accept = None
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    require_approval = None
    # Attribute is overwritten below the class definition
    other = None

    def is_auto_accept(self):
        """
        Check if the union tag is ``auto_accept``.

        :rtype: bool
        """
        return self._tag == 'auto_accept'

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_require_approval(self):
        """
        Check if the union tag is ``require_approval``.

        :rtype: bool
        """
        return self._tag == 'require_approval'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberRequestsPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberRequestsPolicy(%r, %r)' % (self._tag, self._value)

MemberRequestsPolicy_validator = bv.Union(MemberRequestsPolicy)

class MemberSpaceLimitsAddCustomQuotaDetails(bb.Struct):
    """
    Set custom member space limit.

    :ivar team_log.MemberSpaceLimitsAddCustomQuotaDetails.new_value: New custom
        quota value in bytes.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        New custom quota value in bytes.

        :rtype: int
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsAddCustomQuotaDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsAddCustomQuotaDetails(new_value={!r})'.format(
            self._new_value_value,
        )

MemberSpaceLimitsAddCustomQuotaDetails_validator = bv.Struct(MemberSpaceLimitsAddCustomQuotaDetails)

class MemberSpaceLimitsAddCustomQuotaType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsAddCustomQuotaType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsAddCustomQuotaType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsAddCustomQuotaType_validator = bv.Struct(MemberSpaceLimitsAddCustomQuotaType)

class MemberSpaceLimitsAddExceptionDetails(bb.Struct):
    """
    Added members to member space limit exception list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsAddExceptionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsAddExceptionDetails()'

MemberSpaceLimitsAddExceptionDetails_validator = bv.Struct(MemberSpaceLimitsAddExceptionDetails)

class MemberSpaceLimitsAddExceptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsAddExceptionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsAddExceptionType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsAddExceptionType_validator = bv.Struct(MemberSpaceLimitsAddExceptionType)

class MemberSpaceLimitsChangeCapsTypePolicyDetails(bb.Struct):
    """
    Changed member space limit type for team.

    :ivar team_log.MemberSpaceLimitsChangeCapsTypePolicyDetails.previous_value:
        Previous space limit type.
    :ivar team_log.MemberSpaceLimitsChangeCapsTypePolicyDetails.new_value: New
        space limit type.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous space limit type.

        :rtype: SpaceCapsType
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New space limit type.

        :rtype: SpaceCapsType
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsChangeCapsTypePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangeCapsTypePolicyDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

MemberSpaceLimitsChangeCapsTypePolicyDetails_validator = bv.Struct(MemberSpaceLimitsChangeCapsTypePolicyDetails)

class MemberSpaceLimitsChangeCapsTypePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsChangeCapsTypePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangeCapsTypePolicyType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsChangeCapsTypePolicyType_validator = bv.Struct(MemberSpaceLimitsChangeCapsTypePolicyType)

class MemberSpaceLimitsChangeCustomQuotaDetails(bb.Struct):
    """
    Changed custom member space limit.

    :ivar team_log.MemberSpaceLimitsChangeCustomQuotaDetails.previous_value:
        Previous custom quota value in bytes.
    :ivar team_log.MemberSpaceLimitsChangeCustomQuotaDetails.new_value: New
        custom quota value in bytes.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous custom quota value in bytes.

        :rtype: int
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New custom quota value in bytes.

        :rtype: int
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsChangeCustomQuotaDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangeCustomQuotaDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

MemberSpaceLimitsChangeCustomQuotaDetails_validator = bv.Struct(MemberSpaceLimitsChangeCustomQuotaDetails)

class MemberSpaceLimitsChangeCustomQuotaType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsChangeCustomQuotaType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangeCustomQuotaType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsChangeCustomQuotaType_validator = bv.Struct(MemberSpaceLimitsChangeCustomQuotaType)

class MemberSpaceLimitsChangePolicyDetails(bb.Struct):
    """
    Changed team default member space limit.

    :ivar team_log.MemberSpaceLimitsChangePolicyDetails.previous_value: Previous
        team default limit value in bytes. Might be missing due to historical
        data gap.
    :ivar team_log.MemberSpaceLimitsChangePolicyDetails.new_value: New team
        default limit value in bytes. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous team default limit value in bytes. Might be missing due to
        historical data gap.

        :rtype: int
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New team default limit value in bytes. Might be missing due to
        historical data gap.

        :rtype: int
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangePolicyDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

MemberSpaceLimitsChangePolicyDetails_validator = bv.Struct(MemberSpaceLimitsChangePolicyDetails)

class MemberSpaceLimitsChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangePolicyType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsChangePolicyType_validator = bv.Struct(MemberSpaceLimitsChangePolicyType)

class MemberSpaceLimitsChangeStatusDetails(bb.Struct):
    """
    Changed space limit status.

    :ivar team_log.MemberSpaceLimitsChangeStatusDetails.previous_value: Previous
        storage quota status.
    :ivar team_log.MemberSpaceLimitsChangeStatusDetails.new_value: New storage
        quota status.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous storage quota status.

        :rtype: SpaceLimitsStatus
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New storage quota status.

        :rtype: SpaceLimitsStatus
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsChangeStatusDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangeStatusDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

MemberSpaceLimitsChangeStatusDetails_validator = bv.Struct(MemberSpaceLimitsChangeStatusDetails)

class MemberSpaceLimitsChangeStatusType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsChangeStatusType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangeStatusType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsChangeStatusType_validator = bv.Struct(MemberSpaceLimitsChangeStatusType)

class MemberSpaceLimitsRemoveCustomQuotaDetails(bb.Struct):
    """
    Removed custom member space limit.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsRemoveCustomQuotaDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsRemoveCustomQuotaDetails()'

MemberSpaceLimitsRemoveCustomQuotaDetails_validator = bv.Struct(MemberSpaceLimitsRemoveCustomQuotaDetails)

class MemberSpaceLimitsRemoveCustomQuotaType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsRemoveCustomQuotaType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsRemoveCustomQuotaType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsRemoveCustomQuotaType_validator = bv.Struct(MemberSpaceLimitsRemoveCustomQuotaType)

class MemberSpaceLimitsRemoveExceptionDetails(bb.Struct):
    """
    Removed members from member space limit exception list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsRemoveExceptionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsRemoveExceptionDetails()'

MemberSpaceLimitsRemoveExceptionDetails_validator = bv.Struct(MemberSpaceLimitsRemoveExceptionDetails)

class MemberSpaceLimitsRemoveExceptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSpaceLimitsRemoveExceptionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsRemoveExceptionType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsRemoveExceptionType_validator = bv.Struct(MemberSpaceLimitsRemoveExceptionType)

class MemberStatus(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    not_joined = None
    # Attribute is overwritten below the class definition
    invited = None
    # Attribute is overwritten below the class definition
    active = None
    # Attribute is overwritten below the class definition
    suspended = None
    # Attribute is overwritten below the class definition
    removed = None
    # Attribute is overwritten below the class definition
    other = None

    def is_not_joined(self):
        """
        Check if the union tag is ``not_joined``.

        :rtype: bool
        """
        return self._tag == 'not_joined'

    def is_invited(self):
        """
        Check if the union tag is ``invited``.

        :rtype: bool
        """
        return self._tag == 'invited'

    def is_active(self):
        """
        Check if the union tag is ``active``.

        :rtype: bool
        """
        return self._tag == 'active'

    def is_suspended(self):
        """
        Check if the union tag is ``suspended``.

        :rtype: bool
        """
        return self._tag == 'suspended'

    def is_removed(self):
        """
        Check if the union tag is ``removed``.

        :rtype: bool
        """
        return self._tag == 'removed'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberStatus, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberStatus(%r, %r)' % (self._tag, self._value)

MemberStatus_validator = bv.Union(MemberStatus)

class MemberSuggestDetails(bb.Struct):
    """
    Suggested person to add to team.

    :ivar team_log.MemberSuggestDetails.suggested_members: suggested users
        emails.
    """

    __slots__ = [
        '_suggested_members_value',
        '_suggested_members_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 suggested_members=None):
        self._suggested_members_value = None
        self._suggested_members_present = False
        if suggested_members is not None:
            self.suggested_members = suggested_members

    @property
    def suggested_members(self):
        """
        suggested users emails.

        :rtype: list of [str]
        """
        if self._suggested_members_present:
            return self._suggested_members_value
        else:
            raise AttributeError("missing required field 'suggested_members'")

    @suggested_members.setter
    def suggested_members(self, val):
        val = self._suggested_members_validator.validate(val)
        self._suggested_members_value = val
        self._suggested_members_present = True

    @suggested_members.deleter
    def suggested_members(self):
        self._suggested_members_value = None
        self._suggested_members_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSuggestDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSuggestDetails(suggested_members={!r})'.format(
            self._suggested_members_value,
        )

MemberSuggestDetails_validator = bv.Struct(MemberSuggestDetails)

class MemberSuggestType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSuggestType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSuggestType(description={!r})'.format(
            self._description_value,
        )

MemberSuggestType_validator = bv.Struct(MemberSuggestType)

class MemberSuggestionsChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled option for team members to suggest people to add to team.

    :ivar team_log.MemberSuggestionsChangePolicyDetails.new_value: New team
        member suggestions policy.
    :ivar team_log.MemberSuggestionsChangePolicyDetails.previous_value: Previous
        team member suggestions policy. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New team member suggestions policy.

        :rtype: MemberSuggestionsPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous team member suggestions policy. Might be missing due to
        historical data gap.

        :rtype: MemberSuggestionsPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSuggestionsChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSuggestionsChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

MemberSuggestionsChangePolicyDetails_validator = bv.Struct(MemberSuggestionsChangePolicyDetails)

class MemberSuggestionsChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSuggestionsChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSuggestionsChangePolicyType(description={!r})'.format(
            self._description_value,
        )

MemberSuggestionsChangePolicyType_validator = bv.Struct(MemberSuggestionsChangePolicyType)

class MemberSuggestionsPolicy(bb.Union):
    """
    Member suggestions policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSuggestionsPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSuggestionsPolicy(%r, %r)' % (self._tag, self._value)

MemberSuggestionsPolicy_validator = bv.Union(MemberSuggestionsPolicy)

class MemberTransferAccountContentsDetails(bb.Struct):
    """
    Transferred contents of deleted member account to another member.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberTransferAccountContentsDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberTransferAccountContentsDetails()'

MemberTransferAccountContentsDetails_validator = bv.Struct(MemberTransferAccountContentsDetails)

class MemberTransferAccountContentsType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberTransferAccountContentsType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberTransferAccountContentsType(description={!r})'.format(
            self._description_value,
        )

MemberTransferAccountContentsType_validator = bv.Struct(MemberTransferAccountContentsType)

class MicrosoftOfficeAddinChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled Microsoft Office add-in.

    :ivar team_log.MicrosoftOfficeAddinChangePolicyDetails.new_value: New
        Microsoft Office addin policy.
    :ivar team_log.MicrosoftOfficeAddinChangePolicyDetails.previous_value:
        Previous Microsoft Office addin policy. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Microsoft Office addin policy.

        :rtype: MicrosoftOfficeAddinPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Microsoft Office addin policy. Might be missing due to
        historical data gap.

        :rtype: MicrosoftOfficeAddinPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MicrosoftOfficeAddinChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MicrosoftOfficeAddinChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

MicrosoftOfficeAddinChangePolicyDetails_validator = bv.Struct(MicrosoftOfficeAddinChangePolicyDetails)

class MicrosoftOfficeAddinChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MicrosoftOfficeAddinChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MicrosoftOfficeAddinChangePolicyType(description={!r})'.format(
            self._description_value,
        )

MicrosoftOfficeAddinChangePolicyType_validator = bv.Struct(MicrosoftOfficeAddinChangePolicyType)

class MicrosoftOfficeAddinPolicy(bb.Union):
    """
    Microsoft Office addin policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MicrosoftOfficeAddinPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MicrosoftOfficeAddinPolicy(%r, %r)' % (self._tag, self._value)

MicrosoftOfficeAddinPolicy_validator = bv.Union(MicrosoftOfficeAddinPolicy)

class MissingDetails(bb.Struct):
    """
    An indication that an error occurred while retrieving the event. Some
    attributes of the event may be omitted as a result.

    :ivar team_log.MissingDetails.source_event_fields: All the data that could
        be retrieved and converted from the source event.
    """

    __slots__ = [
        '_source_event_fields_value',
        '_source_event_fields_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 source_event_fields=None):
        self._source_event_fields_value = None
        self._source_event_fields_present = False
        if source_event_fields is not None:
            self.source_event_fields = source_event_fields

    @property
    def source_event_fields(self):
        """
        All the data that could be retrieved and converted from the source
        event.

        :rtype: str
        """
        if self._source_event_fields_present:
            return self._source_event_fields_value
        else:
            return None

    @source_event_fields.setter
    def source_event_fields(self, val):
        if val is None:
            del self.source_event_fields
            return
        val = self._source_event_fields_validator.validate(val)
        self._source_event_fields_value = val
        self._source_event_fields_present = True

    @source_event_fields.deleter
    def source_event_fields(self):
        self._source_event_fields_value = None
        self._source_event_fields_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MissingDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MissingDetails(source_event_fields={!r})'.format(
            self._source_event_fields_value,
        )

MissingDetails_validator = bv.Struct(MissingDetails)

class MobileDeviceSessionLogInfo(DeviceSessionLogInfo):
    """
    Information about linked Dropbox mobile client sessions

    :ivar team_log.MobileDeviceSessionLogInfo.session_info: Mobile session
        unique id. Might be missing due to historical data gap.
    :ivar team_log.MobileDeviceSessionLogInfo.device_name: The device name.
    :ivar team_log.MobileDeviceSessionLogInfo.client_type: The mobile
        application type.
    :ivar team_log.MobileDeviceSessionLogInfo.client_version: The Dropbox client
        version.
    :ivar team_log.MobileDeviceSessionLogInfo.os_version: The hosting OS
        version.
    :ivar team_log.MobileDeviceSessionLogInfo.last_carrier: last carrier used by
        the device.
    """

    __slots__ = [
        '_session_info_value',
        '_session_info_present',
        '_device_name_value',
        '_device_name_present',
        '_client_type_value',
        '_client_type_present',
        '_client_version_value',
        '_client_version_present',
        '_os_version_value',
        '_os_version_present',
        '_last_carrier_value',
        '_last_carrier_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 device_name=None,
                 client_type=None,
                 ip_address=None,
                 created=None,
                 updated=None,
                 session_info=None,
                 client_version=None,
                 os_version=None,
                 last_carrier=None):
        super(MobileDeviceSessionLogInfo, self).__init__(ip_address,
                                                         created,
                                                         updated)
        self._session_info_value = None
        self._session_info_present = False
        self._device_name_value = None
        self._device_name_present = False
        self._client_type_value = None
        self._client_type_present = False
        self._client_version_value = None
        self._client_version_present = False
        self._os_version_value = None
        self._os_version_present = False
        self._last_carrier_value = None
        self._last_carrier_present = False
        if session_info is not None:
            self.session_info = session_info
        if device_name is not None:
            self.device_name = device_name
        if client_type is not None:
            self.client_type = client_type
        if client_version is not None:
            self.client_version = client_version
        if os_version is not None:
            self.os_version = os_version
        if last_carrier is not None:
            self.last_carrier = last_carrier

    @property
    def session_info(self):
        """
        Mobile session unique id. Might be missing due to historical data gap.

        :rtype: MobileSessionLogInfo
        """
        if self._session_info_present:
            return self._session_info_value
        else:
            return None

    @session_info.setter
    def session_info(self, val):
        if val is None:
            del self.session_info
            return
        self._session_info_validator.validate_type_only(val)
        self._session_info_value = val
        self._session_info_present = True

    @session_info.deleter
    def session_info(self):
        self._session_info_value = None
        self._session_info_present = False

    @property
    def device_name(self):
        """
        The device name.

        :rtype: str
        """
        if self._device_name_present:
            return self._device_name_value
        else:
            raise AttributeError("missing required field 'device_name'")

    @device_name.setter
    def device_name(self, val):
        val = self._device_name_validator.validate(val)
        self._device_name_value = val
        self._device_name_present = True

    @device_name.deleter
    def device_name(self):
        self._device_name_value = None
        self._device_name_present = False

    @property
    def client_type(self):
        """
        The mobile application type.

        :rtype: team.MobileClientPlatform
        """
        if self._client_type_present:
            return self._client_type_value
        else:
            raise AttributeError("missing required field 'client_type'")

    @client_type.setter
    def client_type(self, val):
        self._client_type_validator.validate_type_only(val)
        self._client_type_value = val
        self._client_type_present = True

    @client_type.deleter
    def client_type(self):
        self._client_type_value = None
        self._client_type_present = False

    @property
    def client_version(self):
        """
        The Dropbox client version.

        :rtype: str
        """
        if self._client_version_present:
            return self._client_version_value
        else:
            return None

    @client_version.setter
    def client_version(self, val):
        if val is None:
            del self.client_version
            return
        val = self._client_version_validator.validate(val)
        self._client_version_value = val
        self._client_version_present = True

    @client_version.deleter
    def client_version(self):
        self._client_version_value = None
        self._client_version_present = False

    @property
    def os_version(self):
        """
        The hosting OS version.

        :rtype: str
        """
        if self._os_version_present:
            return self._os_version_value
        else:
            return None

    @os_version.setter
    def os_version(self, val):
        if val is None:
            del self.os_version
            return
        val = self._os_version_validator.validate(val)
        self._os_version_value = val
        self._os_version_present = True

    @os_version.deleter
    def os_version(self):
        self._os_version_value = None
        self._os_version_present = False

    @property
    def last_carrier(self):
        """
        last carrier used by the device.

        :rtype: str
        """
        if self._last_carrier_present:
            return self._last_carrier_value
        else:
            return None

    @last_carrier.setter
    def last_carrier(self, val):
        if val is None:
            del self.last_carrier
            return
        val = self._last_carrier_validator.validate(val)
        self._last_carrier_value = val
        self._last_carrier_present = True

    @last_carrier.deleter
    def last_carrier(self):
        self._last_carrier_value = None
        self._last_carrier_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MobileDeviceSessionLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MobileDeviceSessionLogInfo(device_name={!r}, client_type={!r}, ip_address={!r}, created={!r}, updated={!r}, session_info={!r}, client_version={!r}, os_version={!r}, last_carrier={!r})'.format(
            self._device_name_value,
            self._client_type_value,
            self._ip_address_value,
            self._created_value,
            self._updated_value,
            self._session_info_value,
            self._client_version_value,
            self._os_version_value,
            self._last_carrier_value,
        )

MobileDeviceSessionLogInfo_validator = bv.Struct(MobileDeviceSessionLogInfo)

class MobileSessionLogInfo(SessionLogInfo):
    """
    Mobile session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self,
                 session_id=None):
        super(MobileSessionLogInfo, self).__init__(session_id)

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MobileSessionLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MobileSessionLogInfo(session_id={!r})'.format(
            self._session_id_value,
        )

MobileSessionLogInfo_validator = bv.Struct(MobileSessionLogInfo)

class NamespaceRelativePathLogInfo(bb.Struct):
    """
    Namespace relative path details.

    :ivar team_log.NamespaceRelativePathLogInfo.ns_id: Namespace ID. Might be
        missing due to historical data gap.
    :ivar team_log.NamespaceRelativePathLogInfo.relative_path: A path relative
        to the specified namespace ID. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_ns_id_value',
        '_ns_id_present',
        '_relative_path_value',
        '_relative_path_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 ns_id=None,
                 relative_path=None):
        self._ns_id_value = None
        self._ns_id_present = False
        self._relative_path_value = None
        self._relative_path_present = False
        if ns_id is not None:
            self.ns_id = ns_id
        if relative_path is not None:
            self.relative_path = relative_path

    @property
    def ns_id(self):
        """
        Namespace ID. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._ns_id_present:
            return self._ns_id_value
        else:
            return None

    @ns_id.setter
    def ns_id(self, val):
        if val is None:
            del self.ns_id
            return
        val = self._ns_id_validator.validate(val)
        self._ns_id_value = val
        self._ns_id_present = True

    @ns_id.deleter
    def ns_id(self):
        self._ns_id_value = None
        self._ns_id_present = False

    @property
    def relative_path(self):
        """
        A path relative to the specified namespace ID. Might be missing due to
        historical data gap.

        :rtype: str
        """
        if self._relative_path_present:
            return self._relative_path_value
        else:
            return None

    @relative_path.setter
    def relative_path(self, val):
        if val is None:
            del self.relative_path
            return
        val = self._relative_path_validator.validate(val)
        self._relative_path_value = val
        self._relative_path_present = True

    @relative_path.deleter
    def relative_path(self):
        self._relative_path_value = None
        self._relative_path_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NamespaceRelativePathLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NamespaceRelativePathLogInfo(ns_id={!r}, relative_path={!r})'.format(
            self._ns_id_value,
            self._relative_path_value,
        )

NamespaceRelativePathLogInfo_validator = bv.Struct(NamespaceRelativePathLogInfo)

class NetworkControlChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled network control.

    :ivar team_log.NetworkControlChangePolicyDetails.new_value: New network
        control policy.
    :ivar team_log.NetworkControlChangePolicyDetails.previous_value: Previous
        network control policy. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New network control policy.

        :rtype: NetworkControlPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous network control policy. Might be missing due to historical data
        gap.

        :rtype: NetworkControlPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NetworkControlChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NetworkControlChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

NetworkControlChangePolicyDetails_validator = bv.Struct(NetworkControlChangePolicyDetails)

class NetworkControlChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NetworkControlChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NetworkControlChangePolicyType(description={!r})'.format(
            self._description_value,
        )

NetworkControlChangePolicyType_validator = bv.Struct(NetworkControlChangePolicyType)

class NetworkControlPolicy(bb.Union):
    """
    Network control policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NetworkControlPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NetworkControlPolicy(%r, %r)' % (self._tag, self._value)

NetworkControlPolicy_validator = bv.Union(NetworkControlPolicy)

class UserLogInfo(bb.Struct):
    """
    User's logged information.

    :ivar team_log.UserLogInfo.account_id: User unique ID. Might be missing due
        to historical data gap.
    :ivar team_log.UserLogInfo.display_name: User display name. Might be missing
        due to historical data gap.
    :ivar team_log.UserLogInfo.email: User email address. Might be missing due
        to historical data gap.
    """

    __slots__ = [
        '_account_id_value',
        '_account_id_present',
        '_display_name_value',
        '_display_name_present',
        '_email_value',
        '_email_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 account_id=None,
                 display_name=None,
                 email=None):
        self._account_id_value = None
        self._account_id_present = False
        self._display_name_value = None
        self._display_name_present = False
        self._email_value = None
        self._email_present = False
        if account_id is not None:
            self.account_id = account_id
        if display_name is not None:
            self.display_name = display_name
        if email is not None:
            self.email = email

    @property
    def account_id(self):
        """
        User unique ID. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._account_id_present:
            return self._account_id_value
        else:
            return None

    @account_id.setter
    def account_id(self, val):
        if val is None:
            del self.account_id
            return
        val = self._account_id_validator.validate(val)
        self._account_id_value = val
        self._account_id_present = True

    @account_id.deleter
    def account_id(self):
        self._account_id_value = None
        self._account_id_present = False

    @property
    def display_name(self):
        """
        User display name. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._display_name_present:
            return self._display_name_value
        else:
            return None

    @display_name.setter
    def display_name(self, val):
        if val is None:
            del self.display_name
            return
        val = self._display_name_validator.validate(val)
        self._display_name_value = val
        self._display_name_present = True

    @display_name.deleter
    def display_name(self):
        self._display_name_value = None
        self._display_name_present = False

    @property
    def email(self):
        """
        User email address. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._email_present:
            return self._email_value
        else:
            return None

    @email.setter
    def email(self, val):
        if val is None:
            del self.email
            return
        val = self._email_validator.validate(val)
        self._email_value = val
        self._email_present = True

    @email.deleter
    def email(self):
        self._email_value = None
        self._email_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(UserLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'UserLogInfo(account_id={!r}, display_name={!r}, email={!r})'.format(
            self._account_id_value,
            self._display_name_value,
            self._email_value,
        )

UserLogInfo_validator = bv.StructTree(UserLogInfo)

class NonTeamMemberLogInfo(UserLogInfo):
    """
    Non team member's logged information.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self,
                 account_id=None,
                 display_name=None,
                 email=None):
        super(NonTeamMemberLogInfo, self).__init__(account_id,
                                                   display_name,
                                                   email)

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NonTeamMemberLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NonTeamMemberLogInfo(account_id={!r}, display_name={!r}, email={!r})'.format(
            self._account_id_value,
            self._display_name_value,
            self._email_value,
        )

NonTeamMemberLogInfo_validator = bv.Struct(NonTeamMemberLogInfo)

class NoteAclInviteOnlyDetails(bb.Struct):
    """
    Changed Paper doc to invite-only.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoteAclInviteOnlyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoteAclInviteOnlyDetails()'

NoteAclInviteOnlyDetails_validator = bv.Struct(NoteAclInviteOnlyDetails)

class NoteAclInviteOnlyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoteAclInviteOnlyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoteAclInviteOnlyType(description={!r})'.format(
            self._description_value,
        )

NoteAclInviteOnlyType_validator = bv.Struct(NoteAclInviteOnlyType)

class NoteAclLinkDetails(bb.Struct):
    """
    Changed Paper doc to link-accessible.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoteAclLinkDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoteAclLinkDetails()'

NoteAclLinkDetails_validator = bv.Struct(NoteAclLinkDetails)

class NoteAclLinkType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoteAclLinkType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoteAclLinkType(description={!r})'.format(
            self._description_value,
        )

NoteAclLinkType_validator = bv.Struct(NoteAclLinkType)

class NoteAclTeamLinkDetails(bb.Struct):
    """
    Changed Paper doc to link-accessible for team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoteAclTeamLinkDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoteAclTeamLinkDetails()'

NoteAclTeamLinkDetails_validator = bv.Struct(NoteAclTeamLinkDetails)

class NoteAclTeamLinkType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoteAclTeamLinkType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoteAclTeamLinkType(description={!r})'.format(
            self._description_value,
        )

NoteAclTeamLinkType_validator = bv.Struct(NoteAclTeamLinkType)

class NoteShareReceiveDetails(bb.Struct):
    """
    Shared received Paper doc.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoteShareReceiveDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoteShareReceiveDetails()'

NoteShareReceiveDetails_validator = bv.Struct(NoteShareReceiveDetails)

class NoteShareReceiveType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoteShareReceiveType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoteShareReceiveType(description={!r})'.format(
            self._description_value,
        )

NoteShareReceiveType_validator = bv.Struct(NoteShareReceiveType)

class NoteSharedDetails(bb.Struct):
    """
    Shared Paper doc.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoteSharedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoteSharedDetails()'

NoteSharedDetails_validator = bv.Struct(NoteSharedDetails)

class NoteSharedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoteSharedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoteSharedType(description={!r})'.format(
            self._description_value,
        )

NoteSharedType_validator = bv.Struct(NoteSharedType)

class OpenNoteSharedDetails(bb.Struct):
    """
    Opened shared Paper doc.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(OpenNoteSharedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'OpenNoteSharedDetails()'

OpenNoteSharedDetails_validator = bv.Struct(OpenNoteSharedDetails)

class OpenNoteSharedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(OpenNoteSharedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'OpenNoteSharedType(description={!r})'.format(
            self._description_value,
        )

OpenNoteSharedType_validator = bv.Struct(OpenNoteSharedType)

class OriginLogInfo(bb.Struct):
    """
    The origin from which the actor performed the action.

    :ivar team_log.OriginLogInfo.geo_location: Geographic location details.
    :ivar team_log.OriginLogInfo.access_method: The method that was used to
        perform the action.
    """

    __slots__ = [
        '_geo_location_value',
        '_geo_location_present',
        '_access_method_value',
        '_access_method_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 access_method=None,
                 geo_location=None):
        self._geo_location_value = None
        self._geo_location_present = False
        self._access_method_value = None
        self._access_method_present = False
        if geo_location is not None:
            self.geo_location = geo_location
        if access_method is not None:
            self.access_method = access_method

    @property
    def geo_location(self):
        """
        Geographic location details.

        :rtype: GeoLocationLogInfo
        """
        if self._geo_location_present:
            return self._geo_location_value
        else:
            return None

    @geo_location.setter
    def geo_location(self, val):
        if val is None:
            del self.geo_location
            return
        self._geo_location_validator.validate_type_only(val)
        self._geo_location_value = val
        self._geo_location_present = True

    @geo_location.deleter
    def geo_location(self):
        self._geo_location_value = None
        self._geo_location_present = False

    @property
    def access_method(self):
        """
        The method that was used to perform the action.

        :rtype: AccessMethodLogInfo
        """
        if self._access_method_present:
            return self._access_method_value
        else:
            raise AttributeError("missing required field 'access_method'")

    @access_method.setter
    def access_method(self, val):
        self._access_method_validator.validate_type_only(val)
        self._access_method_value = val
        self._access_method_present = True

    @access_method.deleter
    def access_method(self):
        self._access_method_value = None
        self._access_method_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(OriginLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'OriginLogInfo(access_method={!r}, geo_location={!r})'.format(
            self._access_method_value,
            self._geo_location_value,
        )

OriginLogInfo_validator = bv.Struct(OriginLogInfo)

class PaperAccessType(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    viewer = None
    # Attribute is overwritten below the class definition
    commenter = None
    # Attribute is overwritten below the class definition
    editor = None
    # Attribute is overwritten below the class definition
    other = None

    def is_viewer(self):
        """
        Check if the union tag is ``viewer``.

        :rtype: bool
        """
        return self._tag == 'viewer'

    def is_commenter(self):
        """
        Check if the union tag is ``commenter``.

        :rtype: bool
        """
        return self._tag == 'commenter'

    def is_editor(self):
        """
        Check if the union tag is ``editor``.

        :rtype: bool
        """
        return self._tag == 'editor'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperAccessType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperAccessType(%r, %r)' % (self._tag, self._value)

PaperAccessType_validator = bv.Union(PaperAccessType)

class PaperAdminExportStartDetails(bb.Struct):
    """
    Exported all team Paper docs.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperAdminExportStartDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperAdminExportStartDetails()'

PaperAdminExportStartDetails_validator = bv.Struct(PaperAdminExportStartDetails)

class PaperAdminExportStartType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperAdminExportStartType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperAdminExportStartType(description={!r})'.format(
            self._description_value,
        )

PaperAdminExportStartType_validator = bv.Struct(PaperAdminExportStartType)

class PaperChangeDeploymentPolicyDetails(bb.Struct):
    """
    Changed whether Dropbox Paper, when enabled, is deployed to all members or
    to specific members.

    :ivar team_log.PaperChangeDeploymentPolicyDetails.new_value: New Dropbox
        Paper deployment policy.
    :ivar team_log.PaperChangeDeploymentPolicyDetails.previous_value: Previous
        Dropbox Paper deployment policy. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Dropbox Paper deployment policy.

        :rtype: team_policies.PaperDeploymentPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Dropbox Paper deployment policy. Might be missing due to
        historical data gap.

        :rtype: team_policies.PaperDeploymentPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperChangeDeploymentPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperChangeDeploymentPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

PaperChangeDeploymentPolicyDetails_validator = bv.Struct(PaperChangeDeploymentPolicyDetails)

class PaperChangeDeploymentPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperChangeDeploymentPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperChangeDeploymentPolicyType(description={!r})'.format(
            self._description_value,
        )

PaperChangeDeploymentPolicyType_validator = bv.Struct(PaperChangeDeploymentPolicyType)

class PaperChangeMemberLinkPolicyDetails(bb.Struct):
    """
    Changed whether non-members can view Paper docs with link.

    :ivar team_log.PaperChangeMemberLinkPolicyDetails.new_value: New paper
        external link accessibility policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        New paper external link accessibility policy.

        :rtype: PaperMemberPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperChangeMemberLinkPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperChangeMemberLinkPolicyDetails(new_value={!r})'.format(
            self._new_value_value,
        )

PaperChangeMemberLinkPolicyDetails_validator = bv.Struct(PaperChangeMemberLinkPolicyDetails)

class PaperChangeMemberLinkPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperChangeMemberLinkPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperChangeMemberLinkPolicyType(description={!r})'.format(
            self._description_value,
        )

PaperChangeMemberLinkPolicyType_validator = bv.Struct(PaperChangeMemberLinkPolicyType)

class PaperChangeMemberPolicyDetails(bb.Struct):
    """
    Changed whether members can share Paper docs outside team, and if docs are
    accessible only by team members or anyone by default.

    :ivar team_log.PaperChangeMemberPolicyDetails.new_value: New paper external
        accessibility policy.
    :ivar team_log.PaperChangeMemberPolicyDetails.previous_value: Previous paper
        external accessibility policy. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New paper external accessibility policy.

        :rtype: PaperMemberPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous paper external accessibility policy. Might be missing due to
        historical data gap.

        :rtype: PaperMemberPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperChangeMemberPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperChangeMemberPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

PaperChangeMemberPolicyDetails_validator = bv.Struct(PaperChangeMemberPolicyDetails)

class PaperChangeMemberPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperChangeMemberPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperChangeMemberPolicyType(description={!r})'.format(
            self._description_value,
        )

PaperChangeMemberPolicyType_validator = bv.Struct(PaperChangeMemberPolicyType)

class PaperChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled Dropbox Paper for team.

    :ivar team_log.PaperChangePolicyDetails.new_value: New Dropbox Paper policy.
    :ivar team_log.PaperChangePolicyDetails.previous_value: Previous Dropbox
        Paper policy. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Dropbox Paper policy.

        :rtype: team_policies.PaperEnabledPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Dropbox Paper policy. Might be missing due to historical data
        gap.

        :rtype: team_policies.PaperEnabledPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

PaperChangePolicyDetails_validator = bv.Struct(PaperChangePolicyDetails)

class PaperChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperChangePolicyType(description={!r})'.format(
            self._description_value,
        )

PaperChangePolicyType_validator = bv.Struct(PaperChangePolicyType)

class PaperContentAddMemberDetails(bb.Struct):
    """
    Added team member to Paper doc/folder.

    :ivar team_log.PaperContentAddMemberDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentAddMemberDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentAddMemberDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentAddMemberDetails_validator = bv.Struct(PaperContentAddMemberDetails)

class PaperContentAddMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentAddMemberType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentAddMemberType(description={!r})'.format(
            self._description_value,
        )

PaperContentAddMemberType_validator = bv.Struct(PaperContentAddMemberType)

class PaperContentAddToFolderDetails(bb.Struct):
    """
    Added Paper doc/folder to folder.

    :ivar team_log.PaperContentAddToFolderDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.PaperContentAddToFolderDetails.target_asset_index: Target
        asset position in the Assets list.
    :ivar team_log.PaperContentAddToFolderDetails.parent_asset_index: Parent
        asset position in the Assets list.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_parent_asset_index_value',
        '_parent_asset_index_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 target_asset_index=None,
                 parent_asset_index=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._parent_asset_index_value = None
        self._parent_asset_index_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if parent_asset_index is not None:
            self.parent_asset_index = parent_asset_index

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def parent_asset_index(self):
        """
        Parent asset position in the Assets list.

        :rtype: int
        """
        if self._parent_asset_index_present:
            return self._parent_asset_index_value
        else:
            raise AttributeError("missing required field 'parent_asset_index'")

    @parent_asset_index.setter
    def parent_asset_index(self, val):
        val = self._parent_asset_index_validator.validate(val)
        self._parent_asset_index_value = val
        self._parent_asset_index_present = True

    @parent_asset_index.deleter
    def parent_asset_index(self):
        self._parent_asset_index_value = None
        self._parent_asset_index_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentAddToFolderDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentAddToFolderDetails(event_uuid={!r}, target_asset_index={!r}, parent_asset_index={!r})'.format(
            self._event_uuid_value,
            self._target_asset_index_value,
            self._parent_asset_index_value,
        )

PaperContentAddToFolderDetails_validator = bv.Struct(PaperContentAddToFolderDetails)

class PaperContentAddToFolderType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentAddToFolderType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentAddToFolderType(description={!r})'.format(
            self._description_value,
        )

PaperContentAddToFolderType_validator = bv.Struct(PaperContentAddToFolderType)

class PaperContentArchiveDetails(bb.Struct):
    """
    Archived Paper doc/folder.

    :ivar team_log.PaperContentArchiveDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentArchiveDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentArchiveDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentArchiveDetails_validator = bv.Struct(PaperContentArchiveDetails)

class PaperContentArchiveType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentArchiveType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentArchiveType(description={!r})'.format(
            self._description_value,
        )

PaperContentArchiveType_validator = bv.Struct(PaperContentArchiveType)

class PaperContentCreateDetails(bb.Struct):
    """
    Created Paper doc/folder.

    :ivar team_log.PaperContentCreateDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentCreateDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentCreateDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentCreateDetails_validator = bv.Struct(PaperContentCreateDetails)

class PaperContentCreateType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentCreateType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentCreateType(description={!r})'.format(
            self._description_value,
        )

PaperContentCreateType_validator = bv.Struct(PaperContentCreateType)

class PaperContentPermanentlyDeleteDetails(bb.Struct):
    """
    Permanently deleted Paper doc/folder.

    :ivar team_log.PaperContentPermanentlyDeleteDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentPermanentlyDeleteDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentPermanentlyDeleteDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentPermanentlyDeleteDetails_validator = bv.Struct(PaperContentPermanentlyDeleteDetails)

class PaperContentPermanentlyDeleteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentPermanentlyDeleteType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentPermanentlyDeleteType(description={!r})'.format(
            self._description_value,
        )

PaperContentPermanentlyDeleteType_validator = bv.Struct(PaperContentPermanentlyDeleteType)

class PaperContentRemoveFromFolderDetails(bb.Struct):
    """
    Removed Paper doc/folder from folder.

    :ivar team_log.PaperContentRemoveFromFolderDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.PaperContentRemoveFromFolderDetails.target_asset_index:
        Target asset position in the Assets list.
    :ivar team_log.PaperContentRemoveFromFolderDetails.parent_asset_index:
        Parent asset position in the Assets list.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_parent_asset_index_value',
        '_parent_asset_index_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 target_asset_index=None,
                 parent_asset_index=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._parent_asset_index_value = None
        self._parent_asset_index_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if parent_asset_index is not None:
            self.parent_asset_index = parent_asset_index

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def parent_asset_index(self):
        """
        Parent asset position in the Assets list.

        :rtype: int
        """
        if self._parent_asset_index_present:
            return self._parent_asset_index_value
        else:
            raise AttributeError("missing required field 'parent_asset_index'")

    @parent_asset_index.setter
    def parent_asset_index(self, val):
        val = self._parent_asset_index_validator.validate(val)
        self._parent_asset_index_value = val
        self._parent_asset_index_present = True

    @parent_asset_index.deleter
    def parent_asset_index(self):
        self._parent_asset_index_value = None
        self._parent_asset_index_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentRemoveFromFolderDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentRemoveFromFolderDetails(event_uuid={!r}, target_asset_index={!r}, parent_asset_index={!r})'.format(
            self._event_uuid_value,
            self._target_asset_index_value,
            self._parent_asset_index_value,
        )

PaperContentRemoveFromFolderDetails_validator = bv.Struct(PaperContentRemoveFromFolderDetails)

class PaperContentRemoveFromFolderType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentRemoveFromFolderType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentRemoveFromFolderType(description={!r})'.format(
            self._description_value,
        )

PaperContentRemoveFromFolderType_validator = bv.Struct(PaperContentRemoveFromFolderType)

class PaperContentRemoveMemberDetails(bb.Struct):
    """
    Removed team member from Paper doc/folder.

    :ivar team_log.PaperContentRemoveMemberDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentRemoveMemberDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentRemoveMemberDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentRemoveMemberDetails_validator = bv.Struct(PaperContentRemoveMemberDetails)

class PaperContentRemoveMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentRemoveMemberType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentRemoveMemberType(description={!r})'.format(
            self._description_value,
        )

PaperContentRemoveMemberType_validator = bv.Struct(PaperContentRemoveMemberType)

class PaperContentRenameDetails(bb.Struct):
    """
    Renamed Paper doc/folder.

    :ivar team_log.PaperContentRenameDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentRenameDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentRenameDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentRenameDetails_validator = bv.Struct(PaperContentRenameDetails)

class PaperContentRenameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentRenameType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentRenameType(description={!r})'.format(
            self._description_value,
        )

PaperContentRenameType_validator = bv.Struct(PaperContentRenameType)

class PaperContentRestoreDetails(bb.Struct):
    """
    Restored archived Paper doc/folder.

    :ivar team_log.PaperContentRestoreDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentRestoreDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentRestoreDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentRestoreDetails_validator = bv.Struct(PaperContentRestoreDetails)

class PaperContentRestoreType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperContentRestoreType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperContentRestoreType(description={!r})'.format(
            self._description_value,
        )

PaperContentRestoreType_validator = bv.Struct(PaperContentRestoreType)

class PaperDefaultFolderPolicy(bb.Union):
    """
    Policy to set default access for newly created Paper folders.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    everyone_in_team = None
    # Attribute is overwritten below the class definition
    invite_only = None
    # Attribute is overwritten below the class definition
    other = None

    def is_everyone_in_team(self):
        """
        Check if the union tag is ``everyone_in_team``.

        :rtype: bool
        """
        return self._tag == 'everyone_in_team'

    def is_invite_only(self):
        """
        Check if the union tag is ``invite_only``.

        :rtype: bool
        """
        return self._tag == 'invite_only'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDefaultFolderPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDefaultFolderPolicy(%r, %r)' % (self._tag, self._value)

PaperDefaultFolderPolicy_validator = bv.Union(PaperDefaultFolderPolicy)

class PaperDefaultFolderPolicyChangedDetails(bb.Struct):
    """
    Changed Paper Default Folder Policy setting for team.

    :ivar team_log.PaperDefaultFolderPolicyChangedDetails.new_value: New Paper
        Default Folder Policy.
    :ivar team_log.PaperDefaultFolderPolicyChangedDetails.previous_value:
        Previous Paper Default Folder Policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Paper Default Folder Policy.

        :rtype: PaperDefaultFolderPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Paper Default Folder Policy.

        :rtype: PaperDefaultFolderPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDefaultFolderPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDefaultFolderPolicyChangedDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

PaperDefaultFolderPolicyChangedDetails_validator = bv.Struct(PaperDefaultFolderPolicyChangedDetails)

class PaperDefaultFolderPolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDefaultFolderPolicyChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDefaultFolderPolicyChangedType(description={!r})'.format(
            self._description_value,
        )

PaperDefaultFolderPolicyChangedType_validator = bv.Struct(PaperDefaultFolderPolicyChangedType)

class PaperDesktopPolicy(bb.Union):
    """
    Policy for controlling if team members can use Paper Desktop

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDesktopPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDesktopPolicy(%r, %r)' % (self._tag, self._value)

PaperDesktopPolicy_validator = bv.Union(PaperDesktopPolicy)

class PaperDesktopPolicyChangedDetails(bb.Struct):
    """
    Enabled/disabled Paper Desktop for team.

    :ivar team_log.PaperDesktopPolicyChangedDetails.new_value: New Paper Desktop
        policy.
    :ivar team_log.PaperDesktopPolicyChangedDetails.previous_value: Previous
        Paper Desktop policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Paper Desktop policy.

        :rtype: PaperDesktopPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Paper Desktop policy.

        :rtype: PaperDesktopPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDesktopPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDesktopPolicyChangedDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

PaperDesktopPolicyChangedDetails_validator = bv.Struct(PaperDesktopPolicyChangedDetails)

class PaperDesktopPolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDesktopPolicyChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDesktopPolicyChangedType(description={!r})'.format(
            self._description_value,
        )

PaperDesktopPolicyChangedType_validator = bv.Struct(PaperDesktopPolicyChangedType)

class PaperDocAddCommentDetails(bb.Struct):
    """
    Added Paper doc comment.

    :ivar team_log.PaperDocAddCommentDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.PaperDocAddCommentDetails.comment_text: Comment text. Might
        be missing due to historical data gap.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocAddCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocAddCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

PaperDocAddCommentDetails_validator = bv.Struct(PaperDocAddCommentDetails)

class PaperDocAddCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocAddCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocAddCommentType(description={!r})'.format(
            self._description_value,
        )

PaperDocAddCommentType_validator = bv.Struct(PaperDocAddCommentType)

class PaperDocChangeMemberRoleDetails(bb.Struct):
    """
    Changed team member permissions for Paper doc.

    :ivar team_log.PaperDocChangeMemberRoleDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.PaperDocChangeMemberRoleDetails.access_type: Paper doc access
        type.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_access_type_value',
        '_access_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 access_type=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._access_type_value = None
        self._access_type_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if access_type is not None:
            self.access_type = access_type

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def access_type(self):
        """
        Paper doc access type.

        :rtype: PaperAccessType
        """
        if self._access_type_present:
            return self._access_type_value
        else:
            raise AttributeError("missing required field 'access_type'")

    @access_type.setter
    def access_type(self, val):
        self._access_type_validator.validate_type_only(val)
        self._access_type_value = val
        self._access_type_present = True

    @access_type.deleter
    def access_type(self):
        self._access_type_value = None
        self._access_type_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocChangeMemberRoleDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocChangeMemberRoleDetails(event_uuid={!r}, access_type={!r})'.format(
            self._event_uuid_value,
            self._access_type_value,
        )

PaperDocChangeMemberRoleDetails_validator = bv.Struct(PaperDocChangeMemberRoleDetails)

class PaperDocChangeMemberRoleType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocChangeMemberRoleType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocChangeMemberRoleType(description={!r})'.format(
            self._description_value,
        )

PaperDocChangeMemberRoleType_validator = bv.Struct(PaperDocChangeMemberRoleType)

class PaperDocChangeSharingPolicyDetails(bb.Struct):
    """
    Changed sharing setting for Paper doc.

    :ivar team_log.PaperDocChangeSharingPolicyDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.PaperDocChangeSharingPolicyDetails.public_sharing_policy:
        Sharing policy with external users. Might be missing due to historical
        data gap.
    :ivar team_log.PaperDocChangeSharingPolicyDetails.team_sharing_policy:
        Sharing policy with team. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_public_sharing_policy_value',
        '_public_sharing_policy_present',
        '_team_sharing_policy_value',
        '_team_sharing_policy_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 public_sharing_policy=None,
                 team_sharing_policy=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._public_sharing_policy_value = None
        self._public_sharing_policy_present = False
        self._team_sharing_policy_value = None
        self._team_sharing_policy_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if public_sharing_policy is not None:
            self.public_sharing_policy = public_sharing_policy
        if team_sharing_policy is not None:
            self.team_sharing_policy = team_sharing_policy

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def public_sharing_policy(self):
        """
        Sharing policy with external users. Might be missing due to historical
        data gap.

        :rtype: str
        """
        if self._public_sharing_policy_present:
            return self._public_sharing_policy_value
        else:
            return None

    @public_sharing_policy.setter
    def public_sharing_policy(self, val):
        if val is None:
            del self.public_sharing_policy
            return
        val = self._public_sharing_policy_validator.validate(val)
        self._public_sharing_policy_value = val
        self._public_sharing_policy_present = True

    @public_sharing_policy.deleter
    def public_sharing_policy(self):
        self._public_sharing_policy_value = None
        self._public_sharing_policy_present = False

    @property
    def team_sharing_policy(self):
        """
        Sharing policy with team. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._team_sharing_policy_present:
            return self._team_sharing_policy_value
        else:
            return None

    @team_sharing_policy.setter
    def team_sharing_policy(self, val):
        if val is None:
            del self.team_sharing_policy
            return
        val = self._team_sharing_policy_validator.validate(val)
        self._team_sharing_policy_value = val
        self._team_sharing_policy_present = True

    @team_sharing_policy.deleter
    def team_sharing_policy(self):
        self._team_sharing_policy_value = None
        self._team_sharing_policy_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocChangeSharingPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocChangeSharingPolicyDetails(event_uuid={!r}, public_sharing_policy={!r}, team_sharing_policy={!r})'.format(
            self._event_uuid_value,
            self._public_sharing_policy_value,
            self._team_sharing_policy_value,
        )

PaperDocChangeSharingPolicyDetails_validator = bv.Struct(PaperDocChangeSharingPolicyDetails)

class PaperDocChangeSharingPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocChangeSharingPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocChangeSharingPolicyType(description={!r})'.format(
            self._description_value,
        )

PaperDocChangeSharingPolicyType_validator = bv.Struct(PaperDocChangeSharingPolicyType)

class PaperDocChangeSubscriptionDetails(bb.Struct):
    """
    Followed/unfollowed Paper doc.

    :ivar team_log.PaperDocChangeSubscriptionDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.PaperDocChangeSubscriptionDetails.new_subscription_level: New
        doc subscription level.
    :ivar
        team_log.PaperDocChangeSubscriptionDetails.previous_subscription_level:
        Previous doc subscription level. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_new_subscription_level_value',
        '_new_subscription_level_present',
        '_previous_subscription_level_value',
        '_previous_subscription_level_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 new_subscription_level=None,
                 previous_subscription_level=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._new_subscription_level_value = None
        self._new_subscription_level_present = False
        self._previous_subscription_level_value = None
        self._previous_subscription_level_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if new_subscription_level is not None:
            self.new_subscription_level = new_subscription_level
        if previous_subscription_level is not None:
            self.previous_subscription_level = previous_subscription_level

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def new_subscription_level(self):
        """
        New doc subscription level.

        :rtype: str
        """
        if self._new_subscription_level_present:
            return self._new_subscription_level_value
        else:
            raise AttributeError("missing required field 'new_subscription_level'")

    @new_subscription_level.setter
    def new_subscription_level(self, val):
        val = self._new_subscription_level_validator.validate(val)
        self._new_subscription_level_value = val
        self._new_subscription_level_present = True

    @new_subscription_level.deleter
    def new_subscription_level(self):
        self._new_subscription_level_value = None
        self._new_subscription_level_present = False

    @property
    def previous_subscription_level(self):
        """
        Previous doc subscription level. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._previous_subscription_level_present:
            return self._previous_subscription_level_value
        else:
            return None

    @previous_subscription_level.setter
    def previous_subscription_level(self, val):
        if val is None:
            del self.previous_subscription_level
            return
        val = self._previous_subscription_level_validator.validate(val)
        self._previous_subscription_level_value = val
        self._previous_subscription_level_present = True

    @previous_subscription_level.deleter
    def previous_subscription_level(self):
        self._previous_subscription_level_value = None
        self._previous_subscription_level_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocChangeSubscriptionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocChangeSubscriptionDetails(event_uuid={!r}, new_subscription_level={!r}, previous_subscription_level={!r})'.format(
            self._event_uuid_value,
            self._new_subscription_level_value,
            self._previous_subscription_level_value,
        )

PaperDocChangeSubscriptionDetails_validator = bv.Struct(PaperDocChangeSubscriptionDetails)

class PaperDocChangeSubscriptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocChangeSubscriptionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocChangeSubscriptionType(description={!r})'.format(
            self._description_value,
        )

PaperDocChangeSubscriptionType_validator = bv.Struct(PaperDocChangeSubscriptionType)

class PaperDocDeleteCommentDetails(bb.Struct):
    """
    Deleted Paper doc comment.

    :ivar team_log.PaperDocDeleteCommentDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.PaperDocDeleteCommentDetails.comment_text: Comment text.
        Might be missing due to historical data gap.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocDeleteCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocDeleteCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

PaperDocDeleteCommentDetails_validator = bv.Struct(PaperDocDeleteCommentDetails)

class PaperDocDeleteCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocDeleteCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocDeleteCommentType(description={!r})'.format(
            self._description_value,
        )

PaperDocDeleteCommentType_validator = bv.Struct(PaperDocDeleteCommentType)

class PaperDocDeletedDetails(bb.Struct):
    """
    Archived Paper doc.

    :ivar team_log.PaperDocDeletedDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocDeletedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocDeletedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocDeletedDetails_validator = bv.Struct(PaperDocDeletedDetails)

class PaperDocDeletedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocDeletedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocDeletedType(description={!r})'.format(
            self._description_value,
        )

PaperDocDeletedType_validator = bv.Struct(PaperDocDeletedType)

class PaperDocDownloadDetails(bb.Struct):
    """
    Downloaded Paper doc in specific format.

    :ivar team_log.PaperDocDownloadDetails.event_uuid: Event unique identifier.
    :ivar team_log.PaperDocDownloadDetails.export_file_format: Export file
        format.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_export_file_format_value',
        '_export_file_format_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 export_file_format=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._export_file_format_value = None
        self._export_file_format_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if export_file_format is not None:
            self.export_file_format = export_file_format

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def export_file_format(self):
        """
        Export file format.

        :rtype: PaperDownloadFormat
        """
        if self._export_file_format_present:
            return self._export_file_format_value
        else:
            raise AttributeError("missing required field 'export_file_format'")

    @export_file_format.setter
    def export_file_format(self, val):
        self._export_file_format_validator.validate_type_only(val)
        self._export_file_format_value = val
        self._export_file_format_present = True

    @export_file_format.deleter
    def export_file_format(self):
        self._export_file_format_value = None
        self._export_file_format_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocDownloadDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocDownloadDetails(event_uuid={!r}, export_file_format={!r})'.format(
            self._event_uuid_value,
            self._export_file_format_value,
        )

PaperDocDownloadDetails_validator = bv.Struct(PaperDocDownloadDetails)

class PaperDocDownloadType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocDownloadType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocDownloadType(description={!r})'.format(
            self._description_value,
        )

PaperDocDownloadType_validator = bv.Struct(PaperDocDownloadType)

class PaperDocEditCommentDetails(bb.Struct):
    """
    Edited Paper doc comment.

    :ivar team_log.PaperDocEditCommentDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.PaperDocEditCommentDetails.comment_text: Comment text. Might
        be missing due to historical data gap.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocEditCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocEditCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

PaperDocEditCommentDetails_validator = bv.Struct(PaperDocEditCommentDetails)

class PaperDocEditCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocEditCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocEditCommentType(description={!r})'.format(
            self._description_value,
        )

PaperDocEditCommentType_validator = bv.Struct(PaperDocEditCommentType)

class PaperDocEditDetails(bb.Struct):
    """
    Edited Paper doc.

    :ivar team_log.PaperDocEditDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocEditDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocEditDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocEditDetails_validator = bv.Struct(PaperDocEditDetails)

class PaperDocEditType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocEditType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocEditType(description={!r})'.format(
            self._description_value,
        )

PaperDocEditType_validator = bv.Struct(PaperDocEditType)

class PaperDocFollowedDetails(bb.Struct):
    """
    Followed Paper doc.

    :ivar team_log.PaperDocFollowedDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocFollowedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocFollowedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocFollowedDetails_validator = bv.Struct(PaperDocFollowedDetails)

class PaperDocFollowedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocFollowedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocFollowedType(description={!r})'.format(
            self._description_value,
        )

PaperDocFollowedType_validator = bv.Struct(PaperDocFollowedType)

class PaperDocMentionDetails(bb.Struct):
    """
    Mentioned team member in Paper doc.

    :ivar team_log.PaperDocMentionDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocMentionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocMentionDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocMentionDetails_validator = bv.Struct(PaperDocMentionDetails)

class PaperDocMentionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocMentionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocMentionType(description={!r})'.format(
            self._description_value,
        )

PaperDocMentionType_validator = bv.Struct(PaperDocMentionType)

class PaperDocOwnershipChangedDetails(bb.Struct):
    """
    Transferred ownership of Paper doc.

    :ivar team_log.PaperDocOwnershipChangedDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.PaperDocOwnershipChangedDetails.old_owner_user_id: Previous
        owner.
    :ivar team_log.PaperDocOwnershipChangedDetails.new_owner_user_id: New owner.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_old_owner_user_id_value',
        '_old_owner_user_id_present',
        '_new_owner_user_id_value',
        '_new_owner_user_id_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 new_owner_user_id=None,
                 old_owner_user_id=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._old_owner_user_id_value = None
        self._old_owner_user_id_present = False
        self._new_owner_user_id_value = None
        self._new_owner_user_id_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if old_owner_user_id is not None:
            self.old_owner_user_id = old_owner_user_id
        if new_owner_user_id is not None:
            self.new_owner_user_id = new_owner_user_id

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def old_owner_user_id(self):
        """
        Previous owner.

        :rtype: str
        """
        if self._old_owner_user_id_present:
            return self._old_owner_user_id_value
        else:
            return None

    @old_owner_user_id.setter
    def old_owner_user_id(self, val):
        if val is None:
            del self.old_owner_user_id
            return
        val = self._old_owner_user_id_validator.validate(val)
        self._old_owner_user_id_value = val
        self._old_owner_user_id_present = True

    @old_owner_user_id.deleter
    def old_owner_user_id(self):
        self._old_owner_user_id_value = None
        self._old_owner_user_id_present = False

    @property
    def new_owner_user_id(self):
        """
        New owner.

        :rtype: str
        """
        if self._new_owner_user_id_present:
            return self._new_owner_user_id_value
        else:
            raise AttributeError("missing required field 'new_owner_user_id'")

    @new_owner_user_id.setter
    def new_owner_user_id(self, val):
        val = self._new_owner_user_id_validator.validate(val)
        self._new_owner_user_id_value = val
        self._new_owner_user_id_present = True

    @new_owner_user_id.deleter
    def new_owner_user_id(self):
        self._new_owner_user_id_value = None
        self._new_owner_user_id_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocOwnershipChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocOwnershipChangedDetails(event_uuid={!r}, new_owner_user_id={!r}, old_owner_user_id={!r})'.format(
            self._event_uuid_value,
            self._new_owner_user_id_value,
            self._old_owner_user_id_value,
        )

PaperDocOwnershipChangedDetails_validator = bv.Struct(PaperDocOwnershipChangedDetails)

class PaperDocOwnershipChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocOwnershipChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocOwnershipChangedType(description={!r})'.format(
            self._description_value,
        )

PaperDocOwnershipChangedType_validator = bv.Struct(PaperDocOwnershipChangedType)

class PaperDocRequestAccessDetails(bb.Struct):
    """
    Requested access to Paper doc.

    :ivar team_log.PaperDocRequestAccessDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocRequestAccessDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocRequestAccessDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocRequestAccessDetails_validator = bv.Struct(PaperDocRequestAccessDetails)

class PaperDocRequestAccessType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocRequestAccessType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocRequestAccessType(description={!r})'.format(
            self._description_value,
        )

PaperDocRequestAccessType_validator = bv.Struct(PaperDocRequestAccessType)

class PaperDocResolveCommentDetails(bb.Struct):
    """
    Resolved Paper doc comment.

    :ivar team_log.PaperDocResolveCommentDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.PaperDocResolveCommentDetails.comment_text: Comment text.
        Might be missing due to historical data gap.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocResolveCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocResolveCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

PaperDocResolveCommentDetails_validator = bv.Struct(PaperDocResolveCommentDetails)

class PaperDocResolveCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocResolveCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocResolveCommentType(description={!r})'.format(
            self._description_value,
        )

PaperDocResolveCommentType_validator = bv.Struct(PaperDocResolveCommentType)

class PaperDocRevertDetails(bb.Struct):
    """
    Restored Paper doc to previous version.

    :ivar team_log.PaperDocRevertDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocRevertDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocRevertDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocRevertDetails_validator = bv.Struct(PaperDocRevertDetails)

class PaperDocRevertType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocRevertType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocRevertType(description={!r})'.format(
            self._description_value,
        )

PaperDocRevertType_validator = bv.Struct(PaperDocRevertType)

class PaperDocSlackShareDetails(bb.Struct):
    """
    Shared Paper doc via Slack.

    :ivar team_log.PaperDocSlackShareDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocSlackShareDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocSlackShareDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocSlackShareDetails_validator = bv.Struct(PaperDocSlackShareDetails)

class PaperDocSlackShareType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocSlackShareType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocSlackShareType(description={!r})'.format(
            self._description_value,
        )

PaperDocSlackShareType_validator = bv.Struct(PaperDocSlackShareType)

class PaperDocTeamInviteDetails(bb.Struct):
    """
    Shared Paper doc with team member.

    :ivar team_log.PaperDocTeamInviteDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocTeamInviteDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocTeamInviteDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocTeamInviteDetails_validator = bv.Struct(PaperDocTeamInviteDetails)

class PaperDocTeamInviteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocTeamInviteType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocTeamInviteType(description={!r})'.format(
            self._description_value,
        )

PaperDocTeamInviteType_validator = bv.Struct(PaperDocTeamInviteType)

class PaperDocTrashedDetails(bb.Struct):
    """
    Deleted Paper doc.

    :ivar team_log.PaperDocTrashedDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocTrashedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocTrashedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocTrashedDetails_validator = bv.Struct(PaperDocTrashedDetails)

class PaperDocTrashedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocTrashedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocTrashedType(description={!r})'.format(
            self._description_value,
        )

PaperDocTrashedType_validator = bv.Struct(PaperDocTrashedType)

class PaperDocUnresolveCommentDetails(bb.Struct):
    """
    Unresolved Paper doc comment.

    :ivar team_log.PaperDocUnresolveCommentDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.PaperDocUnresolveCommentDetails.comment_text: Comment text.
        Might be missing due to historical data gap.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocUnresolveCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocUnresolveCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

PaperDocUnresolveCommentDetails_validator = bv.Struct(PaperDocUnresolveCommentDetails)

class PaperDocUnresolveCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocUnresolveCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocUnresolveCommentType(description={!r})'.format(
            self._description_value,
        )

PaperDocUnresolveCommentType_validator = bv.Struct(PaperDocUnresolveCommentType)

class PaperDocUntrashedDetails(bb.Struct):
    """
    Restored Paper doc.

    :ivar team_log.PaperDocUntrashedDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocUntrashedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocUntrashedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocUntrashedDetails_validator = bv.Struct(PaperDocUntrashedDetails)

class PaperDocUntrashedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocUntrashedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocUntrashedType(description={!r})'.format(
            self._description_value,
        )

PaperDocUntrashedType_validator = bv.Struct(PaperDocUntrashedType)

class PaperDocViewDetails(bb.Struct):
    """
    Viewed Paper doc.

    :ivar team_log.PaperDocViewDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocViewDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocViewDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocViewDetails_validator = bv.Struct(PaperDocViewDetails)

class PaperDocViewType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocViewType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocViewType(description={!r})'.format(
            self._description_value,
        )

PaperDocViewType_validator = bv.Struct(PaperDocViewType)

class PaperDocumentLogInfo(bb.Struct):
    """
    Paper document's logged information.

    :ivar team_log.PaperDocumentLogInfo.doc_id: Papers document Id.
    :ivar team_log.PaperDocumentLogInfo.doc_title: Paper document title.
    """

    __slots__ = [
        '_doc_id_value',
        '_doc_id_present',
        '_doc_title_value',
        '_doc_title_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 doc_id=None,
                 doc_title=None):
        self._doc_id_value = None
        self._doc_id_present = False
        self._doc_title_value = None
        self._doc_title_present = False
        if doc_id is not None:
            self.doc_id = doc_id
        if doc_title is not None:
            self.doc_title = doc_title

    @property
    def doc_id(self):
        """
        Papers document Id.

        :rtype: str
        """
        if self._doc_id_present:
            return self._doc_id_value
        else:
            raise AttributeError("missing required field 'doc_id'")

    @doc_id.setter
    def doc_id(self, val):
        val = self._doc_id_validator.validate(val)
        self._doc_id_value = val
        self._doc_id_present = True

    @doc_id.deleter
    def doc_id(self):
        self._doc_id_value = None
        self._doc_id_present = False

    @property
    def doc_title(self):
        """
        Paper document title.

        :rtype: str
        """
        if self._doc_title_present:
            return self._doc_title_value
        else:
            raise AttributeError("missing required field 'doc_title'")

    @doc_title.setter
    def doc_title(self, val):
        val = self._doc_title_validator.validate(val)
        self._doc_title_value = val
        self._doc_title_present = True

    @doc_title.deleter
    def doc_title(self):
        self._doc_title_value = None
        self._doc_title_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDocumentLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDocumentLogInfo(doc_id={!r}, doc_title={!r})'.format(
            self._doc_id_value,
            self._doc_title_value,
        )

PaperDocumentLogInfo_validator = bv.Struct(PaperDocumentLogInfo)

class PaperDownloadFormat(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    docx = None
    # Attribute is overwritten below the class definition
    html = None
    # Attribute is overwritten below the class definition
    markdown = None
    # Attribute is overwritten below the class definition
    pdf = None
    # Attribute is overwritten below the class definition
    other = None

    def is_docx(self):
        """
        Check if the union tag is ``docx``.

        :rtype: bool
        """
        return self._tag == 'docx'

    def is_html(self):
        """
        Check if the union tag is ``html``.

        :rtype: bool
        """
        return self._tag == 'html'

    def is_markdown(self):
        """
        Check if the union tag is ``markdown``.

        :rtype: bool
        """
        return self._tag == 'markdown'

    def is_pdf(self):
        """
        Check if the union tag is ``pdf``.

        :rtype: bool
        """
        return self._tag == 'pdf'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperDownloadFormat, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperDownloadFormat(%r, %r)' % (self._tag, self._value)

PaperDownloadFormat_validator = bv.Union(PaperDownloadFormat)

class PaperEnabledUsersGroupAdditionDetails(bb.Struct):
    """
    Added users to Paper-enabled users list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperEnabledUsersGroupAdditionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperEnabledUsersGroupAdditionDetails()'

PaperEnabledUsersGroupAdditionDetails_validator = bv.Struct(PaperEnabledUsersGroupAdditionDetails)

class PaperEnabledUsersGroupAdditionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperEnabledUsersGroupAdditionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperEnabledUsersGroupAdditionType(description={!r})'.format(
            self._description_value,
        )

PaperEnabledUsersGroupAdditionType_validator = bv.Struct(PaperEnabledUsersGroupAdditionType)

class PaperEnabledUsersGroupRemovalDetails(bb.Struct):
    """
    Removed users from Paper-enabled users list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperEnabledUsersGroupRemovalDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperEnabledUsersGroupRemovalDetails()'

PaperEnabledUsersGroupRemovalDetails_validator = bv.Struct(PaperEnabledUsersGroupRemovalDetails)

class PaperEnabledUsersGroupRemovalType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperEnabledUsersGroupRemovalType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperEnabledUsersGroupRemovalType(description={!r})'.format(
            self._description_value,
        )

PaperEnabledUsersGroupRemovalType_validator = bv.Struct(PaperEnabledUsersGroupRemovalType)

class PaperExternalViewAllowDetails(bb.Struct):
    """
    Changed Paper external sharing setting to anyone.

    :ivar team_log.PaperExternalViewAllowDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperExternalViewAllowDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperExternalViewAllowDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperExternalViewAllowDetails_validator = bv.Struct(PaperExternalViewAllowDetails)

class PaperExternalViewAllowType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperExternalViewAllowType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperExternalViewAllowType(description={!r})'.format(
            self._description_value,
        )

PaperExternalViewAllowType_validator = bv.Struct(PaperExternalViewAllowType)

class PaperExternalViewDefaultTeamDetails(bb.Struct):
    """
    Changed Paper external sharing setting to default team.

    :ivar team_log.PaperExternalViewDefaultTeamDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperExternalViewDefaultTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperExternalViewDefaultTeamDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperExternalViewDefaultTeamDetails_validator = bv.Struct(PaperExternalViewDefaultTeamDetails)

class PaperExternalViewDefaultTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperExternalViewDefaultTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperExternalViewDefaultTeamType(description={!r})'.format(
            self._description_value,
        )

PaperExternalViewDefaultTeamType_validator = bv.Struct(PaperExternalViewDefaultTeamType)

class PaperExternalViewForbidDetails(bb.Struct):
    """
    Changed Paper external sharing setting to team-only.

    :ivar team_log.PaperExternalViewForbidDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperExternalViewForbidDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperExternalViewForbidDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperExternalViewForbidDetails_validator = bv.Struct(PaperExternalViewForbidDetails)

class PaperExternalViewForbidType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperExternalViewForbidType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperExternalViewForbidType(description={!r})'.format(
            self._description_value,
        )

PaperExternalViewForbidType_validator = bv.Struct(PaperExternalViewForbidType)

class PaperFolderChangeSubscriptionDetails(bb.Struct):
    """
    Followed/unfollowed Paper folder.

    :ivar team_log.PaperFolderChangeSubscriptionDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.PaperFolderChangeSubscriptionDetails.new_subscription_level:
        New folder subscription level.
    :ivar
        team_log.PaperFolderChangeSubscriptionDetails.previous_subscription_level:
        Previous folder subscription level. Might be missing due to historical
        data gap.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_new_subscription_level_value',
        '_new_subscription_level_present',
        '_previous_subscription_level_value',
        '_previous_subscription_level_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 new_subscription_level=None,
                 previous_subscription_level=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._new_subscription_level_value = None
        self._new_subscription_level_present = False
        self._previous_subscription_level_value = None
        self._previous_subscription_level_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if new_subscription_level is not None:
            self.new_subscription_level = new_subscription_level
        if previous_subscription_level is not None:
            self.previous_subscription_level = previous_subscription_level

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def new_subscription_level(self):
        """
        New folder subscription level.

        :rtype: str
        """
        if self._new_subscription_level_present:
            return self._new_subscription_level_value
        else:
            raise AttributeError("missing required field 'new_subscription_level'")

    @new_subscription_level.setter
    def new_subscription_level(self, val):
        val = self._new_subscription_level_validator.validate(val)
        self._new_subscription_level_value = val
        self._new_subscription_level_present = True

    @new_subscription_level.deleter
    def new_subscription_level(self):
        self._new_subscription_level_value = None
        self._new_subscription_level_present = False

    @property
    def previous_subscription_level(self):
        """
        Previous folder subscription level. Might be missing due to historical
        data gap.

        :rtype: str
        """
        if self._previous_subscription_level_present:
            return self._previous_subscription_level_value
        else:
            return None

    @previous_subscription_level.setter
    def previous_subscription_level(self, val):
        if val is None:
            del self.previous_subscription_level
            return
        val = self._previous_subscription_level_validator.validate(val)
        self._previous_subscription_level_value = val
        self._previous_subscription_level_present = True

    @previous_subscription_level.deleter
    def previous_subscription_level(self):
        self._previous_subscription_level_value = None
        self._previous_subscription_level_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperFolderChangeSubscriptionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperFolderChangeSubscriptionDetails(event_uuid={!r}, new_subscription_level={!r}, previous_subscription_level={!r})'.format(
            self._event_uuid_value,
            self._new_subscription_level_value,
            self._previous_subscription_level_value,
        )

PaperFolderChangeSubscriptionDetails_validator = bv.Struct(PaperFolderChangeSubscriptionDetails)

class PaperFolderChangeSubscriptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperFolderChangeSubscriptionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperFolderChangeSubscriptionType(description={!r})'.format(
            self._description_value,
        )

PaperFolderChangeSubscriptionType_validator = bv.Struct(PaperFolderChangeSubscriptionType)

class PaperFolderDeletedDetails(bb.Struct):
    """
    Archived Paper folder.

    :ivar team_log.PaperFolderDeletedDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperFolderDeletedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperFolderDeletedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperFolderDeletedDetails_validator = bv.Struct(PaperFolderDeletedDetails)

class PaperFolderDeletedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperFolderDeletedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperFolderDeletedType(description={!r})'.format(
            self._description_value,
        )

PaperFolderDeletedType_validator = bv.Struct(PaperFolderDeletedType)

class PaperFolderFollowedDetails(bb.Struct):
    """
    Followed Paper folder.

    :ivar team_log.PaperFolderFollowedDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperFolderFollowedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperFolderFollowedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperFolderFollowedDetails_validator = bv.Struct(PaperFolderFollowedDetails)

class PaperFolderFollowedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperFolderFollowedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperFolderFollowedType(description={!r})'.format(
            self._description_value,
        )

PaperFolderFollowedType_validator = bv.Struct(PaperFolderFollowedType)

class PaperFolderLogInfo(bb.Struct):
    """
    Paper folder's logged information.

    :ivar team_log.PaperFolderLogInfo.folder_id: Papers folder Id.
    :ivar team_log.PaperFolderLogInfo.folder_name: Paper folder name.
    """

    __slots__ = [
        '_folder_id_value',
        '_folder_id_present',
        '_folder_name_value',
        '_folder_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 folder_id=None,
                 folder_name=None):
        self._folder_id_value = None
        self._folder_id_present = False
        self._folder_name_value = None
        self._folder_name_present = False
        if folder_id is not None:
            self.folder_id = folder_id
        if folder_name is not None:
            self.folder_name = folder_name

    @property
    def folder_id(self):
        """
        Papers folder Id.

        :rtype: str
        """
        if self._folder_id_present:
            return self._folder_id_value
        else:
            raise AttributeError("missing required field 'folder_id'")

    @folder_id.setter
    def folder_id(self, val):
        val = self._folder_id_validator.validate(val)
        self._folder_id_value = val
        self._folder_id_present = True

    @folder_id.deleter
    def folder_id(self):
        self._folder_id_value = None
        self._folder_id_present = False

    @property
    def folder_name(self):
        """
        Paper folder name.

        :rtype: str
        """
        if self._folder_name_present:
            return self._folder_name_value
        else:
            raise AttributeError("missing required field 'folder_name'")

    @folder_name.setter
    def folder_name(self, val):
        val = self._folder_name_validator.validate(val)
        self._folder_name_value = val
        self._folder_name_present = True

    @folder_name.deleter
    def folder_name(self):
        self._folder_name_value = None
        self._folder_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperFolderLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperFolderLogInfo(folder_id={!r}, folder_name={!r})'.format(
            self._folder_id_value,
            self._folder_name_value,
        )

PaperFolderLogInfo_validator = bv.Struct(PaperFolderLogInfo)

class PaperFolderTeamInviteDetails(bb.Struct):
    """
    Shared Paper folder with member.

    :ivar team_log.PaperFolderTeamInviteDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperFolderTeamInviteDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperFolderTeamInviteDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperFolderTeamInviteDetails_validator = bv.Struct(PaperFolderTeamInviteDetails)

class PaperFolderTeamInviteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperFolderTeamInviteType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperFolderTeamInviteType(description={!r})'.format(
            self._description_value,
        )

PaperFolderTeamInviteType_validator = bv.Struct(PaperFolderTeamInviteType)

class PaperMemberPolicy(bb.Union):
    """
    Policy for controlling if team members can share Paper documents externally.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    anyone_with_link = None
    # Attribute is overwritten below the class definition
    only_team = None
    # Attribute is overwritten below the class definition
    team_and_explicitly_shared = None
    # Attribute is overwritten below the class definition
    other = None

    def is_anyone_with_link(self):
        """
        Check if the union tag is ``anyone_with_link``.

        :rtype: bool
        """
        return self._tag == 'anyone_with_link'

    def is_only_team(self):
        """
        Check if the union tag is ``only_team``.

        :rtype: bool
        """
        return self._tag == 'only_team'

    def is_team_and_explicitly_shared(self):
        """
        Check if the union tag is ``team_and_explicitly_shared``.

        :rtype: bool
        """
        return self._tag == 'team_and_explicitly_shared'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperMemberPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperMemberPolicy(%r, %r)' % (self._tag, self._value)

PaperMemberPolicy_validator = bv.Union(PaperMemberPolicy)

class PaperPublishedLinkCreateDetails(bb.Struct):
    """
    Published doc.

    :ivar team_log.PaperPublishedLinkCreateDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperPublishedLinkCreateDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperPublishedLinkCreateDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperPublishedLinkCreateDetails_validator = bv.Struct(PaperPublishedLinkCreateDetails)

class PaperPublishedLinkCreateType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperPublishedLinkCreateType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperPublishedLinkCreateType(description={!r})'.format(
            self._description_value,
        )

PaperPublishedLinkCreateType_validator = bv.Struct(PaperPublishedLinkCreateType)

class PaperPublishedLinkDisabledDetails(bb.Struct):
    """
    Unpublished doc.

    :ivar team_log.PaperPublishedLinkDisabledDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperPublishedLinkDisabledDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperPublishedLinkDisabledDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperPublishedLinkDisabledDetails_validator = bv.Struct(PaperPublishedLinkDisabledDetails)

class PaperPublishedLinkDisabledType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperPublishedLinkDisabledType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperPublishedLinkDisabledType(description={!r})'.format(
            self._description_value,
        )

PaperPublishedLinkDisabledType_validator = bv.Struct(PaperPublishedLinkDisabledType)

class PaperPublishedLinkViewDetails(bb.Struct):
    """
    Viewed published doc.

    :ivar team_log.PaperPublishedLinkViewDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperPublishedLinkViewDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperPublishedLinkViewDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperPublishedLinkViewDetails_validator = bv.Struct(PaperPublishedLinkViewDetails)

class PaperPublishedLinkViewType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperPublishedLinkViewType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperPublishedLinkViewType(description={!r})'.format(
            self._description_value,
        )

PaperPublishedLinkViewType_validator = bv.Struct(PaperPublishedLinkViewType)

class ParticipantLogInfo(bb.Union):
    """
    A user or group

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar UserLogInfo ParticipantLogInfo.user: A user with a Dropbox account.
    :ivar GroupLogInfo ParticipantLogInfo.group: Group details.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def user(cls, val):
        """
        Create an instance of this class set to the ``user`` tag with value
        ``val``.

        :param UserLogInfo val:
        :rtype: ParticipantLogInfo
        """
        return cls('user', val)

    @classmethod
    def group(cls, val):
        """
        Create an instance of this class set to the ``group`` tag with value
        ``val``.

        :param GroupLogInfo val:
        :rtype: ParticipantLogInfo
        """
        return cls('group', val)

    def is_user(self):
        """
        Check if the union tag is ``user``.

        :rtype: bool
        """
        return self._tag == 'user'

    def is_group(self):
        """
        Check if the union tag is ``group``.

        :rtype: bool
        """
        return self._tag == 'group'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_user(self):
        """
        A user with a Dropbox account.

        Only call this if :meth:`is_user` is true.

        :rtype: UserLogInfo
        """
        if not self.is_user():
            raise AttributeError("tag 'user' not set")
        return self._value

    def get_group(self):
        """
        Group details.

        Only call this if :meth:`is_group` is true.

        :rtype: GroupLogInfo
        """
        if not self.is_group():
            raise AttributeError("tag 'group' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ParticipantLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ParticipantLogInfo(%r, %r)' % (self._tag, self._value)

ParticipantLogInfo_validator = bv.Union(ParticipantLogInfo)

class PassPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    allow = None
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_allow(self):
        """
        Check if the union tag is ``allow``.

        :rtype: bool
        """
        return self._tag == 'allow'

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PassPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PassPolicy(%r, %r)' % (self._tag, self._value)

PassPolicy_validator = bv.Union(PassPolicy)

class PasswordChangeDetails(bb.Struct):
    """
    Changed password.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PasswordChangeDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PasswordChangeDetails()'

PasswordChangeDetails_validator = bv.Struct(PasswordChangeDetails)

class PasswordChangeType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PasswordChangeType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PasswordChangeType(description={!r})'.format(
            self._description_value,
        )

PasswordChangeType_validator = bv.Struct(PasswordChangeType)

class PasswordResetAllDetails(bb.Struct):
    """
    Reset all team member passwords.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PasswordResetAllDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PasswordResetAllDetails()'

PasswordResetAllDetails_validator = bv.Struct(PasswordResetAllDetails)

class PasswordResetAllType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PasswordResetAllType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PasswordResetAllType(description={!r})'.format(
            self._description_value,
        )

PasswordResetAllType_validator = bv.Struct(PasswordResetAllType)

class PasswordResetDetails(bb.Struct):
    """
    Reset password.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PasswordResetDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PasswordResetDetails()'

PasswordResetDetails_validator = bv.Struct(PasswordResetDetails)

class PasswordResetType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PasswordResetType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PasswordResetType(description={!r})'.format(
            self._description_value,
        )

PasswordResetType_validator = bv.Struct(PasswordResetType)

class PathLogInfo(bb.Struct):
    """
    Path's details.

    :ivar team_log.PathLogInfo.contextual: Fully qualified path relative to
        event's context. Might be missing due to historical data gap.
    :ivar team_log.PathLogInfo.namespace_relative: Path relative to the
        namespace containing the content.
    """

    __slots__ = [
        '_contextual_value',
        '_contextual_present',
        '_namespace_relative_value',
        '_namespace_relative_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 namespace_relative=None,
                 contextual=None):
        self._contextual_value = None
        self._contextual_present = False
        self._namespace_relative_value = None
        self._namespace_relative_present = False
        if contextual is not None:
            self.contextual = contextual
        if namespace_relative is not None:
            self.namespace_relative = namespace_relative

    @property
    def contextual(self):
        """
        Fully qualified path relative to event's context. Might be missing due
        to historical data gap.

        :rtype: str
        """
        if self._contextual_present:
            return self._contextual_value
        else:
            return None

    @contextual.setter
    def contextual(self, val):
        if val is None:
            del self.contextual
            return
        val = self._contextual_validator.validate(val)
        self._contextual_value = val
        self._contextual_present = True

    @contextual.deleter
    def contextual(self):
        self._contextual_value = None
        self._contextual_present = False

    @property
    def namespace_relative(self):
        """
        Path relative to the namespace containing the content.

        :rtype: NamespaceRelativePathLogInfo
        """
        if self._namespace_relative_present:
            return self._namespace_relative_value
        else:
            raise AttributeError("missing required field 'namespace_relative'")

    @namespace_relative.setter
    def namespace_relative(self, val):
        self._namespace_relative_validator.validate_type_only(val)
        self._namespace_relative_value = val
        self._namespace_relative_present = True

    @namespace_relative.deleter
    def namespace_relative(self):
        self._namespace_relative_value = None
        self._namespace_relative_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PathLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PathLogInfo(namespace_relative={!r}, contextual={!r})'.format(
            self._namespace_relative_value,
            self._contextual_value,
        )

PathLogInfo_validator = bv.Struct(PathLogInfo)

class PermanentDeleteChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled ability of team members to permanently delete content.

    :ivar team_log.PermanentDeleteChangePolicyDetails.new_value: New permanent
        delete content policy.
    :ivar team_log.PermanentDeleteChangePolicyDetails.previous_value: Previous
        permanent delete content policy. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New permanent delete content policy.

        :rtype: ContentPermanentDeletePolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous permanent delete content policy. Might be missing due to
        historical data gap.

        :rtype: ContentPermanentDeletePolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PermanentDeleteChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PermanentDeleteChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

PermanentDeleteChangePolicyDetails_validator = bv.Struct(PermanentDeleteChangePolicyDetails)

class PermanentDeleteChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PermanentDeleteChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PermanentDeleteChangePolicyType(description={!r})'.format(
            self._description_value,
        )

PermanentDeleteChangePolicyType_validator = bv.Struct(PermanentDeleteChangePolicyType)

class PlacementRestriction(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    australia_only = None
    # Attribute is overwritten below the class definition
    europe_only = None
    # Attribute is overwritten below the class definition
    japan_only = None
    # Attribute is overwritten below the class definition
    none = None
    # Attribute is overwritten below the class definition
    other = None

    def is_australia_only(self):
        """
        Check if the union tag is ``australia_only``.

        :rtype: bool
        """
        return self._tag == 'australia_only'

    def is_europe_only(self):
        """
        Check if the union tag is ``europe_only``.

        :rtype: bool
        """
        return self._tag == 'europe_only'

    def is_japan_only(self):
        """
        Check if the union tag is ``japan_only``.

        :rtype: bool
        """
        return self._tag == 'japan_only'

    def is_none(self):
        """
        Check if the union tag is ``none``.

        :rtype: bool
        """
        return self._tag == 'none'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PlacementRestriction, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PlacementRestriction(%r, %r)' % (self._tag, self._value)

PlacementRestriction_validator = bv.Union(PlacementRestriction)

class PrimaryTeamRequestAcceptedDetails(bb.Struct):
    """
    Team merge request acceptance details shown to the primary team

    :ivar team_log.PrimaryTeamRequestAcceptedDetails.secondary_team: The
        secondary team name.
    :ivar team_log.PrimaryTeamRequestAcceptedDetails.sent_by: The name of the
        secondary team admin who sent the request originally.
    """

    __slots__ = [
        '_secondary_team_value',
        '_secondary_team_present',
        '_sent_by_value',
        '_sent_by_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 secondary_team=None,
                 sent_by=None):
        self._secondary_team_value = None
        self._secondary_team_present = False
        self._sent_by_value = None
        self._sent_by_present = False
        if secondary_team is not None:
            self.secondary_team = secondary_team
        if sent_by is not None:
            self.sent_by = sent_by

    @property
    def secondary_team(self):
        """
        The secondary team name.

        :rtype: str
        """
        if self._secondary_team_present:
            return self._secondary_team_value
        else:
            raise AttributeError("missing required field 'secondary_team'")

    @secondary_team.setter
    def secondary_team(self, val):
        val = self._secondary_team_validator.validate(val)
        self._secondary_team_value = val
        self._secondary_team_present = True

    @secondary_team.deleter
    def secondary_team(self):
        self._secondary_team_value = None
        self._secondary_team_present = False

    @property
    def sent_by(self):
        """
        The name of the secondary team admin who sent the request originally.

        :rtype: str
        """
        if self._sent_by_present:
            return self._sent_by_value
        else:
            raise AttributeError("missing required field 'sent_by'")

    @sent_by.setter
    def sent_by(self, val):
        val = self._sent_by_validator.validate(val)
        self._sent_by_value = val
        self._sent_by_present = True

    @sent_by.deleter
    def sent_by(self):
        self._sent_by_value = None
        self._sent_by_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PrimaryTeamRequestAcceptedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PrimaryTeamRequestAcceptedDetails(secondary_team={!r}, sent_by={!r})'.format(
            self._secondary_team_value,
            self._sent_by_value,
        )

PrimaryTeamRequestAcceptedDetails_validator = bv.Struct(PrimaryTeamRequestAcceptedDetails)

class PrimaryTeamRequestCanceledDetails(bb.Struct):
    """
    Team merge request cancellation details shown to the primary team

    :ivar team_log.PrimaryTeamRequestCanceledDetails.secondary_team: The
        secondary team name.
    :ivar team_log.PrimaryTeamRequestCanceledDetails.sent_by: The name of the
        secondary team admin who sent the request originally.
    """

    __slots__ = [
        '_secondary_team_value',
        '_secondary_team_present',
        '_sent_by_value',
        '_sent_by_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 secondary_team=None,
                 sent_by=None):
        self._secondary_team_value = None
        self._secondary_team_present = False
        self._sent_by_value = None
        self._sent_by_present = False
        if secondary_team is not None:
            self.secondary_team = secondary_team
        if sent_by is not None:
            self.sent_by = sent_by

    @property
    def secondary_team(self):
        """
        The secondary team name.

        :rtype: str
        """
        if self._secondary_team_present:
            return self._secondary_team_value
        else:
            raise AttributeError("missing required field 'secondary_team'")

    @secondary_team.setter
    def secondary_team(self, val):
        val = self._secondary_team_validator.validate(val)
        self._secondary_team_value = val
        self._secondary_team_present = True

    @secondary_team.deleter
    def secondary_team(self):
        self._secondary_team_value = None
        self._secondary_team_present = False

    @property
    def sent_by(self):
        """
        The name of the secondary team admin who sent the request originally.

        :rtype: str
        """
        if self._sent_by_present:
            return self._sent_by_value
        else:
            raise AttributeError("missing required field 'sent_by'")

    @sent_by.setter
    def sent_by(self, val):
        val = self._sent_by_validator.validate(val)
        self._sent_by_value = val
        self._sent_by_present = True

    @sent_by.deleter
    def sent_by(self):
        self._sent_by_value = None
        self._sent_by_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PrimaryTeamRequestCanceledDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PrimaryTeamRequestCanceledDetails(secondary_team={!r}, sent_by={!r})'.format(
            self._secondary_team_value,
            self._sent_by_value,
        )

PrimaryTeamRequestCanceledDetails_validator = bv.Struct(PrimaryTeamRequestCanceledDetails)

class PrimaryTeamRequestExpiredDetails(bb.Struct):
    """
    Team merge request expiration details shown to the primary team

    :ivar team_log.PrimaryTeamRequestExpiredDetails.secondary_team: The
        secondary team name.
    :ivar team_log.PrimaryTeamRequestExpiredDetails.sent_by: The name of the
        secondary team admin who sent the request originally.
    """

    __slots__ = [
        '_secondary_team_value',
        '_secondary_team_present',
        '_sent_by_value',
        '_sent_by_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 secondary_team=None,
                 sent_by=None):
        self._secondary_team_value = None
        self._secondary_team_present = False
        self._sent_by_value = None
        self._sent_by_present = False
        if secondary_team is not None:
            self.secondary_team = secondary_team
        if sent_by is not None:
            self.sent_by = sent_by

    @property
    def secondary_team(self):
        """
        The secondary team name.

        :rtype: str
        """
        if self._secondary_team_present:
            return self._secondary_team_value
        else:
            raise AttributeError("missing required field 'secondary_team'")

    @secondary_team.setter
    def secondary_team(self, val):
        val = self._secondary_team_validator.validate(val)
        self._secondary_team_value = val
        self._secondary_team_present = True

    @secondary_team.deleter
    def secondary_team(self):
        self._secondary_team_value = None
        self._secondary_team_present = False

    @property
    def sent_by(self):
        """
        The name of the secondary team admin who sent the request originally.

        :rtype: str
        """
        if self._sent_by_present:
            return self._sent_by_value
        else:
            raise AttributeError("missing required field 'sent_by'")

    @sent_by.setter
    def sent_by(self, val):
        val = self._sent_by_validator.validate(val)
        self._sent_by_value = val
        self._sent_by_present = True

    @sent_by.deleter
    def sent_by(self):
        self._sent_by_value = None
        self._sent_by_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PrimaryTeamRequestExpiredDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PrimaryTeamRequestExpiredDetails(secondary_team={!r}, sent_by={!r})'.format(
            self._secondary_team_value,
            self._sent_by_value,
        )

PrimaryTeamRequestExpiredDetails_validator = bv.Struct(PrimaryTeamRequestExpiredDetails)

class PrimaryTeamRequestReminderDetails(bb.Struct):
    """
    Team merge request reminder details shown to the primary team

    :ivar team_log.PrimaryTeamRequestReminderDetails.secondary_team: The
        secondary team name.
    :ivar team_log.PrimaryTeamRequestReminderDetails.sent_to: The name of the
        primary team admin the request was sent to.
    """

    __slots__ = [
        '_secondary_team_value',
        '_secondary_team_present',
        '_sent_to_value',
        '_sent_to_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 secondary_team=None,
                 sent_to=None):
        self._secondary_team_value = None
        self._secondary_team_present = False
        self._sent_to_value = None
        self._sent_to_present = False
        if secondary_team is not None:
            self.secondary_team = secondary_team
        if sent_to is not None:
            self.sent_to = sent_to

    @property
    def secondary_team(self):
        """
        The secondary team name.

        :rtype: str
        """
        if self._secondary_team_present:
            return self._secondary_team_value
        else:
            raise AttributeError("missing required field 'secondary_team'")

    @secondary_team.setter
    def secondary_team(self, val):
        val = self._secondary_team_validator.validate(val)
        self._secondary_team_value = val
        self._secondary_team_present = True

    @secondary_team.deleter
    def secondary_team(self):
        self._secondary_team_value = None
        self._secondary_team_present = False

    @property
    def sent_to(self):
        """
        The name of the primary team admin the request was sent to.

        :rtype: str
        """
        if self._sent_to_present:
            return self._sent_to_value
        else:
            raise AttributeError("missing required field 'sent_to'")

    @sent_to.setter
    def sent_to(self, val):
        val = self._sent_to_validator.validate(val)
        self._sent_to_value = val
        self._sent_to_present = True

    @sent_to.deleter
    def sent_to(self):
        self._sent_to_value = None
        self._sent_to_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PrimaryTeamRequestReminderDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PrimaryTeamRequestReminderDetails(secondary_team={!r}, sent_to={!r})'.format(
            self._secondary_team_value,
            self._sent_to_value,
        )

PrimaryTeamRequestReminderDetails_validator = bv.Struct(PrimaryTeamRequestReminderDetails)

class QuickActionType(bb.Union):
    """
    Quick action type.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    delete_shared_link = None
    # Attribute is overwritten below the class definition
    reset_password = None
    # Attribute is overwritten below the class definition
    restore_file_or_folder = None
    # Attribute is overwritten below the class definition
    unlink_app = None
    # Attribute is overwritten below the class definition
    unlink_session = None
    # Attribute is overwritten below the class definition
    other = None

    def is_delete_shared_link(self):
        """
        Check if the union tag is ``delete_shared_link``.

        :rtype: bool
        """
        return self._tag == 'delete_shared_link'

    def is_reset_password(self):
        """
        Check if the union tag is ``reset_password``.

        :rtype: bool
        """
        return self._tag == 'reset_password'

    def is_restore_file_or_folder(self):
        """
        Check if the union tag is ``restore_file_or_folder``.

        :rtype: bool
        """
        return self._tag == 'restore_file_or_folder'

    def is_unlink_app(self):
        """
        Check if the union tag is ``unlink_app``.

        :rtype: bool
        """
        return self._tag == 'unlink_app'

    def is_unlink_session(self):
        """
        Check if the union tag is ``unlink_session``.

        :rtype: bool
        """
        return self._tag == 'unlink_session'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(QuickActionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'QuickActionType(%r, %r)' % (self._tag, self._value)

QuickActionType_validator = bv.Union(QuickActionType)

class RelocateAssetReferencesLogInfo(bb.Struct):
    """
    Provides the indices of the source asset and the destination asset for a
    relocate action.

    :ivar team_log.RelocateAssetReferencesLogInfo.src_asset_index: Source asset
        position in the Assets list.
    :ivar team_log.RelocateAssetReferencesLogInfo.dest_asset_index: Destination
        asset position in the Assets list.
    """

    __slots__ = [
        '_src_asset_index_value',
        '_src_asset_index_present',
        '_dest_asset_index_value',
        '_dest_asset_index_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 src_asset_index=None,
                 dest_asset_index=None):
        self._src_asset_index_value = None
        self._src_asset_index_present = False
        self._dest_asset_index_value = None
        self._dest_asset_index_present = False
        if src_asset_index is not None:
            self.src_asset_index = src_asset_index
        if dest_asset_index is not None:
            self.dest_asset_index = dest_asset_index

    @property
    def src_asset_index(self):
        """
        Source asset position in the Assets list.

        :rtype: int
        """
        if self._src_asset_index_present:
            return self._src_asset_index_value
        else:
            raise AttributeError("missing required field 'src_asset_index'")

    @src_asset_index.setter
    def src_asset_index(self, val):
        val = self._src_asset_index_validator.validate(val)
        self._src_asset_index_value = val
        self._src_asset_index_present = True

    @src_asset_index.deleter
    def src_asset_index(self):
        self._src_asset_index_value = None
        self._src_asset_index_present = False

    @property
    def dest_asset_index(self):
        """
        Destination asset position in the Assets list.

        :rtype: int
        """
        if self._dest_asset_index_present:
            return self._dest_asset_index_value
        else:
            raise AttributeError("missing required field 'dest_asset_index'")

    @dest_asset_index.setter
    def dest_asset_index(self, val):
        val = self._dest_asset_index_validator.validate(val)
        self._dest_asset_index_value = val
        self._dest_asset_index_present = True

    @dest_asset_index.deleter
    def dest_asset_index(self):
        self._dest_asset_index_value = None
        self._dest_asset_index_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(RelocateAssetReferencesLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'RelocateAssetReferencesLogInfo(src_asset_index={!r}, dest_asset_index={!r})'.format(
            self._src_asset_index_value,
            self._dest_asset_index_value,
        )

RelocateAssetReferencesLogInfo_validator = bv.Struct(RelocateAssetReferencesLogInfo)

class ResellerLogInfo(bb.Struct):
    """
    Reseller information.

    :ivar team_log.ResellerLogInfo.reseller_name: Reseller name.
    :ivar team_log.ResellerLogInfo.reseller_email: Reseller email.
    """

    __slots__ = [
        '_reseller_name_value',
        '_reseller_name_present',
        '_reseller_email_value',
        '_reseller_email_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 reseller_name=None,
                 reseller_email=None):
        self._reseller_name_value = None
        self._reseller_name_present = False
        self._reseller_email_value = None
        self._reseller_email_present = False
        if reseller_name is not None:
            self.reseller_name = reseller_name
        if reseller_email is not None:
            self.reseller_email = reseller_email

    @property
    def reseller_name(self):
        """
        Reseller name.

        :rtype: str
        """
        if self._reseller_name_present:
            return self._reseller_name_value
        else:
            raise AttributeError("missing required field 'reseller_name'")

    @reseller_name.setter
    def reseller_name(self, val):
        val = self._reseller_name_validator.validate(val)
        self._reseller_name_value = val
        self._reseller_name_present = True

    @reseller_name.deleter
    def reseller_name(self):
        self._reseller_name_value = None
        self._reseller_name_present = False

    @property
    def reseller_email(self):
        """
        Reseller email.

        :rtype: str
        """
        if self._reseller_email_present:
            return self._reseller_email_value
        else:
            raise AttributeError("missing required field 'reseller_email'")

    @reseller_email.setter
    def reseller_email(self, val):
        val = self._reseller_email_validator.validate(val)
        self._reseller_email_value = val
        self._reseller_email_present = True

    @reseller_email.deleter
    def reseller_email(self):
        self._reseller_email_value = None
        self._reseller_email_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ResellerLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ResellerLogInfo(reseller_name={!r}, reseller_email={!r})'.format(
            self._reseller_name_value,
            self._reseller_email_value,
        )

ResellerLogInfo_validator = bv.Struct(ResellerLogInfo)

class ResellerSupportChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled reseller support.

    :ivar team_log.ResellerSupportChangePolicyDetails.new_value: New Reseller
        support policy.
    :ivar team_log.ResellerSupportChangePolicyDetails.previous_value: Previous
        Reseller support policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Reseller support policy.

        :rtype: ResellerSupportPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Reseller support policy.

        :rtype: ResellerSupportPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ResellerSupportChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ResellerSupportChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

ResellerSupportChangePolicyDetails_validator = bv.Struct(ResellerSupportChangePolicyDetails)

class ResellerSupportChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ResellerSupportChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ResellerSupportChangePolicyType(description={!r})'.format(
            self._description_value,
        )

ResellerSupportChangePolicyType_validator = bv.Struct(ResellerSupportChangePolicyType)

class ResellerSupportPolicy(bb.Union):
    """
    Policy for controlling if reseller can access the admin console as
    administrator

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ResellerSupportPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ResellerSupportPolicy(%r, %r)' % (self._tag, self._value)

ResellerSupportPolicy_validator = bv.Union(ResellerSupportPolicy)

class ResellerSupportSessionEndDetails(bb.Struct):
    """
    Ended reseller support session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ResellerSupportSessionEndDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ResellerSupportSessionEndDetails()'

ResellerSupportSessionEndDetails_validator = bv.Struct(ResellerSupportSessionEndDetails)

class ResellerSupportSessionEndType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ResellerSupportSessionEndType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ResellerSupportSessionEndType(description={!r})'.format(
            self._description_value,
        )

ResellerSupportSessionEndType_validator = bv.Struct(ResellerSupportSessionEndType)

class ResellerSupportSessionStartDetails(bb.Struct):
    """
    Started reseller support session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ResellerSupportSessionStartDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ResellerSupportSessionStartDetails()'

ResellerSupportSessionStartDetails_validator = bv.Struct(ResellerSupportSessionStartDetails)

class ResellerSupportSessionStartType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ResellerSupportSessionStartType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ResellerSupportSessionStartType(description={!r})'.format(
            self._description_value,
        )

ResellerSupportSessionStartType_validator = bv.Struct(ResellerSupportSessionStartType)

class SecondaryMailsPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SecondaryMailsPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SecondaryMailsPolicy(%r, %r)' % (self._tag, self._value)

SecondaryMailsPolicy_validator = bv.Union(SecondaryMailsPolicy)

class SecondaryMailsPolicyChangedDetails(bb.Struct):
    """
    Secondary mails policy changed.

    :ivar team_log.SecondaryMailsPolicyChangedDetails.previous_value: Previous
        secondary mails policy.
    :ivar team_log.SecondaryMailsPolicyChangedDetails.new_value: New secondary
        mails policy.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous secondary mails policy.

        :rtype: SecondaryMailsPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New secondary mails policy.

        :rtype: SecondaryMailsPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SecondaryMailsPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SecondaryMailsPolicyChangedDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

SecondaryMailsPolicyChangedDetails_validator = bv.Struct(SecondaryMailsPolicyChangedDetails)

class SecondaryMailsPolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SecondaryMailsPolicyChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SecondaryMailsPolicyChangedType(description={!r})'.format(
            self._description_value,
        )

SecondaryMailsPolicyChangedType_validator = bv.Struct(SecondaryMailsPolicyChangedType)

class SecondaryTeamRequestAcceptedDetails(bb.Struct):
    """
    Team merge request acceptance details shown to the secondary team

    :ivar team_log.SecondaryTeamRequestAcceptedDetails.primary_team: The primary
        team name.
    :ivar team_log.SecondaryTeamRequestAcceptedDetails.sent_by: The name of the
        secondary team admin who sent the request originally.
    """

    __slots__ = [
        '_primary_team_value',
        '_primary_team_present',
        '_sent_by_value',
        '_sent_by_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 primary_team=None,
                 sent_by=None):
        self._primary_team_value = None
        self._primary_team_present = False
        self._sent_by_value = None
        self._sent_by_present = False
        if primary_team is not None:
            self.primary_team = primary_team
        if sent_by is not None:
            self.sent_by = sent_by

    @property
    def primary_team(self):
        """
        The primary team name.

        :rtype: str
        """
        if self._primary_team_present:
            return self._primary_team_value
        else:
            raise AttributeError("missing required field 'primary_team'")

    @primary_team.setter
    def primary_team(self, val):
        val = self._primary_team_validator.validate(val)
        self._primary_team_value = val
        self._primary_team_present = True

    @primary_team.deleter
    def primary_team(self):
        self._primary_team_value = None
        self._primary_team_present = False

    @property
    def sent_by(self):
        """
        The name of the secondary team admin who sent the request originally.

        :rtype: str
        """
        if self._sent_by_present:
            return self._sent_by_value
        else:
            raise AttributeError("missing required field 'sent_by'")

    @sent_by.setter
    def sent_by(self, val):
        val = self._sent_by_validator.validate(val)
        self._sent_by_value = val
        self._sent_by_present = True

    @sent_by.deleter
    def sent_by(self):
        self._sent_by_value = None
        self._sent_by_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SecondaryTeamRequestAcceptedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SecondaryTeamRequestAcceptedDetails(primary_team={!r}, sent_by={!r})'.format(
            self._primary_team_value,
            self._sent_by_value,
        )

SecondaryTeamRequestAcceptedDetails_validator = bv.Struct(SecondaryTeamRequestAcceptedDetails)

class SecondaryTeamRequestCanceledDetails(bb.Struct):
    """
    Team merge request cancellation details shown to the secondary team

    :ivar team_log.SecondaryTeamRequestCanceledDetails.sent_to: The email of the
        primary team admin that the request was sent to.
    :ivar team_log.SecondaryTeamRequestCanceledDetails.sent_by: The name of the
        secondary team admin who sent the request originally.
    """

    __slots__ = [
        '_sent_to_value',
        '_sent_to_present',
        '_sent_by_value',
        '_sent_by_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 sent_to=None,
                 sent_by=None):
        self._sent_to_value = None
        self._sent_to_present = False
        self._sent_by_value = None
        self._sent_by_present = False
        if sent_to is not None:
            self.sent_to = sent_to
        if sent_by is not None:
            self.sent_by = sent_by

    @property
    def sent_to(self):
        """
        The email of the primary team admin that the request was sent to.

        :rtype: str
        """
        if self._sent_to_present:
            return self._sent_to_value
        else:
            raise AttributeError("missing required field 'sent_to'")

    @sent_to.setter
    def sent_to(self, val):
        val = self._sent_to_validator.validate(val)
        self._sent_to_value = val
        self._sent_to_present = True

    @sent_to.deleter
    def sent_to(self):
        self._sent_to_value = None
        self._sent_to_present = False

    @property
    def sent_by(self):
        """
        The name of the secondary team admin who sent the request originally.

        :rtype: str
        """
        if self._sent_by_present:
            return self._sent_by_value
        else:
            raise AttributeError("missing required field 'sent_by'")

    @sent_by.setter
    def sent_by(self, val):
        val = self._sent_by_validator.validate(val)
        self._sent_by_value = val
        self._sent_by_present = True

    @sent_by.deleter
    def sent_by(self):
        self._sent_by_value = None
        self._sent_by_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SecondaryTeamRequestCanceledDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SecondaryTeamRequestCanceledDetails(sent_to={!r}, sent_by={!r})'.format(
            self._sent_to_value,
            self._sent_by_value,
        )

SecondaryTeamRequestCanceledDetails_validator = bv.Struct(SecondaryTeamRequestCanceledDetails)

class SecondaryTeamRequestExpiredDetails(bb.Struct):
    """
    Team merge request expiration details shown to the secondary team

    :ivar team_log.SecondaryTeamRequestExpiredDetails.sent_to: The email of the
        primary team admin the request was sent to.
    """

    __slots__ = [
        '_sent_to_value',
        '_sent_to_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 sent_to=None):
        self._sent_to_value = None
        self._sent_to_present = False
        if sent_to is not None:
            self.sent_to = sent_to

    @property
    def sent_to(self):
        """
        The email of the primary team admin the request was sent to.

        :rtype: str
        """
        if self._sent_to_present:
            return self._sent_to_value
        else:
            raise AttributeError("missing required field 'sent_to'")

    @sent_to.setter
    def sent_to(self, val):
        val = self._sent_to_validator.validate(val)
        self._sent_to_value = val
        self._sent_to_present = True

    @sent_to.deleter
    def sent_to(self):
        self._sent_to_value = None
        self._sent_to_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SecondaryTeamRequestExpiredDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SecondaryTeamRequestExpiredDetails(sent_to={!r})'.format(
            self._sent_to_value,
        )

SecondaryTeamRequestExpiredDetails_validator = bv.Struct(SecondaryTeamRequestExpiredDetails)

class SecondaryTeamRequestReminderDetails(bb.Struct):
    """
    Team merge request reminder details shown to the secondary team

    :ivar team_log.SecondaryTeamRequestReminderDetails.sent_to: The email of the
        primary team admin the request was sent to.
    """

    __slots__ = [
        '_sent_to_value',
        '_sent_to_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 sent_to=None):
        self._sent_to_value = None
        self._sent_to_present = False
        if sent_to is not None:
            self.sent_to = sent_to

    @property
    def sent_to(self):
        """
        The email of the primary team admin the request was sent to.

        :rtype: str
        """
        if self._sent_to_present:
            return self._sent_to_value
        else:
            raise AttributeError("missing required field 'sent_to'")

    @sent_to.setter
    def sent_to(self, val):
        val = self._sent_to_validator.validate(val)
        self._sent_to_value = val
        self._sent_to_present = True

    @sent_to.deleter
    def sent_to(self):
        self._sent_to_value = None
        self._sent_to_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SecondaryTeamRequestReminderDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SecondaryTeamRequestReminderDetails(sent_to={!r})'.format(
            self._sent_to_value,
        )

SecondaryTeamRequestReminderDetails_validator = bv.Struct(SecondaryTeamRequestReminderDetails)

class SfAddGroupDetails(bb.Struct):
    """
    Added team to shared folder.

    :ivar team_log.SfAddGroupDetails.target_asset_index: Target asset position
        in the Assets list.
    :ivar team_log.SfAddGroupDetails.original_folder_name: Original shared
        folder name.
    :ivar team_log.SfAddGroupDetails.sharing_permission: Sharing permission.
        Might be missing due to historical data gap.
    :ivar team_log.SfAddGroupDetails.team_name: Team name.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
        '_sharing_permission_value',
        '_sharing_permission_present',
        '_team_name_value',
        '_team_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 team_name=None,
                 sharing_permission=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._original_folder_name_value = None
        self._original_folder_name_present = False
        self._sharing_permission_value = None
        self._sharing_permission_present = False
        self._team_name_value = None
        self._team_name_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if original_folder_name is not None:
            self.original_folder_name = original_folder_name
        if sharing_permission is not None:
            self.sharing_permission = sharing_permission
        if team_name is not None:
            self.team_name = team_name

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def sharing_permission(self):
        """
        Sharing permission. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._sharing_permission_present:
            return self._sharing_permission_value
        else:
            return None

    @sharing_permission.setter
    def sharing_permission(self, val):
        if val is None:
            del self.sharing_permission
            return
        val = self._sharing_permission_validator.validate(val)
        self._sharing_permission_value = val
        self._sharing_permission_present = True

    @sharing_permission.deleter
    def sharing_permission(self):
        self._sharing_permission_value = None
        self._sharing_permission_present = False

    @property
    def team_name(self):
        """
        Team name.

        :rtype: str
        """
        if self._team_name_present:
            return self._team_name_value
        else:
            raise AttributeError("missing required field 'team_name'")

    @team_name.setter
    def team_name(self, val):
        val = self._team_name_validator.validate(val)
        self._team_name_value = val
        self._team_name_present = True

    @team_name.deleter
    def team_name(self):
        self._team_name_value = None
        self._team_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfAddGroupDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfAddGroupDetails(target_asset_index={!r}, original_folder_name={!r}, team_name={!r}, sharing_permission={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._team_name_value,
            self._sharing_permission_value,
        )

SfAddGroupDetails_validator = bv.Struct(SfAddGroupDetails)

class SfAddGroupType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfAddGroupType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfAddGroupType(description={!r})'.format(
            self._description_value,
        )

SfAddGroupType_validator = bv.Struct(SfAddGroupType)

class SfAllowNonMembersToViewSharedLinksDetails(bb.Struct):
    """
    Allowed non-collaborators to view links to files in shared folder.

    :ivar team_log.SfAllowNonMembersToViewSharedLinksDetails.target_asset_index:
        Target asset position in the Assets list.
    :ivar
        team_log.SfAllowNonMembersToViewSharedLinksDetails.original_folder_name:
        Original shared folder name.
    :ivar team_log.SfAllowNonMembersToViewSharedLinksDetails.shared_folder_type:
        Shared folder type. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
        '_shared_folder_type_value',
        '_shared_folder_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 shared_folder_type=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._original_folder_name_value = None
        self._original_folder_name_present = False
        self._shared_folder_type_value = None
        self._shared_folder_type_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if original_folder_name is not None:
            self.original_folder_name = original_folder_name
        if shared_folder_type is not None:
            self.shared_folder_type = shared_folder_type

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def shared_folder_type(self):
        """
        Shared folder type. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._shared_folder_type_present:
            return self._shared_folder_type_value
        else:
            return None

    @shared_folder_type.setter
    def shared_folder_type(self, val):
        if val is None:
            del self.shared_folder_type
            return
        val = self._shared_folder_type_validator.validate(val)
        self._shared_folder_type_value = val
        self._shared_folder_type_present = True

    @shared_folder_type.deleter
    def shared_folder_type(self):
        self._shared_folder_type_value = None
        self._shared_folder_type_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfAllowNonMembersToViewSharedLinksDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfAllowNonMembersToViewSharedLinksDetails(target_asset_index={!r}, original_folder_name={!r}, shared_folder_type={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._shared_folder_type_value,
        )

SfAllowNonMembersToViewSharedLinksDetails_validator = bv.Struct(SfAllowNonMembersToViewSharedLinksDetails)

class SfAllowNonMembersToViewSharedLinksType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfAllowNonMembersToViewSharedLinksType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfAllowNonMembersToViewSharedLinksType(description={!r})'.format(
            self._description_value,
        )

SfAllowNonMembersToViewSharedLinksType_validator = bv.Struct(SfAllowNonMembersToViewSharedLinksType)

class SfExternalInviteWarnDetails(bb.Struct):
    """
    Set team members to see warning before sharing folders outside team.

    :ivar team_log.SfExternalInviteWarnDetails.target_asset_index: Target asset
        position in the Assets list.
    :ivar team_log.SfExternalInviteWarnDetails.original_folder_name: Original
        shared folder name.
    :ivar team_log.SfExternalInviteWarnDetails.new_sharing_permission: New
        sharing permission. Might be missing due to historical data gap.
    :ivar team_log.SfExternalInviteWarnDetails.previous_sharing_permission:
        Previous sharing permission. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
        '_new_sharing_permission_value',
        '_new_sharing_permission_present',
        '_previous_sharing_permission_value',
        '_previous_sharing_permission_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 new_sharing_permission=None,
                 previous_sharing_permission=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._original_folder_name_value = None
        self._original_folder_name_present = False
        self._new_sharing_permission_value = None
        self._new_sharing_permission_present = False
        self._previous_sharing_permission_value = None
        self._previous_sharing_permission_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if original_folder_name is not None:
            self.original_folder_name = original_folder_name
        if new_sharing_permission is not None:
            self.new_sharing_permission = new_sharing_permission
        if previous_sharing_permission is not None:
            self.previous_sharing_permission = previous_sharing_permission

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def new_sharing_permission(self):
        """
        New sharing permission. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._new_sharing_permission_present:
            return self._new_sharing_permission_value
        else:
            return None

    @new_sharing_permission.setter
    def new_sharing_permission(self, val):
        if val is None:
            del self.new_sharing_permission
            return
        val = self._new_sharing_permission_validator.validate(val)
        self._new_sharing_permission_value = val
        self._new_sharing_permission_present = True

    @new_sharing_permission.deleter
    def new_sharing_permission(self):
        self._new_sharing_permission_value = None
        self._new_sharing_permission_present = False

    @property
    def previous_sharing_permission(self):
        """
        Previous sharing permission. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._previous_sharing_permission_present:
            return self._previous_sharing_permission_value
        else:
            return None

    @previous_sharing_permission.setter
    def previous_sharing_permission(self, val):
        if val is None:
            del self.previous_sharing_permission
            return
        val = self._previous_sharing_permission_validator.validate(val)
        self._previous_sharing_permission_value = val
        self._previous_sharing_permission_present = True

    @previous_sharing_permission.deleter
    def previous_sharing_permission(self):
        self._previous_sharing_permission_value = None
        self._previous_sharing_permission_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfExternalInviteWarnDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfExternalInviteWarnDetails(target_asset_index={!r}, original_folder_name={!r}, new_sharing_permission={!r}, previous_sharing_permission={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._new_sharing_permission_value,
            self._previous_sharing_permission_value,
        )

SfExternalInviteWarnDetails_validator = bv.Struct(SfExternalInviteWarnDetails)

class SfExternalInviteWarnType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfExternalInviteWarnType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfExternalInviteWarnType(description={!r})'.format(
            self._description_value,
        )

SfExternalInviteWarnType_validator = bv.Struct(SfExternalInviteWarnType)

class SfFbInviteChangeRoleDetails(bb.Struct):
    """
    Changed Facebook user's role in shared folder.

    :ivar team_log.SfFbInviteChangeRoleDetails.target_asset_index: Target asset
        position in the Assets list.
    :ivar team_log.SfFbInviteChangeRoleDetails.original_folder_name: Original
        shared folder name.
    :ivar team_log.SfFbInviteChangeRoleDetails.previous_sharing_permission:
        Previous sharing permission. Might be missing due to historical data
        gap.
    :ivar team_log.SfFbInviteChangeRoleDetails.new_sharing_permission: New
        sharing permission. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
        '_previous_sharing_permission_value',
        '_previous_sharing_permission_present',
        '_new_sharing_permission_value',
        '_new_sharing_permission_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 previous_sharing_permission=None,
                 new_sharing_permission=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._original_folder_name_value = None
        self._original_folder_name_present = False
        self._previous_sharing_permission_value = None
        self._previous_sharing_permission_present = False
        self._new_sharing_permission_value = None
        self._new_sharing_permission_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if original_folder_name is not None:
            self.original_folder_name = original_folder_name
        if previous_sharing_permission is not None:
            self.previous_sharing_permission = previous_sharing_permission
        if new_sharing_permission is not None:
            self.new_sharing_permission = new_sharing_permission

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def previous_sharing_permission(self):
        """
        Previous sharing permission. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._previous_sharing_permission_present:
            return self._previous_sharing_permission_value
        else:
            return None

    @previous_sharing_permission.setter
    def previous_sharing_permission(self, val):
        if val is None:
            del self.previous_sharing_permission
            return
        val = self._previous_sharing_permission_validator.validate(val)
        self._previous_sharing_permission_value = val
        self._previous_sharing_permission_present = True

    @previous_sharing_permission.deleter
    def previous_sharing_permission(self):
        self._previous_sharing_permission_value = None
        self._previous_sharing_permission_present = False

    @property
    def new_sharing_permission(self):
        """
        New sharing permission. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._new_sharing_permission_present:
            return self._new_sharing_permission_value
        else:
            return None

    @new_sharing_permission.setter
    def new_sharing_permission(self, val):
        if val is None:
            del self.new_sharing_permission
            return
        val = self._new_sharing_permission_validator.validate(val)
        self._new_sharing_permission_value = val
        self._new_sharing_permission_present = True

    @new_sharing_permission.deleter
    def new_sharing_permission(self):
        self._new_sharing_permission_value = None
        self._new_sharing_permission_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfFbInviteChangeRoleDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfFbInviteChangeRoleDetails(target_asset_index={!r}, original_folder_name={!r}, previous_sharing_permission={!r}, new_sharing_permission={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._previous_sharing_permission_value,
            self._new_sharing_permission_value,
        )

SfFbInviteChangeRoleDetails_validator = bv.Struct(SfFbInviteChangeRoleDetails)

class SfFbInviteChangeRoleType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfFbInviteChangeRoleType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfFbInviteChangeRoleType(description={!r})'.format(
            self._description_value,
        )

SfFbInviteChangeRoleType_validator = bv.Struct(SfFbInviteChangeRoleType)

class SfFbInviteDetails(bb.Struct):
    """
    Invited Facebook users to shared folder.

    :ivar team_log.SfFbInviteDetails.target_asset_index: Target asset position
        in the Assets list.
    :ivar team_log.SfFbInviteDetails.original_folder_name: Original shared
        folder name.
    :ivar team_log.SfFbInviteDetails.sharing_permission: Sharing permission.
        Might be missing due to historical data gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
        '_sharing_permission_value',
        '_sharing_permission_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 sharing_permission=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._original_folder_name_value = None
        self._original_folder_name_present = False
        self._sharing_permission_value = None
        self._sharing_permission_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if original_folder_name is not None:
            self.original_folder_name = original_folder_name
        if sharing_permission is not None:
            self.sharing_permission = sharing_permission

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def sharing_permission(self):
        """
        Sharing permission. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._sharing_permission_present:
            return self._sharing_permission_value
        else:
            return None

    @sharing_permission.setter
    def sharing_permission(self, val):
        if val is None:
            del self.sharing_permission
            return
        val = self._sharing_permission_validator.validate(val)
        self._sharing_permission_value = val
        self._sharing_permission_present = True

    @sharing_permission.deleter
    def sharing_permission(self):
        self._sharing_permission_value = None
        self._sharing_permission_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfFbInviteDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfFbInviteDetails(target_asset_index={!r}, original_folder_name={!r}, sharing_permission={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._sharing_permission_value,
        )

SfFbInviteDetails_validator = bv.Struct(SfFbInviteDetails)

class SfFbInviteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfFbInviteType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfFbInviteType(description={!r})'.format(
            self._description_value,
        )

SfFbInviteType_validator = bv.Struct(SfFbInviteType)

class SfFbUninviteDetails(bb.Struct):
    """
    Uninvited Facebook user from shared folder.

    :ivar team_log.SfFbUninviteDetails.target_asset_index: Target asset position
        in the Assets list.
    :ivar team_log.SfFbUninviteDetails.original_folder_name: Original shared
        folder name.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._original_folder_name_value = None
        self._original_folder_name_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if original_folder_name is not None:
            self.original_folder_name = original_folder_name

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfFbUninviteDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfFbUninviteDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SfFbUninviteDetails_validator = bv.Struct(SfFbUninviteDetails)

class SfFbUninviteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfFbUninviteType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfFbUninviteType(description={!r})'.format(
            self._description_value,
        )

SfFbUninviteType_validator = bv.Struct(SfFbUninviteType)

class SfInviteGroupDetails(bb.Struct):
    """
    Invited group to shared folder.

    :ivar team_log.SfInviteGroupDetails.target_asset_index: Target asset
        position in the Assets list.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfInviteGroupDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfInviteGroupDetails(target_asset_index={!r})'.format(
            self._target_asset_index_value,
        )

SfInviteGroupDetails_validator = bv.Struct(SfInviteGroupDetails)

class SfInviteGroupType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfInviteGroupType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfInviteGroupType(description={!r})'.format(
            self._description_value,
        )

SfInviteGroupType_validator = bv.Struct(SfInviteGroupType)

class SfTeamGrantAccessDetails(bb.Struct):
    """
    Granted access to shared folder.

    :ivar team_log.SfTeamGrantAccessDetails.target_asset_index: Target asset
        position in the Assets list.
    :ivar team_log.SfTeamGrantAccessDetails.original_folder_name: Original
        shared folder name.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._original_folder_name_value = None
        self._original_folder_name_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if original_folder_name is not None:
            self.original_folder_name = original_folder_name

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfTeamGrantAccessDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfTeamGrantAccessDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SfTeamGrantAccessDetails_validator = bv.Struct(SfTeamGrantAccessDetails)

class SfTeamGrantAccessType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfTeamGrantAccessType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfTeamGrantAccessType(description={!r})'.format(
            self._description_value,
        )

SfTeamGrantAccessType_validator = bv.Struct(SfTeamGrantAccessType)

class SfTeamInviteChangeRoleDetails(bb.Struct):
    """
    Changed team member's role in shared folder.

    :ivar team_log.SfTeamInviteChangeRoleDetails.target_asset_index: Target
        asset position in the Assets list.
    :ivar team_log.SfTeamInviteChangeRoleDetails.original_folder_name: Original
        shared folder name.
    :ivar team_log.SfTeamInviteChangeRoleDetails.new_sharing_permission: New
        sharing permission. Might be missing due to historical data gap.
    :ivar team_log.SfTeamInviteChangeRoleDetails.previous_sharing_permission:
        Previous sharing permission. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
        '_new_sharing_permission_value',
        '_new_sharing_permission_present',
        '_previous_sharing_permission_value',
        '_previous_sharing_permission_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 new_sharing_permission=None,
                 previous_sharing_permission=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._original_folder_name_value = None
        self._original_folder_name_present = False
        self._new_sharing_permission_value = None
        self._new_sharing_permission_present = False
        self._previous_sharing_permission_value = None
        self._previous_sharing_permission_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if original_folder_name is not None:
            self.original_folder_name = original_folder_name
        if new_sharing_permission is not None:
            self.new_sharing_permission = new_sharing_permission
        if previous_sharing_permission is not None:
            self.previous_sharing_permission = previous_sharing_permission

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def new_sharing_permission(self):
        """
        New sharing permission. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._new_sharing_permission_present:
            return self._new_sharing_permission_value
        else:
            return None

    @new_sharing_permission.setter
    def new_sharing_permission(self, val):
        if val is None:
            del self.new_sharing_permission
            return
        val = self._new_sharing_permission_validator.validate(val)
        self._new_sharing_permission_value = val
        self._new_sharing_permission_present = True

    @new_sharing_permission.deleter
    def new_sharing_permission(self):
        self._new_sharing_permission_value = None
        self._new_sharing_permission_present = False

    @property
    def previous_sharing_permission(self):
        """
        Previous sharing permission. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._previous_sharing_permission_present:
            return self._previous_sharing_permission_value
        else:
            return None

    @previous_sharing_permission.setter
    def previous_sharing_permission(self, val):
        if val is None:
            del self.previous_sharing_permission
            return
        val = self._previous_sharing_permission_validator.validate(val)
        self._previous_sharing_permission_value = val
        self._previous_sharing_permission_present = True

    @previous_sharing_permission.deleter
    def previous_sharing_permission(self):
        self._previous_sharing_permission_value = None
        self._previous_sharing_permission_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfTeamInviteChangeRoleDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfTeamInviteChangeRoleDetails(target_asset_index={!r}, original_folder_name={!r}, new_sharing_permission={!r}, previous_sharing_permission={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._new_sharing_permission_value,
            self._previous_sharing_permission_value,
        )

SfTeamInviteChangeRoleDetails_validator = bv.Struct(SfTeamInviteChangeRoleDetails)

class SfTeamInviteChangeRoleType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfTeamInviteChangeRoleType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfTeamInviteChangeRoleType(description={!r})'.format(
            self._description_value,
        )

SfTeamInviteChangeRoleType_validator = bv.Struct(SfTeamInviteChangeRoleType)

class SfTeamInviteDetails(bb.Struct):
    """
    Invited team members to shared folder.

    :ivar team_log.SfTeamInviteDetails.target_asset_index: Target asset position
        in the Assets list.
    :ivar team_log.SfTeamInviteDetails.original_folder_name: Original shared
        folder name.
    :ivar team_log.SfTeamInviteDetails.sharing_permission: Sharing permission.
        Might be missing due to historical data gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
        '_sharing_permission_value',
        '_sharing_permission_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 sharing_permission=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._original_folder_name_value = None
        self._original_folder_name_present = False
        self._sharing_permission_value = None
        self._sharing_permission_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if original_folder_name is not None:
            self.original_folder_name = original_folder_name
        if sharing_permission is not None:
            self.sharing_permission = sharing_permission

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def sharing_permission(self):
        """
        Sharing permission. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._sharing_permission_present:
            return self._sharing_permission_value
        else:
            return None

    @sharing_permission.setter
    def sharing_permission(self, val):
        if val is None:
            del self.sharing_permission
            return
        val = self._sharing_permission_validator.validate(val)
        self._sharing_permission_value = val
        self._sharing_permission_present = True

    @sharing_permission.deleter
    def sharing_permission(self):
        self._sharing_permission_value = None
        self._sharing_permission_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfTeamInviteDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfTeamInviteDetails(target_asset_index={!r}, original_folder_name={!r}, sharing_permission={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._sharing_permission_value,
        )

SfTeamInviteDetails_validator = bv.Struct(SfTeamInviteDetails)

class SfTeamInviteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfTeamInviteType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfTeamInviteType(description={!r})'.format(
            self._description_value,
        )

SfTeamInviteType_validator = bv.Struct(SfTeamInviteType)

class SfTeamJoinDetails(bb.Struct):
    """
    Joined team member's shared folder.

    :ivar team_log.SfTeamJoinDetails.target_asset_index: Target asset position
        in the Assets list.
    :ivar team_log.SfTeamJoinDetails.original_folder_name: Original shared
        folder name.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._original_folder_name_value = None
        self._original_folder_name_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if original_folder_name is not None:
            self.original_folder_name = original_folder_name

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfTeamJoinDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfTeamJoinDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SfTeamJoinDetails_validator = bv.Struct(SfTeamJoinDetails)

class SfTeamJoinFromOobLinkDetails(bb.Struct):
    """
    Joined team member's shared folder from link.

    :ivar team_log.SfTeamJoinFromOobLinkDetails.target_asset_index: Target asset
        position in the Assets list.
    :ivar team_log.SfTeamJoinFromOobLinkDetails.original_folder_name: Original
        shared folder name.
    :ivar team_log.SfTeamJoinFromOobLinkDetails.token_key: Shared link token
        key.
    :ivar team_log.SfTeamJoinFromOobLinkDetails.sharing_permission: Sharing
        permission. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
        '_token_key_value',
        '_token_key_present',
        '_sharing_permission_value',
        '_sharing_permission_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 token_key=None,
                 sharing_permission=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._original_folder_name_value = None
        self._original_folder_name_present = False
        self._token_key_value = None
        self._token_key_present = False
        self._sharing_permission_value = None
        self._sharing_permission_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if original_folder_name is not None:
            self.original_folder_name = original_folder_name
        if token_key is not None:
            self.token_key = token_key
        if sharing_permission is not None:
            self.sharing_permission = sharing_permission

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def token_key(self):
        """
        Shared link token key.

        :rtype: str
        """
        if self._token_key_present:
            return self._token_key_value
        else:
            return None

    @token_key.setter
    def token_key(self, val):
        if val is None:
            del self.token_key
            return
        val = self._token_key_validator.validate(val)
        self._token_key_value = val
        self._token_key_present = True

    @token_key.deleter
    def token_key(self):
        self._token_key_value = None
        self._token_key_present = False

    @property
    def sharing_permission(self):
        """
        Sharing permission. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._sharing_permission_present:
            return self._sharing_permission_value
        else:
            return None

    @sharing_permission.setter
    def sharing_permission(self, val):
        if val is None:
            del self.sharing_permission
            return
        val = self._sharing_permission_validator.validate(val)
        self._sharing_permission_value = val
        self._sharing_permission_present = True

    @sharing_permission.deleter
    def sharing_permission(self):
        self._sharing_permission_value = None
        self._sharing_permission_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfTeamJoinFromOobLinkDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfTeamJoinFromOobLinkDetails(target_asset_index={!r}, original_folder_name={!r}, token_key={!r}, sharing_permission={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._token_key_value,
            self._sharing_permission_value,
        )

SfTeamJoinFromOobLinkDetails_validator = bv.Struct(SfTeamJoinFromOobLinkDetails)

class SfTeamJoinFromOobLinkType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfTeamJoinFromOobLinkType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfTeamJoinFromOobLinkType(description={!r})'.format(
            self._description_value,
        )

SfTeamJoinFromOobLinkType_validator = bv.Struct(SfTeamJoinFromOobLinkType)

class SfTeamJoinType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfTeamJoinType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfTeamJoinType(description={!r})'.format(
            self._description_value,
        )

SfTeamJoinType_validator = bv.Struct(SfTeamJoinType)

class SfTeamUninviteDetails(bb.Struct):
    """
    Unshared folder with team member.

    :ivar team_log.SfTeamUninviteDetails.target_asset_index: Target asset
        position in the Assets list.
    :ivar team_log.SfTeamUninviteDetails.original_folder_name: Original shared
        folder name.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._original_folder_name_value = None
        self._original_folder_name_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if original_folder_name is not None:
            self.original_folder_name = original_folder_name

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfTeamUninviteDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfTeamUninviteDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SfTeamUninviteDetails_validator = bv.Struct(SfTeamUninviteDetails)

class SfTeamUninviteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SfTeamUninviteType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SfTeamUninviteType(description={!r})'.format(
            self._description_value,
        )

SfTeamUninviteType_validator = bv.Struct(SfTeamUninviteType)

class SharedContentAddInviteesDetails(bb.Struct):
    """
    Invited user to Dropbox and added them to shared file/folder.

    :ivar team_log.SharedContentAddInviteesDetails.shared_content_access_level:
        Shared content access level.
    :ivar team_log.SharedContentAddInviteesDetails.invitees: A list of invitees.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
        '_invitees_value',
        '_invitees_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_access_level=None,
                 invitees=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        self._invitees_value = None
        self._invitees_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level
        if invitees is not None:
            self.invitees = invitees

    @property
    def shared_content_access_level(self):
        """
        Shared content access level.

        :rtype: sharing.AccessLevel
        """
        if self._shared_content_access_level_present:
            return self._shared_content_access_level_value
        else:
            raise AttributeError("missing required field 'shared_content_access_level'")

    @shared_content_access_level.setter
    def shared_content_access_level(self, val):
        self._shared_content_access_level_validator.validate_type_only(val)
        self._shared_content_access_level_value = val
        self._shared_content_access_level_present = True

    @shared_content_access_level.deleter
    def shared_content_access_level(self):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False

    @property
    def invitees(self):
        """
        A list of invitees.

        :rtype: list of [str]
        """
        if self._invitees_present:
            return self._invitees_value
        else:
            raise AttributeError("missing required field 'invitees'")

    @invitees.setter
    def invitees(self, val):
        val = self._invitees_validator.validate(val)
        self._invitees_value = val
        self._invitees_present = True

    @invitees.deleter
    def invitees(self):
        self._invitees_value = None
        self._invitees_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentAddInviteesDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentAddInviteesDetails(shared_content_access_level={!r}, invitees={!r})'.format(
            self._shared_content_access_level_value,
            self._invitees_value,
        )

SharedContentAddInviteesDetails_validator = bv.Struct(SharedContentAddInviteesDetails)

class SharedContentAddInviteesType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentAddInviteesType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentAddInviteesType(description={!r})'.format(
            self._description_value,
        )

SharedContentAddInviteesType_validator = bv.Struct(SharedContentAddInviteesType)

class SharedContentAddLinkExpiryDetails(bb.Struct):
    """
    Added expiration date to link for shared file/folder.

    :ivar team_log.SharedContentAddLinkExpiryDetails.new_value: New shared
        content link expiration date. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        New shared content link expiration date. Might be missing due to
        historical data gap.

        :rtype: datetime.datetime
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentAddLinkExpiryDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentAddLinkExpiryDetails(new_value={!r})'.format(
            self._new_value_value,
        )

SharedContentAddLinkExpiryDetails_validator = bv.Struct(SharedContentAddLinkExpiryDetails)

class SharedContentAddLinkExpiryType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentAddLinkExpiryType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentAddLinkExpiryType(description={!r})'.format(
            self._description_value,
        )

SharedContentAddLinkExpiryType_validator = bv.Struct(SharedContentAddLinkExpiryType)

class SharedContentAddLinkPasswordDetails(bb.Struct):
    """
    Added password to link for shared file/folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentAddLinkPasswordDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentAddLinkPasswordDetails()'

SharedContentAddLinkPasswordDetails_validator = bv.Struct(SharedContentAddLinkPasswordDetails)

class SharedContentAddLinkPasswordType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentAddLinkPasswordType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentAddLinkPasswordType(description={!r})'.format(
            self._description_value,
        )

SharedContentAddLinkPasswordType_validator = bv.Struct(SharedContentAddLinkPasswordType)

class SharedContentAddMemberDetails(bb.Struct):
    """
    Added users and/or groups to shared file/folder.

    :ivar team_log.SharedContentAddMemberDetails.shared_content_access_level:
        Shared content access level.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_access_level=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level

    @property
    def shared_content_access_level(self):
        """
        Shared content access level.

        :rtype: sharing.AccessLevel
        """
        if self._shared_content_access_level_present:
            return self._shared_content_access_level_value
        else:
            raise AttributeError("missing required field 'shared_content_access_level'")

    @shared_content_access_level.setter
    def shared_content_access_level(self, val):
        self._shared_content_access_level_validator.validate_type_only(val)
        self._shared_content_access_level_value = val
        self._shared_content_access_level_present = True

    @shared_content_access_level.deleter
    def shared_content_access_level(self):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentAddMemberDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentAddMemberDetails(shared_content_access_level={!r})'.format(
            self._shared_content_access_level_value,
        )

SharedContentAddMemberDetails_validator = bv.Struct(SharedContentAddMemberDetails)

class SharedContentAddMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentAddMemberType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentAddMemberType(description={!r})'.format(
            self._description_value,
        )

SharedContentAddMemberType_validator = bv.Struct(SharedContentAddMemberType)

class SharedContentChangeDownloadsPolicyDetails(bb.Struct):
    """
    Changed whether members can download shared file/folder.

    :ivar team_log.SharedContentChangeDownloadsPolicyDetails.new_value: New
        downloads policy.
    :ivar team_log.SharedContentChangeDownloadsPolicyDetails.previous_value:
        Previous downloads policy. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New downloads policy.

        :rtype: DownloadPolicyType
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous downloads policy. Might be missing due to historical data gap.

        :rtype: DownloadPolicyType
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentChangeDownloadsPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentChangeDownloadsPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedContentChangeDownloadsPolicyDetails_validator = bv.Struct(SharedContentChangeDownloadsPolicyDetails)

class SharedContentChangeDownloadsPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentChangeDownloadsPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentChangeDownloadsPolicyType(description={!r})'.format(
            self._description_value,
        )

SharedContentChangeDownloadsPolicyType_validator = bv.Struct(SharedContentChangeDownloadsPolicyType)

class SharedContentChangeInviteeRoleDetails(bb.Struct):
    """
    Changed access type of invitee to shared file/folder before invite was
    accepted.

    :ivar team_log.SharedContentChangeInviteeRoleDetails.previous_access_level:
        Previous access level. Might be missing due to historical data gap.
    :ivar team_log.SharedContentChangeInviteeRoleDetails.new_access_level: New
        access level.
    :ivar team_log.SharedContentChangeInviteeRoleDetails.invitee: The invitee
        whose role was changed.
    """

    __slots__ = [
        '_previous_access_level_value',
        '_previous_access_level_present',
        '_new_access_level_value',
        '_new_access_level_present',
        '_invitee_value',
        '_invitee_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_access_level=None,
                 invitee=None,
                 previous_access_level=None):
        self._previous_access_level_value = None
        self._previous_access_level_present = False
        self._new_access_level_value = None
        self._new_access_level_present = False
        self._invitee_value = None
        self._invitee_present = False
        if previous_access_level is not None:
            self.previous_access_level = previous_access_level
        if new_access_level is not None:
            self.new_access_level = new_access_level
        if invitee is not None:
            self.invitee = invitee

    @property
    def previous_access_level(self):
        """
        Previous access level. Might be missing due to historical data gap.

        :rtype: sharing.AccessLevel
        """
        if self._previous_access_level_present:
            return self._previous_access_level_value
        else:
            return None

    @previous_access_level.setter
    def previous_access_level(self, val):
        if val is None:
            del self.previous_access_level
            return
        self._previous_access_level_validator.validate_type_only(val)
        self._previous_access_level_value = val
        self._previous_access_level_present = True

    @previous_access_level.deleter
    def previous_access_level(self):
        self._previous_access_level_value = None
        self._previous_access_level_present = False

    @property
    def new_access_level(self):
        """
        New access level.

        :rtype: sharing.AccessLevel
        """
        if self._new_access_level_present:
            return self._new_access_level_value
        else:
            raise AttributeError("missing required field 'new_access_level'")

    @new_access_level.setter
    def new_access_level(self, val):
        self._new_access_level_validator.validate_type_only(val)
        self._new_access_level_value = val
        self._new_access_level_present = True

    @new_access_level.deleter
    def new_access_level(self):
        self._new_access_level_value = None
        self._new_access_level_present = False

    @property
    def invitee(self):
        """
        The invitee whose role was changed.

        :rtype: str
        """
        if self._invitee_present:
            return self._invitee_value
        else:
            raise AttributeError("missing required field 'invitee'")

    @invitee.setter
    def invitee(self, val):
        val = self._invitee_validator.validate(val)
        self._invitee_value = val
        self._invitee_present = True

    @invitee.deleter
    def invitee(self):
        self._invitee_value = None
        self._invitee_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentChangeInviteeRoleDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentChangeInviteeRoleDetails(new_access_level={!r}, invitee={!r}, previous_access_level={!r})'.format(
            self._new_access_level_value,
            self._invitee_value,
            self._previous_access_level_value,
        )

SharedContentChangeInviteeRoleDetails_validator = bv.Struct(SharedContentChangeInviteeRoleDetails)

class SharedContentChangeInviteeRoleType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentChangeInviteeRoleType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentChangeInviteeRoleType(description={!r})'.format(
            self._description_value,
        )

SharedContentChangeInviteeRoleType_validator = bv.Struct(SharedContentChangeInviteeRoleType)

class SharedContentChangeLinkAudienceDetails(bb.Struct):
    """
    Changed link audience of shared file/folder.

    :ivar team_log.SharedContentChangeLinkAudienceDetails.new_value: New link
        audience value.
    :ivar team_log.SharedContentChangeLinkAudienceDetails.previous_value:
        Previous link audience value.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New link audience value.

        :rtype: sharing.LinkAudience
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous link audience value.

        :rtype: sharing.LinkAudience
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentChangeLinkAudienceDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentChangeLinkAudienceDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedContentChangeLinkAudienceDetails_validator = bv.Struct(SharedContentChangeLinkAudienceDetails)

class SharedContentChangeLinkAudienceType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentChangeLinkAudienceType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentChangeLinkAudienceType(description={!r})'.format(
            self._description_value,
        )

SharedContentChangeLinkAudienceType_validator = bv.Struct(SharedContentChangeLinkAudienceType)

class SharedContentChangeLinkExpiryDetails(bb.Struct):
    """
    Changed link expiration of shared file/folder.

    :ivar team_log.SharedContentChangeLinkExpiryDetails.new_value: New shared
        content link expiration date. Might be missing due to historical data
        gap.
    :ivar team_log.SharedContentChangeLinkExpiryDetails.previous_value: Previous
        shared content link expiration date. Might be missing due to historical
        data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New shared content link expiration date. Might be missing due to
        historical data gap.

        :rtype: datetime.datetime
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous shared content link expiration date. Might be missing due to
        historical data gap.

        :rtype: datetime.datetime
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentChangeLinkExpiryDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentChangeLinkExpiryDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedContentChangeLinkExpiryDetails_validator = bv.Struct(SharedContentChangeLinkExpiryDetails)

class SharedContentChangeLinkExpiryType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentChangeLinkExpiryType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentChangeLinkExpiryType(description={!r})'.format(
            self._description_value,
        )

SharedContentChangeLinkExpiryType_validator = bv.Struct(SharedContentChangeLinkExpiryType)

class SharedContentChangeLinkPasswordDetails(bb.Struct):
    """
    Changed link password of shared file/folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentChangeLinkPasswordDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentChangeLinkPasswordDetails()'

SharedContentChangeLinkPasswordDetails_validator = bv.Struct(SharedContentChangeLinkPasswordDetails)

class SharedContentChangeLinkPasswordType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentChangeLinkPasswordType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentChangeLinkPasswordType(description={!r})'.format(
            self._description_value,
        )

SharedContentChangeLinkPasswordType_validator = bv.Struct(SharedContentChangeLinkPasswordType)

class SharedContentChangeMemberRoleDetails(bb.Struct):
    """
    Changed access type of shared file/folder member.

    :ivar team_log.SharedContentChangeMemberRoleDetails.previous_access_level:
        Previous access level. Might be missing due to historical data gap.
    :ivar team_log.SharedContentChangeMemberRoleDetails.new_access_level: New
        access level.
    """

    __slots__ = [
        '_previous_access_level_value',
        '_previous_access_level_present',
        '_new_access_level_value',
        '_new_access_level_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_access_level=None,
                 previous_access_level=None):
        self._previous_access_level_value = None
        self._previous_access_level_present = False
        self._new_access_level_value = None
        self._new_access_level_present = False
        if previous_access_level is not None:
            self.previous_access_level = previous_access_level
        if new_access_level is not None:
            self.new_access_level = new_access_level

    @property
    def previous_access_level(self):
        """
        Previous access level. Might be missing due to historical data gap.

        :rtype: sharing.AccessLevel
        """
        if self._previous_access_level_present:
            return self._previous_access_level_value
        else:
            return None

    @previous_access_level.setter
    def previous_access_level(self, val):
        if val is None:
            del self.previous_access_level
            return
        self._previous_access_level_validator.validate_type_only(val)
        self._previous_access_level_value = val
        self._previous_access_level_present = True

    @previous_access_level.deleter
    def previous_access_level(self):
        self._previous_access_level_value = None
        self._previous_access_level_present = False

    @property
    def new_access_level(self):
        """
        New access level.

        :rtype: sharing.AccessLevel
        """
        if self._new_access_level_present:
            return self._new_access_level_value
        else:
            raise AttributeError("missing required field 'new_access_level'")

    @new_access_level.setter
    def new_access_level(self, val):
        self._new_access_level_validator.validate_type_only(val)
        self._new_access_level_value = val
        self._new_access_level_present = True

    @new_access_level.deleter
    def new_access_level(self):
        self._new_access_level_value = None
        self._new_access_level_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentChangeMemberRoleDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentChangeMemberRoleDetails(new_access_level={!r}, previous_access_level={!r})'.format(
            self._new_access_level_value,
            self._previous_access_level_value,
        )

SharedContentChangeMemberRoleDetails_validator = bv.Struct(SharedContentChangeMemberRoleDetails)

class SharedContentChangeMemberRoleType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentChangeMemberRoleType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentChangeMemberRoleType(description={!r})'.format(
            self._description_value,
        )

SharedContentChangeMemberRoleType_validator = bv.Struct(SharedContentChangeMemberRoleType)

class SharedContentChangeViewerInfoPolicyDetails(bb.Struct):
    """
    Changed whether members can see who viewed shared file/folder.

    :ivar team_log.SharedContentChangeViewerInfoPolicyDetails.new_value: New
        viewer info policy.
    :ivar team_log.SharedContentChangeViewerInfoPolicyDetails.previous_value:
        Previous view info policy. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New viewer info policy.

        :rtype: sharing.ViewerInfoPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous view info policy. Might be missing due to historical data gap.

        :rtype: sharing.ViewerInfoPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentChangeViewerInfoPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentChangeViewerInfoPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedContentChangeViewerInfoPolicyDetails_validator = bv.Struct(SharedContentChangeViewerInfoPolicyDetails)

class SharedContentChangeViewerInfoPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentChangeViewerInfoPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentChangeViewerInfoPolicyType(description={!r})'.format(
            self._description_value,
        )

SharedContentChangeViewerInfoPolicyType_validator = bv.Struct(SharedContentChangeViewerInfoPolicyType)

class SharedContentClaimInvitationDetails(bb.Struct):
    """
    Acquired membership of shared file/folder by accepting invite.

    :ivar team_log.SharedContentClaimInvitationDetails.shared_content_link:
        Shared content link.
    """

    __slots__ = [
        '_shared_content_link_value',
        '_shared_content_link_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_content_link=None):
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link

    @property
    def shared_content_link(self):
        """
        Shared content link.

        :rtype: str
        """
        if self._shared_content_link_present:
            return self._shared_content_link_value
        else:
            return None

    @shared_content_link.setter
    def shared_content_link(self, val):
        if val is None:
            del self.shared_content_link
            return
        val = self._shared_content_link_validator.validate(val)
        self._shared_content_link_value = val
        self._shared_content_link_present = True

    @shared_content_link.deleter
    def shared_content_link(self):
        self._shared_content_link_value = None
        self._shared_content_link_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentClaimInvitationDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentClaimInvitationDetails(shared_content_link={!r})'.format(
            self._shared_content_link_value,
        )

SharedContentClaimInvitationDetails_validator = bv.Struct(SharedContentClaimInvitationDetails)

class SharedContentClaimInvitationType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentClaimInvitationType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentClaimInvitationType(description={!r})'.format(
            self._description_value,
        )

SharedContentClaimInvitationType_validator = bv.Struct(SharedContentClaimInvitationType)

class SharedContentCopyDetails(bb.Struct):
    """
    Copied shared file/folder to own Dropbox.

    :ivar team_log.SharedContentCopyDetails.shared_content_link: Shared content
        link.
    :ivar team_log.SharedContentCopyDetails.shared_content_owner: The shared
        content owner.
    :ivar team_log.SharedContentCopyDetails.shared_content_access_level: Shared
        content access level.
    :ivar team_log.SharedContentCopyDetails.destination_path: The path where the
        member saved the content.
    """

    __slots__ = [
        '_shared_content_link_value',
        '_shared_content_link_present',
        '_shared_content_owner_value',
        '_shared_content_owner_present',
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
        '_destination_path_value',
        '_destination_path_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_link=None,
                 shared_content_access_level=None,
                 destination_path=None,
                 shared_content_owner=None):
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        self._shared_content_owner_value = None
        self._shared_content_owner_present = False
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        self._destination_path_value = None
        self._destination_path_present = False
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link
        if shared_content_owner is not None:
            self.shared_content_owner = shared_content_owner
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level
        if destination_path is not None:
            self.destination_path = destination_path

    @property
    def shared_content_link(self):
        """
        Shared content link.

        :rtype: str
        """
        if self._shared_content_link_present:
            return self._shared_content_link_value
        else:
            raise AttributeError("missing required field 'shared_content_link'")

    @shared_content_link.setter
    def shared_content_link(self, val):
        val = self._shared_content_link_validator.validate(val)
        self._shared_content_link_value = val
        self._shared_content_link_present = True

    @shared_content_link.deleter
    def shared_content_link(self):
        self._shared_content_link_value = None
        self._shared_content_link_present = False

    @property
    def shared_content_owner(self):
        """
        The shared content owner.

        :rtype: UserLogInfo
        """
        if self._shared_content_owner_present:
            return self._shared_content_owner_value
        else:
            return None

    @shared_content_owner.setter
    def shared_content_owner(self, val):
        if val is None:
            del self.shared_content_owner
            return
        self._shared_content_owner_validator.validate_type_only(val)
        self._shared_content_owner_value = val
        self._shared_content_owner_present = True

    @shared_content_owner.deleter
    def shared_content_owner(self):
        self._shared_content_owner_value = None
        self._shared_content_owner_present = False

    @property
    def shared_content_access_level(self):
        """
        Shared content access level.

        :rtype: sharing.AccessLevel
        """
        if self._shared_content_access_level_present:
            return self._shared_content_access_level_value
        else:
            raise AttributeError("missing required field 'shared_content_access_level'")

    @shared_content_access_level.setter
    def shared_content_access_level(self, val):
        self._shared_content_access_level_validator.validate_type_only(val)
        self._shared_content_access_level_value = val
        self._shared_content_access_level_present = True

    @shared_content_access_level.deleter
    def shared_content_access_level(self):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False

    @property
    def destination_path(self):
        """
        The path where the member saved the content.

        :rtype: str
        """
        if self._destination_path_present:
            return self._destination_path_value
        else:
            raise AttributeError("missing required field 'destination_path'")

    @destination_path.setter
    def destination_path(self, val):
        val = self._destination_path_validator.validate(val)
        self._destination_path_value = val
        self._destination_path_present = True

    @destination_path.deleter
    def destination_path(self):
        self._destination_path_value = None
        self._destination_path_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentCopyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentCopyDetails(shared_content_link={!r}, shared_content_access_level={!r}, destination_path={!r}, shared_content_owner={!r})'.format(
            self._shared_content_link_value,
            self._shared_content_access_level_value,
            self._destination_path_value,
            self._shared_content_owner_value,
        )

SharedContentCopyDetails_validator = bv.Struct(SharedContentCopyDetails)

class SharedContentCopyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentCopyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentCopyType(description={!r})'.format(
            self._description_value,
        )

SharedContentCopyType_validator = bv.Struct(SharedContentCopyType)

class SharedContentDownloadDetails(bb.Struct):
    """
    Downloaded shared file/folder.

    :ivar team_log.SharedContentDownloadDetails.shared_content_link: Shared
        content link.
    :ivar team_log.SharedContentDownloadDetails.shared_content_owner: The shared
        content owner.
    :ivar team_log.SharedContentDownloadDetails.shared_content_access_level:
        Shared content access level.
    """

    __slots__ = [
        '_shared_content_link_value',
        '_shared_content_link_present',
        '_shared_content_owner_value',
        '_shared_content_owner_present',
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_link=None,
                 shared_content_access_level=None,
                 shared_content_owner=None):
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        self._shared_content_owner_value = None
        self._shared_content_owner_present = False
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link
        if shared_content_owner is not None:
            self.shared_content_owner = shared_content_owner
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level

    @property
    def shared_content_link(self):
        """
        Shared content link.

        :rtype: str
        """
        if self._shared_content_link_present:
            return self._shared_content_link_value
        else:
            raise AttributeError("missing required field 'shared_content_link'")

    @shared_content_link.setter
    def shared_content_link(self, val):
        val = self._shared_content_link_validator.validate(val)
        self._shared_content_link_value = val
        self._shared_content_link_present = True

    @shared_content_link.deleter
    def shared_content_link(self):
        self._shared_content_link_value = None
        self._shared_content_link_present = False

    @property
    def shared_content_owner(self):
        """
        The shared content owner.

        :rtype: UserLogInfo
        """
        if self._shared_content_owner_present:
            return self._shared_content_owner_value
        else:
            return None

    @shared_content_owner.setter
    def shared_content_owner(self, val):
        if val is None:
            del self.shared_content_owner
            return
        self._shared_content_owner_validator.validate_type_only(val)
        self._shared_content_owner_value = val
        self._shared_content_owner_present = True

    @shared_content_owner.deleter
    def shared_content_owner(self):
        self._shared_content_owner_value = None
        self._shared_content_owner_present = False

    @property
    def shared_content_access_level(self):
        """
        Shared content access level.

        :rtype: sharing.AccessLevel
        """
        if self._shared_content_access_level_present:
            return self._shared_content_access_level_value
        else:
            raise AttributeError("missing required field 'shared_content_access_level'")

    @shared_content_access_level.setter
    def shared_content_access_level(self, val):
        self._shared_content_access_level_validator.validate_type_only(val)
        self._shared_content_access_level_value = val
        self._shared_content_access_level_present = True

    @shared_content_access_level.deleter
    def shared_content_access_level(self):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentDownloadDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentDownloadDetails(shared_content_link={!r}, shared_content_access_level={!r}, shared_content_owner={!r})'.format(
            self._shared_content_link_value,
            self._shared_content_access_level_value,
            self._shared_content_owner_value,
        )

SharedContentDownloadDetails_validator = bv.Struct(SharedContentDownloadDetails)

class SharedContentDownloadType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentDownloadType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentDownloadType(description={!r})'.format(
            self._description_value,
        )

SharedContentDownloadType_validator = bv.Struct(SharedContentDownloadType)

class SharedContentRelinquishMembershipDetails(bb.Struct):
    """
    Left shared file/folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentRelinquishMembershipDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRelinquishMembershipDetails()'

SharedContentRelinquishMembershipDetails_validator = bv.Struct(SharedContentRelinquishMembershipDetails)

class SharedContentRelinquishMembershipType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentRelinquishMembershipType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRelinquishMembershipType(description={!r})'.format(
            self._description_value,
        )

SharedContentRelinquishMembershipType_validator = bv.Struct(SharedContentRelinquishMembershipType)

class SharedContentRemoveInviteesDetails(bb.Struct):
    """
    Removed invitee from shared file/folder before invite was accepted.

    :ivar team_log.SharedContentRemoveInviteesDetails.invitees: A list of
        invitees.
    """

    __slots__ = [
        '_invitees_value',
        '_invitees_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 invitees=None):
        self._invitees_value = None
        self._invitees_present = False
        if invitees is not None:
            self.invitees = invitees

    @property
    def invitees(self):
        """
        A list of invitees.

        :rtype: list of [str]
        """
        if self._invitees_present:
            return self._invitees_value
        else:
            raise AttributeError("missing required field 'invitees'")

    @invitees.setter
    def invitees(self, val):
        val = self._invitees_validator.validate(val)
        self._invitees_value = val
        self._invitees_present = True

    @invitees.deleter
    def invitees(self):
        self._invitees_value = None
        self._invitees_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentRemoveInviteesDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRemoveInviteesDetails(invitees={!r})'.format(
            self._invitees_value,
        )

SharedContentRemoveInviteesDetails_validator = bv.Struct(SharedContentRemoveInviteesDetails)

class SharedContentRemoveInviteesType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentRemoveInviteesType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRemoveInviteesType(description={!r})'.format(
            self._description_value,
        )

SharedContentRemoveInviteesType_validator = bv.Struct(SharedContentRemoveInviteesType)

class SharedContentRemoveLinkExpiryDetails(bb.Struct):
    """
    Removed link expiration date of shared file/folder.

    :ivar team_log.SharedContentRemoveLinkExpiryDetails.previous_value: Previous
        shared content link expiration date. Might be missing due to historical
        data gap.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 previous_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def previous_value(self):
        """
        Previous shared content link expiration date. Might be missing due to
        historical data gap.

        :rtype: datetime.datetime
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentRemoveLinkExpiryDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRemoveLinkExpiryDetails(previous_value={!r})'.format(
            self._previous_value_value,
        )

SharedContentRemoveLinkExpiryDetails_validator = bv.Struct(SharedContentRemoveLinkExpiryDetails)

class SharedContentRemoveLinkExpiryType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentRemoveLinkExpiryType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRemoveLinkExpiryType(description={!r})'.format(
            self._description_value,
        )

SharedContentRemoveLinkExpiryType_validator = bv.Struct(SharedContentRemoveLinkExpiryType)

class SharedContentRemoveLinkPasswordDetails(bb.Struct):
    """
    Removed link password of shared file/folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentRemoveLinkPasswordDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRemoveLinkPasswordDetails()'

SharedContentRemoveLinkPasswordDetails_validator = bv.Struct(SharedContentRemoveLinkPasswordDetails)

class SharedContentRemoveLinkPasswordType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentRemoveLinkPasswordType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRemoveLinkPasswordType(description={!r})'.format(
            self._description_value,
        )

SharedContentRemoveLinkPasswordType_validator = bv.Struct(SharedContentRemoveLinkPasswordType)

class SharedContentRemoveMemberDetails(bb.Struct):
    """
    Removed user/group from shared file/folder.

    :ivar team_log.SharedContentRemoveMemberDetails.shared_content_access_level:
        Shared content access level.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_content_access_level=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level

    @property
    def shared_content_access_level(self):
        """
        Shared content access level.

        :rtype: sharing.AccessLevel
        """
        if self._shared_content_access_level_present:
            return self._shared_content_access_level_value
        else:
            return None

    @shared_content_access_level.setter
    def shared_content_access_level(self, val):
        if val is None:
            del self.shared_content_access_level
            return
        self._shared_content_access_level_validator.validate_type_only(val)
        self._shared_content_access_level_value = val
        self._shared_content_access_level_present = True

    @shared_content_access_level.deleter
    def shared_content_access_level(self):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentRemoveMemberDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRemoveMemberDetails(shared_content_access_level={!r})'.format(
            self._shared_content_access_level_value,
        )

SharedContentRemoveMemberDetails_validator = bv.Struct(SharedContentRemoveMemberDetails)

class SharedContentRemoveMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentRemoveMemberType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRemoveMemberType(description={!r})'.format(
            self._description_value,
        )

SharedContentRemoveMemberType_validator = bv.Struct(SharedContentRemoveMemberType)

class SharedContentRequestAccessDetails(bb.Struct):
    """
    Requested access to shared file/folder.

    :ivar team_log.SharedContentRequestAccessDetails.shared_content_link: Shared
        content link.
    """

    __slots__ = [
        '_shared_content_link_value',
        '_shared_content_link_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_content_link=None):
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link

    @property
    def shared_content_link(self):
        """
        Shared content link.

        :rtype: str
        """
        if self._shared_content_link_present:
            return self._shared_content_link_value
        else:
            return None

    @shared_content_link.setter
    def shared_content_link(self, val):
        if val is None:
            del self.shared_content_link
            return
        val = self._shared_content_link_validator.validate(val)
        self._shared_content_link_value = val
        self._shared_content_link_present = True

    @shared_content_link.deleter
    def shared_content_link(self):
        self._shared_content_link_value = None
        self._shared_content_link_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentRequestAccessDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRequestAccessDetails(shared_content_link={!r})'.format(
            self._shared_content_link_value,
        )

SharedContentRequestAccessDetails_validator = bv.Struct(SharedContentRequestAccessDetails)

class SharedContentRequestAccessType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentRequestAccessType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRequestAccessType(description={!r})'.format(
            self._description_value,
        )

SharedContentRequestAccessType_validator = bv.Struct(SharedContentRequestAccessType)

class SharedContentUnshareDetails(bb.Struct):
    """
    Unshared file/folder by clearing membership and turning off link.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentUnshareDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentUnshareDetails()'

SharedContentUnshareDetails_validator = bv.Struct(SharedContentUnshareDetails)

class SharedContentUnshareType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentUnshareType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentUnshareType(description={!r})'.format(
            self._description_value,
        )

SharedContentUnshareType_validator = bv.Struct(SharedContentUnshareType)

class SharedContentViewDetails(bb.Struct):
    """
    Previewed shared file/folder.

    :ivar team_log.SharedContentViewDetails.shared_content_link: Shared content
        link.
    :ivar team_log.SharedContentViewDetails.shared_content_owner: The shared
        content owner.
    :ivar team_log.SharedContentViewDetails.shared_content_access_level: Shared
        content access level.
    """

    __slots__ = [
        '_shared_content_link_value',
        '_shared_content_link_present',
        '_shared_content_owner_value',
        '_shared_content_owner_present',
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_link=None,
                 shared_content_access_level=None,
                 shared_content_owner=None):
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        self._shared_content_owner_value = None
        self._shared_content_owner_present = False
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link
        if shared_content_owner is not None:
            self.shared_content_owner = shared_content_owner
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level

    @property
    def shared_content_link(self):
        """
        Shared content link.

        :rtype: str
        """
        if self._shared_content_link_present:
            return self._shared_content_link_value
        else:
            raise AttributeError("missing required field 'shared_content_link'")

    @shared_content_link.setter
    def shared_content_link(self, val):
        val = self._shared_content_link_validator.validate(val)
        self._shared_content_link_value = val
        self._shared_content_link_present = True

    @shared_content_link.deleter
    def shared_content_link(self):
        self._shared_content_link_value = None
        self._shared_content_link_present = False

    @property
    def shared_content_owner(self):
        """
        The shared content owner.

        :rtype: UserLogInfo
        """
        if self._shared_content_owner_present:
            return self._shared_content_owner_value
        else:
            return None

    @shared_content_owner.setter
    def shared_content_owner(self, val):
        if val is None:
            del self.shared_content_owner
            return
        self._shared_content_owner_validator.validate_type_only(val)
        self._shared_content_owner_value = val
        self._shared_content_owner_present = True

    @shared_content_owner.deleter
    def shared_content_owner(self):
        self._shared_content_owner_value = None
        self._shared_content_owner_present = False

    @property
    def shared_content_access_level(self):
        """
        Shared content access level.

        :rtype: sharing.AccessLevel
        """
        if self._shared_content_access_level_present:
            return self._shared_content_access_level_value
        else:
            raise AttributeError("missing required field 'shared_content_access_level'")

    @shared_content_access_level.setter
    def shared_content_access_level(self, val):
        self._shared_content_access_level_validator.validate_type_only(val)
        self._shared_content_access_level_value = val
        self._shared_content_access_level_present = True

    @shared_content_access_level.deleter
    def shared_content_access_level(self):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentViewDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentViewDetails(shared_content_link={!r}, shared_content_access_level={!r}, shared_content_owner={!r})'.format(
            self._shared_content_link_value,
            self._shared_content_access_level_value,
            self._shared_content_owner_value,
        )

SharedContentViewDetails_validator = bv.Struct(SharedContentViewDetails)

class SharedContentViewType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentViewType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentViewType(description={!r})'.format(
            self._description_value,
        )

SharedContentViewType_validator = bv.Struct(SharedContentViewType)

class SharedFolderChangeLinkPolicyDetails(bb.Struct):
    """
    Changed who can access shared folder via link.

    :ivar team_log.SharedFolderChangeLinkPolicyDetails.new_value: New shared
        folder link policy.
    :ivar team_log.SharedFolderChangeLinkPolicyDetails.previous_value: Previous
        shared folder link policy. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New shared folder link policy.

        :rtype: sharing.SharedLinkPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous shared folder link policy. Might be missing due to historical
        data gap.

        :rtype: sharing.SharedLinkPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderChangeLinkPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderChangeLinkPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedFolderChangeLinkPolicyDetails_validator = bv.Struct(SharedFolderChangeLinkPolicyDetails)

class SharedFolderChangeLinkPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderChangeLinkPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderChangeLinkPolicyType(description={!r})'.format(
            self._description_value,
        )

SharedFolderChangeLinkPolicyType_validator = bv.Struct(SharedFolderChangeLinkPolicyType)

class SharedFolderChangeMembersInheritancePolicyDetails(bb.Struct):
    """
    Changed whether shared folder inherits members from parent folder.

    :ivar team_log.SharedFolderChangeMembersInheritancePolicyDetails.new_value:
        New member inheritance policy.
    :ivar
        team_log.SharedFolderChangeMembersInheritancePolicyDetails.previous_value:
        Previous member inheritance policy. Might be missing due to historical
        data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New member inheritance policy.

        :rtype: SharedFolderMembersInheritancePolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous member inheritance policy. Might be missing due to historical
        data gap.

        :rtype: SharedFolderMembersInheritancePolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderChangeMembersInheritancePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderChangeMembersInheritancePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedFolderChangeMembersInheritancePolicyDetails_validator = bv.Struct(SharedFolderChangeMembersInheritancePolicyDetails)

class SharedFolderChangeMembersInheritancePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderChangeMembersInheritancePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderChangeMembersInheritancePolicyType(description={!r})'.format(
            self._description_value,
        )

SharedFolderChangeMembersInheritancePolicyType_validator = bv.Struct(SharedFolderChangeMembersInheritancePolicyType)

class SharedFolderChangeMembersManagementPolicyDetails(bb.Struct):
    """
    Changed who can add/remove members of shared folder.

    :ivar team_log.SharedFolderChangeMembersManagementPolicyDetails.new_value:
        New members management policy.
    :ivar
        team_log.SharedFolderChangeMembersManagementPolicyDetails.previous_value:
        Previous members management policy. Might be missing due to historical
        data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New members management policy.

        :rtype: sharing.AclUpdatePolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous members management policy. Might be missing due to historical
        data gap.

        :rtype: sharing.AclUpdatePolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderChangeMembersManagementPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderChangeMembersManagementPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedFolderChangeMembersManagementPolicyDetails_validator = bv.Struct(SharedFolderChangeMembersManagementPolicyDetails)

class SharedFolderChangeMembersManagementPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderChangeMembersManagementPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderChangeMembersManagementPolicyType(description={!r})'.format(
            self._description_value,
        )

SharedFolderChangeMembersManagementPolicyType_validator = bv.Struct(SharedFolderChangeMembersManagementPolicyType)

class SharedFolderChangeMembersPolicyDetails(bb.Struct):
    """
    Changed who can become member of shared folder.

    :ivar team_log.SharedFolderChangeMembersPolicyDetails.new_value: New
        external invite policy.
    :ivar team_log.SharedFolderChangeMembersPolicyDetails.previous_value:
        Previous external invite policy. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New external invite policy.

        :rtype: sharing.MemberPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous external invite policy. Might be missing due to historical data
        gap.

        :rtype: sharing.MemberPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderChangeMembersPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderChangeMembersPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedFolderChangeMembersPolicyDetails_validator = bv.Struct(SharedFolderChangeMembersPolicyDetails)

class SharedFolderChangeMembersPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderChangeMembersPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderChangeMembersPolicyType(description={!r})'.format(
            self._description_value,
        )

SharedFolderChangeMembersPolicyType_validator = bv.Struct(SharedFolderChangeMembersPolicyType)

class SharedFolderCreateDetails(bb.Struct):
    """
    Created shared folder.

    :ivar team_log.SharedFolderCreateDetails.target_ns_id: Target namespace ID.
        Might be missing due to historical data gap.
    """

    __slots__ = [
        '_target_ns_id_value',
        '_target_ns_id_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 target_ns_id=None):
        self._target_ns_id_value = None
        self._target_ns_id_present = False
        if target_ns_id is not None:
            self.target_ns_id = target_ns_id

    @property
    def target_ns_id(self):
        """
        Target namespace ID. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._target_ns_id_present:
            return self._target_ns_id_value
        else:
            return None

    @target_ns_id.setter
    def target_ns_id(self, val):
        if val is None:
            del self.target_ns_id
            return
        val = self._target_ns_id_validator.validate(val)
        self._target_ns_id_value = val
        self._target_ns_id_present = True

    @target_ns_id.deleter
    def target_ns_id(self):
        self._target_ns_id_value = None
        self._target_ns_id_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderCreateDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderCreateDetails(target_ns_id={!r})'.format(
            self._target_ns_id_value,
        )

SharedFolderCreateDetails_validator = bv.Struct(SharedFolderCreateDetails)

class SharedFolderCreateType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderCreateType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderCreateType(description={!r})'.format(
            self._description_value,
        )

SharedFolderCreateType_validator = bv.Struct(SharedFolderCreateType)

class SharedFolderDeclineInvitationDetails(bb.Struct):
    """
    Declined team member's invite to shared folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderDeclineInvitationDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderDeclineInvitationDetails()'

SharedFolderDeclineInvitationDetails_validator = bv.Struct(SharedFolderDeclineInvitationDetails)

class SharedFolderDeclineInvitationType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderDeclineInvitationType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderDeclineInvitationType(description={!r})'.format(
            self._description_value,
        )

SharedFolderDeclineInvitationType_validator = bv.Struct(SharedFolderDeclineInvitationType)

class SharedFolderMembersInheritancePolicy(bb.Union):
    """
    Specifies if a shared folder inherits its members from the parent folder.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    inherit_members = None
    # Attribute is overwritten below the class definition
    dont_inherit_members = None
    # Attribute is overwritten below the class definition
    other = None

    def is_inherit_members(self):
        """
        Check if the union tag is ``inherit_members``.

        :rtype: bool
        """
        return self._tag == 'inherit_members'

    def is_dont_inherit_members(self):
        """
        Check if the union tag is ``dont_inherit_members``.

        :rtype: bool
        """
        return self._tag == 'dont_inherit_members'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderMembersInheritancePolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderMembersInheritancePolicy(%r, %r)' % (self._tag, self._value)

SharedFolderMembersInheritancePolicy_validator = bv.Union(SharedFolderMembersInheritancePolicy)

class SharedFolderMountDetails(bb.Struct):
    """
    Added shared folder to own Dropbox.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderMountDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderMountDetails()'

SharedFolderMountDetails_validator = bv.Struct(SharedFolderMountDetails)

class SharedFolderMountType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderMountType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderMountType(description={!r})'.format(
            self._description_value,
        )

SharedFolderMountType_validator = bv.Struct(SharedFolderMountType)

class SharedFolderNestDetails(bb.Struct):
    """
    Changed parent of shared folder.

    :ivar team_log.SharedFolderNestDetails.previous_parent_ns_id: Previous
        parent namespace ID. Might be missing due to historical data gap.
    :ivar team_log.SharedFolderNestDetails.new_parent_ns_id: New parent
        namespace ID. Might be missing due to historical data gap.
    :ivar team_log.SharedFolderNestDetails.previous_ns_path: Previous namespace
        path. Might be missing due to historical data gap.
    :ivar team_log.SharedFolderNestDetails.new_ns_path: New namespace path.
        Might be missing due to historical data gap.
    """

    __slots__ = [
        '_previous_parent_ns_id_value',
        '_previous_parent_ns_id_present',
        '_new_parent_ns_id_value',
        '_new_parent_ns_id_present',
        '_previous_ns_path_value',
        '_previous_ns_path_present',
        '_new_ns_path_value',
        '_new_ns_path_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 previous_parent_ns_id=None,
                 new_parent_ns_id=None,
                 previous_ns_path=None,
                 new_ns_path=None):
        self._previous_parent_ns_id_value = None
        self._previous_parent_ns_id_present = False
        self._new_parent_ns_id_value = None
        self._new_parent_ns_id_present = False
        self._previous_ns_path_value = None
        self._previous_ns_path_present = False
        self._new_ns_path_value = None
        self._new_ns_path_present = False
        if previous_parent_ns_id is not None:
            self.previous_parent_ns_id = previous_parent_ns_id
        if new_parent_ns_id is not None:
            self.new_parent_ns_id = new_parent_ns_id
        if previous_ns_path is not None:
            self.previous_ns_path = previous_ns_path
        if new_ns_path is not None:
            self.new_ns_path = new_ns_path

    @property
    def previous_parent_ns_id(self):
        """
        Previous parent namespace ID. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._previous_parent_ns_id_present:
            return self._previous_parent_ns_id_value
        else:
            return None

    @previous_parent_ns_id.setter
    def previous_parent_ns_id(self, val):
        if val is None:
            del self.previous_parent_ns_id
            return
        val = self._previous_parent_ns_id_validator.validate(val)
        self._previous_parent_ns_id_value = val
        self._previous_parent_ns_id_present = True

    @previous_parent_ns_id.deleter
    def previous_parent_ns_id(self):
        self._previous_parent_ns_id_value = None
        self._previous_parent_ns_id_present = False

    @property
    def new_parent_ns_id(self):
        """
        New parent namespace ID. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._new_parent_ns_id_present:
            return self._new_parent_ns_id_value
        else:
            return None

    @new_parent_ns_id.setter
    def new_parent_ns_id(self, val):
        if val is None:
            del self.new_parent_ns_id
            return
        val = self._new_parent_ns_id_validator.validate(val)
        self._new_parent_ns_id_value = val
        self._new_parent_ns_id_present = True

    @new_parent_ns_id.deleter
    def new_parent_ns_id(self):
        self._new_parent_ns_id_value = None
        self._new_parent_ns_id_present = False

    @property
    def previous_ns_path(self):
        """
        Previous namespace path. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._previous_ns_path_present:
            return self._previous_ns_path_value
        else:
            return None

    @previous_ns_path.setter
    def previous_ns_path(self, val):
        if val is None:
            del self.previous_ns_path
            return
        val = self._previous_ns_path_validator.validate(val)
        self._previous_ns_path_value = val
        self._previous_ns_path_present = True

    @previous_ns_path.deleter
    def previous_ns_path(self):
        self._previous_ns_path_value = None
        self._previous_ns_path_present = False

    @property
    def new_ns_path(self):
        """
        New namespace path. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._new_ns_path_present:
            return self._new_ns_path_value
        else:
            return None

    @new_ns_path.setter
    def new_ns_path(self, val):
        if val is None:
            del self.new_ns_path
            return
        val = self._new_ns_path_validator.validate(val)
        self._new_ns_path_value = val
        self._new_ns_path_present = True

    @new_ns_path.deleter
    def new_ns_path(self):
        self._new_ns_path_value = None
        self._new_ns_path_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderNestDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderNestDetails(previous_parent_ns_id={!r}, new_parent_ns_id={!r}, previous_ns_path={!r}, new_ns_path={!r})'.format(
            self._previous_parent_ns_id_value,
            self._new_parent_ns_id_value,
            self._previous_ns_path_value,
            self._new_ns_path_value,
        )

SharedFolderNestDetails_validator = bv.Struct(SharedFolderNestDetails)

class SharedFolderNestType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderNestType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderNestType(description={!r})'.format(
            self._description_value,
        )

SharedFolderNestType_validator = bv.Struct(SharedFolderNestType)

class SharedFolderTransferOwnershipDetails(bb.Struct):
    """
    Transferred ownership of shared folder to another member.

    :ivar team_log.SharedFolderTransferOwnershipDetails.previous_owner_email:
        The email address of the previous shared folder owner.
    :ivar team_log.SharedFolderTransferOwnershipDetails.new_owner_email: The
        email address of the new shared folder owner.
    """

    __slots__ = [
        '_previous_owner_email_value',
        '_previous_owner_email_present',
        '_new_owner_email_value',
        '_new_owner_email_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_owner_email=None,
                 previous_owner_email=None):
        self._previous_owner_email_value = None
        self._previous_owner_email_present = False
        self._new_owner_email_value = None
        self._new_owner_email_present = False
        if previous_owner_email is not None:
            self.previous_owner_email = previous_owner_email
        if new_owner_email is not None:
            self.new_owner_email = new_owner_email

    @property
    def previous_owner_email(self):
        """
        The email address of the previous shared folder owner.

        :rtype: str
        """
        if self._previous_owner_email_present:
            return self._previous_owner_email_value
        else:
            return None

    @previous_owner_email.setter
    def previous_owner_email(self, val):
        if val is None:
            del self.previous_owner_email
            return
        val = self._previous_owner_email_validator.validate(val)
        self._previous_owner_email_value = val
        self._previous_owner_email_present = True

    @previous_owner_email.deleter
    def previous_owner_email(self):
        self._previous_owner_email_value = None
        self._previous_owner_email_present = False

    @property
    def new_owner_email(self):
        """
        The email address of the new shared folder owner.

        :rtype: str
        """
        if self._new_owner_email_present:
            return self._new_owner_email_value
        else:
            raise AttributeError("missing required field 'new_owner_email'")

    @new_owner_email.setter
    def new_owner_email(self, val):
        val = self._new_owner_email_validator.validate(val)
        self._new_owner_email_value = val
        self._new_owner_email_present = True

    @new_owner_email.deleter
    def new_owner_email(self):
        self._new_owner_email_value = None
        self._new_owner_email_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderTransferOwnershipDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderTransferOwnershipDetails(new_owner_email={!r}, previous_owner_email={!r})'.format(
            self._new_owner_email_value,
            self._previous_owner_email_value,
        )

SharedFolderTransferOwnershipDetails_validator = bv.Struct(SharedFolderTransferOwnershipDetails)

class SharedFolderTransferOwnershipType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderTransferOwnershipType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderTransferOwnershipType(description={!r})'.format(
            self._description_value,
        )

SharedFolderTransferOwnershipType_validator = bv.Struct(SharedFolderTransferOwnershipType)

class SharedFolderUnmountDetails(bb.Struct):
    """
    Deleted shared folder from Dropbox.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderUnmountDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderUnmountDetails()'

SharedFolderUnmountDetails_validator = bv.Struct(SharedFolderUnmountDetails)

class SharedFolderUnmountType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedFolderUnmountType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedFolderUnmountType(description={!r})'.format(
            self._description_value,
        )

SharedFolderUnmountType_validator = bv.Struct(SharedFolderUnmountType)

class SharedLinkAccessLevel(bb.Union):
    """
    Shared link access level.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    none = None
    # Attribute is overwritten below the class definition
    reader = None
    # Attribute is overwritten below the class definition
    writer = None
    # Attribute is overwritten below the class definition
    other = None

    def is_none(self):
        """
        Check if the union tag is ``none``.

        :rtype: bool
        """
        return self._tag == 'none'

    def is_reader(self):
        """
        Check if the union tag is ``reader``.

        :rtype: bool
        """
        return self._tag == 'reader'

    def is_writer(self):
        """
        Check if the union tag is ``writer``.

        :rtype: bool
        """
        return self._tag == 'writer'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkAccessLevel, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkAccessLevel(%r, %r)' % (self._tag, self._value)

SharedLinkAccessLevel_validator = bv.Union(SharedLinkAccessLevel)

class SharedLinkAddExpiryDetails(bb.Struct):
    """
    Added shared link expiration date.

    :ivar team_log.SharedLinkAddExpiryDetails.new_value: New shared link
        expiration date.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        New shared link expiration date.

        :rtype: datetime.datetime
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkAddExpiryDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkAddExpiryDetails(new_value={!r})'.format(
            self._new_value_value,
        )

SharedLinkAddExpiryDetails_validator = bv.Struct(SharedLinkAddExpiryDetails)

class SharedLinkAddExpiryType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkAddExpiryType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkAddExpiryType(description={!r})'.format(
            self._description_value,
        )

SharedLinkAddExpiryType_validator = bv.Struct(SharedLinkAddExpiryType)

class SharedLinkChangeExpiryDetails(bb.Struct):
    """
    Changed shared link expiration date.

    :ivar team_log.SharedLinkChangeExpiryDetails.new_value: New shared link
        expiration date. Might be missing due to historical data gap.
    :ivar team_log.SharedLinkChangeExpiryDetails.previous_value: Previous shared
        link expiration date. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New shared link expiration date. Might be missing due to historical data
        gap.

        :rtype: datetime.datetime
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous shared link expiration date. Might be missing due to historical
        data gap.

        :rtype: datetime.datetime
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkChangeExpiryDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkChangeExpiryDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedLinkChangeExpiryDetails_validator = bv.Struct(SharedLinkChangeExpiryDetails)

class SharedLinkChangeExpiryType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkChangeExpiryType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkChangeExpiryType(description={!r})'.format(
            self._description_value,
        )

SharedLinkChangeExpiryType_validator = bv.Struct(SharedLinkChangeExpiryType)

class SharedLinkChangeVisibilityDetails(bb.Struct):
    """
    Changed visibility of shared link.

    :ivar team_log.SharedLinkChangeVisibilityDetails.new_value: New shared link
        visibility.
    :ivar team_log.SharedLinkChangeVisibilityDetails.previous_value: Previous
        shared link visibility. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New shared link visibility.

        :rtype: SharedLinkVisibility
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous shared link visibility. Might be missing due to historical data
        gap.

        :rtype: SharedLinkVisibility
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkChangeVisibilityDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkChangeVisibilityDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedLinkChangeVisibilityDetails_validator = bv.Struct(SharedLinkChangeVisibilityDetails)

class SharedLinkChangeVisibilityType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkChangeVisibilityType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkChangeVisibilityType(description={!r})'.format(
            self._description_value,
        )

SharedLinkChangeVisibilityType_validator = bv.Struct(SharedLinkChangeVisibilityType)

class SharedLinkCopyDetails(bb.Struct):
    """
    Added file/folder to Dropbox from shared link.

    :ivar team_log.SharedLinkCopyDetails.shared_link_owner: Shared link owner
        details. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_shared_link_owner_value',
        '_shared_link_owner_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_link_owner=None):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False
        if shared_link_owner is not None:
            self.shared_link_owner = shared_link_owner

    @property
    def shared_link_owner(self):
        """
        Shared link owner details. Might be missing due to historical data gap.

        :rtype: UserLogInfo
        """
        if self._shared_link_owner_present:
            return self._shared_link_owner_value
        else:
            return None

    @shared_link_owner.setter
    def shared_link_owner(self, val):
        if val is None:
            del self.shared_link_owner
            return
        self._shared_link_owner_validator.validate_type_only(val)
        self._shared_link_owner_value = val
        self._shared_link_owner_present = True

    @shared_link_owner.deleter
    def shared_link_owner(self):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkCopyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkCopyDetails(shared_link_owner={!r})'.format(
            self._shared_link_owner_value,
        )

SharedLinkCopyDetails_validator = bv.Struct(SharedLinkCopyDetails)

class SharedLinkCopyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkCopyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkCopyType(description={!r})'.format(
            self._description_value,
        )

SharedLinkCopyType_validator = bv.Struct(SharedLinkCopyType)

class SharedLinkCreateDetails(bb.Struct):
    """
    Created shared link.

    :ivar team_log.SharedLinkCreateDetails.shared_link_access_level: Defines who
        can access the shared link. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_shared_link_access_level_value',
        '_shared_link_access_level_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_link_access_level=None):
        self._shared_link_access_level_value = None
        self._shared_link_access_level_present = False
        if shared_link_access_level is not None:
            self.shared_link_access_level = shared_link_access_level

    @property
    def shared_link_access_level(self):
        """
        Defines who can access the shared link. Might be missing due to
        historical data gap.

        :rtype: SharedLinkAccessLevel
        """
        if self._shared_link_access_level_present:
            return self._shared_link_access_level_value
        else:
            return None

    @shared_link_access_level.setter
    def shared_link_access_level(self, val):
        if val is None:
            del self.shared_link_access_level
            return
        self._shared_link_access_level_validator.validate_type_only(val)
        self._shared_link_access_level_value = val
        self._shared_link_access_level_present = True

    @shared_link_access_level.deleter
    def shared_link_access_level(self):
        self._shared_link_access_level_value = None
        self._shared_link_access_level_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkCreateDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkCreateDetails(shared_link_access_level={!r})'.format(
            self._shared_link_access_level_value,
        )

SharedLinkCreateDetails_validator = bv.Struct(SharedLinkCreateDetails)

class SharedLinkCreateType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkCreateType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkCreateType(description={!r})'.format(
            self._description_value,
        )

SharedLinkCreateType_validator = bv.Struct(SharedLinkCreateType)

class SharedLinkDisableDetails(bb.Struct):
    """
    Removed shared link.

    :ivar team_log.SharedLinkDisableDetails.shared_link_owner: Shared link owner
        details. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_shared_link_owner_value',
        '_shared_link_owner_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_link_owner=None):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False
        if shared_link_owner is not None:
            self.shared_link_owner = shared_link_owner

    @property
    def shared_link_owner(self):
        """
        Shared link owner details. Might be missing due to historical data gap.

        :rtype: UserLogInfo
        """
        if self._shared_link_owner_present:
            return self._shared_link_owner_value
        else:
            return None

    @shared_link_owner.setter
    def shared_link_owner(self, val):
        if val is None:
            del self.shared_link_owner
            return
        self._shared_link_owner_validator.validate_type_only(val)
        self._shared_link_owner_value = val
        self._shared_link_owner_present = True

    @shared_link_owner.deleter
    def shared_link_owner(self):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkDisableDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkDisableDetails(shared_link_owner={!r})'.format(
            self._shared_link_owner_value,
        )

SharedLinkDisableDetails_validator = bv.Struct(SharedLinkDisableDetails)

class SharedLinkDisableType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkDisableType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkDisableType(description={!r})'.format(
            self._description_value,
        )

SharedLinkDisableType_validator = bv.Struct(SharedLinkDisableType)

class SharedLinkDownloadDetails(bb.Struct):
    """
    Downloaded file/folder from shared link.

    :ivar team_log.SharedLinkDownloadDetails.shared_link_owner: Shared link
        owner details. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_shared_link_owner_value',
        '_shared_link_owner_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_link_owner=None):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False
        if shared_link_owner is not None:
            self.shared_link_owner = shared_link_owner

    @property
    def shared_link_owner(self):
        """
        Shared link owner details. Might be missing due to historical data gap.

        :rtype: UserLogInfo
        """
        if self._shared_link_owner_present:
            return self._shared_link_owner_value
        else:
            return None

    @shared_link_owner.setter
    def shared_link_owner(self, val):
        if val is None:
            del self.shared_link_owner
            return
        self._shared_link_owner_validator.validate_type_only(val)
        self._shared_link_owner_value = val
        self._shared_link_owner_present = True

    @shared_link_owner.deleter
    def shared_link_owner(self):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkDownloadDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkDownloadDetails(shared_link_owner={!r})'.format(
            self._shared_link_owner_value,
        )

SharedLinkDownloadDetails_validator = bv.Struct(SharedLinkDownloadDetails)

class SharedLinkDownloadType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkDownloadType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkDownloadType(description={!r})'.format(
            self._description_value,
        )

SharedLinkDownloadType_validator = bv.Struct(SharedLinkDownloadType)

class SharedLinkRemoveExpiryDetails(bb.Struct):
    """
    Removed shared link expiration date.

    :ivar team_log.SharedLinkRemoveExpiryDetails.previous_value: Previous shared
        link expiration date. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 previous_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def previous_value(self):
        """
        Previous shared link expiration date. Might be missing due to historical
        data gap.

        :rtype: datetime.datetime
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkRemoveExpiryDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkRemoveExpiryDetails(previous_value={!r})'.format(
            self._previous_value_value,
        )

SharedLinkRemoveExpiryDetails_validator = bv.Struct(SharedLinkRemoveExpiryDetails)

class SharedLinkRemoveExpiryType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkRemoveExpiryType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkRemoveExpiryType(description={!r})'.format(
            self._description_value,
        )

SharedLinkRemoveExpiryType_validator = bv.Struct(SharedLinkRemoveExpiryType)

class SharedLinkShareDetails(bb.Struct):
    """
    Added members as audience of shared link.

    :ivar team_log.SharedLinkShareDetails.shared_link_owner: Shared link owner
        details. Might be missing due to historical data gap.
    :ivar team_log.SharedLinkShareDetails.external_users: Users without a
        Dropbox account that were added as shared link audience.
    """

    __slots__ = [
        '_shared_link_owner_value',
        '_shared_link_owner_present',
        '_external_users_value',
        '_external_users_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_link_owner=None,
                 external_users=None):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False
        self._external_users_value = None
        self._external_users_present = False
        if shared_link_owner is not None:
            self.shared_link_owner = shared_link_owner
        if external_users is not None:
            self.external_users = external_users

    @property
    def shared_link_owner(self):
        """
        Shared link owner details. Might be missing due to historical data gap.

        :rtype: UserLogInfo
        """
        if self._shared_link_owner_present:
            return self._shared_link_owner_value
        else:
            return None

    @shared_link_owner.setter
    def shared_link_owner(self, val):
        if val is None:
            del self.shared_link_owner
            return
        self._shared_link_owner_validator.validate_type_only(val)
        self._shared_link_owner_value = val
        self._shared_link_owner_present = True

    @shared_link_owner.deleter
    def shared_link_owner(self):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False

    @property
    def external_users(self):
        """
        Users without a Dropbox account that were added as shared link audience.

        :rtype: list of [ExternalUserLogInfo]
        """
        if self._external_users_present:
            return self._external_users_value
        else:
            return None

    @external_users.setter
    def external_users(self, val):
        if val is None:
            del self.external_users
            return
        val = self._external_users_validator.validate(val)
        self._external_users_value = val
        self._external_users_present = True

    @external_users.deleter
    def external_users(self):
        self._external_users_value = None
        self._external_users_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkShareDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkShareDetails(shared_link_owner={!r}, external_users={!r})'.format(
            self._shared_link_owner_value,
            self._external_users_value,
        )

SharedLinkShareDetails_validator = bv.Struct(SharedLinkShareDetails)

class SharedLinkShareType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkShareType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkShareType(description={!r})'.format(
            self._description_value,
        )

SharedLinkShareType_validator = bv.Struct(SharedLinkShareType)

class SharedLinkViewDetails(bb.Struct):
    """
    Opened shared link.

    :ivar team_log.SharedLinkViewDetails.shared_link_owner: Shared link owner
        details. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_shared_link_owner_value',
        '_shared_link_owner_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_link_owner=None):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False
        if shared_link_owner is not None:
            self.shared_link_owner = shared_link_owner

    @property
    def shared_link_owner(self):
        """
        Shared link owner details. Might be missing due to historical data gap.

        :rtype: UserLogInfo
        """
        if self._shared_link_owner_present:
            return self._shared_link_owner_value
        else:
            return None

    @shared_link_owner.setter
    def shared_link_owner(self, val):
        if val is None:
            del self.shared_link_owner
            return
        self._shared_link_owner_validator.validate_type_only(val)
        self._shared_link_owner_value = val
        self._shared_link_owner_present = True

    @shared_link_owner.deleter
    def shared_link_owner(self):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkViewDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkViewDetails(shared_link_owner={!r})'.format(
            self._shared_link_owner_value,
        )

SharedLinkViewDetails_validator = bv.Struct(SharedLinkViewDetails)

class SharedLinkViewType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkViewType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkViewType(description={!r})'.format(
            self._description_value,
        )

SharedLinkViewType_validator = bv.Struct(SharedLinkViewType)

class SharedLinkVisibility(bb.Union):
    """
    Defines who has access to a shared link.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    password = None
    # Attribute is overwritten below the class definition
    public = None
    # Attribute is overwritten below the class definition
    team_only = None
    # Attribute is overwritten below the class definition
    other = None

    def is_password(self):
        """
        Check if the union tag is ``password``.

        :rtype: bool
        """
        return self._tag == 'password'

    def is_public(self):
        """
        Check if the union tag is ``public``.

        :rtype: bool
        """
        return self._tag == 'public'

    def is_team_only(self):
        """
        Check if the union tag is ``team_only``.

        :rtype: bool
        """
        return self._tag == 'team_only'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkVisibility, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkVisibility(%r, %r)' % (self._tag, self._value)

SharedLinkVisibility_validator = bv.Union(SharedLinkVisibility)

class SharedNoteOpenedDetails(bb.Struct):
    """
    Opened shared Paper doc.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedNoteOpenedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedNoteOpenedDetails()'

SharedNoteOpenedDetails_validator = bv.Struct(SharedNoteOpenedDetails)

class SharedNoteOpenedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedNoteOpenedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedNoteOpenedType(description={!r})'.format(
            self._description_value,
        )

SharedNoteOpenedType_validator = bv.Struct(SharedNoteOpenedType)

class SharingChangeFolderJoinPolicyDetails(bb.Struct):
    """
    Changed whether team members can join shared folders owned outside team.

    :ivar team_log.SharingChangeFolderJoinPolicyDetails.new_value: New external
        join policy.
    :ivar team_log.SharingChangeFolderJoinPolicyDetails.previous_value: Previous
        external join policy. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New external join policy.

        :rtype: SharingFolderJoinPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous external join policy. Might be missing due to historical data
        gap.

        :rtype: SharingFolderJoinPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharingChangeFolderJoinPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharingChangeFolderJoinPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharingChangeFolderJoinPolicyDetails_validator = bv.Struct(SharingChangeFolderJoinPolicyDetails)

class SharingChangeFolderJoinPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharingChangeFolderJoinPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharingChangeFolderJoinPolicyType(description={!r})'.format(
            self._description_value,
        )

SharingChangeFolderJoinPolicyType_validator = bv.Struct(SharingChangeFolderJoinPolicyType)

class SharingChangeLinkPolicyDetails(bb.Struct):
    """
    Changed whether members can share links outside team, and if links are
    accessible only by team members or anyone by default.

    :ivar team_log.SharingChangeLinkPolicyDetails.new_value: New external link
        accessibility policy.
    :ivar team_log.SharingChangeLinkPolicyDetails.previous_value: Previous
        external link accessibility policy. Might be missing due to historical
        data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New external link accessibility policy.

        :rtype: SharingLinkPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous external link accessibility policy. Might be missing due to
        historical data gap.

        :rtype: SharingLinkPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharingChangeLinkPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharingChangeLinkPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharingChangeLinkPolicyDetails_validator = bv.Struct(SharingChangeLinkPolicyDetails)

class SharingChangeLinkPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharingChangeLinkPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharingChangeLinkPolicyType(description={!r})'.format(
            self._description_value,
        )

SharingChangeLinkPolicyType_validator = bv.Struct(SharingChangeLinkPolicyType)

class SharingChangeMemberPolicyDetails(bb.Struct):
    """
    Changed whether members can share files/folders outside team.

    :ivar team_log.SharingChangeMemberPolicyDetails.new_value: New external
        invite policy.
    :ivar team_log.SharingChangeMemberPolicyDetails.previous_value: Previous
        external invite policy. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New external invite policy.

        :rtype: SharingMemberPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous external invite policy. Might be missing due to historical data
        gap.

        :rtype: SharingMemberPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharingChangeMemberPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharingChangeMemberPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharingChangeMemberPolicyDetails_validator = bv.Struct(SharingChangeMemberPolicyDetails)

class SharingChangeMemberPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharingChangeMemberPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharingChangeMemberPolicyType(description={!r})'.format(
            self._description_value,
        )

SharingChangeMemberPolicyType_validator = bv.Struct(SharingChangeMemberPolicyType)

class SharingFolderJoinPolicy(bb.Union):
    """
    Policy for controlling if team members can join shared folders owned by non
    team members.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    from_anyone = None
    # Attribute is overwritten below the class definition
    from_team_only = None
    # Attribute is overwritten below the class definition
    other = None

    def is_from_anyone(self):
        """
        Check if the union tag is ``from_anyone``.

        :rtype: bool
        """
        return self._tag == 'from_anyone'

    def is_from_team_only(self):
        """
        Check if the union tag is ``from_team_only``.

        :rtype: bool
        """
        return self._tag == 'from_team_only'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharingFolderJoinPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharingFolderJoinPolicy(%r, %r)' % (self._tag, self._value)

SharingFolderJoinPolicy_validator = bv.Union(SharingFolderJoinPolicy)

class SharingLinkPolicy(bb.Union):
    """
    Policy for controlling if team members can share links externally

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    default_private = None
    # Attribute is overwritten below the class definition
    default_public = None
    # Attribute is overwritten below the class definition
    only_private = None
    # Attribute is overwritten below the class definition
    other = None

    def is_default_private(self):
        """
        Check if the union tag is ``default_private``.

        :rtype: bool
        """
        return self._tag == 'default_private'

    def is_default_public(self):
        """
        Check if the union tag is ``default_public``.

        :rtype: bool
        """
        return self._tag == 'default_public'

    def is_only_private(self):
        """
        Check if the union tag is ``only_private``.

        :rtype: bool
        """
        return self._tag == 'only_private'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharingLinkPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharingLinkPolicy(%r, %r)' % (self._tag, self._value)

SharingLinkPolicy_validator = bv.Union(SharingLinkPolicy)

class SharingMemberPolicy(bb.Union):
    """
    External sharing policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    allow = None
    # Attribute is overwritten below the class definition
    forbid = None
    # Attribute is overwritten below the class definition
    other = None

    def is_allow(self):
        """
        Check if the union tag is ``allow``.

        :rtype: bool
        """
        return self._tag == 'allow'

    def is_forbid(self):
        """
        Check if the union tag is ``forbid``.

        :rtype: bool
        """
        return self._tag == 'forbid'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharingMemberPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharingMemberPolicy(%r, %r)' % (self._tag, self._value)

SharingMemberPolicy_validator = bv.Union(SharingMemberPolicy)

class ShmodelGroupShareDetails(bb.Struct):
    """
    Shared link with group.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShmodelGroupShareDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShmodelGroupShareDetails()'

ShmodelGroupShareDetails_validator = bv.Struct(ShmodelGroupShareDetails)

class ShmodelGroupShareType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShmodelGroupShareType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShmodelGroupShareType(description={!r})'.format(
            self._description_value,
        )

ShmodelGroupShareType_validator = bv.Struct(ShmodelGroupShareType)

class ShowcaseAccessGrantedDetails(bb.Struct):
    """
    Granted access to showcase.

    :ivar team_log.ShowcaseAccessGrantedDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseAccessGrantedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseAccessGrantedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseAccessGrantedDetails_validator = bv.Struct(ShowcaseAccessGrantedDetails)

class ShowcaseAccessGrantedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseAccessGrantedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseAccessGrantedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseAccessGrantedType_validator = bv.Struct(ShowcaseAccessGrantedType)

class ShowcaseAddMemberDetails(bb.Struct):
    """
    Added member to showcase.

    :ivar team_log.ShowcaseAddMemberDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseAddMemberDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseAddMemberDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseAddMemberDetails_validator = bv.Struct(ShowcaseAddMemberDetails)

class ShowcaseAddMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseAddMemberType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseAddMemberType(description={!r})'.format(
            self._description_value,
        )

ShowcaseAddMemberType_validator = bv.Struct(ShowcaseAddMemberType)

class ShowcaseArchivedDetails(bb.Struct):
    """
    Archived showcase.

    :ivar team_log.ShowcaseArchivedDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseArchivedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseArchivedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseArchivedDetails_validator = bv.Struct(ShowcaseArchivedDetails)

class ShowcaseArchivedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseArchivedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseArchivedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseArchivedType_validator = bv.Struct(ShowcaseArchivedType)

class ShowcaseChangeDownloadPolicyDetails(bb.Struct):
    """
    Enabled/disabled downloading files from Dropbox Showcase for team.

    :ivar team_log.ShowcaseChangeDownloadPolicyDetails.new_value: New Dropbox
        Showcase download policy.
    :ivar team_log.ShowcaseChangeDownloadPolicyDetails.previous_value: Previous
        Dropbox Showcase download policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Dropbox Showcase download policy.

        :rtype: ShowcaseDownloadPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Dropbox Showcase download policy.

        :rtype: ShowcaseDownloadPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseChangeDownloadPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseChangeDownloadPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

ShowcaseChangeDownloadPolicyDetails_validator = bv.Struct(ShowcaseChangeDownloadPolicyDetails)

class ShowcaseChangeDownloadPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseChangeDownloadPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseChangeDownloadPolicyType(description={!r})'.format(
            self._description_value,
        )

ShowcaseChangeDownloadPolicyType_validator = bv.Struct(ShowcaseChangeDownloadPolicyType)

class ShowcaseChangeEnabledPolicyDetails(bb.Struct):
    """
    Enabled/disabled Dropbox Showcase for team.

    :ivar team_log.ShowcaseChangeEnabledPolicyDetails.new_value: New Dropbox
        Showcase policy.
    :ivar team_log.ShowcaseChangeEnabledPolicyDetails.previous_value: Previous
        Dropbox Showcase policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Dropbox Showcase policy.

        :rtype: ShowcaseEnabledPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Dropbox Showcase policy.

        :rtype: ShowcaseEnabledPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseChangeEnabledPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseChangeEnabledPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

ShowcaseChangeEnabledPolicyDetails_validator = bv.Struct(ShowcaseChangeEnabledPolicyDetails)

class ShowcaseChangeEnabledPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseChangeEnabledPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseChangeEnabledPolicyType(description={!r})'.format(
            self._description_value,
        )

ShowcaseChangeEnabledPolicyType_validator = bv.Struct(ShowcaseChangeEnabledPolicyType)

class ShowcaseChangeExternalSharingPolicyDetails(bb.Struct):
    """
    Enabled/disabled sharing Dropbox Showcase externally for team.

    :ivar team_log.ShowcaseChangeExternalSharingPolicyDetails.new_value: New
        Dropbox Showcase external sharing policy.
    :ivar team_log.ShowcaseChangeExternalSharingPolicyDetails.previous_value:
        Previous Dropbox Showcase external sharing policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Dropbox Showcase external sharing policy.

        :rtype: ShowcaseExternalSharingPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Dropbox Showcase external sharing policy.

        :rtype: ShowcaseExternalSharingPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseChangeExternalSharingPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseChangeExternalSharingPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

ShowcaseChangeExternalSharingPolicyDetails_validator = bv.Struct(ShowcaseChangeExternalSharingPolicyDetails)

class ShowcaseChangeExternalSharingPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseChangeExternalSharingPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseChangeExternalSharingPolicyType(description={!r})'.format(
            self._description_value,
        )

ShowcaseChangeExternalSharingPolicyType_validator = bv.Struct(ShowcaseChangeExternalSharingPolicyType)

class ShowcaseCreatedDetails(bb.Struct):
    """
    Created showcase.

    :ivar team_log.ShowcaseCreatedDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseCreatedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseCreatedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseCreatedDetails_validator = bv.Struct(ShowcaseCreatedDetails)

class ShowcaseCreatedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseCreatedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseCreatedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseCreatedType_validator = bv.Struct(ShowcaseCreatedType)

class ShowcaseDeleteCommentDetails(bb.Struct):
    """
    Deleted showcase comment.

    :ivar team_log.ShowcaseDeleteCommentDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.ShowcaseDeleteCommentDetails.comment_text: Comment text.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseDeleteCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseDeleteCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

ShowcaseDeleteCommentDetails_validator = bv.Struct(ShowcaseDeleteCommentDetails)

class ShowcaseDeleteCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseDeleteCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseDeleteCommentType(description={!r})'.format(
            self._description_value,
        )

ShowcaseDeleteCommentType_validator = bv.Struct(ShowcaseDeleteCommentType)

class ShowcaseDocumentLogInfo(bb.Struct):
    """
    Showcase document's logged information.

    :ivar team_log.ShowcaseDocumentLogInfo.showcase_id: Showcase document Id.
    :ivar team_log.ShowcaseDocumentLogInfo.showcase_title: Showcase document
        title.
    """

    __slots__ = [
        '_showcase_id_value',
        '_showcase_id_present',
        '_showcase_title_value',
        '_showcase_title_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 showcase_id=None,
                 showcase_title=None):
        self._showcase_id_value = None
        self._showcase_id_present = False
        self._showcase_title_value = None
        self._showcase_title_present = False
        if showcase_id is not None:
            self.showcase_id = showcase_id
        if showcase_title is not None:
            self.showcase_title = showcase_title

    @property
    def showcase_id(self):
        """
        Showcase document Id.

        :rtype: str
        """
        if self._showcase_id_present:
            return self._showcase_id_value
        else:
            raise AttributeError("missing required field 'showcase_id'")

    @showcase_id.setter
    def showcase_id(self, val):
        val = self._showcase_id_validator.validate(val)
        self._showcase_id_value = val
        self._showcase_id_present = True

    @showcase_id.deleter
    def showcase_id(self):
        self._showcase_id_value = None
        self._showcase_id_present = False

    @property
    def showcase_title(self):
        """
        Showcase document title.

        :rtype: str
        """
        if self._showcase_title_present:
            return self._showcase_title_value
        else:
            raise AttributeError("missing required field 'showcase_title'")

    @showcase_title.setter
    def showcase_title(self, val):
        val = self._showcase_title_validator.validate(val)
        self._showcase_title_value = val
        self._showcase_title_present = True

    @showcase_title.deleter
    def showcase_title(self):
        self._showcase_title_value = None
        self._showcase_title_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseDocumentLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseDocumentLogInfo(showcase_id={!r}, showcase_title={!r})'.format(
            self._showcase_id_value,
            self._showcase_title_value,
        )

ShowcaseDocumentLogInfo_validator = bv.Struct(ShowcaseDocumentLogInfo)

class ShowcaseDownloadPolicy(bb.Union):
    """
    Policy for controlling if files can be downloaded from Showcases by team
    members

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseDownloadPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseDownloadPolicy(%r, %r)' % (self._tag, self._value)

ShowcaseDownloadPolicy_validator = bv.Union(ShowcaseDownloadPolicy)

class ShowcaseEditCommentDetails(bb.Struct):
    """
    Edited showcase comment.

    :ivar team_log.ShowcaseEditCommentDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.ShowcaseEditCommentDetails.comment_text: Comment text.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseEditCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseEditCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

ShowcaseEditCommentDetails_validator = bv.Struct(ShowcaseEditCommentDetails)

class ShowcaseEditCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseEditCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseEditCommentType(description={!r})'.format(
            self._description_value,
        )

ShowcaseEditCommentType_validator = bv.Struct(ShowcaseEditCommentType)

class ShowcaseEditedDetails(bb.Struct):
    """
    Edited showcase.

    :ivar team_log.ShowcaseEditedDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseEditedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseEditedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseEditedDetails_validator = bv.Struct(ShowcaseEditedDetails)

class ShowcaseEditedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseEditedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseEditedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseEditedType_validator = bv.Struct(ShowcaseEditedType)

class ShowcaseEnabledPolicy(bb.Union):
    """
    Policy for controlling whether Showcase is enabled.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseEnabledPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseEnabledPolicy(%r, %r)' % (self._tag, self._value)

ShowcaseEnabledPolicy_validator = bv.Union(ShowcaseEnabledPolicy)

class ShowcaseExternalSharingPolicy(bb.Union):
    """
    Policy for controlling if team members can share Showcases externally.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseExternalSharingPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseExternalSharingPolicy(%r, %r)' % (self._tag, self._value)

ShowcaseExternalSharingPolicy_validator = bv.Union(ShowcaseExternalSharingPolicy)

class ShowcaseFileAddedDetails(bb.Struct):
    """
    Added file to showcase.

    :ivar team_log.ShowcaseFileAddedDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseFileAddedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseFileAddedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseFileAddedDetails_validator = bv.Struct(ShowcaseFileAddedDetails)

class ShowcaseFileAddedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseFileAddedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseFileAddedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseFileAddedType_validator = bv.Struct(ShowcaseFileAddedType)

class ShowcaseFileDownloadDetails(bb.Struct):
    """
    Downloaded file from showcase.

    :ivar team_log.ShowcaseFileDownloadDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.ShowcaseFileDownloadDetails.download_type: Showcase download
        type.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_download_type_value',
        '_download_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 download_type=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._download_type_value = None
        self._download_type_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if download_type is not None:
            self.download_type = download_type

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def download_type(self):
        """
        Showcase download type.

        :rtype: str
        """
        if self._download_type_present:
            return self._download_type_value
        else:
            raise AttributeError("missing required field 'download_type'")

    @download_type.setter
    def download_type(self, val):
        val = self._download_type_validator.validate(val)
        self._download_type_value = val
        self._download_type_present = True

    @download_type.deleter
    def download_type(self):
        self._download_type_value = None
        self._download_type_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseFileDownloadDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseFileDownloadDetails(event_uuid={!r}, download_type={!r})'.format(
            self._event_uuid_value,
            self._download_type_value,
        )

ShowcaseFileDownloadDetails_validator = bv.Struct(ShowcaseFileDownloadDetails)

class ShowcaseFileDownloadType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseFileDownloadType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseFileDownloadType(description={!r})'.format(
            self._description_value,
        )

ShowcaseFileDownloadType_validator = bv.Struct(ShowcaseFileDownloadType)

class ShowcaseFileRemovedDetails(bb.Struct):
    """
    Removed file from showcase.

    :ivar team_log.ShowcaseFileRemovedDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseFileRemovedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseFileRemovedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseFileRemovedDetails_validator = bv.Struct(ShowcaseFileRemovedDetails)

class ShowcaseFileRemovedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseFileRemovedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseFileRemovedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseFileRemovedType_validator = bv.Struct(ShowcaseFileRemovedType)

class ShowcaseFileViewDetails(bb.Struct):
    """
    Viewed file in showcase.

    :ivar team_log.ShowcaseFileViewDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseFileViewDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseFileViewDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseFileViewDetails_validator = bv.Struct(ShowcaseFileViewDetails)

class ShowcaseFileViewType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseFileViewType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseFileViewType(description={!r})'.format(
            self._description_value,
        )

ShowcaseFileViewType_validator = bv.Struct(ShowcaseFileViewType)

class ShowcasePermanentlyDeletedDetails(bb.Struct):
    """
    Permanently deleted showcase.

    :ivar team_log.ShowcasePermanentlyDeletedDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcasePermanentlyDeletedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcasePermanentlyDeletedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcasePermanentlyDeletedDetails_validator = bv.Struct(ShowcasePermanentlyDeletedDetails)

class ShowcasePermanentlyDeletedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcasePermanentlyDeletedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcasePermanentlyDeletedType(description={!r})'.format(
            self._description_value,
        )

ShowcasePermanentlyDeletedType_validator = bv.Struct(ShowcasePermanentlyDeletedType)

class ShowcasePostCommentDetails(bb.Struct):
    """
    Added showcase comment.

    :ivar team_log.ShowcasePostCommentDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.ShowcasePostCommentDetails.comment_text: Comment text.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcasePostCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcasePostCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

ShowcasePostCommentDetails_validator = bv.Struct(ShowcasePostCommentDetails)

class ShowcasePostCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcasePostCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcasePostCommentType(description={!r})'.format(
            self._description_value,
        )

ShowcasePostCommentType_validator = bv.Struct(ShowcasePostCommentType)

class ShowcaseRemoveMemberDetails(bb.Struct):
    """
    Removed member from showcase.

    :ivar team_log.ShowcaseRemoveMemberDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseRemoveMemberDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseRemoveMemberDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseRemoveMemberDetails_validator = bv.Struct(ShowcaseRemoveMemberDetails)

class ShowcaseRemoveMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseRemoveMemberType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseRemoveMemberType(description={!r})'.format(
            self._description_value,
        )

ShowcaseRemoveMemberType_validator = bv.Struct(ShowcaseRemoveMemberType)

class ShowcaseRenamedDetails(bb.Struct):
    """
    Renamed showcase.

    :ivar team_log.ShowcaseRenamedDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseRenamedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseRenamedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseRenamedDetails_validator = bv.Struct(ShowcaseRenamedDetails)

class ShowcaseRenamedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseRenamedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseRenamedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseRenamedType_validator = bv.Struct(ShowcaseRenamedType)

class ShowcaseRequestAccessDetails(bb.Struct):
    """
    Requested access to showcase.

    :ivar team_log.ShowcaseRequestAccessDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseRequestAccessDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseRequestAccessDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseRequestAccessDetails_validator = bv.Struct(ShowcaseRequestAccessDetails)

class ShowcaseRequestAccessType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseRequestAccessType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseRequestAccessType(description={!r})'.format(
            self._description_value,
        )

ShowcaseRequestAccessType_validator = bv.Struct(ShowcaseRequestAccessType)

class ShowcaseResolveCommentDetails(bb.Struct):
    """
    Resolved showcase comment.

    :ivar team_log.ShowcaseResolveCommentDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.ShowcaseResolveCommentDetails.comment_text: Comment text.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseResolveCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseResolveCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

ShowcaseResolveCommentDetails_validator = bv.Struct(ShowcaseResolveCommentDetails)

class ShowcaseResolveCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseResolveCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseResolveCommentType(description={!r})'.format(
            self._description_value,
        )

ShowcaseResolveCommentType_validator = bv.Struct(ShowcaseResolveCommentType)

class ShowcaseRestoredDetails(bb.Struct):
    """
    Unarchived showcase.

    :ivar team_log.ShowcaseRestoredDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseRestoredDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseRestoredDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseRestoredDetails_validator = bv.Struct(ShowcaseRestoredDetails)

class ShowcaseRestoredType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseRestoredType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseRestoredType(description={!r})'.format(
            self._description_value,
        )

ShowcaseRestoredType_validator = bv.Struct(ShowcaseRestoredType)

class ShowcaseTrashedDeprecatedDetails(bb.Struct):
    """
    Deleted showcase (old version).

    :ivar team_log.ShowcaseTrashedDeprecatedDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseTrashedDeprecatedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseTrashedDeprecatedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseTrashedDeprecatedDetails_validator = bv.Struct(ShowcaseTrashedDeprecatedDetails)

class ShowcaseTrashedDeprecatedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseTrashedDeprecatedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseTrashedDeprecatedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseTrashedDeprecatedType_validator = bv.Struct(ShowcaseTrashedDeprecatedType)

class ShowcaseTrashedDetails(bb.Struct):
    """
    Deleted showcase.

    :ivar team_log.ShowcaseTrashedDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseTrashedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseTrashedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseTrashedDetails_validator = bv.Struct(ShowcaseTrashedDetails)

class ShowcaseTrashedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseTrashedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseTrashedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseTrashedType_validator = bv.Struct(ShowcaseTrashedType)

class ShowcaseUnresolveCommentDetails(bb.Struct):
    """
    Unresolved showcase comment.

    :ivar team_log.ShowcaseUnresolveCommentDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.ShowcaseUnresolveCommentDetails.comment_text: Comment text.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseUnresolveCommentDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseUnresolveCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

ShowcaseUnresolveCommentDetails_validator = bv.Struct(ShowcaseUnresolveCommentDetails)

class ShowcaseUnresolveCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseUnresolveCommentType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseUnresolveCommentType(description={!r})'.format(
            self._description_value,
        )

ShowcaseUnresolveCommentType_validator = bv.Struct(ShowcaseUnresolveCommentType)

class ShowcaseUntrashedDeprecatedDetails(bb.Struct):
    """
    Restored showcase (old version).

    :ivar team_log.ShowcaseUntrashedDeprecatedDetails.event_uuid: Event unique
        identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseUntrashedDeprecatedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseUntrashedDeprecatedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseUntrashedDeprecatedDetails_validator = bv.Struct(ShowcaseUntrashedDeprecatedDetails)

class ShowcaseUntrashedDeprecatedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseUntrashedDeprecatedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseUntrashedDeprecatedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseUntrashedDeprecatedType_validator = bv.Struct(ShowcaseUntrashedDeprecatedType)

class ShowcaseUntrashedDetails(bb.Struct):
    """
    Restored showcase.

    :ivar team_log.ShowcaseUntrashedDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseUntrashedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseUntrashedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseUntrashedDetails_validator = bv.Struct(ShowcaseUntrashedDetails)

class ShowcaseUntrashedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseUntrashedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseUntrashedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseUntrashedType_validator = bv.Struct(ShowcaseUntrashedType)

class ShowcaseViewDetails(bb.Struct):
    """
    Viewed showcase.

    :ivar team_log.ShowcaseViewDetails.event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseViewDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseViewDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseViewDetails_validator = bv.Struct(ShowcaseViewDetails)

class ShowcaseViewType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShowcaseViewType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShowcaseViewType(description={!r})'.format(
            self._description_value,
        )

ShowcaseViewType_validator = bv.Struct(ShowcaseViewType)

class SignInAsSessionEndDetails(bb.Struct):
    """
    Ended admin sign-in-as session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SignInAsSessionEndDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SignInAsSessionEndDetails()'

SignInAsSessionEndDetails_validator = bv.Struct(SignInAsSessionEndDetails)

class SignInAsSessionEndType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SignInAsSessionEndType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SignInAsSessionEndType(description={!r})'.format(
            self._description_value,
        )

SignInAsSessionEndType_validator = bv.Struct(SignInAsSessionEndType)

class SignInAsSessionStartDetails(bb.Struct):
    """
    Started admin sign-in-as session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SignInAsSessionStartDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SignInAsSessionStartDetails()'

SignInAsSessionStartDetails_validator = bv.Struct(SignInAsSessionStartDetails)

class SignInAsSessionStartType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SignInAsSessionStartType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SignInAsSessionStartType(description={!r})'.format(
            self._description_value,
        )

SignInAsSessionStartType_validator = bv.Struct(SignInAsSessionStartType)

class SmartSyncChangePolicyDetails(bb.Struct):
    """
    Changed default Smart Sync setting for team members.

    :ivar team_log.SmartSyncChangePolicyDetails.new_value: New smart sync
        policy.
    :ivar team_log.SmartSyncChangePolicyDetails.previous_value: Previous smart
        sync policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New smart sync policy.

        :rtype: team_policies.SmartSyncPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous smart sync policy.

        :rtype: team_policies.SmartSyncPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SmartSyncChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SmartSyncChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SmartSyncChangePolicyDetails_validator = bv.Struct(SmartSyncChangePolicyDetails)

class SmartSyncChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SmartSyncChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SmartSyncChangePolicyType(description={!r})'.format(
            self._description_value,
        )

SmartSyncChangePolicyType_validator = bv.Struct(SmartSyncChangePolicyType)

class SmartSyncCreateAdminPrivilegeReportDetails(bb.Struct):
    """
    Created Smart Sync non-admin devices report.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SmartSyncCreateAdminPrivilegeReportDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SmartSyncCreateAdminPrivilegeReportDetails()'

SmartSyncCreateAdminPrivilegeReportDetails_validator = bv.Struct(SmartSyncCreateAdminPrivilegeReportDetails)

class SmartSyncCreateAdminPrivilegeReportType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SmartSyncCreateAdminPrivilegeReportType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SmartSyncCreateAdminPrivilegeReportType(description={!r})'.format(
            self._description_value,
        )

SmartSyncCreateAdminPrivilegeReportType_validator = bv.Struct(SmartSyncCreateAdminPrivilegeReportType)

class SmartSyncNotOptOutDetails(bb.Struct):
    """
    Opted team into Smart Sync.

    :ivar team_log.SmartSyncNotOptOutDetails.previous_value: Previous Smart Sync
        opt out policy.
    :ivar team_log.SmartSyncNotOptOutDetails.new_value: New Smart Sync opt out
        policy.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous Smart Sync opt out policy.

        :rtype: SmartSyncOptOutPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New Smart Sync opt out policy.

        :rtype: SmartSyncOptOutPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SmartSyncNotOptOutDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SmartSyncNotOptOutDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

SmartSyncNotOptOutDetails_validator = bv.Struct(SmartSyncNotOptOutDetails)

class SmartSyncNotOptOutType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SmartSyncNotOptOutType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SmartSyncNotOptOutType(description={!r})'.format(
            self._description_value,
        )

SmartSyncNotOptOutType_validator = bv.Struct(SmartSyncNotOptOutType)

class SmartSyncOptOutDetails(bb.Struct):
    """
    Opted team out of Smart Sync.

    :ivar team_log.SmartSyncOptOutDetails.previous_value: Previous Smart Sync
        opt out policy.
    :ivar team_log.SmartSyncOptOutDetails.new_value: New Smart Sync opt out
        policy.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous Smart Sync opt out policy.

        :rtype: SmartSyncOptOutPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New Smart Sync opt out policy.

        :rtype: SmartSyncOptOutPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SmartSyncOptOutDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SmartSyncOptOutDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

SmartSyncOptOutDetails_validator = bv.Struct(SmartSyncOptOutDetails)

class SmartSyncOptOutPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    default = None
    # Attribute is overwritten below the class definition
    opted_out = None
    # Attribute is overwritten below the class definition
    other = None

    def is_default(self):
        """
        Check if the union tag is ``default``.

        :rtype: bool
        """
        return self._tag == 'default'

    def is_opted_out(self):
        """
        Check if the union tag is ``opted_out``.

        :rtype: bool
        """
        return self._tag == 'opted_out'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SmartSyncOptOutPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SmartSyncOptOutPolicy(%r, %r)' % (self._tag, self._value)

SmartSyncOptOutPolicy_validator = bv.Union(SmartSyncOptOutPolicy)

class SmartSyncOptOutType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SmartSyncOptOutType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SmartSyncOptOutType(description={!r})'.format(
            self._description_value,
        )

SmartSyncOptOutType_validator = bv.Struct(SmartSyncOptOutType)

class SpaceCapsType(bb.Union):
    """
    Space limit alert policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    hard = None
    # Attribute is overwritten below the class definition
    off = None
    # Attribute is overwritten below the class definition
    soft = None
    # Attribute is overwritten below the class definition
    other = None

    def is_hard(self):
        """
        Check if the union tag is ``hard``.

        :rtype: bool
        """
        return self._tag == 'hard'

    def is_off(self):
        """
        Check if the union tag is ``off``.

        :rtype: bool
        """
        return self._tag == 'off'

    def is_soft(self):
        """
        Check if the union tag is ``soft``.

        :rtype: bool
        """
        return self._tag == 'soft'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SpaceCapsType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SpaceCapsType(%r, %r)' % (self._tag, self._value)

SpaceCapsType_validator = bv.Union(SpaceCapsType)

class SpaceLimitsStatus(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    within_quota = None
    # Attribute is overwritten below the class definition
    near_quota = None
    # Attribute is overwritten below the class definition
    over_quota = None
    # Attribute is overwritten below the class definition
    other = None

    def is_within_quota(self):
        """
        Check if the union tag is ``within_quota``.

        :rtype: bool
        """
        return self._tag == 'within_quota'

    def is_near_quota(self):
        """
        Check if the union tag is ``near_quota``.

        :rtype: bool
        """
        return self._tag == 'near_quota'

    def is_over_quota(self):
        """
        Check if the union tag is ``over_quota``.

        :rtype: bool
        """
        return self._tag == 'over_quota'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SpaceLimitsStatus, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SpaceLimitsStatus(%r, %r)' % (self._tag, self._value)

SpaceLimitsStatus_validator = bv.Union(SpaceLimitsStatus)

class SsoAddCertDetails(bb.Struct):
    """
    Added X.509 certificate for SSO.

    :ivar team_log.SsoAddCertDetails.certificate_details: SSO certificate
        details.
    """

    __slots__ = [
        '_certificate_details_value',
        '_certificate_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 certificate_details=None):
        self._certificate_details_value = None
        self._certificate_details_present = False
        if certificate_details is not None:
            self.certificate_details = certificate_details

    @property
    def certificate_details(self):
        """
        SSO certificate details.

        :rtype: Certificate
        """
        if self._certificate_details_present:
            return self._certificate_details_value
        else:
            raise AttributeError("missing required field 'certificate_details'")

    @certificate_details.setter
    def certificate_details(self, val):
        self._certificate_details_validator.validate_type_only(val)
        self._certificate_details_value = val
        self._certificate_details_present = True

    @certificate_details.deleter
    def certificate_details(self):
        self._certificate_details_value = None
        self._certificate_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoAddCertDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoAddCertDetails(certificate_details={!r})'.format(
            self._certificate_details_value,
        )

SsoAddCertDetails_validator = bv.Struct(SsoAddCertDetails)

class SsoAddCertType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoAddCertType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoAddCertType(description={!r})'.format(
            self._description_value,
        )

SsoAddCertType_validator = bv.Struct(SsoAddCertType)

class SsoAddLoginUrlDetails(bb.Struct):
    """
    Added sign-in URL for SSO.

    :ivar team_log.SsoAddLoginUrlDetails.new_value: New single sign-on login
        URL.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        New single sign-on login URL.

        :rtype: str
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoAddLoginUrlDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoAddLoginUrlDetails(new_value={!r})'.format(
            self._new_value_value,
        )

SsoAddLoginUrlDetails_validator = bv.Struct(SsoAddLoginUrlDetails)

class SsoAddLoginUrlType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoAddLoginUrlType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoAddLoginUrlType(description={!r})'.format(
            self._description_value,
        )

SsoAddLoginUrlType_validator = bv.Struct(SsoAddLoginUrlType)

class SsoAddLogoutUrlDetails(bb.Struct):
    """
    Added sign-out URL for SSO.

    :ivar team_log.SsoAddLogoutUrlDetails.new_value: New single sign-on logout
        URL. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        New single sign-on logout URL. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoAddLogoutUrlDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoAddLogoutUrlDetails(new_value={!r})'.format(
            self._new_value_value,
        )

SsoAddLogoutUrlDetails_validator = bv.Struct(SsoAddLogoutUrlDetails)

class SsoAddLogoutUrlType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoAddLogoutUrlType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoAddLogoutUrlType(description={!r})'.format(
            self._description_value,
        )

SsoAddLogoutUrlType_validator = bv.Struct(SsoAddLogoutUrlType)

class SsoChangeCertDetails(bb.Struct):
    """
    Changed X.509 certificate for SSO.

    :ivar team_log.SsoChangeCertDetails.previous_certificate_details: Previous
        SSO certificate details. Might be missing due to historical data gap.
    :ivar team_log.SsoChangeCertDetails.new_certificate_details: New SSO
        certificate details.
    """

    __slots__ = [
        '_previous_certificate_details_value',
        '_previous_certificate_details_present',
        '_new_certificate_details_value',
        '_new_certificate_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_certificate_details=None,
                 previous_certificate_details=None):
        self._previous_certificate_details_value = None
        self._previous_certificate_details_present = False
        self._new_certificate_details_value = None
        self._new_certificate_details_present = False
        if previous_certificate_details is not None:
            self.previous_certificate_details = previous_certificate_details
        if new_certificate_details is not None:
            self.new_certificate_details = new_certificate_details

    @property
    def previous_certificate_details(self):
        """
        Previous SSO certificate details. Might be missing due to historical
        data gap.

        :rtype: Certificate
        """
        if self._previous_certificate_details_present:
            return self._previous_certificate_details_value
        else:
            return None

    @previous_certificate_details.setter
    def previous_certificate_details(self, val):
        if val is None:
            del self.previous_certificate_details
            return
        self._previous_certificate_details_validator.validate_type_only(val)
        self._previous_certificate_details_value = val
        self._previous_certificate_details_present = True

    @previous_certificate_details.deleter
    def previous_certificate_details(self):
        self._previous_certificate_details_value = None
        self._previous_certificate_details_present = False

    @property
    def new_certificate_details(self):
        """
        New SSO certificate details.

        :rtype: Certificate
        """
        if self._new_certificate_details_present:
            return self._new_certificate_details_value
        else:
            raise AttributeError("missing required field 'new_certificate_details'")

    @new_certificate_details.setter
    def new_certificate_details(self, val):
        self._new_certificate_details_validator.validate_type_only(val)
        self._new_certificate_details_value = val
        self._new_certificate_details_present = True

    @new_certificate_details.deleter
    def new_certificate_details(self):
        self._new_certificate_details_value = None
        self._new_certificate_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoChangeCertDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoChangeCertDetails(new_certificate_details={!r}, previous_certificate_details={!r})'.format(
            self._new_certificate_details_value,
            self._previous_certificate_details_value,
        )

SsoChangeCertDetails_validator = bv.Struct(SsoChangeCertDetails)

class SsoChangeCertType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoChangeCertType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoChangeCertType(description={!r})'.format(
            self._description_value,
        )

SsoChangeCertType_validator = bv.Struct(SsoChangeCertType)

class SsoChangeLoginUrlDetails(bb.Struct):
    """
    Changed sign-in URL for SSO.

    :ivar team_log.SsoChangeLoginUrlDetails.previous_value: Previous single
        sign-on login URL.
    :ivar team_log.SsoChangeLoginUrlDetails.new_value: New single sign-on login
        URL.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous single sign-on login URL.

        :rtype: str
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New single sign-on login URL.

        :rtype: str
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoChangeLoginUrlDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoChangeLoginUrlDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

SsoChangeLoginUrlDetails_validator = bv.Struct(SsoChangeLoginUrlDetails)

class SsoChangeLoginUrlType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoChangeLoginUrlType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoChangeLoginUrlType(description={!r})'.format(
            self._description_value,
        )

SsoChangeLoginUrlType_validator = bv.Struct(SsoChangeLoginUrlType)

class SsoChangeLogoutUrlDetails(bb.Struct):
    """
    Changed sign-out URL for SSO.

    :ivar team_log.SsoChangeLogoutUrlDetails.previous_value: Previous single
        sign-on logout URL. Might be missing due to historical data gap.
    :ivar team_log.SsoChangeLogoutUrlDetails.new_value: New single sign-on
        logout URL. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous single sign-on logout URL. Might be missing due to historical
        data gap.

        :rtype: str
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New single sign-on logout URL. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoChangeLogoutUrlDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoChangeLogoutUrlDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

SsoChangeLogoutUrlDetails_validator = bv.Struct(SsoChangeLogoutUrlDetails)

class SsoChangeLogoutUrlType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoChangeLogoutUrlType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoChangeLogoutUrlType(description={!r})'.format(
            self._description_value,
        )

SsoChangeLogoutUrlType_validator = bv.Struct(SsoChangeLogoutUrlType)

class SsoChangePolicyDetails(bb.Struct):
    """
    Changed single sign-on setting for team.

    :ivar team_log.SsoChangePolicyDetails.new_value: New single sign-on policy.
    :ivar team_log.SsoChangePolicyDetails.previous_value: Previous single
        sign-on policy. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New single sign-on policy.

        :rtype: team_policies.SsoPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous single sign-on policy. Might be missing due to historical data
        gap.

        :rtype: team_policies.SsoPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SsoChangePolicyDetails_validator = bv.Struct(SsoChangePolicyDetails)

class SsoChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoChangePolicyType(description={!r})'.format(
            self._description_value,
        )

SsoChangePolicyType_validator = bv.Struct(SsoChangePolicyType)

class SsoChangeSamlIdentityModeDetails(bb.Struct):
    """
    Changed SAML identity mode for SSO.

    :ivar team_log.SsoChangeSamlIdentityModeDetails.previous_value: Previous
        single sign-on identity mode.
    :ivar team_log.SsoChangeSamlIdentityModeDetails.new_value: New single
        sign-on identity mode.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous single sign-on identity mode.

        :rtype: int
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New single sign-on identity mode.

        :rtype: int
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoChangeSamlIdentityModeDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoChangeSamlIdentityModeDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

SsoChangeSamlIdentityModeDetails_validator = bv.Struct(SsoChangeSamlIdentityModeDetails)

class SsoChangeSamlIdentityModeType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoChangeSamlIdentityModeType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoChangeSamlIdentityModeType(description={!r})'.format(
            self._description_value,
        )

SsoChangeSamlIdentityModeType_validator = bv.Struct(SsoChangeSamlIdentityModeType)

class SsoErrorDetails(bb.Struct):
    """
    Failed to sign in via SSO.

    :ivar team_log.SsoErrorDetails.error_details: Error details.
    """

    __slots__ = [
        '_error_details_value',
        '_error_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 error_details=None):
        self._error_details_value = None
        self._error_details_present = False
        if error_details is not None:
            self.error_details = error_details

    @property
    def error_details(self):
        """
        Error details.

        :rtype: FailureDetailsLogInfo
        """
        if self._error_details_present:
            return self._error_details_value
        else:
            raise AttributeError("missing required field 'error_details'")

    @error_details.setter
    def error_details(self, val):
        self._error_details_validator.validate_type_only(val)
        self._error_details_value = val
        self._error_details_present = True

    @error_details.deleter
    def error_details(self):
        self._error_details_value = None
        self._error_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoErrorDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoErrorDetails(error_details={!r})'.format(
            self._error_details_value,
        )

SsoErrorDetails_validator = bv.Struct(SsoErrorDetails)

class SsoErrorType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoErrorType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoErrorType(description={!r})'.format(
            self._description_value,
        )

SsoErrorType_validator = bv.Struct(SsoErrorType)

class SsoRemoveCertDetails(bb.Struct):
    """
    Removed X.509 certificate for SSO.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoRemoveCertDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoRemoveCertDetails()'

SsoRemoveCertDetails_validator = bv.Struct(SsoRemoveCertDetails)

class SsoRemoveCertType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoRemoveCertType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoRemoveCertType(description={!r})'.format(
            self._description_value,
        )

SsoRemoveCertType_validator = bv.Struct(SsoRemoveCertType)

class SsoRemoveLoginUrlDetails(bb.Struct):
    """
    Removed sign-in URL for SSO.

    :ivar team_log.SsoRemoveLoginUrlDetails.previous_value: Previous single
        sign-on login URL.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def previous_value(self):
        """
        Previous single sign-on login URL.

        :rtype: str
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoRemoveLoginUrlDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoRemoveLoginUrlDetails(previous_value={!r})'.format(
            self._previous_value_value,
        )

SsoRemoveLoginUrlDetails_validator = bv.Struct(SsoRemoveLoginUrlDetails)

class SsoRemoveLoginUrlType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoRemoveLoginUrlType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoRemoveLoginUrlType(description={!r})'.format(
            self._description_value,
        )

SsoRemoveLoginUrlType_validator = bv.Struct(SsoRemoveLoginUrlType)

class SsoRemoveLogoutUrlDetails(bb.Struct):
    """
    Removed sign-out URL for SSO.

    :ivar team_log.SsoRemoveLogoutUrlDetails.previous_value: Previous single
        sign-on logout URL.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def previous_value(self):
        """
        Previous single sign-on logout URL.

        :rtype: str
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoRemoveLogoutUrlDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoRemoveLogoutUrlDetails(previous_value={!r})'.format(
            self._previous_value_value,
        )

SsoRemoveLogoutUrlDetails_validator = bv.Struct(SsoRemoveLogoutUrlDetails)

class SsoRemoveLogoutUrlType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SsoRemoveLogoutUrlType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SsoRemoveLogoutUrlType(description={!r})'.format(
            self._description_value,
        )

SsoRemoveLogoutUrlType_validator = bv.Struct(SsoRemoveLogoutUrlType)

class TeamActivityCreateReportDetails(bb.Struct):
    """
    Created team activity report.

    :ivar team_log.TeamActivityCreateReportDetails.start_date: Report start
        date.
    :ivar team_log.TeamActivityCreateReportDetails.end_date: Report end date.
    """

    __slots__ = [
        '_start_date_value',
        '_start_date_present',
        '_end_date_value',
        '_end_date_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 start_date=None,
                 end_date=None):
        self._start_date_value = None
        self._start_date_present = False
        self._end_date_value = None
        self._end_date_present = False
        if start_date is not None:
            self.start_date = start_date
        if end_date is not None:
            self.end_date = end_date

    @property
    def start_date(self):
        """
        Report start date.

        :rtype: datetime.datetime
        """
        if self._start_date_present:
            return self._start_date_value
        else:
            raise AttributeError("missing required field 'start_date'")

    @start_date.setter
    def start_date(self, val):
        val = self._start_date_validator.validate(val)
        self._start_date_value = val
        self._start_date_present = True

    @start_date.deleter
    def start_date(self):
        self._start_date_value = None
        self._start_date_present = False

    @property
    def end_date(self):
        """
        Report end date.

        :rtype: datetime.datetime
        """
        if self._end_date_present:
            return self._end_date_value
        else:
            raise AttributeError("missing required field 'end_date'")

    @end_date.setter
    def end_date(self, val):
        val = self._end_date_validator.validate(val)
        self._end_date_value = val
        self._end_date_present = True

    @end_date.deleter
    def end_date(self):
        self._end_date_value = None
        self._end_date_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamActivityCreateReportDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamActivityCreateReportDetails(start_date={!r}, end_date={!r})'.format(
            self._start_date_value,
            self._end_date_value,
        )

TeamActivityCreateReportDetails_validator = bv.Struct(TeamActivityCreateReportDetails)

class TeamActivityCreateReportFailDetails(bb.Struct):
    """
    Couldn't generate team activity report.

    :ivar team_log.TeamActivityCreateReportFailDetails.failure_reason: Failure
        reason.
    """

    __slots__ = [
        '_failure_reason_value',
        '_failure_reason_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 failure_reason=None):
        self._failure_reason_value = None
        self._failure_reason_present = False
        if failure_reason is not None:
            self.failure_reason = failure_reason

    @property
    def failure_reason(self):
        """
        Failure reason.

        :rtype: team.TeamReportFailureReason
        """
        if self._failure_reason_present:
            return self._failure_reason_value
        else:
            raise AttributeError("missing required field 'failure_reason'")

    @failure_reason.setter
    def failure_reason(self, val):
        self._failure_reason_validator.validate_type_only(val)
        self._failure_reason_value = val
        self._failure_reason_present = True

    @failure_reason.deleter
    def failure_reason(self):
        self._failure_reason_value = None
        self._failure_reason_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamActivityCreateReportFailDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamActivityCreateReportFailDetails(failure_reason={!r})'.format(
            self._failure_reason_value,
        )

TeamActivityCreateReportFailDetails_validator = bv.Struct(TeamActivityCreateReportFailDetails)

class TeamActivityCreateReportFailType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamActivityCreateReportFailType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamActivityCreateReportFailType(description={!r})'.format(
            self._description_value,
        )

TeamActivityCreateReportFailType_validator = bv.Struct(TeamActivityCreateReportFailType)

class TeamActivityCreateReportType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamActivityCreateReportType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamActivityCreateReportType(description={!r})'.format(
            self._description_value,
        )

TeamActivityCreateReportType_validator = bv.Struct(TeamActivityCreateReportType)

class TeamEvent(bb.Struct):
    """
    An audit log event.

    :ivar team_log.TeamEvent.timestamp: The Dropbox timestamp representing when
        the action was taken.
    :ivar team_log.TeamEvent.event_category: The category that this type of
        action belongs to.
    :ivar team_log.TeamEvent.actor: The entity who actually performed the
        action. Might be missing due to historical data gap.
    :ivar team_log.TeamEvent.origin: The origin from which the actor performed
        the action including information about host, ip address, location,
        session, etc. If the action was performed programmatically via the API
        the origin represents the API client.
    :ivar team_log.TeamEvent.involve_non_team_member: True if the action
        involved a non team member either as the actor or as one of the affected
        users. Might be missing due to historical data gap.
    :ivar team_log.TeamEvent.context: The user or team on whose behalf the actor
        performed the action. Might be missing due to historical data gap.
    :ivar team_log.TeamEvent.participants: Zero or more users and/or groups that
        are affected by the action. Note that this list doesn't include any
        actors or users in context.
    :ivar team_log.TeamEvent.assets: Zero or more content assets involved in the
        action. Currently these include Dropbox files and folders but in the
        future we might add other asset types such as Paper documents, folders,
        projects, etc.
    :ivar team_log.TeamEvent.event_type: The particular type of action taken.
    :ivar team_log.TeamEvent.details: The variable event schema applicable to
        this type of action, instantiated with respect to this particular
        action.
    """

    __slots__ = [
        '_timestamp_value',
        '_timestamp_present',
        '_event_category_value',
        '_event_category_present',
        '_actor_value',
        '_actor_present',
        '_origin_value',
        '_origin_present',
        '_involve_non_team_member_value',
        '_involve_non_team_member_present',
        '_context_value',
        '_context_present',
        '_participants_value',
        '_participants_present',
        '_assets_value',
        '_assets_present',
        '_event_type_value',
        '_event_type_present',
        '_details_value',
        '_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 timestamp=None,
                 event_category=None,
                 event_type=None,
                 details=None,
                 actor=None,
                 origin=None,
                 involve_non_team_member=None,
                 context=None,
                 participants=None,
                 assets=None):
        self._timestamp_value = None
        self._timestamp_present = False
        self._event_category_value = None
        self._event_category_present = False
        self._actor_value = None
        self._actor_present = False
        self._origin_value = None
        self._origin_present = False
        self._involve_non_team_member_value = None
        self._involve_non_team_member_present = False
        self._context_value = None
        self._context_present = False
        self._participants_value = None
        self._participants_present = False
        self._assets_value = None
        self._assets_present = False
        self._event_type_value = None
        self._event_type_present = False
        self._details_value = None
        self._details_present = False
        if timestamp is not None:
            self.timestamp = timestamp
        if event_category is not None:
            self.event_category = event_category
        if actor is not None:
            self.actor = actor
        if origin is not None:
            self.origin = origin
        if involve_non_team_member is not None:
            self.involve_non_team_member = involve_non_team_member
        if context is not None:
            self.context = context
        if participants is not None:
            self.participants = participants
        if assets is not None:
            self.assets = assets
        if event_type is not None:
            self.event_type = event_type
        if details is not None:
            self.details = details

    @property
    def timestamp(self):
        """
        The Dropbox timestamp representing when the action was taken.

        :rtype: datetime.datetime
        """
        if self._timestamp_present:
            return self._timestamp_value
        else:
            raise AttributeError("missing required field 'timestamp'")

    @timestamp.setter
    def timestamp(self, val):
        val = self._timestamp_validator.validate(val)
        self._timestamp_value = val
        self._timestamp_present = True

    @timestamp.deleter
    def timestamp(self):
        self._timestamp_value = None
        self._timestamp_present = False

    @property
    def event_category(self):
        """
        The category that this type of action belongs to.

        :rtype: EventCategory
        """
        if self._event_category_present:
            return self._event_category_value
        else:
            raise AttributeError("missing required field 'event_category'")

    @event_category.setter
    def event_category(self, val):
        self._event_category_validator.validate_type_only(val)
        self._event_category_value = val
        self._event_category_present = True

    @event_category.deleter
    def event_category(self):
        self._event_category_value = None
        self._event_category_present = False

    @property
    def actor(self):
        """
        The entity who actually performed the action. Might be missing due to
        historical data gap.

        :rtype: ActorLogInfo
        """
        if self._actor_present:
            return self._actor_value
        else:
            return None

    @actor.setter
    def actor(self, val):
        if val is None:
            del self.actor
            return
        self._actor_validator.validate_type_only(val)
        self._actor_value = val
        self._actor_present = True

    @actor.deleter
    def actor(self):
        self._actor_value = None
        self._actor_present = False

    @property
    def origin(self):
        """
        The origin from which the actor performed the action including
        information about host, ip address, location, session, etc. If the
        action was performed programmatically via the API the origin represents
        the API client.

        :rtype: OriginLogInfo
        """
        if self._origin_present:
            return self._origin_value
        else:
            return None

    @origin.setter
    def origin(self, val):
        if val is None:
            del self.origin
            return
        self._origin_validator.validate_type_only(val)
        self._origin_value = val
        self._origin_present = True

    @origin.deleter
    def origin(self):
        self._origin_value = None
        self._origin_present = False

    @property
    def involve_non_team_member(self):
        """
        True if the action involved a non team member either as the actor or as
        one of the affected users. Might be missing due to historical data gap.

        :rtype: bool
        """
        if self._involve_non_team_member_present:
            return self._involve_non_team_member_value
        else:
            return None

    @involve_non_team_member.setter
    def involve_non_team_member(self, val):
        if val is None:
            del self.involve_non_team_member
            return
        val = self._involve_non_team_member_validator.validate(val)
        self._involve_non_team_member_value = val
        self._involve_non_team_member_present = True

    @involve_non_team_member.deleter
    def involve_non_team_member(self):
        self._involve_non_team_member_value = None
        self._involve_non_team_member_present = False

    @property
    def context(self):
        """
        The user or team on whose behalf the actor performed the action. Might
        be missing due to historical data gap.

        :rtype: ContextLogInfo
        """
        if self._context_present:
            return self._context_value
        else:
            return None

    @context.setter
    def context(self, val):
        if val is None:
            del self.context
            return
        self._context_validator.validate_type_only(val)
        self._context_value = val
        self._context_present = True

    @context.deleter
    def context(self):
        self._context_value = None
        self._context_present = False

    @property
    def participants(self):
        """
        Zero or more users and/or groups that are affected by the action. Note
        that this list doesn't include any actors or users in context.

        :rtype: list of [ParticipantLogInfo]
        """
        if self._participants_present:
            return self._participants_value
        else:
            return None

    @participants.setter
    def participants(self, val):
        if val is None:
            del self.participants
            return
        val = self._participants_validator.validate(val)
        self._participants_value = val
        self._participants_present = True

    @participants.deleter
    def participants(self):
        self._participants_value = None
        self._participants_present = False

    @property
    def assets(self):
        """
        Zero or more content assets involved in the action. Currently these
        include Dropbox files and folders but in the future we might add other
        asset types such as Paper documents, folders, projects, etc.

        :rtype: list of [AssetLogInfo]
        """
        if self._assets_present:
            return self._assets_value
        else:
            return None

    @assets.setter
    def assets(self, val):
        if val is None:
            del self.assets
            return
        val = self._assets_validator.validate(val)
        self._assets_value = val
        self._assets_present = True

    @assets.deleter
    def assets(self):
        self._assets_value = None
        self._assets_present = False

    @property
    def event_type(self):
        """
        The particular type of action taken.

        :rtype: EventType
        """
        if self._event_type_present:
            return self._event_type_value
        else:
            raise AttributeError("missing required field 'event_type'")

    @event_type.setter
    def event_type(self, val):
        self._event_type_validator.validate_type_only(val)
        self._event_type_value = val
        self._event_type_present = True

    @event_type.deleter
    def event_type(self):
        self._event_type_value = None
        self._event_type_present = False

    @property
    def details(self):
        """
        The variable event schema applicable to this type of action,
        instantiated with respect to this particular action.

        :rtype: EventDetails
        """
        if self._details_present:
            return self._details_value
        else:
            raise AttributeError("missing required field 'details'")

    @details.setter
    def details(self, val):
        self._details_validator.validate_type_only(val)
        self._details_value = val
        self._details_present = True

    @details.deleter
    def details(self):
        self._details_value = None
        self._details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamEvent, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamEvent(timestamp={!r}, event_category={!r}, event_type={!r}, details={!r}, actor={!r}, origin={!r}, involve_non_team_member={!r}, context={!r}, participants={!r}, assets={!r})'.format(
            self._timestamp_value,
            self._event_category_value,
            self._event_type_value,
            self._details_value,
            self._actor_value,
            self._origin_value,
            self._involve_non_team_member_value,
            self._context_value,
            self._participants_value,
            self._assets_value,
        )

TeamEvent_validator = bv.Struct(TeamEvent)

class TeamExtensionsPolicy(bb.Union):
    """
    Policy for controlling whether App Integrations are enabled for the team.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamExtensionsPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamExtensionsPolicy(%r, %r)' % (self._tag, self._value)

TeamExtensionsPolicy_validator = bv.Union(TeamExtensionsPolicy)

class TeamExtensionsPolicyChangedDetails(bb.Struct):
    """
    Changed App Integrations setting for team.

    :ivar team_log.TeamExtensionsPolicyChangedDetails.new_value: New Extensions
        policy.
    :ivar team_log.TeamExtensionsPolicyChangedDetails.previous_value: Previous
        Extensions policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Extensions policy.

        :rtype: TeamExtensionsPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Extensions policy.

        :rtype: TeamExtensionsPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamExtensionsPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamExtensionsPolicyChangedDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

TeamExtensionsPolicyChangedDetails_validator = bv.Struct(TeamExtensionsPolicyChangedDetails)

class TeamExtensionsPolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamExtensionsPolicyChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamExtensionsPolicyChangedType(description={!r})'.format(
            self._description_value,
        )

TeamExtensionsPolicyChangedType_validator = bv.Struct(TeamExtensionsPolicyChangedType)

class TeamFolderChangeStatusDetails(bb.Struct):
    """
    Changed archival status of team folder.

    :ivar team_log.TeamFolderChangeStatusDetails.new_value: New team folder
        status.
    :ivar team_log.TeamFolderChangeStatusDetails.previous_value: Previous team
        folder status. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New team folder status.

        :rtype: team.TeamFolderStatus
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous team folder status. Might be missing due to historical data
        gap.

        :rtype: team.TeamFolderStatus
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamFolderChangeStatusDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamFolderChangeStatusDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

TeamFolderChangeStatusDetails_validator = bv.Struct(TeamFolderChangeStatusDetails)

class TeamFolderChangeStatusType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamFolderChangeStatusType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamFolderChangeStatusType(description={!r})'.format(
            self._description_value,
        )

TeamFolderChangeStatusType_validator = bv.Struct(TeamFolderChangeStatusType)

class TeamFolderCreateDetails(bb.Struct):
    """
    Created team folder in active status.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamFolderCreateDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamFolderCreateDetails()'

TeamFolderCreateDetails_validator = bv.Struct(TeamFolderCreateDetails)

class TeamFolderCreateType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamFolderCreateType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamFolderCreateType(description={!r})'.format(
            self._description_value,
        )

TeamFolderCreateType_validator = bv.Struct(TeamFolderCreateType)

class TeamFolderDowngradeDetails(bb.Struct):
    """
    Downgraded team folder to regular shared folder.

    :ivar team_log.TeamFolderDowngradeDetails.target_asset_index: Target asset
        position in the Assets list.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamFolderDowngradeDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamFolderDowngradeDetails(target_asset_index={!r})'.format(
            self._target_asset_index_value,
        )

TeamFolderDowngradeDetails_validator = bv.Struct(TeamFolderDowngradeDetails)

class TeamFolderDowngradeType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamFolderDowngradeType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamFolderDowngradeType(description={!r})'.format(
            self._description_value,
        )

TeamFolderDowngradeType_validator = bv.Struct(TeamFolderDowngradeType)

class TeamFolderPermanentlyDeleteDetails(bb.Struct):
    """
    Permanently deleted archived team folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamFolderPermanentlyDeleteDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamFolderPermanentlyDeleteDetails()'

TeamFolderPermanentlyDeleteDetails_validator = bv.Struct(TeamFolderPermanentlyDeleteDetails)

class TeamFolderPermanentlyDeleteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamFolderPermanentlyDeleteType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamFolderPermanentlyDeleteType(description={!r})'.format(
            self._description_value,
        )

TeamFolderPermanentlyDeleteType_validator = bv.Struct(TeamFolderPermanentlyDeleteType)

class TeamFolderRenameDetails(bb.Struct):
    """
    Renamed active/archived team folder.

    :ivar team_log.TeamFolderRenameDetails.previous_folder_name: Previous folder
        name.
    :ivar team_log.TeamFolderRenameDetails.new_folder_name: New folder name.
    """

    __slots__ = [
        '_previous_folder_name_value',
        '_previous_folder_name_present',
        '_new_folder_name_value',
        '_new_folder_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_folder_name=None,
                 new_folder_name=None):
        self._previous_folder_name_value = None
        self._previous_folder_name_present = False
        self._new_folder_name_value = None
        self._new_folder_name_present = False
        if previous_folder_name is not None:
            self.previous_folder_name = previous_folder_name
        if new_folder_name is not None:
            self.new_folder_name = new_folder_name

    @property
    def previous_folder_name(self):
        """
        Previous folder name.

        :rtype: str
        """
        if self._previous_folder_name_present:
            return self._previous_folder_name_value
        else:
            raise AttributeError("missing required field 'previous_folder_name'")

    @previous_folder_name.setter
    def previous_folder_name(self, val):
        val = self._previous_folder_name_validator.validate(val)
        self._previous_folder_name_value = val
        self._previous_folder_name_present = True

    @previous_folder_name.deleter
    def previous_folder_name(self):
        self._previous_folder_name_value = None
        self._previous_folder_name_present = False

    @property
    def new_folder_name(self):
        """
        New folder name.

        :rtype: str
        """
        if self._new_folder_name_present:
            return self._new_folder_name_value
        else:
            raise AttributeError("missing required field 'new_folder_name'")

    @new_folder_name.setter
    def new_folder_name(self, val):
        val = self._new_folder_name_validator.validate(val)
        self._new_folder_name_value = val
        self._new_folder_name_present = True

    @new_folder_name.deleter
    def new_folder_name(self):
        self._new_folder_name_value = None
        self._new_folder_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamFolderRenameDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamFolderRenameDetails(previous_folder_name={!r}, new_folder_name={!r})'.format(
            self._previous_folder_name_value,
            self._new_folder_name_value,
        )

TeamFolderRenameDetails_validator = bv.Struct(TeamFolderRenameDetails)

class TeamFolderRenameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamFolderRenameType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamFolderRenameType(description={!r})'.format(
            self._description_value,
        )

TeamFolderRenameType_validator = bv.Struct(TeamFolderRenameType)

class TeamLinkedAppLogInfo(AppLogInfo):
    """
    Team linked app
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self,
                 app_id=None,
                 display_name=None):
        super(TeamLinkedAppLogInfo, self).__init__(app_id,
                                                   display_name)

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamLinkedAppLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamLinkedAppLogInfo(app_id={!r}, display_name={!r})'.format(
            self._app_id_value,
            self._display_name_value,
        )

TeamLinkedAppLogInfo_validator = bv.Struct(TeamLinkedAppLogInfo)

class TeamMemberLogInfo(UserLogInfo):
    """
    Team member's logged information.

    :ivar team_log.TeamMemberLogInfo.team_member_id: Team member ID. Might be
        missing due to historical data gap.
    :ivar team_log.TeamMemberLogInfo.member_external_id: Team member external
        ID.
    """

    __slots__ = [
        '_team_member_id_value',
        '_team_member_id_present',
        '_member_external_id_value',
        '_member_external_id_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 account_id=None,
                 display_name=None,
                 email=None,
                 team_member_id=None,
                 member_external_id=None):
        super(TeamMemberLogInfo, self).__init__(account_id,
                                                display_name,
                                                email)
        self._team_member_id_value = None
        self._team_member_id_present = False
        self._member_external_id_value = None
        self._member_external_id_present = False
        if team_member_id is not None:
            self.team_member_id = team_member_id
        if member_external_id is not None:
            self.member_external_id = member_external_id

    @property
    def team_member_id(self):
        """
        Team member ID. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._team_member_id_present:
            return self._team_member_id_value
        else:
            return None

    @team_member_id.setter
    def team_member_id(self, val):
        if val is None:
            del self.team_member_id
            return
        val = self._team_member_id_validator.validate(val)
        self._team_member_id_value = val
        self._team_member_id_present = True

    @team_member_id.deleter
    def team_member_id(self):
        self._team_member_id_value = None
        self._team_member_id_present = False

    @property
    def member_external_id(self):
        """
        Team member external ID.

        :rtype: str
        """
        if self._member_external_id_present:
            return self._member_external_id_value
        else:
            return None

    @member_external_id.setter
    def member_external_id(self, val):
        if val is None:
            del self.member_external_id
            return
        val = self._member_external_id_validator.validate(val)
        self._member_external_id_value = val
        self._member_external_id_present = True

    @member_external_id.deleter
    def member_external_id(self):
        self._member_external_id_value = None
        self._member_external_id_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMemberLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMemberLogInfo(account_id={!r}, display_name={!r}, email={!r}, team_member_id={!r}, member_external_id={!r})'.format(
            self._account_id_value,
            self._display_name_value,
            self._email_value,
            self._team_member_id_value,
            self._member_external_id_value,
        )

TeamMemberLogInfo_validator = bv.Struct(TeamMemberLogInfo)

class TeamMembershipType(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    free = None
    # Attribute is overwritten below the class definition
    full = None
    # Attribute is overwritten below the class definition
    other = None

    def is_free(self):
        """
        Check if the union tag is ``free``.

        :rtype: bool
        """
        return self._tag == 'free'

    def is_full(self):
        """
        Check if the union tag is ``full``.

        :rtype: bool
        """
        return self._tag == 'full'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMembershipType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMembershipType(%r, %r)' % (self._tag, self._value)

TeamMembershipType_validator = bv.Union(TeamMembershipType)

class TeamMergeFromDetails(bb.Struct):
    """
    Merged another team into this team.

    :ivar team_log.TeamMergeFromDetails.team_name: The name of the team that was
        merged into this team.
    """

    __slots__ = [
        '_team_name_value',
        '_team_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 team_name=None):
        self._team_name_value = None
        self._team_name_present = False
        if team_name is not None:
            self.team_name = team_name

    @property
    def team_name(self):
        """
        The name of the team that was merged into this team.

        :rtype: str
        """
        if self._team_name_present:
            return self._team_name_value
        else:
            raise AttributeError("missing required field 'team_name'")

    @team_name.setter
    def team_name(self, val):
        val = self._team_name_validator.validate(val)
        self._team_name_value = val
        self._team_name_present = True

    @team_name.deleter
    def team_name(self):
        self._team_name_value = None
        self._team_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeFromDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeFromDetails(team_name={!r})'.format(
            self._team_name_value,
        )

TeamMergeFromDetails_validator = bv.Struct(TeamMergeFromDetails)

class TeamMergeFromType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeFromType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeFromType(description={!r})'.format(
            self._description_value,
        )

TeamMergeFromType_validator = bv.Struct(TeamMergeFromType)

class TeamMergeRequestAcceptedDetails(bb.Struct):
    """
    Accepted a team merge request.

    :ivar team_log.TeamMergeRequestAcceptedDetails.request_accepted_details:
        Team merge request acceptance details.
    """

    __slots__ = [
        '_request_accepted_details_value',
        '_request_accepted_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 request_accepted_details=None):
        self._request_accepted_details_value = None
        self._request_accepted_details_present = False
        if request_accepted_details is not None:
            self.request_accepted_details = request_accepted_details

    @property
    def request_accepted_details(self):
        """
        Team merge request acceptance details.

        :rtype: TeamMergeRequestAcceptedExtraDetails
        """
        if self._request_accepted_details_present:
            return self._request_accepted_details_value
        else:
            raise AttributeError("missing required field 'request_accepted_details'")

    @request_accepted_details.setter
    def request_accepted_details(self, val):
        self._request_accepted_details_validator.validate_type_only(val)
        self._request_accepted_details_value = val
        self._request_accepted_details_present = True

    @request_accepted_details.deleter
    def request_accepted_details(self):
        self._request_accepted_details_value = None
        self._request_accepted_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestAcceptedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestAcceptedDetails(request_accepted_details={!r})'.format(
            self._request_accepted_details_value,
        )

TeamMergeRequestAcceptedDetails_validator = bv.Struct(TeamMergeRequestAcceptedDetails)

class TeamMergeRequestAcceptedExtraDetails(bb.Union):
    """
    Team merge request acceptance details

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar PrimaryTeamRequestAcceptedDetails
        TeamMergeRequestAcceptedExtraDetails.primary_team: Team merge request
        accepted details shown to the primary team.
    :ivar SecondaryTeamRequestAcceptedDetails
        TeamMergeRequestAcceptedExtraDetails.secondary_team: Team merge request
        accepted details shown to the secondary team.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def primary_team(cls, val):
        """
        Create an instance of this class set to the ``primary_team`` tag with
        value ``val``.

        :param PrimaryTeamRequestAcceptedDetails val:
        :rtype: TeamMergeRequestAcceptedExtraDetails
        """
        return cls('primary_team', val)

    @classmethod
    def secondary_team(cls, val):
        """
        Create an instance of this class set to the ``secondary_team`` tag with
        value ``val``.

        :param SecondaryTeamRequestAcceptedDetails val:
        :rtype: TeamMergeRequestAcceptedExtraDetails
        """
        return cls('secondary_team', val)

    def is_primary_team(self):
        """
        Check if the union tag is ``primary_team``.

        :rtype: bool
        """
        return self._tag == 'primary_team'

    def is_secondary_team(self):
        """
        Check if the union tag is ``secondary_team``.

        :rtype: bool
        """
        return self._tag == 'secondary_team'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_primary_team(self):
        """
        Team merge request accepted details shown to the primary team.

        Only call this if :meth:`is_primary_team` is true.

        :rtype: PrimaryTeamRequestAcceptedDetails
        """
        if not self.is_primary_team():
            raise AttributeError("tag 'primary_team' not set")
        return self._value

    def get_secondary_team(self):
        """
        Team merge request accepted details shown to the secondary team.

        Only call this if :meth:`is_secondary_team` is true.

        :rtype: SecondaryTeamRequestAcceptedDetails
        """
        if not self.is_secondary_team():
            raise AttributeError("tag 'secondary_team' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestAcceptedExtraDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestAcceptedExtraDetails(%r, %r)' % (self._tag, self._value)

TeamMergeRequestAcceptedExtraDetails_validator = bv.Union(TeamMergeRequestAcceptedExtraDetails)

class TeamMergeRequestAcceptedShownToPrimaryTeamDetails(bb.Struct):
    """
    Accepted a team merge request.

    :ivar
        team_log.TeamMergeRequestAcceptedShownToPrimaryTeamDetails.secondary_team:
        The secondary team name.
    :ivar team_log.TeamMergeRequestAcceptedShownToPrimaryTeamDetails.sent_by:
        The name of the secondary team admin who sent the request originally.
    """

    __slots__ = [
        '_secondary_team_value',
        '_secondary_team_present',
        '_sent_by_value',
        '_sent_by_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 secondary_team=None,
                 sent_by=None):
        self._secondary_team_value = None
        self._secondary_team_present = False
        self._sent_by_value = None
        self._sent_by_present = False
        if secondary_team is not None:
            self.secondary_team = secondary_team
        if sent_by is not None:
            self.sent_by = sent_by

    @property
    def secondary_team(self):
        """
        The secondary team name.

        :rtype: str
        """
        if self._secondary_team_present:
            return self._secondary_team_value
        else:
            raise AttributeError("missing required field 'secondary_team'")

    @secondary_team.setter
    def secondary_team(self, val):
        val = self._secondary_team_validator.validate(val)
        self._secondary_team_value = val
        self._secondary_team_present = True

    @secondary_team.deleter
    def secondary_team(self):
        self._secondary_team_value = None
        self._secondary_team_present = False

    @property
    def sent_by(self):
        """
        The name of the secondary team admin who sent the request originally.

        :rtype: str
        """
        if self._sent_by_present:
            return self._sent_by_value
        else:
            raise AttributeError("missing required field 'sent_by'")

    @sent_by.setter
    def sent_by(self, val):
        val = self._sent_by_validator.validate(val)
        self._sent_by_value = val
        self._sent_by_present = True

    @sent_by.deleter
    def sent_by(self):
        self._sent_by_value = None
        self._sent_by_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestAcceptedShownToPrimaryTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestAcceptedShownToPrimaryTeamDetails(secondary_team={!r}, sent_by={!r})'.format(
            self._secondary_team_value,
            self._sent_by_value,
        )

TeamMergeRequestAcceptedShownToPrimaryTeamDetails_validator = bv.Struct(TeamMergeRequestAcceptedShownToPrimaryTeamDetails)

class TeamMergeRequestAcceptedShownToPrimaryTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestAcceptedShownToPrimaryTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestAcceptedShownToPrimaryTeamType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestAcceptedShownToPrimaryTeamType_validator = bv.Struct(TeamMergeRequestAcceptedShownToPrimaryTeamType)

class TeamMergeRequestAcceptedShownToSecondaryTeamDetails(bb.Struct):
    """
    Accepted a team merge request.

    :ivar
        team_log.TeamMergeRequestAcceptedShownToSecondaryTeamDetails.primary_team:
        The primary team name.
    :ivar team_log.TeamMergeRequestAcceptedShownToSecondaryTeamDetails.sent_by:
        The name of the secondary team admin who sent the request originally.
    """

    __slots__ = [
        '_primary_team_value',
        '_primary_team_present',
        '_sent_by_value',
        '_sent_by_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 primary_team=None,
                 sent_by=None):
        self._primary_team_value = None
        self._primary_team_present = False
        self._sent_by_value = None
        self._sent_by_present = False
        if primary_team is not None:
            self.primary_team = primary_team
        if sent_by is not None:
            self.sent_by = sent_by

    @property
    def primary_team(self):
        """
        The primary team name.

        :rtype: str
        """
        if self._primary_team_present:
            return self._primary_team_value
        else:
            raise AttributeError("missing required field 'primary_team'")

    @primary_team.setter
    def primary_team(self, val):
        val = self._primary_team_validator.validate(val)
        self._primary_team_value = val
        self._primary_team_present = True

    @primary_team.deleter
    def primary_team(self):
        self._primary_team_value = None
        self._primary_team_present = False

    @property
    def sent_by(self):
        """
        The name of the secondary team admin who sent the request originally.

        :rtype: str
        """
        if self._sent_by_present:
            return self._sent_by_value
        else:
            raise AttributeError("missing required field 'sent_by'")

    @sent_by.setter
    def sent_by(self, val):
        val = self._sent_by_validator.validate(val)
        self._sent_by_value = val
        self._sent_by_present = True

    @sent_by.deleter
    def sent_by(self):
        self._sent_by_value = None
        self._sent_by_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestAcceptedShownToSecondaryTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestAcceptedShownToSecondaryTeamDetails(primary_team={!r}, sent_by={!r})'.format(
            self._primary_team_value,
            self._sent_by_value,
        )

TeamMergeRequestAcceptedShownToSecondaryTeamDetails_validator = bv.Struct(TeamMergeRequestAcceptedShownToSecondaryTeamDetails)

class TeamMergeRequestAcceptedShownToSecondaryTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestAcceptedShownToSecondaryTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestAcceptedShownToSecondaryTeamType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestAcceptedShownToSecondaryTeamType_validator = bv.Struct(TeamMergeRequestAcceptedShownToSecondaryTeamType)

class TeamMergeRequestAcceptedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestAcceptedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestAcceptedType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestAcceptedType_validator = bv.Struct(TeamMergeRequestAcceptedType)

class TeamMergeRequestAutoCanceledDetails(bb.Struct):
    """
    Automatically canceled team merge request.

    :ivar team_log.TeamMergeRequestAutoCanceledDetails.details: The cancellation
        reason.
    """

    __slots__ = [
        '_details_value',
        '_details_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 details=None):
        self._details_value = None
        self._details_present = False
        if details is not None:
            self.details = details

    @property
    def details(self):
        """
        The cancellation reason.

        :rtype: str
        """
        if self._details_present:
            return self._details_value
        else:
            return None

    @details.setter
    def details(self, val):
        if val is None:
            del self.details
            return
        val = self._details_validator.validate(val)
        self._details_value = val
        self._details_present = True

    @details.deleter
    def details(self):
        self._details_value = None
        self._details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestAutoCanceledDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestAutoCanceledDetails(details={!r})'.format(
            self._details_value,
        )

TeamMergeRequestAutoCanceledDetails_validator = bv.Struct(TeamMergeRequestAutoCanceledDetails)

class TeamMergeRequestAutoCanceledType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestAutoCanceledType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestAutoCanceledType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestAutoCanceledType_validator = bv.Struct(TeamMergeRequestAutoCanceledType)

class TeamMergeRequestCanceledDetails(bb.Struct):
    """
    Canceled a team merge request.

    :ivar team_log.TeamMergeRequestCanceledDetails.request_canceled_details:
        Team merge request cancellation details.
    """

    __slots__ = [
        '_request_canceled_details_value',
        '_request_canceled_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 request_canceled_details=None):
        self._request_canceled_details_value = None
        self._request_canceled_details_present = False
        if request_canceled_details is not None:
            self.request_canceled_details = request_canceled_details

    @property
    def request_canceled_details(self):
        """
        Team merge request cancellation details.

        :rtype: TeamMergeRequestCanceledExtraDetails
        """
        if self._request_canceled_details_present:
            return self._request_canceled_details_value
        else:
            raise AttributeError("missing required field 'request_canceled_details'")

    @request_canceled_details.setter
    def request_canceled_details(self, val):
        self._request_canceled_details_validator.validate_type_only(val)
        self._request_canceled_details_value = val
        self._request_canceled_details_present = True

    @request_canceled_details.deleter
    def request_canceled_details(self):
        self._request_canceled_details_value = None
        self._request_canceled_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestCanceledDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestCanceledDetails(request_canceled_details={!r})'.format(
            self._request_canceled_details_value,
        )

TeamMergeRequestCanceledDetails_validator = bv.Struct(TeamMergeRequestCanceledDetails)

class TeamMergeRequestCanceledExtraDetails(bb.Union):
    """
    Team merge request cancellation details

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar PrimaryTeamRequestCanceledDetails
        TeamMergeRequestCanceledExtraDetails.primary_team: Team merge request
        cancellation details shown to the primary team.
    :ivar SecondaryTeamRequestCanceledDetails
        TeamMergeRequestCanceledExtraDetails.secondary_team: Team merge request
        cancellation details shown to the secondary team.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def primary_team(cls, val):
        """
        Create an instance of this class set to the ``primary_team`` tag with
        value ``val``.

        :param PrimaryTeamRequestCanceledDetails val:
        :rtype: TeamMergeRequestCanceledExtraDetails
        """
        return cls('primary_team', val)

    @classmethod
    def secondary_team(cls, val):
        """
        Create an instance of this class set to the ``secondary_team`` tag with
        value ``val``.

        :param SecondaryTeamRequestCanceledDetails val:
        :rtype: TeamMergeRequestCanceledExtraDetails
        """
        return cls('secondary_team', val)

    def is_primary_team(self):
        """
        Check if the union tag is ``primary_team``.

        :rtype: bool
        """
        return self._tag == 'primary_team'

    def is_secondary_team(self):
        """
        Check if the union tag is ``secondary_team``.

        :rtype: bool
        """
        return self._tag == 'secondary_team'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_primary_team(self):
        """
        Team merge request cancellation details shown to the primary team.

        Only call this if :meth:`is_primary_team` is true.

        :rtype: PrimaryTeamRequestCanceledDetails
        """
        if not self.is_primary_team():
            raise AttributeError("tag 'primary_team' not set")
        return self._value

    def get_secondary_team(self):
        """
        Team merge request cancellation details shown to the secondary team.

        Only call this if :meth:`is_secondary_team` is true.

        :rtype: SecondaryTeamRequestCanceledDetails
        """
        if not self.is_secondary_team():
            raise AttributeError("tag 'secondary_team' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestCanceledExtraDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestCanceledExtraDetails(%r, %r)' % (self._tag, self._value)

TeamMergeRequestCanceledExtraDetails_validator = bv.Union(TeamMergeRequestCanceledExtraDetails)

class TeamMergeRequestCanceledShownToPrimaryTeamDetails(bb.Struct):
    """
    Canceled a team merge request.

    :ivar
        team_log.TeamMergeRequestCanceledShownToPrimaryTeamDetails.secondary_team:
        The secondary team name.
    :ivar team_log.TeamMergeRequestCanceledShownToPrimaryTeamDetails.sent_by:
        The name of the secondary team admin who sent the request originally.
    """

    __slots__ = [
        '_secondary_team_value',
        '_secondary_team_present',
        '_sent_by_value',
        '_sent_by_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 secondary_team=None,
                 sent_by=None):
        self._secondary_team_value = None
        self._secondary_team_present = False
        self._sent_by_value = None
        self._sent_by_present = False
        if secondary_team is not None:
            self.secondary_team = secondary_team
        if sent_by is not None:
            self.sent_by = sent_by

    @property
    def secondary_team(self):
        """
        The secondary team name.

        :rtype: str
        """
        if self._secondary_team_present:
            return self._secondary_team_value
        else:
            raise AttributeError("missing required field 'secondary_team'")

    @secondary_team.setter
    def secondary_team(self, val):
        val = self._secondary_team_validator.validate(val)
        self._secondary_team_value = val
        self._secondary_team_present = True

    @secondary_team.deleter
    def secondary_team(self):
        self._secondary_team_value = None
        self._secondary_team_present = False

    @property
    def sent_by(self):
        """
        The name of the secondary team admin who sent the request originally.

        :rtype: str
        """
        if self._sent_by_present:
            return self._sent_by_value
        else:
            raise AttributeError("missing required field 'sent_by'")

    @sent_by.setter
    def sent_by(self, val):
        val = self._sent_by_validator.validate(val)
        self._sent_by_value = val
        self._sent_by_present = True

    @sent_by.deleter
    def sent_by(self):
        self._sent_by_value = None
        self._sent_by_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestCanceledShownToPrimaryTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestCanceledShownToPrimaryTeamDetails(secondary_team={!r}, sent_by={!r})'.format(
            self._secondary_team_value,
            self._sent_by_value,
        )

TeamMergeRequestCanceledShownToPrimaryTeamDetails_validator = bv.Struct(TeamMergeRequestCanceledShownToPrimaryTeamDetails)

class TeamMergeRequestCanceledShownToPrimaryTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestCanceledShownToPrimaryTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestCanceledShownToPrimaryTeamType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestCanceledShownToPrimaryTeamType_validator = bv.Struct(TeamMergeRequestCanceledShownToPrimaryTeamType)

class TeamMergeRequestCanceledShownToSecondaryTeamDetails(bb.Struct):
    """
    Canceled a team merge request.

    :ivar team_log.TeamMergeRequestCanceledShownToSecondaryTeamDetails.sent_to:
        The email of the primary team admin that the request was sent to.
    :ivar team_log.TeamMergeRequestCanceledShownToSecondaryTeamDetails.sent_by:
        The name of the secondary team admin who sent the request originally.
    """

    __slots__ = [
        '_sent_to_value',
        '_sent_to_present',
        '_sent_by_value',
        '_sent_by_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 sent_to=None,
                 sent_by=None):
        self._sent_to_value = None
        self._sent_to_present = False
        self._sent_by_value = None
        self._sent_by_present = False
        if sent_to is not None:
            self.sent_to = sent_to
        if sent_by is not None:
            self.sent_by = sent_by

    @property
    def sent_to(self):
        """
        The email of the primary team admin that the request was sent to.

        :rtype: str
        """
        if self._sent_to_present:
            return self._sent_to_value
        else:
            raise AttributeError("missing required field 'sent_to'")

    @sent_to.setter
    def sent_to(self, val):
        val = self._sent_to_validator.validate(val)
        self._sent_to_value = val
        self._sent_to_present = True

    @sent_to.deleter
    def sent_to(self):
        self._sent_to_value = None
        self._sent_to_present = False

    @property
    def sent_by(self):
        """
        The name of the secondary team admin who sent the request originally.

        :rtype: str
        """
        if self._sent_by_present:
            return self._sent_by_value
        else:
            raise AttributeError("missing required field 'sent_by'")

    @sent_by.setter
    def sent_by(self, val):
        val = self._sent_by_validator.validate(val)
        self._sent_by_value = val
        self._sent_by_present = True

    @sent_by.deleter
    def sent_by(self):
        self._sent_by_value = None
        self._sent_by_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestCanceledShownToSecondaryTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestCanceledShownToSecondaryTeamDetails(sent_to={!r}, sent_by={!r})'.format(
            self._sent_to_value,
            self._sent_by_value,
        )

TeamMergeRequestCanceledShownToSecondaryTeamDetails_validator = bv.Struct(TeamMergeRequestCanceledShownToSecondaryTeamDetails)

class TeamMergeRequestCanceledShownToSecondaryTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestCanceledShownToSecondaryTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestCanceledShownToSecondaryTeamType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestCanceledShownToSecondaryTeamType_validator = bv.Struct(TeamMergeRequestCanceledShownToSecondaryTeamType)

class TeamMergeRequestCanceledType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestCanceledType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestCanceledType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestCanceledType_validator = bv.Struct(TeamMergeRequestCanceledType)

class TeamMergeRequestExpiredDetails(bb.Struct):
    """
    Team merge request expired.

    :ivar team_log.TeamMergeRequestExpiredDetails.request_expired_details: Team
        merge request expiration details.
    """

    __slots__ = [
        '_request_expired_details_value',
        '_request_expired_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 request_expired_details=None):
        self._request_expired_details_value = None
        self._request_expired_details_present = False
        if request_expired_details is not None:
            self.request_expired_details = request_expired_details

    @property
    def request_expired_details(self):
        """
        Team merge request expiration details.

        :rtype: TeamMergeRequestExpiredExtraDetails
        """
        if self._request_expired_details_present:
            return self._request_expired_details_value
        else:
            raise AttributeError("missing required field 'request_expired_details'")

    @request_expired_details.setter
    def request_expired_details(self, val):
        self._request_expired_details_validator.validate_type_only(val)
        self._request_expired_details_value = val
        self._request_expired_details_present = True

    @request_expired_details.deleter
    def request_expired_details(self):
        self._request_expired_details_value = None
        self._request_expired_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestExpiredDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestExpiredDetails(request_expired_details={!r})'.format(
            self._request_expired_details_value,
        )

TeamMergeRequestExpiredDetails_validator = bv.Struct(TeamMergeRequestExpiredDetails)

class TeamMergeRequestExpiredExtraDetails(bb.Union):
    """
    Team merge request expiration details

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar PrimaryTeamRequestExpiredDetails
        TeamMergeRequestExpiredExtraDetails.primary_team: Team merge request
        canceled details shown to the primary team.
    :ivar SecondaryTeamRequestExpiredDetails
        TeamMergeRequestExpiredExtraDetails.secondary_team: Team merge request
        canceled details shown to the secondary team.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def primary_team(cls, val):
        """
        Create an instance of this class set to the ``primary_team`` tag with
        value ``val``.

        :param PrimaryTeamRequestExpiredDetails val:
        :rtype: TeamMergeRequestExpiredExtraDetails
        """
        return cls('primary_team', val)

    @classmethod
    def secondary_team(cls, val):
        """
        Create an instance of this class set to the ``secondary_team`` tag with
        value ``val``.

        :param SecondaryTeamRequestExpiredDetails val:
        :rtype: TeamMergeRequestExpiredExtraDetails
        """
        return cls('secondary_team', val)

    def is_primary_team(self):
        """
        Check if the union tag is ``primary_team``.

        :rtype: bool
        """
        return self._tag == 'primary_team'

    def is_secondary_team(self):
        """
        Check if the union tag is ``secondary_team``.

        :rtype: bool
        """
        return self._tag == 'secondary_team'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_primary_team(self):
        """
        Team merge request canceled details shown to the primary team.

        Only call this if :meth:`is_primary_team` is true.

        :rtype: PrimaryTeamRequestExpiredDetails
        """
        if not self.is_primary_team():
            raise AttributeError("tag 'primary_team' not set")
        return self._value

    def get_secondary_team(self):
        """
        Team merge request canceled details shown to the secondary team.

        Only call this if :meth:`is_secondary_team` is true.

        :rtype: SecondaryTeamRequestExpiredDetails
        """
        if not self.is_secondary_team():
            raise AttributeError("tag 'secondary_team' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestExpiredExtraDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestExpiredExtraDetails(%r, %r)' % (self._tag, self._value)

TeamMergeRequestExpiredExtraDetails_validator = bv.Union(TeamMergeRequestExpiredExtraDetails)

class TeamMergeRequestExpiredShownToPrimaryTeamDetails(bb.Struct):
    """
    Team merge request expired.

    :ivar
        team_log.TeamMergeRequestExpiredShownToPrimaryTeamDetails.secondary_team:
        The secondary team name.
    :ivar team_log.TeamMergeRequestExpiredShownToPrimaryTeamDetails.sent_by: The
        name of the secondary team admin who sent the request originally.
    """

    __slots__ = [
        '_secondary_team_value',
        '_secondary_team_present',
        '_sent_by_value',
        '_sent_by_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 secondary_team=None,
                 sent_by=None):
        self._secondary_team_value = None
        self._secondary_team_present = False
        self._sent_by_value = None
        self._sent_by_present = False
        if secondary_team is not None:
            self.secondary_team = secondary_team
        if sent_by is not None:
            self.sent_by = sent_by

    @property
    def secondary_team(self):
        """
        The secondary team name.

        :rtype: str
        """
        if self._secondary_team_present:
            return self._secondary_team_value
        else:
            raise AttributeError("missing required field 'secondary_team'")

    @secondary_team.setter
    def secondary_team(self, val):
        val = self._secondary_team_validator.validate(val)
        self._secondary_team_value = val
        self._secondary_team_present = True

    @secondary_team.deleter
    def secondary_team(self):
        self._secondary_team_value = None
        self._secondary_team_present = False

    @property
    def sent_by(self):
        """
        The name of the secondary team admin who sent the request originally.

        :rtype: str
        """
        if self._sent_by_present:
            return self._sent_by_value
        else:
            raise AttributeError("missing required field 'sent_by'")

    @sent_by.setter
    def sent_by(self, val):
        val = self._sent_by_validator.validate(val)
        self._sent_by_value = val
        self._sent_by_present = True

    @sent_by.deleter
    def sent_by(self):
        self._sent_by_value = None
        self._sent_by_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestExpiredShownToPrimaryTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestExpiredShownToPrimaryTeamDetails(secondary_team={!r}, sent_by={!r})'.format(
            self._secondary_team_value,
            self._sent_by_value,
        )

TeamMergeRequestExpiredShownToPrimaryTeamDetails_validator = bv.Struct(TeamMergeRequestExpiredShownToPrimaryTeamDetails)

class TeamMergeRequestExpiredShownToPrimaryTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestExpiredShownToPrimaryTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestExpiredShownToPrimaryTeamType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestExpiredShownToPrimaryTeamType_validator = bv.Struct(TeamMergeRequestExpiredShownToPrimaryTeamType)

class TeamMergeRequestExpiredShownToSecondaryTeamDetails(bb.Struct):
    """
    Team merge request expired.

    :ivar team_log.TeamMergeRequestExpiredShownToSecondaryTeamDetails.sent_to:
        The email of the primary team admin the request was sent to.
    """

    __slots__ = [
        '_sent_to_value',
        '_sent_to_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 sent_to=None):
        self._sent_to_value = None
        self._sent_to_present = False
        if sent_to is not None:
            self.sent_to = sent_to

    @property
    def sent_to(self):
        """
        The email of the primary team admin the request was sent to.

        :rtype: str
        """
        if self._sent_to_present:
            return self._sent_to_value
        else:
            raise AttributeError("missing required field 'sent_to'")

    @sent_to.setter
    def sent_to(self, val):
        val = self._sent_to_validator.validate(val)
        self._sent_to_value = val
        self._sent_to_present = True

    @sent_to.deleter
    def sent_to(self):
        self._sent_to_value = None
        self._sent_to_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestExpiredShownToSecondaryTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestExpiredShownToSecondaryTeamDetails(sent_to={!r})'.format(
            self._sent_to_value,
        )

TeamMergeRequestExpiredShownToSecondaryTeamDetails_validator = bv.Struct(TeamMergeRequestExpiredShownToSecondaryTeamDetails)

class TeamMergeRequestExpiredShownToSecondaryTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestExpiredShownToSecondaryTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestExpiredShownToSecondaryTeamType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestExpiredShownToSecondaryTeamType_validator = bv.Struct(TeamMergeRequestExpiredShownToSecondaryTeamType)

class TeamMergeRequestExpiredType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestExpiredType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestExpiredType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestExpiredType_validator = bv.Struct(TeamMergeRequestExpiredType)

class TeamMergeRequestRejectedShownToPrimaryTeamDetails(bb.Struct):
    """
    Rejected a team merge request.

    :ivar
        team_log.TeamMergeRequestRejectedShownToPrimaryTeamDetails.secondary_team:
        The secondary team name.
    :ivar team_log.TeamMergeRequestRejectedShownToPrimaryTeamDetails.sent_by:
        The name of the secondary team admin who sent the request originally.
    """

    __slots__ = [
        '_secondary_team_value',
        '_secondary_team_present',
        '_sent_by_value',
        '_sent_by_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 secondary_team=None,
                 sent_by=None):
        self._secondary_team_value = None
        self._secondary_team_present = False
        self._sent_by_value = None
        self._sent_by_present = False
        if secondary_team is not None:
            self.secondary_team = secondary_team
        if sent_by is not None:
            self.sent_by = sent_by

    @property
    def secondary_team(self):
        """
        The secondary team name.

        :rtype: str
        """
        if self._secondary_team_present:
            return self._secondary_team_value
        else:
            raise AttributeError("missing required field 'secondary_team'")

    @secondary_team.setter
    def secondary_team(self, val):
        val = self._secondary_team_validator.validate(val)
        self._secondary_team_value = val
        self._secondary_team_present = True

    @secondary_team.deleter
    def secondary_team(self):
        self._secondary_team_value = None
        self._secondary_team_present = False

    @property
    def sent_by(self):
        """
        The name of the secondary team admin who sent the request originally.

        :rtype: str
        """
        if self._sent_by_present:
            return self._sent_by_value
        else:
            raise AttributeError("missing required field 'sent_by'")

    @sent_by.setter
    def sent_by(self, val):
        val = self._sent_by_validator.validate(val)
        self._sent_by_value = val
        self._sent_by_present = True

    @sent_by.deleter
    def sent_by(self):
        self._sent_by_value = None
        self._sent_by_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestRejectedShownToPrimaryTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestRejectedShownToPrimaryTeamDetails(secondary_team={!r}, sent_by={!r})'.format(
            self._secondary_team_value,
            self._sent_by_value,
        )

TeamMergeRequestRejectedShownToPrimaryTeamDetails_validator = bv.Struct(TeamMergeRequestRejectedShownToPrimaryTeamDetails)

class TeamMergeRequestRejectedShownToPrimaryTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestRejectedShownToPrimaryTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestRejectedShownToPrimaryTeamType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestRejectedShownToPrimaryTeamType_validator = bv.Struct(TeamMergeRequestRejectedShownToPrimaryTeamType)

class TeamMergeRequestRejectedShownToSecondaryTeamDetails(bb.Struct):
    """
    Rejected a team merge request.

    :ivar team_log.TeamMergeRequestRejectedShownToSecondaryTeamDetails.sent_by:
        The name of the secondary team admin who sent the request originally.
    """

    __slots__ = [
        '_sent_by_value',
        '_sent_by_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 sent_by=None):
        self._sent_by_value = None
        self._sent_by_present = False
        if sent_by is not None:
            self.sent_by = sent_by

    @property
    def sent_by(self):
        """
        The name of the secondary team admin who sent the request originally.

        :rtype: str
        """
        if self._sent_by_present:
            return self._sent_by_value
        else:
            raise AttributeError("missing required field 'sent_by'")

    @sent_by.setter
    def sent_by(self, val):
        val = self._sent_by_validator.validate(val)
        self._sent_by_value = val
        self._sent_by_present = True

    @sent_by.deleter
    def sent_by(self):
        self._sent_by_value = None
        self._sent_by_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestRejectedShownToSecondaryTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestRejectedShownToSecondaryTeamDetails(sent_by={!r})'.format(
            self._sent_by_value,
        )

TeamMergeRequestRejectedShownToSecondaryTeamDetails_validator = bv.Struct(TeamMergeRequestRejectedShownToSecondaryTeamDetails)

class TeamMergeRequestRejectedShownToSecondaryTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestRejectedShownToSecondaryTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestRejectedShownToSecondaryTeamType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestRejectedShownToSecondaryTeamType_validator = bv.Struct(TeamMergeRequestRejectedShownToSecondaryTeamType)

class TeamMergeRequestReminderDetails(bb.Struct):
    """
    Sent a team merge request reminder.

    :ivar team_log.TeamMergeRequestReminderDetails.request_reminder_details:
        Team merge request reminder details.
    """

    __slots__ = [
        '_request_reminder_details_value',
        '_request_reminder_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 request_reminder_details=None):
        self._request_reminder_details_value = None
        self._request_reminder_details_present = False
        if request_reminder_details is not None:
            self.request_reminder_details = request_reminder_details

    @property
    def request_reminder_details(self):
        """
        Team merge request reminder details.

        :rtype: TeamMergeRequestReminderExtraDetails
        """
        if self._request_reminder_details_present:
            return self._request_reminder_details_value
        else:
            raise AttributeError("missing required field 'request_reminder_details'")

    @request_reminder_details.setter
    def request_reminder_details(self, val):
        self._request_reminder_details_validator.validate_type_only(val)
        self._request_reminder_details_value = val
        self._request_reminder_details_present = True

    @request_reminder_details.deleter
    def request_reminder_details(self):
        self._request_reminder_details_value = None
        self._request_reminder_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestReminderDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestReminderDetails(request_reminder_details={!r})'.format(
            self._request_reminder_details_value,
        )

TeamMergeRequestReminderDetails_validator = bv.Struct(TeamMergeRequestReminderDetails)

class TeamMergeRequestReminderExtraDetails(bb.Union):
    """
    Team merge request reminder details

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar PrimaryTeamRequestReminderDetails
        TeamMergeRequestReminderExtraDetails.primary_team: Team merge request
        reminder details shown to the primary team.
    :ivar SecondaryTeamRequestReminderDetails
        TeamMergeRequestReminderExtraDetails.secondary_team: Team merge request
        reminder details shown to the secondary team.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def primary_team(cls, val):
        """
        Create an instance of this class set to the ``primary_team`` tag with
        value ``val``.

        :param PrimaryTeamRequestReminderDetails val:
        :rtype: TeamMergeRequestReminderExtraDetails
        """
        return cls('primary_team', val)

    @classmethod
    def secondary_team(cls, val):
        """
        Create an instance of this class set to the ``secondary_team`` tag with
        value ``val``.

        :param SecondaryTeamRequestReminderDetails val:
        :rtype: TeamMergeRequestReminderExtraDetails
        """
        return cls('secondary_team', val)

    def is_primary_team(self):
        """
        Check if the union tag is ``primary_team``.

        :rtype: bool
        """
        return self._tag == 'primary_team'

    def is_secondary_team(self):
        """
        Check if the union tag is ``secondary_team``.

        :rtype: bool
        """
        return self._tag == 'secondary_team'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_primary_team(self):
        """
        Team merge request reminder details shown to the primary team.

        Only call this if :meth:`is_primary_team` is true.

        :rtype: PrimaryTeamRequestReminderDetails
        """
        if not self.is_primary_team():
            raise AttributeError("tag 'primary_team' not set")
        return self._value

    def get_secondary_team(self):
        """
        Team merge request reminder details shown to the secondary team.

        Only call this if :meth:`is_secondary_team` is true.

        :rtype: SecondaryTeamRequestReminderDetails
        """
        if not self.is_secondary_team():
            raise AttributeError("tag 'secondary_team' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestReminderExtraDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestReminderExtraDetails(%r, %r)' % (self._tag, self._value)

TeamMergeRequestReminderExtraDetails_validator = bv.Union(TeamMergeRequestReminderExtraDetails)

class TeamMergeRequestReminderShownToPrimaryTeamDetails(bb.Struct):
    """
    Sent a team merge request reminder.

    :ivar
        team_log.TeamMergeRequestReminderShownToPrimaryTeamDetails.secondary_team:
        The secondary team name.
    :ivar team_log.TeamMergeRequestReminderShownToPrimaryTeamDetails.sent_to:
        The name of the primary team admin the request was sent to.
    """

    __slots__ = [
        '_secondary_team_value',
        '_secondary_team_present',
        '_sent_to_value',
        '_sent_to_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 secondary_team=None,
                 sent_to=None):
        self._secondary_team_value = None
        self._secondary_team_present = False
        self._sent_to_value = None
        self._sent_to_present = False
        if secondary_team is not None:
            self.secondary_team = secondary_team
        if sent_to is not None:
            self.sent_to = sent_to

    @property
    def secondary_team(self):
        """
        The secondary team name.

        :rtype: str
        """
        if self._secondary_team_present:
            return self._secondary_team_value
        else:
            raise AttributeError("missing required field 'secondary_team'")

    @secondary_team.setter
    def secondary_team(self, val):
        val = self._secondary_team_validator.validate(val)
        self._secondary_team_value = val
        self._secondary_team_present = True

    @secondary_team.deleter
    def secondary_team(self):
        self._secondary_team_value = None
        self._secondary_team_present = False

    @property
    def sent_to(self):
        """
        The name of the primary team admin the request was sent to.

        :rtype: str
        """
        if self._sent_to_present:
            return self._sent_to_value
        else:
            raise AttributeError("missing required field 'sent_to'")

    @sent_to.setter
    def sent_to(self, val):
        val = self._sent_to_validator.validate(val)
        self._sent_to_value = val
        self._sent_to_present = True

    @sent_to.deleter
    def sent_to(self):
        self._sent_to_value = None
        self._sent_to_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestReminderShownToPrimaryTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestReminderShownToPrimaryTeamDetails(secondary_team={!r}, sent_to={!r})'.format(
            self._secondary_team_value,
            self._sent_to_value,
        )

TeamMergeRequestReminderShownToPrimaryTeamDetails_validator = bv.Struct(TeamMergeRequestReminderShownToPrimaryTeamDetails)

class TeamMergeRequestReminderShownToPrimaryTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestReminderShownToPrimaryTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestReminderShownToPrimaryTeamType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestReminderShownToPrimaryTeamType_validator = bv.Struct(TeamMergeRequestReminderShownToPrimaryTeamType)

class TeamMergeRequestReminderShownToSecondaryTeamDetails(bb.Struct):
    """
    Sent a team merge request reminder.

    :ivar team_log.TeamMergeRequestReminderShownToSecondaryTeamDetails.sent_to:
        The email of the primary team admin the request was sent to.
    """

    __slots__ = [
        '_sent_to_value',
        '_sent_to_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 sent_to=None):
        self._sent_to_value = None
        self._sent_to_present = False
        if sent_to is not None:
            self.sent_to = sent_to

    @property
    def sent_to(self):
        """
        The email of the primary team admin the request was sent to.

        :rtype: str
        """
        if self._sent_to_present:
            return self._sent_to_value
        else:
            raise AttributeError("missing required field 'sent_to'")

    @sent_to.setter
    def sent_to(self, val):
        val = self._sent_to_validator.validate(val)
        self._sent_to_value = val
        self._sent_to_present = True

    @sent_to.deleter
    def sent_to(self):
        self._sent_to_value = None
        self._sent_to_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestReminderShownToSecondaryTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestReminderShownToSecondaryTeamDetails(sent_to={!r})'.format(
            self._sent_to_value,
        )

TeamMergeRequestReminderShownToSecondaryTeamDetails_validator = bv.Struct(TeamMergeRequestReminderShownToSecondaryTeamDetails)

class TeamMergeRequestReminderShownToSecondaryTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestReminderShownToSecondaryTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestReminderShownToSecondaryTeamType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestReminderShownToSecondaryTeamType_validator = bv.Struct(TeamMergeRequestReminderShownToSecondaryTeamType)

class TeamMergeRequestReminderType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestReminderType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestReminderType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestReminderType_validator = bv.Struct(TeamMergeRequestReminderType)

class TeamMergeRequestRevokedDetails(bb.Struct):
    """
    Canceled the team merge.

    :ivar team_log.TeamMergeRequestRevokedDetails.team: The name of the other
        team.
    """

    __slots__ = [
        '_team_value',
        '_team_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 team=None):
        self._team_value = None
        self._team_present = False
        if team is not None:
            self.team = team

    @property
    def team(self):
        """
        The name of the other team.

        :rtype: str
        """
        if self._team_present:
            return self._team_value
        else:
            raise AttributeError("missing required field 'team'")

    @team.setter
    def team(self, val):
        val = self._team_validator.validate(val)
        self._team_value = val
        self._team_present = True

    @team.deleter
    def team(self):
        self._team_value = None
        self._team_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestRevokedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestRevokedDetails(team={!r})'.format(
            self._team_value,
        )

TeamMergeRequestRevokedDetails_validator = bv.Struct(TeamMergeRequestRevokedDetails)

class TeamMergeRequestRevokedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestRevokedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestRevokedType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestRevokedType_validator = bv.Struct(TeamMergeRequestRevokedType)

class TeamMergeRequestSentShownToPrimaryTeamDetails(bb.Struct):
    """
    Requested to merge their Dropbox team into yours.

    :ivar team_log.TeamMergeRequestSentShownToPrimaryTeamDetails.secondary_team:
        The secondary team name.
    :ivar team_log.TeamMergeRequestSentShownToPrimaryTeamDetails.sent_to: The
        name of the primary team admin the request was sent to.
    """

    __slots__ = [
        '_secondary_team_value',
        '_secondary_team_present',
        '_sent_to_value',
        '_sent_to_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 secondary_team=None,
                 sent_to=None):
        self._secondary_team_value = None
        self._secondary_team_present = False
        self._sent_to_value = None
        self._sent_to_present = False
        if secondary_team is not None:
            self.secondary_team = secondary_team
        if sent_to is not None:
            self.sent_to = sent_to

    @property
    def secondary_team(self):
        """
        The secondary team name.

        :rtype: str
        """
        if self._secondary_team_present:
            return self._secondary_team_value
        else:
            raise AttributeError("missing required field 'secondary_team'")

    @secondary_team.setter
    def secondary_team(self, val):
        val = self._secondary_team_validator.validate(val)
        self._secondary_team_value = val
        self._secondary_team_present = True

    @secondary_team.deleter
    def secondary_team(self):
        self._secondary_team_value = None
        self._secondary_team_present = False

    @property
    def sent_to(self):
        """
        The name of the primary team admin the request was sent to.

        :rtype: str
        """
        if self._sent_to_present:
            return self._sent_to_value
        else:
            raise AttributeError("missing required field 'sent_to'")

    @sent_to.setter
    def sent_to(self, val):
        val = self._sent_to_validator.validate(val)
        self._sent_to_value = val
        self._sent_to_present = True

    @sent_to.deleter
    def sent_to(self):
        self._sent_to_value = None
        self._sent_to_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestSentShownToPrimaryTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestSentShownToPrimaryTeamDetails(secondary_team={!r}, sent_to={!r})'.format(
            self._secondary_team_value,
            self._sent_to_value,
        )

TeamMergeRequestSentShownToPrimaryTeamDetails_validator = bv.Struct(TeamMergeRequestSentShownToPrimaryTeamDetails)

class TeamMergeRequestSentShownToPrimaryTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestSentShownToPrimaryTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestSentShownToPrimaryTeamType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestSentShownToPrimaryTeamType_validator = bv.Struct(TeamMergeRequestSentShownToPrimaryTeamType)

class TeamMergeRequestSentShownToSecondaryTeamDetails(bb.Struct):
    """
    Requested to merge your team into another Dropbox team.

    :ivar team_log.TeamMergeRequestSentShownToSecondaryTeamDetails.sent_to: The
        email of the primary team admin the request was sent to.
    """

    __slots__ = [
        '_sent_to_value',
        '_sent_to_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 sent_to=None):
        self._sent_to_value = None
        self._sent_to_present = False
        if sent_to is not None:
            self.sent_to = sent_to

    @property
    def sent_to(self):
        """
        The email of the primary team admin the request was sent to.

        :rtype: str
        """
        if self._sent_to_present:
            return self._sent_to_value
        else:
            raise AttributeError("missing required field 'sent_to'")

    @sent_to.setter
    def sent_to(self, val):
        val = self._sent_to_validator.validate(val)
        self._sent_to_value = val
        self._sent_to_present = True

    @sent_to.deleter
    def sent_to(self):
        self._sent_to_value = None
        self._sent_to_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestSentShownToSecondaryTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestSentShownToSecondaryTeamDetails(sent_to={!r})'.format(
            self._sent_to_value,
        )

TeamMergeRequestSentShownToSecondaryTeamDetails_validator = bv.Struct(TeamMergeRequestSentShownToSecondaryTeamDetails)

class TeamMergeRequestSentShownToSecondaryTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeRequestSentShownToSecondaryTeamType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeRequestSentShownToSecondaryTeamType(description={!r})'.format(
            self._description_value,
        )

TeamMergeRequestSentShownToSecondaryTeamType_validator = bv.Struct(TeamMergeRequestSentShownToSecondaryTeamType)

class TeamMergeToDetails(bb.Struct):
    """
    Merged this team into another team.

    :ivar team_log.TeamMergeToDetails.team_name: The name of the team that this
        team was merged into.
    """

    __slots__ = [
        '_team_name_value',
        '_team_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 team_name=None):
        self._team_name_value = None
        self._team_name_present = False
        if team_name is not None:
            self.team_name = team_name

    @property
    def team_name(self):
        """
        The name of the team that this team was merged into.

        :rtype: str
        """
        if self._team_name_present:
            return self._team_name_value
        else:
            raise AttributeError("missing required field 'team_name'")

    @team_name.setter
    def team_name(self, val):
        val = self._team_name_validator.validate(val)
        self._team_name_value = val
        self._team_name_present = True

    @team_name.deleter
    def team_name(self):
        self._team_name_value = None
        self._team_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeToDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeToDetails(team_name={!r})'.format(
            self._team_name_value,
        )

TeamMergeToDetails_validator = bv.Struct(TeamMergeToDetails)

class TeamMergeToType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamMergeToType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamMergeToType(description={!r})'.format(
            self._description_value,
        )

TeamMergeToType_validator = bv.Struct(TeamMergeToType)

class TeamName(bb.Struct):
    """
    Team name details

    :ivar team_log.TeamName.team_display_name: Team's display name.
    :ivar team_log.TeamName.team_legal_name: Team's legal name.
    """

    __slots__ = [
        '_team_display_name_value',
        '_team_display_name_present',
        '_team_legal_name_value',
        '_team_legal_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 team_display_name=None,
                 team_legal_name=None):
        self._team_display_name_value = None
        self._team_display_name_present = False
        self._team_legal_name_value = None
        self._team_legal_name_present = False
        if team_display_name is not None:
            self.team_display_name = team_display_name
        if team_legal_name is not None:
            self.team_legal_name = team_legal_name

    @property
    def team_display_name(self):
        """
        Team's display name.

        :rtype: str
        """
        if self._team_display_name_present:
            return self._team_display_name_value
        else:
            raise AttributeError("missing required field 'team_display_name'")

    @team_display_name.setter
    def team_display_name(self, val):
        val = self._team_display_name_validator.validate(val)
        self._team_display_name_value = val
        self._team_display_name_present = True

    @team_display_name.deleter
    def team_display_name(self):
        self._team_display_name_value = None
        self._team_display_name_present = False

    @property
    def team_legal_name(self):
        """
        Team's legal name.

        :rtype: str
        """
        if self._team_legal_name_present:
            return self._team_legal_name_value
        else:
            raise AttributeError("missing required field 'team_legal_name'")

    @team_legal_name.setter
    def team_legal_name(self, val):
        val = self._team_legal_name_validator.validate(val)
        self._team_legal_name_value = val
        self._team_legal_name_present = True

    @team_legal_name.deleter
    def team_legal_name(self):
        self._team_legal_name_value = None
        self._team_legal_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamName, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamName(team_display_name={!r}, team_legal_name={!r})'.format(
            self._team_display_name_value,
            self._team_legal_name_value,
        )

TeamName_validator = bv.Struct(TeamName)

class TeamProfileAddLogoDetails(bb.Struct):
    """
    Added team logo to display on shared link headers.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamProfileAddLogoDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamProfileAddLogoDetails()'

TeamProfileAddLogoDetails_validator = bv.Struct(TeamProfileAddLogoDetails)

class TeamProfileAddLogoType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamProfileAddLogoType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamProfileAddLogoType(description={!r})'.format(
            self._description_value,
        )

TeamProfileAddLogoType_validator = bv.Struct(TeamProfileAddLogoType)

class TeamProfileChangeDefaultLanguageDetails(bb.Struct):
    """
    Changed default language for team.

    :ivar team_log.TeamProfileChangeDefaultLanguageDetails.new_value: New team's
        default language.
    :ivar team_log.TeamProfileChangeDefaultLanguageDetails.previous_value:
        Previous team's default language.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New team's default language.

        :rtype: str
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous team's default language.

        :rtype: str
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamProfileChangeDefaultLanguageDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamProfileChangeDefaultLanguageDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

TeamProfileChangeDefaultLanguageDetails_validator = bv.Struct(TeamProfileChangeDefaultLanguageDetails)

class TeamProfileChangeDefaultLanguageType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamProfileChangeDefaultLanguageType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamProfileChangeDefaultLanguageType(description={!r})'.format(
            self._description_value,
        )

TeamProfileChangeDefaultLanguageType_validator = bv.Struct(TeamProfileChangeDefaultLanguageType)

class TeamProfileChangeLogoDetails(bb.Struct):
    """
    Changed team logo displayed on shared link headers.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamProfileChangeLogoDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamProfileChangeLogoDetails()'

TeamProfileChangeLogoDetails_validator = bv.Struct(TeamProfileChangeLogoDetails)

class TeamProfileChangeLogoType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamProfileChangeLogoType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamProfileChangeLogoType(description={!r})'.format(
            self._description_value,
        )

TeamProfileChangeLogoType_validator = bv.Struct(TeamProfileChangeLogoType)

class TeamProfileChangeNameDetails(bb.Struct):
    """
    Changed team name.

    :ivar team_log.TeamProfileChangeNameDetails.previous_value: Previous teams
        name. Might be missing due to historical data gap.
    :ivar team_log.TeamProfileChangeNameDetails.new_value: New team name.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous teams name. Might be missing due to historical data gap.

        :rtype: TeamName
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New team name.

        :rtype: TeamName
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamProfileChangeNameDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamProfileChangeNameDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

TeamProfileChangeNameDetails_validator = bv.Struct(TeamProfileChangeNameDetails)

class TeamProfileChangeNameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamProfileChangeNameType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamProfileChangeNameType(description={!r})'.format(
            self._description_value,
        )

TeamProfileChangeNameType_validator = bv.Struct(TeamProfileChangeNameType)

class TeamProfileRemoveLogoDetails(bb.Struct):
    """
    Removed team logo displayed on shared link headers.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamProfileRemoveLogoDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamProfileRemoveLogoDetails()'

TeamProfileRemoveLogoDetails_validator = bv.Struct(TeamProfileRemoveLogoDetails)

class TeamProfileRemoveLogoType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamProfileRemoveLogoType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamProfileRemoveLogoType(description={!r})'.format(
            self._description_value,
        )

TeamProfileRemoveLogoType_validator = bv.Struct(TeamProfileRemoveLogoType)

class TeamSelectiveSyncPolicy(bb.Union):
    """
    Policy for controlling whether team selective sync is enabled for team.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamSelectiveSyncPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamSelectiveSyncPolicy(%r, %r)' % (self._tag, self._value)

TeamSelectiveSyncPolicy_validator = bv.Union(TeamSelectiveSyncPolicy)

class TeamSelectiveSyncPolicyChangedDetails(bb.Struct):
    """
    Enabled/disabled Team Selective Sync for team.

    :ivar team_log.TeamSelectiveSyncPolicyChangedDetails.new_value: New Team
        Selective Sync policy.
    :ivar team_log.TeamSelectiveSyncPolicyChangedDetails.previous_value:
        Previous Team Selective Sync policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Team Selective Sync policy.

        :rtype: TeamSelectiveSyncPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Team Selective Sync policy.

        :rtype: TeamSelectiveSyncPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamSelectiveSyncPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamSelectiveSyncPolicyChangedDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

TeamSelectiveSyncPolicyChangedDetails_validator = bv.Struct(TeamSelectiveSyncPolicyChangedDetails)

class TeamSelectiveSyncPolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamSelectiveSyncPolicyChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamSelectiveSyncPolicyChangedType(description={!r})'.format(
            self._description_value,
        )

TeamSelectiveSyncPolicyChangedType_validator = bv.Struct(TeamSelectiveSyncPolicyChangedType)

class TeamSelectiveSyncSettingsChangedDetails(bb.Struct):
    """
    Changed sync default.

    :ivar team_log.TeamSelectiveSyncSettingsChangedDetails.previous_value:
        Previous value.
    :ivar team_log.TeamSelectiveSyncSettingsChangedDetails.new_value: New value.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous value.

        :rtype: files.SyncSetting
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New value.

        :rtype: files.SyncSetting
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamSelectiveSyncSettingsChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamSelectiveSyncSettingsChangedDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

TeamSelectiveSyncSettingsChangedDetails_validator = bv.Struct(TeamSelectiveSyncSettingsChangedDetails)

class TeamSelectiveSyncSettingsChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamSelectiveSyncSettingsChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamSelectiveSyncSettingsChangedType(description={!r})'.format(
            self._description_value,
        )

TeamSelectiveSyncSettingsChangedType_validator = bv.Struct(TeamSelectiveSyncSettingsChangedType)

class TfaAddBackupPhoneDetails(bb.Struct):
    """
    Added backup phone for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaAddBackupPhoneDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaAddBackupPhoneDetails()'

TfaAddBackupPhoneDetails_validator = bv.Struct(TfaAddBackupPhoneDetails)

class TfaAddBackupPhoneType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaAddBackupPhoneType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaAddBackupPhoneType(description={!r})'.format(
            self._description_value,
        )

TfaAddBackupPhoneType_validator = bv.Struct(TfaAddBackupPhoneType)

class TfaAddSecurityKeyDetails(bb.Struct):
    """
    Added security key for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaAddSecurityKeyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaAddSecurityKeyDetails()'

TfaAddSecurityKeyDetails_validator = bv.Struct(TfaAddSecurityKeyDetails)

class TfaAddSecurityKeyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaAddSecurityKeyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaAddSecurityKeyType(description={!r})'.format(
            self._description_value,
        )

TfaAddSecurityKeyType_validator = bv.Struct(TfaAddSecurityKeyType)

class TfaChangeBackupPhoneDetails(bb.Struct):
    """
    Changed backup phone for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaChangeBackupPhoneDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaChangeBackupPhoneDetails()'

TfaChangeBackupPhoneDetails_validator = bv.Struct(TfaChangeBackupPhoneDetails)

class TfaChangeBackupPhoneType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaChangeBackupPhoneType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaChangeBackupPhoneType(description={!r})'.format(
            self._description_value,
        )

TfaChangeBackupPhoneType_validator = bv.Struct(TfaChangeBackupPhoneType)

class TfaChangePolicyDetails(bb.Struct):
    """
    Changed two-step verification setting for team.

    :ivar team_log.TfaChangePolicyDetails.new_value: New change policy.
    :ivar team_log.TfaChangePolicyDetails.previous_value: Previous change
        policy. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New change policy.

        :rtype: team_policies.TwoStepVerificationPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous change policy. Might be missing due to historical data gap.

        :rtype: team_policies.TwoStepVerificationPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

TfaChangePolicyDetails_validator = bv.Struct(TfaChangePolicyDetails)

class TfaChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaChangePolicyType(description={!r})'.format(
            self._description_value,
        )

TfaChangePolicyType_validator = bv.Struct(TfaChangePolicyType)

class TfaChangeStatusDetails(bb.Struct):
    """
    Enabled/disabled/changed two-step verification setting.

    :ivar team_log.TfaChangeStatusDetails.new_value: The new two factor
        authentication configuration.
    :ivar team_log.TfaChangeStatusDetails.previous_value: The previous two
        factor authentication configuration. Might be missing due to historical
        data gap.
    :ivar team_log.TfaChangeStatusDetails.used_rescue_code: Used two factor
        authentication rescue code. This flag is relevant when the two factor
        authentication configuration is disabled.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
        '_used_rescue_code_value',
        '_used_rescue_code_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None,
                 used_rescue_code=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        self._used_rescue_code_value = None
        self._used_rescue_code_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value
        if used_rescue_code is not None:
            self.used_rescue_code = used_rescue_code

    @property
    def new_value(self):
        """
        The new two factor authentication configuration.

        :rtype: TfaConfiguration
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        The previous two factor authentication configuration. Might be missing
        due to historical data gap.

        :rtype: TfaConfiguration
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def used_rescue_code(self):
        """
        Used two factor authentication rescue code. This flag is relevant when
        the two factor authentication configuration is disabled.

        :rtype: bool
        """
        if self._used_rescue_code_present:
            return self._used_rescue_code_value
        else:
            return None

    @used_rescue_code.setter
    def used_rescue_code(self, val):
        if val is None:
            del self.used_rescue_code
            return
        val = self._used_rescue_code_validator.validate(val)
        self._used_rescue_code_value = val
        self._used_rescue_code_present = True

    @used_rescue_code.deleter
    def used_rescue_code(self):
        self._used_rescue_code_value = None
        self._used_rescue_code_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaChangeStatusDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaChangeStatusDetails(new_value={!r}, previous_value={!r}, used_rescue_code={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
            self._used_rescue_code_value,
        )

TfaChangeStatusDetails_validator = bv.Struct(TfaChangeStatusDetails)

class TfaChangeStatusType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaChangeStatusType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaChangeStatusType(description={!r})'.format(
            self._description_value,
        )

TfaChangeStatusType_validator = bv.Struct(TfaChangeStatusType)

class TfaConfiguration(bb.Union):
    """
    Two factor authentication configuration. Note: the enabled option is
    deprecated.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    sms = None
    # Attribute is overwritten below the class definition
    authenticator = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_sms(self):
        """
        Check if the union tag is ``sms``.

        :rtype: bool
        """
        return self._tag == 'sms'

    def is_authenticator(self):
        """
        Check if the union tag is ``authenticator``.

        :rtype: bool
        """
        return self._tag == 'authenticator'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaConfiguration, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaConfiguration(%r, %r)' % (self._tag, self._value)

TfaConfiguration_validator = bv.Union(TfaConfiguration)

class TfaRemoveBackupPhoneDetails(bb.Struct):
    """
    Removed backup phone for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaRemoveBackupPhoneDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaRemoveBackupPhoneDetails()'

TfaRemoveBackupPhoneDetails_validator = bv.Struct(TfaRemoveBackupPhoneDetails)

class TfaRemoveBackupPhoneType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaRemoveBackupPhoneType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaRemoveBackupPhoneType(description={!r})'.format(
            self._description_value,
        )

TfaRemoveBackupPhoneType_validator = bv.Struct(TfaRemoveBackupPhoneType)

class TfaRemoveSecurityKeyDetails(bb.Struct):
    """
    Removed security key for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaRemoveSecurityKeyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaRemoveSecurityKeyDetails()'

TfaRemoveSecurityKeyDetails_validator = bv.Struct(TfaRemoveSecurityKeyDetails)

class TfaRemoveSecurityKeyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaRemoveSecurityKeyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaRemoveSecurityKeyType(description={!r})'.format(
            self._description_value,
        )

TfaRemoveSecurityKeyType_validator = bv.Struct(TfaRemoveSecurityKeyType)

class TfaResetDetails(bb.Struct):
    """
    Reset two-step verification for team member.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaResetDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaResetDetails()'

TfaResetDetails_validator = bv.Struct(TfaResetDetails)

class TfaResetType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaResetType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaResetType(description={!r})'.format(
            self._description_value,
        )

TfaResetType_validator = bv.Struct(TfaResetType)

class TimeUnit(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    milliseconds = None
    # Attribute is overwritten below the class definition
    seconds = None
    # Attribute is overwritten below the class definition
    minutes = None
    # Attribute is overwritten below the class definition
    hours = None
    # Attribute is overwritten below the class definition
    days = None
    # Attribute is overwritten below the class definition
    weeks = None
    # Attribute is overwritten below the class definition
    months = None
    # Attribute is overwritten below the class definition
    years = None
    # Attribute is overwritten below the class definition
    other = None

    def is_milliseconds(self):
        """
        Check if the union tag is ``milliseconds``.

        :rtype: bool
        """
        return self._tag == 'milliseconds'

    def is_seconds(self):
        """
        Check if the union tag is ``seconds``.

        :rtype: bool
        """
        return self._tag == 'seconds'

    def is_minutes(self):
        """
        Check if the union tag is ``minutes``.

        :rtype: bool
        """
        return self._tag == 'minutes'

    def is_hours(self):
        """
        Check if the union tag is ``hours``.

        :rtype: bool
        """
        return self._tag == 'hours'

    def is_days(self):
        """
        Check if the union tag is ``days``.

        :rtype: bool
        """
        return self._tag == 'days'

    def is_weeks(self):
        """
        Check if the union tag is ``weeks``.

        :rtype: bool
        """
        return self._tag == 'weeks'

    def is_months(self):
        """
        Check if the union tag is ``months``.

        :rtype: bool
        """
        return self._tag == 'months'

    def is_years(self):
        """
        Check if the union tag is ``years``.

        :rtype: bool
        """
        return self._tag == 'years'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TimeUnit, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TimeUnit(%r, %r)' % (self._tag, self._value)

TimeUnit_validator = bv.Union(TimeUnit)

class TrustedNonTeamMemberLogInfo(UserLogInfo):
    """
    User that is not a member of the team but considered trusted.

    :ivar team_log.TrustedNonTeamMemberLogInfo.trusted_non_team_member_type:
        Indicates the type of the trusted non team member user.
    """

    __slots__ = [
        '_trusted_non_team_member_type_value',
        '_trusted_non_team_member_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 trusted_non_team_member_type=None,
                 account_id=None,
                 display_name=None,
                 email=None):
        super(TrustedNonTeamMemberLogInfo, self).__init__(account_id,
                                                          display_name,
                                                          email)
        self._trusted_non_team_member_type_value = None
        self._trusted_non_team_member_type_present = False
        if trusted_non_team_member_type is not None:
            self.trusted_non_team_member_type = trusted_non_team_member_type

    @property
    def trusted_non_team_member_type(self):
        """
        Indicates the type of the trusted non team member user.

        :rtype: TrustedNonTeamMemberType
        """
        if self._trusted_non_team_member_type_present:
            return self._trusted_non_team_member_type_value
        else:
            raise AttributeError("missing required field 'trusted_non_team_member_type'")

    @trusted_non_team_member_type.setter
    def trusted_non_team_member_type(self, val):
        self._trusted_non_team_member_type_validator.validate_type_only(val)
        self._trusted_non_team_member_type_value = val
        self._trusted_non_team_member_type_present = True

    @trusted_non_team_member_type.deleter
    def trusted_non_team_member_type(self):
        self._trusted_non_team_member_type_value = None
        self._trusted_non_team_member_type_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TrustedNonTeamMemberLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TrustedNonTeamMemberLogInfo(trusted_non_team_member_type={!r}, account_id={!r}, display_name={!r}, email={!r})'.format(
            self._trusted_non_team_member_type_value,
            self._account_id_value,
            self._display_name_value,
            self._email_value,
        )

TrustedNonTeamMemberLogInfo_validator = bv.Struct(TrustedNonTeamMemberLogInfo)

class TrustedNonTeamMemberType(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    multi_instance_admin = None
    # Attribute is overwritten below the class definition
    other = None

    def is_multi_instance_admin(self):
        """
        Check if the union tag is ``multi_instance_admin``.

        :rtype: bool
        """
        return self._tag == 'multi_instance_admin'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TrustedNonTeamMemberType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TrustedNonTeamMemberType(%r, %r)' % (self._tag, self._value)

TrustedNonTeamMemberType_validator = bv.Union(TrustedNonTeamMemberType)

class TrustedTeamsRequestAction(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    invited = None
    # Attribute is overwritten below the class definition
    expired = None
    # Attribute is overwritten below the class definition
    revoked = None
    # Attribute is overwritten below the class definition
    accepted = None
    # Attribute is overwritten below the class definition
    declined = None
    # Attribute is overwritten below the class definition
    other = None

    def is_invited(self):
        """
        Check if the union tag is ``invited``.

        :rtype: bool
        """
        return self._tag == 'invited'

    def is_expired(self):
        """
        Check if the union tag is ``expired``.

        :rtype: bool
        """
        return self._tag == 'expired'

    def is_revoked(self):
        """
        Check if the union tag is ``revoked``.

        :rtype: bool
        """
        return self._tag == 'revoked'

    def is_accepted(self):
        """
        Check if the union tag is ``accepted``.

        :rtype: bool
        """
        return self._tag == 'accepted'

    def is_declined(self):
        """
        Check if the union tag is ``declined``.

        :rtype: bool
        """
        return self._tag == 'declined'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TrustedTeamsRequestAction, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TrustedTeamsRequestAction(%r, %r)' % (self._tag, self._value)

TrustedTeamsRequestAction_validator = bv.Union(TrustedTeamsRequestAction)

class TrustedTeamsRequestState(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    invited = None
    # Attribute is overwritten below the class definition
    linked = None
    # Attribute is overwritten below the class definition
    unlinked = None
    # Attribute is overwritten below the class definition
    other = None

    def is_invited(self):
        """
        Check if the union tag is ``invited``.

        :rtype: bool
        """
        return self._tag == 'invited'

    def is_linked(self):
        """
        Check if the union tag is ``linked``.

        :rtype: bool
        """
        return self._tag == 'linked'

    def is_unlinked(self):
        """
        Check if the union tag is ``unlinked``.

        :rtype: bool
        """
        return self._tag == 'unlinked'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TrustedTeamsRequestState, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TrustedTeamsRequestState(%r, %r)' % (self._tag, self._value)

TrustedTeamsRequestState_validator = bv.Union(TrustedTeamsRequestState)

class TwoAccountChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled option for members to link personal Dropbox account and
    team account to same computer.

    :ivar team_log.TwoAccountChangePolicyDetails.new_value: New two account
        policy.
    :ivar team_log.TwoAccountChangePolicyDetails.previous_value: Previous two
        account policy. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New two account policy.

        :rtype: TwoAccountPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous two account policy. Might be missing due to historical data
        gap.

        :rtype: TwoAccountPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TwoAccountChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TwoAccountChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

TwoAccountChangePolicyDetails_validator = bv.Struct(TwoAccountChangePolicyDetails)

class TwoAccountChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TwoAccountChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TwoAccountChangePolicyType(description={!r})'.format(
            self._description_value,
        )

TwoAccountChangePolicyType_validator = bv.Struct(TwoAccountChangePolicyType)

class TwoAccountPolicy(bb.Union):
    """
    Policy for pairing personal account to work account

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TwoAccountPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TwoAccountPolicy(%r, %r)' % (self._tag, self._value)

TwoAccountPolicy_validator = bv.Union(TwoAccountPolicy)

class UserLinkedAppLogInfo(AppLogInfo):
    """
    User linked app
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self,
                 app_id=None,
                 display_name=None):
        super(UserLinkedAppLogInfo, self).__init__(app_id,
                                                   display_name)

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(UserLinkedAppLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'UserLinkedAppLogInfo(app_id={!r}, display_name={!r})'.format(
            self._app_id_value,
            self._display_name_value,
        )

UserLinkedAppLogInfo_validator = bv.Struct(UserLinkedAppLogInfo)

class UserNameLogInfo(bb.Struct):
    """
    User's name logged information

    :ivar team_log.UserNameLogInfo.given_name: Given name.
    :ivar team_log.UserNameLogInfo.surname: Surname.
    :ivar team_log.UserNameLogInfo.locale: Locale. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_given_name_value',
        '_given_name_present',
        '_surname_value',
        '_surname_present',
        '_locale_value',
        '_locale_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 given_name=None,
                 surname=None,
                 locale=None):
        self._given_name_value = None
        self._given_name_present = False
        self._surname_value = None
        self._surname_present = False
        self._locale_value = None
        self._locale_present = False
        if given_name is not None:
            self.given_name = given_name
        if surname is not None:
            self.surname = surname
        if locale is not None:
            self.locale = locale

    @property
    def given_name(self):
        """
        Given name.

        :rtype: str
        """
        if self._given_name_present:
            return self._given_name_value
        else:
            raise AttributeError("missing required field 'given_name'")

    @given_name.setter
    def given_name(self, val):
        val = self._given_name_validator.validate(val)
        self._given_name_value = val
        self._given_name_present = True

    @given_name.deleter
    def given_name(self):
        self._given_name_value = None
        self._given_name_present = False

    @property
    def surname(self):
        """
        Surname.

        :rtype: str
        """
        if self._surname_present:
            return self._surname_value
        else:
            raise AttributeError("missing required field 'surname'")

    @surname.setter
    def surname(self, val):
        val = self._surname_validator.validate(val)
        self._surname_value = val
        self._surname_present = True

    @surname.deleter
    def surname(self):
        self._surname_value = None
        self._surname_present = False

    @property
    def locale(self):
        """
        Locale. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._locale_present:
            return self._locale_value
        else:
            return None

    @locale.setter
    def locale(self, val):
        if val is None:
            del self.locale
            return
        val = self._locale_validator.validate(val)
        self._locale_value = val
        self._locale_present = True

    @locale.deleter
    def locale(self):
        self._locale_value = None
        self._locale_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(UserNameLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'UserNameLogInfo(given_name={!r}, surname={!r}, locale={!r})'.format(
            self._given_name_value,
            self._surname_value,
            self._locale_value,
        )

UserNameLogInfo_validator = bv.Struct(UserNameLogInfo)

class UserOrTeamLinkedAppLogInfo(AppLogInfo):
    """
    User or team linked app. Used when linked type is missing due to historical
    data gap.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self,
                 app_id=None,
                 display_name=None):
        super(UserOrTeamLinkedAppLogInfo, self).__init__(app_id,
                                                         display_name)

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(UserOrTeamLinkedAppLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'UserOrTeamLinkedAppLogInfo(app_id={!r}, display_name={!r})'.format(
            self._app_id_value,
            self._display_name_value,
        )

UserOrTeamLinkedAppLogInfo_validator = bv.Struct(UserOrTeamLinkedAppLogInfo)

class ViewerInfoPolicyChangedDetails(bb.Struct):
    """
    Changed team policy for viewer info.

    :ivar team_log.ViewerInfoPolicyChangedDetails.previous_value: Previous
        Viewer Info policy.
    :ivar team_log.ViewerInfoPolicyChangedDetails.new_value: New Viewer Info
        policy.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous Viewer Info policy.

        :rtype: PassPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New Viewer Info policy.

        :rtype: PassPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ViewerInfoPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ViewerInfoPolicyChangedDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

ViewerInfoPolicyChangedDetails_validator = bv.Struct(ViewerInfoPolicyChangedDetails)

class ViewerInfoPolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ViewerInfoPolicyChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ViewerInfoPolicyChangedType(description={!r})'.format(
            self._description_value,
        )

ViewerInfoPolicyChangedType_validator = bv.Struct(ViewerInfoPolicyChangedType)

class WebDeviceSessionLogInfo(DeviceSessionLogInfo):
    """
    Information on active web sessions

    :ivar team_log.WebDeviceSessionLogInfo.session_info: Web session unique id.
        Might be missing due to historical data gap.
    :ivar team_log.WebDeviceSessionLogInfo.user_agent: Information on the
        hosting device.
    :ivar team_log.WebDeviceSessionLogInfo.os: Information on the hosting
        operating system.
    :ivar team_log.WebDeviceSessionLogInfo.browser: Information on the browser
        used for this web session.
    """

    __slots__ = [
        '_session_info_value',
        '_session_info_present',
        '_user_agent_value',
        '_user_agent_present',
        '_os_value',
        '_os_present',
        '_browser_value',
        '_browser_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 user_agent=None,
                 os=None,
                 browser=None,
                 ip_address=None,
                 created=None,
                 updated=None,
                 session_info=None):
        super(WebDeviceSessionLogInfo, self).__init__(ip_address,
                                                      created,
                                                      updated)
        self._session_info_value = None
        self._session_info_present = False
        self._user_agent_value = None
        self._user_agent_present = False
        self._os_value = None
        self._os_present = False
        self._browser_value = None
        self._browser_present = False
        if session_info is not None:
            self.session_info = session_info
        if user_agent is not None:
            self.user_agent = user_agent
        if os is not None:
            self.os = os
        if browser is not None:
            self.browser = browser

    @property
    def session_info(self):
        """
        Web session unique id. Might be missing due to historical data gap.

        :rtype: WebSessionLogInfo
        """
        if self._session_info_present:
            return self._session_info_value
        else:
            return None

    @session_info.setter
    def session_info(self, val):
        if val is None:
            del self.session_info
            return
        self._session_info_validator.validate_type_only(val)
        self._session_info_value = val
        self._session_info_present = True

    @session_info.deleter
    def session_info(self):
        self._session_info_value = None
        self._session_info_present = False

    @property
    def user_agent(self):
        """
        Information on the hosting device.

        :rtype: str
        """
        if self._user_agent_present:
            return self._user_agent_value
        else:
            raise AttributeError("missing required field 'user_agent'")

    @user_agent.setter
    def user_agent(self, val):
        val = self._user_agent_validator.validate(val)
        self._user_agent_value = val
        self._user_agent_present = True

    @user_agent.deleter
    def user_agent(self):
        self._user_agent_value = None
        self._user_agent_present = False

    @property
    def os(self):
        """
        Information on the hosting operating system.

        :rtype: str
        """
        if self._os_present:
            return self._os_value
        else:
            raise AttributeError("missing required field 'os'")

    @os.setter
    def os(self, val):
        val = self._os_validator.validate(val)
        self._os_value = val
        self._os_present = True

    @os.deleter
    def os(self):
        self._os_value = None
        self._os_present = False

    @property
    def browser(self):
        """
        Information on the browser used for this web session.

        :rtype: str
        """
        if self._browser_present:
            return self._browser_value
        else:
            raise AttributeError("missing required field 'browser'")

    @browser.setter
    def browser(self, val):
        val = self._browser_validator.validate(val)
        self._browser_value = val
        self._browser_present = True

    @browser.deleter
    def browser(self):
        self._browser_value = None
        self._browser_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(WebDeviceSessionLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'WebDeviceSessionLogInfo(user_agent={!r}, os={!r}, browser={!r}, ip_address={!r}, created={!r}, updated={!r}, session_info={!r})'.format(
            self._user_agent_value,
            self._os_value,
            self._browser_value,
            self._ip_address_value,
            self._created_value,
            self._updated_value,
            self._session_info_value,
        )

WebDeviceSessionLogInfo_validator = bv.Struct(WebDeviceSessionLogInfo)

class WebSessionLogInfo(SessionLogInfo):
    """
    Web session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self,
                 session_id=None):
        super(WebSessionLogInfo, self).__init__(session_id)

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(WebSessionLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'WebSessionLogInfo(session_id={!r})'.format(
            self._session_id_value,
        )

WebSessionLogInfo_validator = bv.Struct(WebSessionLogInfo)

class WebSessionsChangeFixedLengthPolicyDetails(bb.Struct):
    """
    Changed how long members can stay signed in to Dropbox.com.

    :ivar team_log.WebSessionsChangeFixedLengthPolicyDetails.new_value: New
        session length policy. Might be missing due to historical data gap.
    :ivar team_log.WebSessionsChangeFixedLengthPolicyDetails.previous_value:
        Previous session length policy. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New session length policy. Might be missing due to historical data gap.

        :rtype: WebSessionsFixedLengthPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous session length policy. Might be missing due to historical data
        gap.

        :rtype: WebSessionsFixedLengthPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(WebSessionsChangeFixedLengthPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'WebSessionsChangeFixedLengthPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

WebSessionsChangeFixedLengthPolicyDetails_validator = bv.Struct(WebSessionsChangeFixedLengthPolicyDetails)

class WebSessionsChangeFixedLengthPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(WebSessionsChangeFixedLengthPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'WebSessionsChangeFixedLengthPolicyType(description={!r})'.format(
            self._description_value,
        )

WebSessionsChangeFixedLengthPolicyType_validator = bv.Struct(WebSessionsChangeFixedLengthPolicyType)

class WebSessionsChangeIdleLengthPolicyDetails(bb.Struct):
    """
    Changed how long team members can be idle while signed in to Dropbox.com.

    :ivar team_log.WebSessionsChangeIdleLengthPolicyDetails.new_value: New idle
        length policy. Might be missing due to historical data gap.
    :ivar team_log.WebSessionsChangeIdleLengthPolicyDetails.previous_value:
        Previous idle length policy. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New idle length policy. Might be missing due to historical data gap.

        :rtype: WebSessionsIdleLengthPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous idle length policy. Might be missing due to historical data
        gap.

        :rtype: WebSessionsIdleLengthPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(WebSessionsChangeIdleLengthPolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'WebSessionsChangeIdleLengthPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

WebSessionsChangeIdleLengthPolicyDetails_validator = bv.Struct(WebSessionsChangeIdleLengthPolicyDetails)

class WebSessionsChangeIdleLengthPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(WebSessionsChangeIdleLengthPolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'WebSessionsChangeIdleLengthPolicyType(description={!r})'.format(
            self._description_value,
        )

WebSessionsChangeIdleLengthPolicyType_validator = bv.Struct(WebSessionsChangeIdleLengthPolicyType)

class WebSessionsFixedLengthPolicy(bb.Union):
    """
    Web sessions fixed length policy.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar DurationLogInfo WebSessionsFixedLengthPolicy.defined: Defined fixed
        session length.
    :ivar team_log.WebSessionsFixedLengthPolicy.undefined: Undefined fixed
        session length.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    undefined = None
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def defined(cls, val):
        """
        Create an instance of this class set to the ``defined`` tag with value
        ``val``.

        :param DurationLogInfo val:
        :rtype: WebSessionsFixedLengthPolicy
        """
        return cls('defined', val)

    def is_defined(self):
        """
        Check if the union tag is ``defined``.

        :rtype: bool
        """
        return self._tag == 'defined'

    def is_undefined(self):
        """
        Check if the union tag is ``undefined``.

        :rtype: bool
        """
        return self._tag == 'undefined'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_defined(self):
        """
        Defined fixed session length.

        Only call this if :meth:`is_defined` is true.

        :rtype: DurationLogInfo
        """
        if not self.is_defined():
            raise AttributeError("tag 'defined' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(WebSessionsFixedLengthPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'WebSessionsFixedLengthPolicy(%r, %r)' % (self._tag, self._value)

WebSessionsFixedLengthPolicy_validator = bv.Union(WebSessionsFixedLengthPolicy)

class WebSessionsIdleLengthPolicy(bb.Union):
    """
    Web sessions idle length policy.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar DurationLogInfo WebSessionsIdleLengthPolicy.defined: Defined idle
        session length.
    :ivar team_log.WebSessionsIdleLengthPolicy.undefined: Undefined idle session
        length.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    undefined = None
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def defined(cls, val):
        """
        Create an instance of this class set to the ``defined`` tag with value
        ``val``.

        :param DurationLogInfo val:
        :rtype: WebSessionsIdleLengthPolicy
        """
        return cls('defined', val)

    def is_defined(self):
        """
        Check if the union tag is ``defined``.

        :rtype: bool
        """
        return self._tag == 'defined'

    def is_undefined(self):
        """
        Check if the union tag is ``undefined``.

        :rtype: bool
        """
        return self._tag == 'undefined'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_defined(self):
        """
        Defined idle session length.

        Only call this if :meth:`is_defined` is true.

        :rtype: DurationLogInfo
        """
        if not self.is_defined():
            raise AttributeError("tag 'defined' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(WebSessionsIdleLengthPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'WebSessionsIdleLengthPolicy(%r, %r)' % (self._tag, self._value)

WebSessionsIdleLengthPolicy_validator = bv.Union(WebSessionsIdleLengthPolicy)

AppId_validator = bv.String()
EmailAddress_validator = bv.String(max_length=255)
FilePath_validator = bv.String()
IpAddress_validator = bv.String()
NamespaceId_validator = bv.String()
RequestId_validator = bv.String()
TeamEventList_validator = bv.List(TeamEvent_validator)
AccessMethodLogInfo._end_user_validator = SessionLogInfo_validator
AccessMethodLogInfo._sign_in_as_validator = WebSessionLogInfo_validator
AccessMethodLogInfo._content_manager_validator = WebSessionLogInfo_validator
AccessMethodLogInfo._admin_console_validator = WebSessionLogInfo_validator
AccessMethodLogInfo._api_validator = ApiSessionLogInfo_validator
AccessMethodLogInfo._other_validator = bv.Void()
AccessMethodLogInfo._tagmap = {
    'end_user': AccessMethodLogInfo._end_user_validator,
    'sign_in_as': AccessMethodLogInfo._sign_in_as_validator,
    'content_manager': AccessMethodLogInfo._content_manager_validator,
    'admin_console': AccessMethodLogInfo._admin_console_validator,
    'api': AccessMethodLogInfo._api_validator,
    'other': AccessMethodLogInfo._other_validator,
}

AccessMethodLogInfo.other = AccessMethodLogInfo('other')

AccountCaptureAvailability._unavailable_validator = bv.Void()
AccountCaptureAvailability._available_validator = bv.Void()
AccountCaptureAvailability._other_validator = bv.Void()
AccountCaptureAvailability._tagmap = {
    'unavailable': AccountCaptureAvailability._unavailable_validator,
    'available': AccountCaptureAvailability._available_validator,
    'other': AccountCaptureAvailability._other_validator,
}

AccountCaptureAvailability.unavailable = AccountCaptureAvailability('unavailable')
AccountCaptureAvailability.available = AccountCaptureAvailability('available')
AccountCaptureAvailability.other = AccountCaptureAvailability('other')

AccountCaptureChangeAvailabilityDetails._new_value_validator = AccountCaptureAvailability_validator
AccountCaptureChangeAvailabilityDetails._previous_value_validator = bv.Nullable(AccountCaptureAvailability_validator)
AccountCaptureChangeAvailabilityDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
AccountCaptureChangeAvailabilityDetails._all_fields_ = [
    ('new_value', AccountCaptureChangeAvailabilityDetails._new_value_validator),
    ('previous_value', AccountCaptureChangeAvailabilityDetails._previous_value_validator),
]

AccountCaptureChangeAvailabilityType._description_validator = bv.String()
AccountCaptureChangeAvailabilityType._all_field_names_ = set(['description'])
AccountCaptureChangeAvailabilityType._all_fields_ = [('description', AccountCaptureChangeAvailabilityType._description_validator)]

AccountCaptureChangePolicyDetails._new_value_validator = AccountCapturePolicy_validator
AccountCaptureChangePolicyDetails._previous_value_validator = bv.Nullable(AccountCapturePolicy_validator)
AccountCaptureChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
AccountCaptureChangePolicyDetails._all_fields_ = [
    ('new_value', AccountCaptureChangePolicyDetails._new_value_validator),
    ('previous_value', AccountCaptureChangePolicyDetails._previous_value_validator),
]

AccountCaptureChangePolicyType._description_validator = bv.String()
AccountCaptureChangePolicyType._all_field_names_ = set(['description'])
AccountCaptureChangePolicyType._all_fields_ = [('description', AccountCaptureChangePolicyType._description_validator)]

AccountCaptureMigrateAccountDetails._domain_name_validator = bv.String()
AccountCaptureMigrateAccountDetails._all_field_names_ = set(['domain_name'])
AccountCaptureMigrateAccountDetails._all_fields_ = [('domain_name', AccountCaptureMigrateAccountDetails._domain_name_validator)]

AccountCaptureMigrateAccountType._description_validator = bv.String()
AccountCaptureMigrateAccountType._all_field_names_ = set(['description'])
AccountCaptureMigrateAccountType._all_fields_ = [('description', AccountCaptureMigrateAccountType._description_validator)]

AccountCaptureNotificationEmailsSentDetails._domain_name_validator = bv.String()
AccountCaptureNotificationEmailsSentDetails._all_field_names_ = set(['domain_name'])
AccountCaptureNotificationEmailsSentDetails._all_fields_ = [('domain_name', AccountCaptureNotificationEmailsSentDetails._domain_name_validator)]

AccountCaptureNotificationEmailsSentType._description_validator = bv.String()
AccountCaptureNotificationEmailsSentType._all_field_names_ = set(['description'])
AccountCaptureNotificationEmailsSentType._all_fields_ = [('description', AccountCaptureNotificationEmailsSentType._description_validator)]

AccountCapturePolicy._disabled_validator = bv.Void()
AccountCapturePolicy._invited_users_validator = bv.Void()
AccountCapturePolicy._all_users_validator = bv.Void()
AccountCapturePolicy._other_validator = bv.Void()
AccountCapturePolicy._tagmap = {
    'disabled': AccountCapturePolicy._disabled_validator,
    'invited_users': AccountCapturePolicy._invited_users_validator,
    'all_users': AccountCapturePolicy._all_users_validator,
    'other': AccountCapturePolicy._other_validator,
}

AccountCapturePolicy.disabled = AccountCapturePolicy('disabled')
AccountCapturePolicy.invited_users = AccountCapturePolicy('invited_users')
AccountCapturePolicy.all_users = AccountCapturePolicy('all_users')
AccountCapturePolicy.other = AccountCapturePolicy('other')

AccountCaptureRelinquishAccountDetails._domain_name_validator = bv.String()
AccountCaptureRelinquishAccountDetails._all_field_names_ = set(['domain_name'])
AccountCaptureRelinquishAccountDetails._all_fields_ = [('domain_name', AccountCaptureRelinquishAccountDetails._domain_name_validator)]

AccountCaptureRelinquishAccountType._description_validator = bv.String()
AccountCaptureRelinquishAccountType._all_field_names_ = set(['description'])
AccountCaptureRelinquishAccountType._all_fields_ = [('description', AccountCaptureRelinquishAccountType._description_validator)]

ActionDetails._team_join_details_validator = JoinTeamDetails_validator
ActionDetails._remove_action_validator = MemberRemoveActionType_validator
ActionDetails._other_validator = bv.Void()
ActionDetails._tagmap = {
    'team_join_details': ActionDetails._team_join_details_validator,
    'remove_action': ActionDetails._remove_action_validator,
    'other': ActionDetails._other_validator,
}

ActionDetails.other = ActionDetails('other')

ActorLogInfo._user_validator = UserLogInfo_validator
ActorLogInfo._admin_validator = UserLogInfo_validator
ActorLogInfo._app_validator = AppLogInfo_validator
ActorLogInfo._reseller_validator = ResellerLogInfo_validator
ActorLogInfo._dropbox_validator = bv.Void()
ActorLogInfo._anonymous_validator = bv.Void()
ActorLogInfo._other_validator = bv.Void()
ActorLogInfo._tagmap = {
    'user': ActorLogInfo._user_validator,
    'admin': ActorLogInfo._admin_validator,
    'app': ActorLogInfo._app_validator,
    'reseller': ActorLogInfo._reseller_validator,
    'dropbox': ActorLogInfo._dropbox_validator,
    'anonymous': ActorLogInfo._anonymous_validator,
    'other': ActorLogInfo._other_validator,
}

ActorLogInfo.dropbox = ActorLogInfo('dropbox')
ActorLogInfo.anonymous = ActorLogInfo('anonymous')
ActorLogInfo.other = ActorLogInfo('other')

AdminRole._team_admin_validator = bv.Void()
AdminRole._user_management_admin_validator = bv.Void()
AdminRole._support_admin_validator = bv.Void()
AdminRole._limited_admin_validator = bv.Void()
AdminRole._member_only_validator = bv.Void()
AdminRole._other_validator = bv.Void()
AdminRole._tagmap = {
    'team_admin': AdminRole._team_admin_validator,
    'user_management_admin': AdminRole._user_management_admin_validator,
    'support_admin': AdminRole._support_admin_validator,
    'limited_admin': AdminRole._limited_admin_validator,
    'member_only': AdminRole._member_only_validator,
    'other': AdminRole._other_validator,
}

AdminRole.team_admin = AdminRole('team_admin')
AdminRole.user_management_admin = AdminRole('user_management_admin')
AdminRole.support_admin = AdminRole('support_admin')
AdminRole.limited_admin = AdminRole('limited_admin')
AdminRole.member_only = AdminRole('member_only')
AdminRole.other = AdminRole('other')

AllowDownloadDisabledDetails._all_field_names_ = set([])
AllowDownloadDisabledDetails._all_fields_ = []

AllowDownloadDisabledType._description_validator = bv.String()
AllowDownloadDisabledType._all_field_names_ = set(['description'])
AllowDownloadDisabledType._all_fields_ = [('description', AllowDownloadDisabledType._description_validator)]

AllowDownloadEnabledDetails._all_field_names_ = set([])
AllowDownloadEnabledDetails._all_fields_ = []

AllowDownloadEnabledType._description_validator = bv.String()
AllowDownloadEnabledType._all_field_names_ = set(['description'])
AllowDownloadEnabledType._all_fields_ = [('description', AllowDownloadEnabledType._description_validator)]

ApiSessionLogInfo._request_id_validator = RequestId_validator
ApiSessionLogInfo._all_field_names_ = set(['request_id'])
ApiSessionLogInfo._all_fields_ = [('request_id', ApiSessionLogInfo._request_id_validator)]

AppLinkTeamDetails._app_info_validator = AppLogInfo_validator
AppLinkTeamDetails._all_field_names_ = set(['app_info'])
AppLinkTeamDetails._all_fields_ = [('app_info', AppLinkTeamDetails._app_info_validator)]

AppLinkTeamType._description_validator = bv.String()
AppLinkTeamType._all_field_names_ = set(['description'])
AppLinkTeamType._all_fields_ = [('description', AppLinkTeamType._description_validator)]

AppLinkUserDetails._app_info_validator = AppLogInfo_validator
AppLinkUserDetails._all_field_names_ = set(['app_info'])
AppLinkUserDetails._all_fields_ = [('app_info', AppLinkUserDetails._app_info_validator)]

AppLinkUserType._description_validator = bv.String()
AppLinkUserType._all_field_names_ = set(['description'])
AppLinkUserType._all_fields_ = [('description', AppLinkUserType._description_validator)]

AppLogInfo._app_id_validator = bv.Nullable(AppId_validator)
AppLogInfo._display_name_validator = bv.Nullable(bv.String())
AppLogInfo._field_names_ = set([
    'app_id',
    'display_name',
])
AppLogInfo._all_field_names_ = AppLogInfo._field_names_
AppLogInfo._fields_ = [
    ('app_id', AppLogInfo._app_id_validator),
    ('display_name', AppLogInfo._display_name_validator),
]
AppLogInfo._all_fields_ = AppLogInfo._fields_

AppLogInfo._tag_to_subtype_ = {
    (u'user_or_team_linked_app',): UserOrTeamLinkedAppLogInfo_validator,
    (u'user_linked_app',): UserLinkedAppLogInfo_validator,
    (u'team_linked_app',): TeamLinkedAppLogInfo_validator,
}
AppLogInfo._pytype_to_tag_and_subtype_ = {
    UserOrTeamLinkedAppLogInfo: ((u'user_or_team_linked_app',), UserOrTeamLinkedAppLogInfo_validator),
    UserLinkedAppLogInfo: ((u'user_linked_app',), UserLinkedAppLogInfo_validator),
    TeamLinkedAppLogInfo: ((u'team_linked_app',), TeamLinkedAppLogInfo_validator),
}
AppLogInfo._is_catch_all_ = True

AppUnlinkTeamDetails._app_info_validator = AppLogInfo_validator
AppUnlinkTeamDetails._all_field_names_ = set(['app_info'])
AppUnlinkTeamDetails._all_fields_ = [('app_info', AppUnlinkTeamDetails._app_info_validator)]

AppUnlinkTeamType._description_validator = bv.String()
AppUnlinkTeamType._all_field_names_ = set(['description'])
AppUnlinkTeamType._all_fields_ = [('description', AppUnlinkTeamType._description_validator)]

AppUnlinkUserDetails._app_info_validator = AppLogInfo_validator
AppUnlinkUserDetails._all_field_names_ = set(['app_info'])
AppUnlinkUserDetails._all_fields_ = [('app_info', AppUnlinkUserDetails._app_info_validator)]

AppUnlinkUserType._description_validator = bv.String()
AppUnlinkUserType._all_field_names_ = set(['description'])
AppUnlinkUserType._all_fields_ = [('description', AppUnlinkUserType._description_validator)]

AssetLogInfo._file_validator = FileLogInfo_validator
AssetLogInfo._folder_validator = FolderLogInfo_validator
AssetLogInfo._paper_document_validator = PaperDocumentLogInfo_validator
AssetLogInfo._paper_folder_validator = PaperFolderLogInfo_validator
AssetLogInfo._showcase_document_validator = ShowcaseDocumentLogInfo_validator
AssetLogInfo._other_validator = bv.Void()
AssetLogInfo._tagmap = {
    'file': AssetLogInfo._file_validator,
    'folder': AssetLogInfo._folder_validator,
    'paper_document': AssetLogInfo._paper_document_validator,
    'paper_folder': AssetLogInfo._paper_folder_validator,
    'showcase_document': AssetLogInfo._showcase_document_validator,
    'other': AssetLogInfo._other_validator,
}

AssetLogInfo.other = AssetLogInfo('other')

CameraUploadsPolicy._disabled_validator = bv.Void()
CameraUploadsPolicy._enabled_validator = bv.Void()
CameraUploadsPolicy._other_validator = bv.Void()
CameraUploadsPolicy._tagmap = {
    'disabled': CameraUploadsPolicy._disabled_validator,
    'enabled': CameraUploadsPolicy._enabled_validator,
    'other': CameraUploadsPolicy._other_validator,
}

CameraUploadsPolicy.disabled = CameraUploadsPolicy('disabled')
CameraUploadsPolicy.enabled = CameraUploadsPolicy('enabled')
CameraUploadsPolicy.other = CameraUploadsPolicy('other')

CameraUploadsPolicyChangedDetails._new_value_validator = CameraUploadsPolicy_validator
CameraUploadsPolicyChangedDetails._previous_value_validator = CameraUploadsPolicy_validator
CameraUploadsPolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
CameraUploadsPolicyChangedDetails._all_fields_ = [
    ('new_value', CameraUploadsPolicyChangedDetails._new_value_validator),
    ('previous_value', CameraUploadsPolicyChangedDetails._previous_value_validator),
]

CameraUploadsPolicyChangedType._description_validator = bv.String()
CameraUploadsPolicyChangedType._all_field_names_ = set(['description'])
CameraUploadsPolicyChangedType._all_fields_ = [('description', CameraUploadsPolicyChangedType._description_validator)]

Certificate._subject_validator = bv.String()
Certificate._issuer_validator = bv.String()
Certificate._issue_date_validator = bv.String()
Certificate._expiration_date_validator = bv.String()
Certificate._serial_number_validator = bv.String()
Certificate._sha1_fingerprint_validator = bv.String()
Certificate._common_name_validator = bv.Nullable(bv.String())
Certificate._all_field_names_ = set([
    'subject',
    'issuer',
    'issue_date',
    'expiration_date',
    'serial_number',
    'sha1_fingerprint',
    'common_name',
])
Certificate._all_fields_ = [
    ('subject', Certificate._subject_validator),
    ('issuer', Certificate._issuer_validator),
    ('issue_date', Certificate._issue_date_validator),
    ('expiration_date', Certificate._expiration_date_validator),
    ('serial_number', Certificate._serial_number_validator),
    ('sha1_fingerprint', Certificate._sha1_fingerprint_validator),
    ('common_name', Certificate._common_name_validator),
]

CollectionShareDetails._album_name_validator = bv.String()
CollectionShareDetails._all_field_names_ = set(['album_name'])
CollectionShareDetails._all_fields_ = [('album_name', CollectionShareDetails._album_name_validator)]

CollectionShareType._description_validator = bv.String()
CollectionShareType._all_field_names_ = set(['description'])
CollectionShareType._all_fields_ = [('description', CollectionShareType._description_validator)]

ContentPermanentDeletePolicy._disabled_validator = bv.Void()
ContentPermanentDeletePolicy._enabled_validator = bv.Void()
ContentPermanentDeletePolicy._other_validator = bv.Void()
ContentPermanentDeletePolicy._tagmap = {
    'disabled': ContentPermanentDeletePolicy._disabled_validator,
    'enabled': ContentPermanentDeletePolicy._enabled_validator,
    'other': ContentPermanentDeletePolicy._other_validator,
}

ContentPermanentDeletePolicy.disabled = ContentPermanentDeletePolicy('disabled')
ContentPermanentDeletePolicy.enabled = ContentPermanentDeletePolicy('enabled')
ContentPermanentDeletePolicy.other = ContentPermanentDeletePolicy('other')

ContextLogInfo._team_member_validator = TeamMemberLogInfo_validator
ContextLogInfo._non_team_member_validator = NonTeamMemberLogInfo_validator
ContextLogInfo._anonymous_validator = bv.Void()
ContextLogInfo._team_validator = bv.Void()
ContextLogInfo._trusted_non_team_member_validator = TrustedNonTeamMemberLogInfo_validator
ContextLogInfo._other_validator = bv.Void()
ContextLogInfo._tagmap = {
    'team_member': ContextLogInfo._team_member_validator,
    'non_team_member': ContextLogInfo._non_team_member_validator,
    'anonymous': ContextLogInfo._anonymous_validator,
    'team': ContextLogInfo._team_validator,
    'trusted_non_team_member': ContextLogInfo._trusted_non_team_member_validator,
    'other': ContextLogInfo._other_validator,
}

ContextLogInfo.anonymous = ContextLogInfo('anonymous')
ContextLogInfo.team = ContextLogInfo('team')
ContextLogInfo.other = ContextLogInfo('other')

CreateFolderDetails._all_field_names_ = set([])
CreateFolderDetails._all_fields_ = []

CreateFolderType._description_validator = bv.String()
CreateFolderType._all_field_names_ = set(['description'])
CreateFolderType._all_fields_ = [('description', CreateFolderType._description_validator)]

DataPlacementRestrictionChangePolicyDetails._previous_value_validator = PlacementRestriction_validator
DataPlacementRestrictionChangePolicyDetails._new_value_validator = PlacementRestriction_validator
DataPlacementRestrictionChangePolicyDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
DataPlacementRestrictionChangePolicyDetails._all_fields_ = [
    ('previous_value', DataPlacementRestrictionChangePolicyDetails._previous_value_validator),
    ('new_value', DataPlacementRestrictionChangePolicyDetails._new_value_validator),
]

DataPlacementRestrictionChangePolicyType._description_validator = bv.String()
DataPlacementRestrictionChangePolicyType._all_field_names_ = set(['description'])
DataPlacementRestrictionChangePolicyType._all_fields_ = [('description', DataPlacementRestrictionChangePolicyType._description_validator)]

DataPlacementRestrictionSatisfyPolicyDetails._placement_restriction_validator = PlacementRestriction_validator
DataPlacementRestrictionSatisfyPolicyDetails._all_field_names_ = set(['placement_restriction'])
DataPlacementRestrictionSatisfyPolicyDetails._all_fields_ = [('placement_restriction', DataPlacementRestrictionSatisfyPolicyDetails._placement_restriction_validator)]

DataPlacementRestrictionSatisfyPolicyType._description_validator = bv.String()
DataPlacementRestrictionSatisfyPolicyType._all_field_names_ = set(['description'])
DataPlacementRestrictionSatisfyPolicyType._all_fields_ = [('description', DataPlacementRestrictionSatisfyPolicyType._description_validator)]

DeviceSessionLogInfo._ip_address_validator = bv.Nullable(IpAddress_validator)
DeviceSessionLogInfo._created_validator = bv.Nullable(common.DropboxTimestamp_validator)
DeviceSessionLogInfo._updated_validator = bv.Nullable(common.DropboxTimestamp_validator)
DeviceSessionLogInfo._field_names_ = set([
    'ip_address',
    'created',
    'updated',
])
DeviceSessionLogInfo._all_field_names_ = DeviceSessionLogInfo._field_names_
DeviceSessionLogInfo._fields_ = [
    ('ip_address', DeviceSessionLogInfo._ip_address_validator),
    ('created', DeviceSessionLogInfo._created_validator),
    ('updated', DeviceSessionLogInfo._updated_validator),
]
DeviceSessionLogInfo._all_fields_ = DeviceSessionLogInfo._fields_

DeviceSessionLogInfo._tag_to_subtype_ = {
    (u'desktop_device_session',): DesktopDeviceSessionLogInfo_validator,
    (u'mobile_device_session',): MobileDeviceSessionLogInfo_validator,
    (u'web_device_session',): WebDeviceSessionLogInfo_validator,
    (u'legacy_device_session',): LegacyDeviceSessionLogInfo_validator,
}
DeviceSessionLogInfo._pytype_to_tag_and_subtype_ = {
    DesktopDeviceSessionLogInfo: ((u'desktop_device_session',), DesktopDeviceSessionLogInfo_validator),
    MobileDeviceSessionLogInfo: ((u'mobile_device_session',), MobileDeviceSessionLogInfo_validator),
    WebDeviceSessionLogInfo: ((u'web_device_session',), WebDeviceSessionLogInfo_validator),
    LegacyDeviceSessionLogInfo: ((u'legacy_device_session',), LegacyDeviceSessionLogInfo_validator),
}
DeviceSessionLogInfo._is_catch_all_ = True

DesktopDeviceSessionLogInfo._session_info_validator = bv.Nullable(DesktopSessionLogInfo_validator)
DesktopDeviceSessionLogInfo._host_name_validator = bv.String()
DesktopDeviceSessionLogInfo._client_type_validator = team.DesktopPlatform_validator
DesktopDeviceSessionLogInfo._client_version_validator = bv.Nullable(bv.String())
DesktopDeviceSessionLogInfo._platform_validator = bv.String()
DesktopDeviceSessionLogInfo._is_delete_on_unlink_supported_validator = bv.Boolean()
DesktopDeviceSessionLogInfo._field_names_ = set([
    'session_info',
    'host_name',
    'client_type',
    'client_version',
    'platform',
    'is_delete_on_unlink_supported',
])
DesktopDeviceSessionLogInfo._all_field_names_ = DeviceSessionLogInfo._all_field_names_.union(DesktopDeviceSessionLogInfo._field_names_)
DesktopDeviceSessionLogInfo._fields_ = [
    ('session_info', DesktopDeviceSessionLogInfo._session_info_validator),
    ('host_name', DesktopDeviceSessionLogInfo._host_name_validator),
    ('client_type', DesktopDeviceSessionLogInfo._client_type_validator),
    ('client_version', DesktopDeviceSessionLogInfo._client_version_validator),
    ('platform', DesktopDeviceSessionLogInfo._platform_validator),
    ('is_delete_on_unlink_supported', DesktopDeviceSessionLogInfo._is_delete_on_unlink_supported_validator),
]
DesktopDeviceSessionLogInfo._all_fields_ = DeviceSessionLogInfo._all_fields_ + DesktopDeviceSessionLogInfo._fields_

SessionLogInfo._session_id_validator = bv.Nullable(common.SessionId_validator)
SessionLogInfo._field_names_ = set(['session_id'])
SessionLogInfo._all_field_names_ = SessionLogInfo._field_names_
SessionLogInfo._fields_ = [('session_id', SessionLogInfo._session_id_validator)]
SessionLogInfo._all_fields_ = SessionLogInfo._fields_

SessionLogInfo._tag_to_subtype_ = {
    (u'web',): WebSessionLogInfo_validator,
    (u'desktop',): DesktopSessionLogInfo_validator,
    (u'mobile',): MobileSessionLogInfo_validator,
}
SessionLogInfo._pytype_to_tag_and_subtype_ = {
    WebSessionLogInfo: ((u'web',), WebSessionLogInfo_validator),
    DesktopSessionLogInfo: ((u'desktop',), DesktopSessionLogInfo_validator),
    MobileSessionLogInfo: ((u'mobile',), MobileSessionLogInfo_validator),
}
SessionLogInfo._is_catch_all_ = True

DesktopSessionLogInfo._field_names_ = set([])
DesktopSessionLogInfo._all_field_names_ = SessionLogInfo._all_field_names_.union(DesktopSessionLogInfo._field_names_)
DesktopSessionLogInfo._fields_ = []
DesktopSessionLogInfo._all_fields_ = SessionLogInfo._all_fields_ + DesktopSessionLogInfo._fields_

DeviceApprovalsChangeDesktopPolicyDetails._new_value_validator = bv.Nullable(DeviceApprovalsPolicy_validator)
DeviceApprovalsChangeDesktopPolicyDetails._previous_value_validator = bv.Nullable(DeviceApprovalsPolicy_validator)
DeviceApprovalsChangeDesktopPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
DeviceApprovalsChangeDesktopPolicyDetails._all_fields_ = [
    ('new_value', DeviceApprovalsChangeDesktopPolicyDetails._new_value_validator),
    ('previous_value', DeviceApprovalsChangeDesktopPolicyDetails._previous_value_validator),
]

DeviceApprovalsChangeDesktopPolicyType._description_validator = bv.String()
DeviceApprovalsChangeDesktopPolicyType._all_field_names_ = set(['description'])
DeviceApprovalsChangeDesktopPolicyType._all_fields_ = [('description', DeviceApprovalsChangeDesktopPolicyType._description_validator)]

DeviceApprovalsChangeMobilePolicyDetails._new_value_validator = bv.Nullable(DeviceApprovalsPolicy_validator)
DeviceApprovalsChangeMobilePolicyDetails._previous_value_validator = bv.Nullable(DeviceApprovalsPolicy_validator)
DeviceApprovalsChangeMobilePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
DeviceApprovalsChangeMobilePolicyDetails._all_fields_ = [
    ('new_value', DeviceApprovalsChangeMobilePolicyDetails._new_value_validator),
    ('previous_value', DeviceApprovalsChangeMobilePolicyDetails._previous_value_validator),
]

DeviceApprovalsChangeMobilePolicyType._description_validator = bv.String()
DeviceApprovalsChangeMobilePolicyType._all_field_names_ = set(['description'])
DeviceApprovalsChangeMobilePolicyType._all_fields_ = [('description', DeviceApprovalsChangeMobilePolicyType._description_validator)]

DeviceApprovalsChangeOverageActionDetails._new_value_validator = bv.Nullable(team_policies.RolloutMethod_validator)
DeviceApprovalsChangeOverageActionDetails._previous_value_validator = bv.Nullable(team_policies.RolloutMethod_validator)
DeviceApprovalsChangeOverageActionDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
DeviceApprovalsChangeOverageActionDetails._all_fields_ = [
    ('new_value', DeviceApprovalsChangeOverageActionDetails._new_value_validator),
    ('previous_value', DeviceApprovalsChangeOverageActionDetails._previous_value_validator),
]

DeviceApprovalsChangeOverageActionType._description_validator = bv.String()
DeviceApprovalsChangeOverageActionType._all_field_names_ = set(['description'])
DeviceApprovalsChangeOverageActionType._all_fields_ = [('description', DeviceApprovalsChangeOverageActionType._description_validator)]

DeviceApprovalsChangeUnlinkActionDetails._new_value_validator = bv.Nullable(DeviceUnlinkPolicy_validator)
DeviceApprovalsChangeUnlinkActionDetails._previous_value_validator = bv.Nullable(DeviceUnlinkPolicy_validator)
DeviceApprovalsChangeUnlinkActionDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
DeviceApprovalsChangeUnlinkActionDetails._all_fields_ = [
    ('new_value', DeviceApprovalsChangeUnlinkActionDetails._new_value_validator),
    ('previous_value', DeviceApprovalsChangeUnlinkActionDetails._previous_value_validator),
]

DeviceApprovalsChangeUnlinkActionType._description_validator = bv.String()
DeviceApprovalsChangeUnlinkActionType._all_field_names_ = set(['description'])
DeviceApprovalsChangeUnlinkActionType._all_fields_ = [('description', DeviceApprovalsChangeUnlinkActionType._description_validator)]

DeviceApprovalsPolicy._unlimited_validator = bv.Void()
DeviceApprovalsPolicy._limited_validator = bv.Void()
DeviceApprovalsPolicy._other_validator = bv.Void()
DeviceApprovalsPolicy._tagmap = {
    'unlimited': DeviceApprovalsPolicy._unlimited_validator,
    'limited': DeviceApprovalsPolicy._limited_validator,
    'other': DeviceApprovalsPolicy._other_validator,
}

DeviceApprovalsPolicy.unlimited = DeviceApprovalsPolicy('unlimited')
DeviceApprovalsPolicy.limited = DeviceApprovalsPolicy('limited')
DeviceApprovalsPolicy.other = DeviceApprovalsPolicy('other')

DeviceChangeIpDesktopDetails._device_session_info_validator = DeviceSessionLogInfo_validator
DeviceChangeIpDesktopDetails._all_field_names_ = set(['device_session_info'])
DeviceChangeIpDesktopDetails._all_fields_ = [('device_session_info', DeviceChangeIpDesktopDetails._device_session_info_validator)]

DeviceChangeIpDesktopType._description_validator = bv.String()
DeviceChangeIpDesktopType._all_field_names_ = set(['description'])
DeviceChangeIpDesktopType._all_fields_ = [('description', DeviceChangeIpDesktopType._description_validator)]

DeviceChangeIpMobileDetails._device_session_info_validator = bv.Nullable(DeviceSessionLogInfo_validator)
DeviceChangeIpMobileDetails._all_field_names_ = set(['device_session_info'])
DeviceChangeIpMobileDetails._all_fields_ = [('device_session_info', DeviceChangeIpMobileDetails._device_session_info_validator)]

DeviceChangeIpMobileType._description_validator = bv.String()
DeviceChangeIpMobileType._all_field_names_ = set(['description'])
DeviceChangeIpMobileType._all_fields_ = [('description', DeviceChangeIpMobileType._description_validator)]

DeviceChangeIpWebDetails._user_agent_validator = bv.String()
DeviceChangeIpWebDetails._all_field_names_ = set(['user_agent'])
DeviceChangeIpWebDetails._all_fields_ = [('user_agent', DeviceChangeIpWebDetails._user_agent_validator)]

DeviceChangeIpWebType._description_validator = bv.String()
DeviceChangeIpWebType._all_field_names_ = set(['description'])
DeviceChangeIpWebType._all_fields_ = [('description', DeviceChangeIpWebType._description_validator)]

DeviceDeleteOnUnlinkFailDetails._session_info_validator = bv.Nullable(SessionLogInfo_validator)
DeviceDeleteOnUnlinkFailDetails._display_name_validator = bv.Nullable(bv.String())
DeviceDeleteOnUnlinkFailDetails._num_failures_validator = bv.Int64()
DeviceDeleteOnUnlinkFailDetails._all_field_names_ = set([
    'session_info',
    'display_name',
    'num_failures',
])
DeviceDeleteOnUnlinkFailDetails._all_fields_ = [
    ('session_info', DeviceDeleteOnUnlinkFailDetails._session_info_validator),
    ('display_name', DeviceDeleteOnUnlinkFailDetails._display_name_validator),
    ('num_failures', DeviceDeleteOnUnlinkFailDetails._num_failures_validator),
]

DeviceDeleteOnUnlinkFailType._description_validator = bv.String()
DeviceDeleteOnUnlinkFailType._all_field_names_ = set(['description'])
DeviceDeleteOnUnlinkFailType._all_fields_ = [('description', DeviceDeleteOnUnlinkFailType._description_validator)]

DeviceDeleteOnUnlinkSuccessDetails._session_info_validator = bv.Nullable(SessionLogInfo_validator)
DeviceDeleteOnUnlinkSuccessDetails._display_name_validator = bv.Nullable(bv.String())
DeviceDeleteOnUnlinkSuccessDetails._all_field_names_ = set([
    'session_info',
    'display_name',
])
DeviceDeleteOnUnlinkSuccessDetails._all_fields_ = [
    ('session_info', DeviceDeleteOnUnlinkSuccessDetails._session_info_validator),
    ('display_name', DeviceDeleteOnUnlinkSuccessDetails._display_name_validator),
]

DeviceDeleteOnUnlinkSuccessType._description_validator = bv.String()
DeviceDeleteOnUnlinkSuccessType._all_field_names_ = set(['description'])
DeviceDeleteOnUnlinkSuccessType._all_fields_ = [('description', DeviceDeleteOnUnlinkSuccessType._description_validator)]

DeviceLinkFailDetails._ip_address_validator = bv.Nullable(IpAddress_validator)
DeviceLinkFailDetails._device_type_validator = DeviceType_validator
DeviceLinkFailDetails._all_field_names_ = set([
    'ip_address',
    'device_type',
])
DeviceLinkFailDetails._all_fields_ = [
    ('ip_address', DeviceLinkFailDetails._ip_address_validator),
    ('device_type', DeviceLinkFailDetails._device_type_validator),
]

DeviceLinkFailType._description_validator = bv.String()
DeviceLinkFailType._all_field_names_ = set(['description'])
DeviceLinkFailType._all_fields_ = [('description', DeviceLinkFailType._description_validator)]

DeviceLinkSuccessDetails._device_session_info_validator = bv.Nullable(DeviceSessionLogInfo_validator)
DeviceLinkSuccessDetails._all_field_names_ = set(['device_session_info'])
DeviceLinkSuccessDetails._all_fields_ = [('device_session_info', DeviceLinkSuccessDetails._device_session_info_validator)]

DeviceLinkSuccessType._description_validator = bv.String()
DeviceLinkSuccessType._all_field_names_ = set(['description'])
DeviceLinkSuccessType._all_fields_ = [('description', DeviceLinkSuccessType._description_validator)]

DeviceManagementDisabledDetails._all_field_names_ = set([])
DeviceManagementDisabledDetails._all_fields_ = []

DeviceManagementDisabledType._description_validator = bv.String()
DeviceManagementDisabledType._all_field_names_ = set(['description'])
DeviceManagementDisabledType._all_fields_ = [('description', DeviceManagementDisabledType._description_validator)]

DeviceManagementEnabledDetails._all_field_names_ = set([])
DeviceManagementEnabledDetails._all_fields_ = []

DeviceManagementEnabledType._description_validator = bv.String()
DeviceManagementEnabledType._all_field_names_ = set(['description'])
DeviceManagementEnabledType._all_fields_ = [('description', DeviceManagementEnabledType._description_validator)]

DeviceType._desktop_validator = bv.Void()
DeviceType._mobile_validator = bv.Void()
DeviceType._other_validator = bv.Void()
DeviceType._tagmap = {
    'desktop': DeviceType._desktop_validator,
    'mobile': DeviceType._mobile_validator,
    'other': DeviceType._other_validator,
}

DeviceType.desktop = DeviceType('desktop')
DeviceType.mobile = DeviceType('mobile')
DeviceType.other = DeviceType('other')

DeviceUnlinkDetails._session_info_validator = bv.Nullable(SessionLogInfo_validator)
DeviceUnlinkDetails._display_name_validator = bv.Nullable(bv.String())
DeviceUnlinkDetails._delete_data_validator = bv.Boolean()
DeviceUnlinkDetails._all_field_names_ = set([
    'session_info',
    'display_name',
    'delete_data',
])
DeviceUnlinkDetails._all_fields_ = [
    ('session_info', DeviceUnlinkDetails._session_info_validator),
    ('display_name', DeviceUnlinkDetails._display_name_validator),
    ('delete_data', DeviceUnlinkDetails._delete_data_validator),
]

DeviceUnlinkPolicy._remove_validator = bv.Void()
DeviceUnlinkPolicy._keep_validator = bv.Void()
DeviceUnlinkPolicy._other_validator = bv.Void()
DeviceUnlinkPolicy._tagmap = {
    'remove': DeviceUnlinkPolicy._remove_validator,
    'keep': DeviceUnlinkPolicy._keep_validator,
    'other': DeviceUnlinkPolicy._other_validator,
}

DeviceUnlinkPolicy.remove = DeviceUnlinkPolicy('remove')
DeviceUnlinkPolicy.keep = DeviceUnlinkPolicy('keep')
DeviceUnlinkPolicy.other = DeviceUnlinkPolicy('other')

DeviceUnlinkType._description_validator = bv.String()
DeviceUnlinkType._all_field_names_ = set(['description'])
DeviceUnlinkType._all_fields_ = [('description', DeviceUnlinkType._description_validator)]

DirectoryRestrictionsAddMembersDetails._all_field_names_ = set([])
DirectoryRestrictionsAddMembersDetails._all_fields_ = []

DirectoryRestrictionsAddMembersType._description_validator = bv.String()
DirectoryRestrictionsAddMembersType._all_field_names_ = set(['description'])
DirectoryRestrictionsAddMembersType._all_fields_ = [('description', DirectoryRestrictionsAddMembersType._description_validator)]

DirectoryRestrictionsRemoveMembersDetails._all_field_names_ = set([])
DirectoryRestrictionsRemoveMembersDetails._all_fields_ = []

DirectoryRestrictionsRemoveMembersType._description_validator = bv.String()
DirectoryRestrictionsRemoveMembersType._all_field_names_ = set(['description'])
DirectoryRestrictionsRemoveMembersType._all_fields_ = [('description', DirectoryRestrictionsRemoveMembersType._description_validator)]

DisabledDomainInvitesDetails._all_field_names_ = set([])
DisabledDomainInvitesDetails._all_fields_ = []

DisabledDomainInvitesType._description_validator = bv.String()
DisabledDomainInvitesType._all_field_names_ = set(['description'])
DisabledDomainInvitesType._all_fields_ = [('description', DisabledDomainInvitesType._description_validator)]

DomainInvitesApproveRequestToJoinTeamDetails._all_field_names_ = set([])
DomainInvitesApproveRequestToJoinTeamDetails._all_fields_ = []

DomainInvitesApproveRequestToJoinTeamType._description_validator = bv.String()
DomainInvitesApproveRequestToJoinTeamType._all_field_names_ = set(['description'])
DomainInvitesApproveRequestToJoinTeamType._all_fields_ = [('description', DomainInvitesApproveRequestToJoinTeamType._description_validator)]

DomainInvitesDeclineRequestToJoinTeamDetails._all_field_names_ = set([])
DomainInvitesDeclineRequestToJoinTeamDetails._all_fields_ = []

DomainInvitesDeclineRequestToJoinTeamType._description_validator = bv.String()
DomainInvitesDeclineRequestToJoinTeamType._all_field_names_ = set(['description'])
DomainInvitesDeclineRequestToJoinTeamType._all_fields_ = [('description', DomainInvitesDeclineRequestToJoinTeamType._description_validator)]

DomainInvitesEmailExistingUsersDetails._domain_name_validator = bv.String()
DomainInvitesEmailExistingUsersDetails._num_recipients_validator = bv.UInt64()
DomainInvitesEmailExistingUsersDetails._all_field_names_ = set([
    'domain_name',
    'num_recipients',
])
DomainInvitesEmailExistingUsersDetails._all_fields_ = [
    ('domain_name', DomainInvitesEmailExistingUsersDetails._domain_name_validator),
    ('num_recipients', DomainInvitesEmailExistingUsersDetails._num_recipients_validator),
]

DomainInvitesEmailExistingUsersType._description_validator = bv.String()
DomainInvitesEmailExistingUsersType._all_field_names_ = set(['description'])
DomainInvitesEmailExistingUsersType._all_fields_ = [('description', DomainInvitesEmailExistingUsersType._description_validator)]

DomainInvitesRequestToJoinTeamDetails._all_field_names_ = set([])
DomainInvitesRequestToJoinTeamDetails._all_fields_ = []

DomainInvitesRequestToJoinTeamType._description_validator = bv.String()
DomainInvitesRequestToJoinTeamType._all_field_names_ = set(['description'])
DomainInvitesRequestToJoinTeamType._all_fields_ = [('description', DomainInvitesRequestToJoinTeamType._description_validator)]

DomainInvitesSetInviteNewUserPrefToNoDetails._all_field_names_ = set([])
DomainInvitesSetInviteNewUserPrefToNoDetails._all_fields_ = []

DomainInvitesSetInviteNewUserPrefToNoType._description_validator = bv.String()
DomainInvitesSetInviteNewUserPrefToNoType._all_field_names_ = set(['description'])
DomainInvitesSetInviteNewUserPrefToNoType._all_fields_ = [('description', DomainInvitesSetInviteNewUserPrefToNoType._description_validator)]

DomainInvitesSetInviteNewUserPrefToYesDetails._all_field_names_ = set([])
DomainInvitesSetInviteNewUserPrefToYesDetails._all_fields_ = []

DomainInvitesSetInviteNewUserPrefToYesType._description_validator = bv.String()
DomainInvitesSetInviteNewUserPrefToYesType._all_field_names_ = set(['description'])
DomainInvitesSetInviteNewUserPrefToYesType._all_fields_ = [('description', DomainInvitesSetInviteNewUserPrefToYesType._description_validator)]

DomainVerificationAddDomainFailDetails._domain_name_validator = bv.String()
DomainVerificationAddDomainFailDetails._verification_method_validator = bv.Nullable(bv.String())
DomainVerificationAddDomainFailDetails._all_field_names_ = set([
    'domain_name',
    'verification_method',
])
DomainVerificationAddDomainFailDetails._all_fields_ = [
    ('domain_name', DomainVerificationAddDomainFailDetails._domain_name_validator),
    ('verification_method', DomainVerificationAddDomainFailDetails._verification_method_validator),
]

DomainVerificationAddDomainFailType._description_validator = bv.String()
DomainVerificationAddDomainFailType._all_field_names_ = set(['description'])
DomainVerificationAddDomainFailType._all_fields_ = [('description', DomainVerificationAddDomainFailType._description_validator)]

DomainVerificationAddDomainSuccessDetails._domain_names_validator = bv.List(bv.String())
DomainVerificationAddDomainSuccessDetails._verification_method_validator = bv.Nullable(bv.String())
DomainVerificationAddDomainSuccessDetails._all_field_names_ = set([
    'domain_names',
    'verification_method',
])
DomainVerificationAddDomainSuccessDetails._all_fields_ = [
    ('domain_names', DomainVerificationAddDomainSuccessDetails._domain_names_validator),
    ('verification_method', DomainVerificationAddDomainSuccessDetails._verification_method_validator),
]

DomainVerificationAddDomainSuccessType._description_validator = bv.String()
DomainVerificationAddDomainSuccessType._all_field_names_ = set(['description'])
DomainVerificationAddDomainSuccessType._all_fields_ = [('description', DomainVerificationAddDomainSuccessType._description_validator)]

DomainVerificationRemoveDomainDetails._domain_names_validator = bv.List(bv.String())
DomainVerificationRemoveDomainDetails._all_field_names_ = set(['domain_names'])
DomainVerificationRemoveDomainDetails._all_fields_ = [('domain_names', DomainVerificationRemoveDomainDetails._domain_names_validator)]

DomainVerificationRemoveDomainType._description_validator = bv.String()
DomainVerificationRemoveDomainType._all_field_names_ = set(['description'])
DomainVerificationRemoveDomainType._all_fields_ = [('description', DomainVerificationRemoveDomainType._description_validator)]

DownloadPolicyType._allow_validator = bv.Void()
DownloadPolicyType._disallow_validator = bv.Void()
DownloadPolicyType._other_validator = bv.Void()
DownloadPolicyType._tagmap = {
    'allow': DownloadPolicyType._allow_validator,
    'disallow': DownloadPolicyType._disallow_validator,
    'other': DownloadPolicyType._other_validator,
}

DownloadPolicyType.allow = DownloadPolicyType('allow')
DownloadPolicyType.disallow = DownloadPolicyType('disallow')
DownloadPolicyType.other = DownloadPolicyType('other')

DurationLogInfo._unit_validator = TimeUnit_validator
DurationLogInfo._amount_validator = bv.UInt64()
DurationLogInfo._all_field_names_ = set([
    'unit',
    'amount',
])
DurationLogInfo._all_fields_ = [
    ('unit', DurationLogInfo._unit_validator),
    ('amount', DurationLogInfo._amount_validator),
]

EmmAddExceptionDetails._all_field_names_ = set([])
EmmAddExceptionDetails._all_fields_ = []

EmmAddExceptionType._description_validator = bv.String()
EmmAddExceptionType._all_field_names_ = set(['description'])
EmmAddExceptionType._all_fields_ = [('description', EmmAddExceptionType._description_validator)]

EmmChangePolicyDetails._new_value_validator = team_policies.EmmState_validator
EmmChangePolicyDetails._previous_value_validator = bv.Nullable(team_policies.EmmState_validator)
EmmChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
EmmChangePolicyDetails._all_fields_ = [
    ('new_value', EmmChangePolicyDetails._new_value_validator),
    ('previous_value', EmmChangePolicyDetails._previous_value_validator),
]

EmmChangePolicyType._description_validator = bv.String()
EmmChangePolicyType._all_field_names_ = set(['description'])
EmmChangePolicyType._all_fields_ = [('description', EmmChangePolicyType._description_validator)]

EmmCreateExceptionsReportDetails._all_field_names_ = set([])
EmmCreateExceptionsReportDetails._all_fields_ = []

EmmCreateExceptionsReportType._description_validator = bv.String()
EmmCreateExceptionsReportType._all_field_names_ = set(['description'])
EmmCreateExceptionsReportType._all_fields_ = [('description', EmmCreateExceptionsReportType._description_validator)]

EmmCreateUsageReportDetails._all_field_names_ = set([])
EmmCreateUsageReportDetails._all_fields_ = []

EmmCreateUsageReportType._description_validator = bv.String()
EmmCreateUsageReportType._all_field_names_ = set(['description'])
EmmCreateUsageReportType._all_fields_ = [('description', EmmCreateUsageReportType._description_validator)]

EmmErrorDetails._error_details_validator = FailureDetailsLogInfo_validator
EmmErrorDetails._all_field_names_ = set(['error_details'])
EmmErrorDetails._all_fields_ = [('error_details', EmmErrorDetails._error_details_validator)]

EmmErrorType._description_validator = bv.String()
EmmErrorType._all_field_names_ = set(['description'])
EmmErrorType._all_fields_ = [('description', EmmErrorType._description_validator)]

EmmRefreshAuthTokenDetails._all_field_names_ = set([])
EmmRefreshAuthTokenDetails._all_fields_ = []

EmmRefreshAuthTokenType._description_validator = bv.String()
EmmRefreshAuthTokenType._all_field_names_ = set(['description'])
EmmRefreshAuthTokenType._all_fields_ = [('description', EmmRefreshAuthTokenType._description_validator)]

EmmRemoveExceptionDetails._all_field_names_ = set([])
EmmRemoveExceptionDetails._all_fields_ = []

EmmRemoveExceptionType._description_validator = bv.String()
EmmRemoveExceptionType._all_field_names_ = set(['description'])
EmmRemoveExceptionType._all_fields_ = [('description', EmmRemoveExceptionType._description_validator)]

EnabledDomainInvitesDetails._all_field_names_ = set([])
EnabledDomainInvitesDetails._all_fields_ = []

EnabledDomainInvitesType._description_validator = bv.String()
EnabledDomainInvitesType._all_field_names_ = set(['description'])
EnabledDomainInvitesType._all_fields_ = [('description', EnabledDomainInvitesType._description_validator)]

EventCategory._apps_validator = bv.Void()
EventCategory._comments_validator = bv.Void()
EventCategory._devices_validator = bv.Void()
EventCategory._domains_validator = bv.Void()
EventCategory._file_operations_validator = bv.Void()
EventCategory._file_requests_validator = bv.Void()
EventCategory._groups_validator = bv.Void()
EventCategory._logins_validator = bv.Void()
EventCategory._members_validator = bv.Void()
EventCategory._paper_validator = bv.Void()
EventCategory._passwords_validator = bv.Void()
EventCategory._reports_validator = bv.Void()
EventCategory._sharing_validator = bv.Void()
EventCategory._showcase_validator = bv.Void()
EventCategory._sso_validator = bv.Void()
EventCategory._team_folders_validator = bv.Void()
EventCategory._team_policies_validator = bv.Void()
EventCategory._team_profile_validator = bv.Void()
EventCategory._tfa_validator = bv.Void()
EventCategory._trusted_teams_validator = bv.Void()
EventCategory._other_validator = bv.Void()
EventCategory._tagmap = {
    'apps': EventCategory._apps_validator,
    'comments': EventCategory._comments_validator,
    'devices': EventCategory._devices_validator,
    'domains': EventCategory._domains_validator,
    'file_operations': EventCategory._file_operations_validator,
    'file_requests': EventCategory._file_requests_validator,
    'groups': EventCategory._groups_validator,
    'logins': EventCategory._logins_validator,
    'members': EventCategory._members_validator,
    'paper': EventCategory._paper_validator,
    'passwords': EventCategory._passwords_validator,
    'reports': EventCategory._reports_validator,
    'sharing': EventCategory._sharing_validator,
    'showcase': EventCategory._showcase_validator,
    'sso': EventCategory._sso_validator,
    'team_folders': EventCategory._team_folders_validator,
    'team_policies': EventCategory._team_policies_validator,
    'team_profile': EventCategory._team_profile_validator,
    'tfa': EventCategory._tfa_validator,
    'trusted_teams': EventCategory._trusted_teams_validator,
    'other': EventCategory._other_validator,
}

EventCategory.apps = EventCategory('apps')
EventCategory.comments = EventCategory('comments')
EventCategory.devices = EventCategory('devices')
EventCategory.domains = EventCategory('domains')
EventCategory.file_operations = EventCategory('file_operations')
EventCategory.file_requests = EventCategory('file_requests')
EventCategory.groups = EventCategory('groups')
EventCategory.logins = EventCategory('logins')
EventCategory.members = EventCategory('members')
EventCategory.paper = EventCategory('paper')
EventCategory.passwords = EventCategory('passwords')
EventCategory.reports = EventCategory('reports')
EventCategory.sharing = EventCategory('sharing')
EventCategory.showcase = EventCategory('showcase')
EventCategory.sso = EventCategory('sso')
EventCategory.team_folders = EventCategory('team_folders')
EventCategory.team_policies = EventCategory('team_policies')
EventCategory.team_profile = EventCategory('team_profile')
EventCategory.tfa = EventCategory('tfa')
EventCategory.trusted_teams = EventCategory('trusted_teams')
EventCategory.other = EventCategory('other')

EventDetails._app_link_team_details_validator = AppLinkTeamDetails_validator
EventDetails._app_link_user_details_validator = AppLinkUserDetails_validator
EventDetails._app_unlink_team_details_validator = AppUnlinkTeamDetails_validator
EventDetails._app_unlink_user_details_validator = AppUnlinkUserDetails_validator
EventDetails._integration_connected_details_validator = IntegrationConnectedDetails_validator
EventDetails._integration_disconnected_details_validator = IntegrationDisconnectedDetails_validator
EventDetails._file_add_comment_details_validator = FileAddCommentDetails_validator
EventDetails._file_change_comment_subscription_details_validator = FileChangeCommentSubscriptionDetails_validator
EventDetails._file_delete_comment_details_validator = FileDeleteCommentDetails_validator
EventDetails._file_edit_comment_details_validator = FileEditCommentDetails_validator
EventDetails._file_like_comment_details_validator = FileLikeCommentDetails_validator
EventDetails._file_resolve_comment_details_validator = FileResolveCommentDetails_validator
EventDetails._file_unlike_comment_details_validator = FileUnlikeCommentDetails_validator
EventDetails._file_unresolve_comment_details_validator = FileUnresolveCommentDetails_validator
EventDetails._device_change_ip_desktop_details_validator = DeviceChangeIpDesktopDetails_validator
EventDetails._device_change_ip_mobile_details_validator = DeviceChangeIpMobileDetails_validator
EventDetails._device_change_ip_web_details_validator = DeviceChangeIpWebDetails_validator
EventDetails._device_delete_on_unlink_fail_details_validator = DeviceDeleteOnUnlinkFailDetails_validator
EventDetails._device_delete_on_unlink_success_details_validator = DeviceDeleteOnUnlinkSuccessDetails_validator
EventDetails._device_link_fail_details_validator = DeviceLinkFailDetails_validator
EventDetails._device_link_success_details_validator = DeviceLinkSuccessDetails_validator
EventDetails._device_management_disabled_details_validator = DeviceManagementDisabledDetails_validator
EventDetails._device_management_enabled_details_validator = DeviceManagementEnabledDetails_validator
EventDetails._device_unlink_details_validator = DeviceUnlinkDetails_validator
EventDetails._emm_refresh_auth_token_details_validator = EmmRefreshAuthTokenDetails_validator
EventDetails._account_capture_change_availability_details_validator = AccountCaptureChangeAvailabilityDetails_validator
EventDetails._account_capture_migrate_account_details_validator = AccountCaptureMigrateAccountDetails_validator
EventDetails._account_capture_notification_emails_sent_details_validator = AccountCaptureNotificationEmailsSentDetails_validator
EventDetails._account_capture_relinquish_account_details_validator = AccountCaptureRelinquishAccountDetails_validator
EventDetails._disabled_domain_invites_details_validator = DisabledDomainInvitesDetails_validator
EventDetails._domain_invites_approve_request_to_join_team_details_validator = DomainInvitesApproveRequestToJoinTeamDetails_validator
EventDetails._domain_invites_decline_request_to_join_team_details_validator = DomainInvitesDeclineRequestToJoinTeamDetails_validator
EventDetails._domain_invites_email_existing_users_details_validator = DomainInvitesEmailExistingUsersDetails_validator
EventDetails._domain_invites_request_to_join_team_details_validator = DomainInvitesRequestToJoinTeamDetails_validator
EventDetails._domain_invites_set_invite_new_user_pref_to_no_details_validator = DomainInvitesSetInviteNewUserPrefToNoDetails_validator
EventDetails._domain_invites_set_invite_new_user_pref_to_yes_details_validator = DomainInvitesSetInviteNewUserPrefToYesDetails_validator
EventDetails._domain_verification_add_domain_fail_details_validator = DomainVerificationAddDomainFailDetails_validator
EventDetails._domain_verification_add_domain_success_details_validator = DomainVerificationAddDomainSuccessDetails_validator
EventDetails._domain_verification_remove_domain_details_validator = DomainVerificationRemoveDomainDetails_validator
EventDetails._enabled_domain_invites_details_validator = EnabledDomainInvitesDetails_validator
EventDetails._create_folder_details_validator = CreateFolderDetails_validator
EventDetails._file_add_details_validator = FileAddDetails_validator
EventDetails._file_copy_details_validator = FileCopyDetails_validator
EventDetails._file_delete_details_validator = FileDeleteDetails_validator
EventDetails._file_download_details_validator = FileDownloadDetails_validator
EventDetails._file_edit_details_validator = FileEditDetails_validator
EventDetails._file_get_copy_reference_details_validator = FileGetCopyReferenceDetails_validator
EventDetails._file_move_details_validator = FileMoveDetails_validator
EventDetails._file_permanently_delete_details_validator = FilePermanentlyDeleteDetails_validator
EventDetails._file_preview_details_validator = FilePreviewDetails_validator
EventDetails._file_rename_details_validator = FileRenameDetails_validator
EventDetails._file_restore_details_validator = FileRestoreDetails_validator
EventDetails._file_revert_details_validator = FileRevertDetails_validator
EventDetails._file_rollback_changes_details_validator = FileRollbackChangesDetails_validator
EventDetails._file_save_copy_reference_details_validator = FileSaveCopyReferenceDetails_validator
EventDetails._file_request_change_details_validator = FileRequestChangeDetails_validator
EventDetails._file_request_close_details_validator = FileRequestCloseDetails_validator
EventDetails._file_request_create_details_validator = FileRequestCreateDetails_validator
EventDetails._file_request_delete_details_validator = FileRequestDeleteDetails_validator
EventDetails._file_request_receive_file_details_validator = FileRequestReceiveFileDetails_validator
EventDetails._group_add_external_id_details_validator = GroupAddExternalIdDetails_validator
EventDetails._group_add_member_details_validator = GroupAddMemberDetails_validator
EventDetails._group_change_external_id_details_validator = GroupChangeExternalIdDetails_validator
EventDetails._group_change_management_type_details_validator = GroupChangeManagementTypeDetails_validator
EventDetails._group_change_member_role_details_validator = GroupChangeMemberRoleDetails_validator
EventDetails._group_create_details_validator = GroupCreateDetails_validator
EventDetails._group_delete_details_validator = GroupDeleteDetails_validator
EventDetails._group_description_updated_details_validator = GroupDescriptionUpdatedDetails_validator
EventDetails._group_join_policy_updated_details_validator = GroupJoinPolicyUpdatedDetails_validator
EventDetails._group_moved_details_validator = GroupMovedDetails_validator
EventDetails._group_remove_external_id_details_validator = GroupRemoveExternalIdDetails_validator
EventDetails._group_remove_member_details_validator = GroupRemoveMemberDetails_validator
EventDetails._group_rename_details_validator = GroupRenameDetails_validator
EventDetails._emm_error_details_validator = EmmErrorDetails_validator
EventDetails._guest_admin_signed_in_via_trusted_teams_details_validator = GuestAdminSignedInViaTrustedTeamsDetails_validator
EventDetails._guest_admin_signed_out_via_trusted_teams_details_validator = GuestAdminSignedOutViaTrustedTeamsDetails_validator
EventDetails._login_fail_details_validator = LoginFailDetails_validator
EventDetails._login_success_details_validator = LoginSuccessDetails_validator
EventDetails._logout_details_validator = LogoutDetails_validator
EventDetails._reseller_support_session_end_details_validator = ResellerSupportSessionEndDetails_validator
EventDetails._reseller_support_session_start_details_validator = ResellerSupportSessionStartDetails_validator
EventDetails._sign_in_as_session_end_details_validator = SignInAsSessionEndDetails_validator
EventDetails._sign_in_as_session_start_details_validator = SignInAsSessionStartDetails_validator
EventDetails._sso_error_details_validator = SsoErrorDetails_validator
EventDetails._member_add_external_id_details_validator = MemberAddExternalIdDetails_validator
EventDetails._member_add_name_details_validator = MemberAddNameDetails_validator
EventDetails._member_change_admin_role_details_validator = MemberChangeAdminRoleDetails_validator
EventDetails._member_change_email_details_validator = MemberChangeEmailDetails_validator
EventDetails._member_change_external_id_details_validator = MemberChangeExternalIdDetails_validator
EventDetails._member_change_membership_type_details_validator = MemberChangeMembershipTypeDetails_validator
EventDetails._member_change_name_details_validator = MemberChangeNameDetails_validator
EventDetails._member_change_status_details_validator = MemberChangeStatusDetails_validator
EventDetails._member_delete_manual_contacts_details_validator = MemberDeleteManualContactsDetails_validator
EventDetails._member_permanently_delete_account_contents_details_validator = MemberPermanentlyDeleteAccountContentsDetails_validator
EventDetails._member_remove_external_id_details_validator = MemberRemoveExternalIdDetails_validator
EventDetails._member_space_limits_add_custom_quota_details_validator = MemberSpaceLimitsAddCustomQuotaDetails_validator
EventDetails._member_space_limits_change_custom_quota_details_validator = MemberSpaceLimitsChangeCustomQuotaDetails_validator
EventDetails._member_space_limits_change_status_details_validator = MemberSpaceLimitsChangeStatusDetails_validator
EventDetails._member_space_limits_remove_custom_quota_details_validator = MemberSpaceLimitsRemoveCustomQuotaDetails_validator
EventDetails._member_suggest_details_validator = MemberSuggestDetails_validator
EventDetails._member_transfer_account_contents_details_validator = MemberTransferAccountContentsDetails_validator
EventDetails._secondary_mails_policy_changed_details_validator = SecondaryMailsPolicyChangedDetails_validator
EventDetails._paper_content_add_member_details_validator = PaperContentAddMemberDetails_validator
EventDetails._paper_content_add_to_folder_details_validator = PaperContentAddToFolderDetails_validator
EventDetails._paper_content_archive_details_validator = PaperContentArchiveDetails_validator
EventDetails._paper_content_create_details_validator = PaperContentCreateDetails_validator
EventDetails._paper_content_permanently_delete_details_validator = PaperContentPermanentlyDeleteDetails_validator
EventDetails._paper_content_remove_from_folder_details_validator = PaperContentRemoveFromFolderDetails_validator
EventDetails._paper_content_remove_member_details_validator = PaperContentRemoveMemberDetails_validator
EventDetails._paper_content_rename_details_validator = PaperContentRenameDetails_validator
EventDetails._paper_content_restore_details_validator = PaperContentRestoreDetails_validator
EventDetails._paper_doc_add_comment_details_validator = PaperDocAddCommentDetails_validator
EventDetails._paper_doc_change_member_role_details_validator = PaperDocChangeMemberRoleDetails_validator
EventDetails._paper_doc_change_sharing_policy_details_validator = PaperDocChangeSharingPolicyDetails_validator
EventDetails._paper_doc_change_subscription_details_validator = PaperDocChangeSubscriptionDetails_validator
EventDetails._paper_doc_deleted_details_validator = PaperDocDeletedDetails_validator
EventDetails._paper_doc_delete_comment_details_validator = PaperDocDeleteCommentDetails_validator
EventDetails._paper_doc_download_details_validator = PaperDocDownloadDetails_validator
EventDetails._paper_doc_edit_details_validator = PaperDocEditDetails_validator
EventDetails._paper_doc_edit_comment_details_validator = PaperDocEditCommentDetails_validator
EventDetails._paper_doc_followed_details_validator = PaperDocFollowedDetails_validator
EventDetails._paper_doc_mention_details_validator = PaperDocMentionDetails_validator
EventDetails._paper_doc_ownership_changed_details_validator = PaperDocOwnershipChangedDetails_validator
EventDetails._paper_doc_request_access_details_validator = PaperDocRequestAccessDetails_validator
EventDetails._paper_doc_resolve_comment_details_validator = PaperDocResolveCommentDetails_validator
EventDetails._paper_doc_revert_details_validator = PaperDocRevertDetails_validator
EventDetails._paper_doc_slack_share_details_validator = PaperDocSlackShareDetails_validator
EventDetails._paper_doc_team_invite_details_validator = PaperDocTeamInviteDetails_validator
EventDetails._paper_doc_trashed_details_validator = PaperDocTrashedDetails_validator
EventDetails._paper_doc_unresolve_comment_details_validator = PaperDocUnresolveCommentDetails_validator
EventDetails._paper_doc_untrashed_details_validator = PaperDocUntrashedDetails_validator
EventDetails._paper_doc_view_details_validator = PaperDocViewDetails_validator
EventDetails._paper_external_view_allow_details_validator = PaperExternalViewAllowDetails_validator
EventDetails._paper_external_view_default_team_details_validator = PaperExternalViewDefaultTeamDetails_validator
EventDetails._paper_external_view_forbid_details_validator = PaperExternalViewForbidDetails_validator
EventDetails._paper_folder_change_subscription_details_validator = PaperFolderChangeSubscriptionDetails_validator
EventDetails._paper_folder_deleted_details_validator = PaperFolderDeletedDetails_validator
EventDetails._paper_folder_followed_details_validator = PaperFolderFollowedDetails_validator
EventDetails._paper_folder_team_invite_details_validator = PaperFolderTeamInviteDetails_validator
EventDetails._paper_published_link_create_details_validator = PaperPublishedLinkCreateDetails_validator
EventDetails._paper_published_link_disabled_details_validator = PaperPublishedLinkDisabledDetails_validator
EventDetails._paper_published_link_view_details_validator = PaperPublishedLinkViewDetails_validator
EventDetails._password_change_details_validator = PasswordChangeDetails_validator
EventDetails._password_reset_details_validator = PasswordResetDetails_validator
EventDetails._password_reset_all_details_validator = PasswordResetAllDetails_validator
EventDetails._emm_create_exceptions_report_details_validator = EmmCreateExceptionsReportDetails_validator
EventDetails._emm_create_usage_report_details_validator = EmmCreateUsageReportDetails_validator
EventDetails._export_members_report_details_validator = ExportMembersReportDetails_validator
EventDetails._paper_admin_export_start_details_validator = PaperAdminExportStartDetails_validator
EventDetails._smart_sync_create_admin_privilege_report_details_validator = SmartSyncCreateAdminPrivilegeReportDetails_validator
EventDetails._team_activity_create_report_details_validator = TeamActivityCreateReportDetails_validator
EventDetails._team_activity_create_report_fail_details_validator = TeamActivityCreateReportFailDetails_validator
EventDetails._collection_share_details_validator = CollectionShareDetails_validator
EventDetails._note_acl_invite_only_details_validator = NoteAclInviteOnlyDetails_validator
EventDetails._note_acl_link_details_validator = NoteAclLinkDetails_validator
EventDetails._note_acl_team_link_details_validator = NoteAclTeamLinkDetails_validator
EventDetails._note_shared_details_validator = NoteSharedDetails_validator
EventDetails._note_share_receive_details_validator = NoteShareReceiveDetails_validator
EventDetails._open_note_shared_details_validator = OpenNoteSharedDetails_validator
EventDetails._sf_add_group_details_validator = SfAddGroupDetails_validator
EventDetails._sf_allow_non_members_to_view_shared_links_details_validator = SfAllowNonMembersToViewSharedLinksDetails_validator
EventDetails._sf_external_invite_warn_details_validator = SfExternalInviteWarnDetails_validator
EventDetails._sf_fb_invite_details_validator = SfFbInviteDetails_validator
EventDetails._sf_fb_invite_change_role_details_validator = SfFbInviteChangeRoleDetails_validator
EventDetails._sf_fb_uninvite_details_validator = SfFbUninviteDetails_validator
EventDetails._sf_invite_group_details_validator = SfInviteGroupDetails_validator
EventDetails._sf_team_grant_access_details_validator = SfTeamGrantAccessDetails_validator
EventDetails._sf_team_invite_details_validator = SfTeamInviteDetails_validator
EventDetails._sf_team_invite_change_role_details_validator = SfTeamInviteChangeRoleDetails_validator
EventDetails._sf_team_join_details_validator = SfTeamJoinDetails_validator
EventDetails._sf_team_join_from_oob_link_details_validator = SfTeamJoinFromOobLinkDetails_validator
EventDetails._sf_team_uninvite_details_validator = SfTeamUninviteDetails_validator
EventDetails._shared_content_add_invitees_details_validator = SharedContentAddInviteesDetails_validator
EventDetails._shared_content_add_link_expiry_details_validator = SharedContentAddLinkExpiryDetails_validator
EventDetails._shared_content_add_link_password_details_validator = SharedContentAddLinkPasswordDetails_validator
EventDetails._shared_content_add_member_details_validator = SharedContentAddMemberDetails_validator
EventDetails._shared_content_change_downloads_policy_details_validator = SharedContentChangeDownloadsPolicyDetails_validator
EventDetails._shared_content_change_invitee_role_details_validator = SharedContentChangeInviteeRoleDetails_validator
EventDetails._shared_content_change_link_audience_details_validator = SharedContentChangeLinkAudienceDetails_validator
EventDetails._shared_content_change_link_expiry_details_validator = SharedContentChangeLinkExpiryDetails_validator
EventDetails._shared_content_change_link_password_details_validator = SharedContentChangeLinkPasswordDetails_validator
EventDetails._shared_content_change_member_role_details_validator = SharedContentChangeMemberRoleDetails_validator
EventDetails._shared_content_change_viewer_info_policy_details_validator = SharedContentChangeViewerInfoPolicyDetails_validator
EventDetails._shared_content_claim_invitation_details_validator = SharedContentClaimInvitationDetails_validator
EventDetails._shared_content_copy_details_validator = SharedContentCopyDetails_validator
EventDetails._shared_content_download_details_validator = SharedContentDownloadDetails_validator
EventDetails._shared_content_relinquish_membership_details_validator = SharedContentRelinquishMembershipDetails_validator
EventDetails._shared_content_remove_invitees_details_validator = SharedContentRemoveInviteesDetails_validator
EventDetails._shared_content_remove_link_expiry_details_validator = SharedContentRemoveLinkExpiryDetails_validator
EventDetails._shared_content_remove_link_password_details_validator = SharedContentRemoveLinkPasswordDetails_validator
EventDetails._shared_content_remove_member_details_validator = SharedContentRemoveMemberDetails_validator
EventDetails._shared_content_request_access_details_validator = SharedContentRequestAccessDetails_validator
EventDetails._shared_content_unshare_details_validator = SharedContentUnshareDetails_validator
EventDetails._shared_content_view_details_validator = SharedContentViewDetails_validator
EventDetails._shared_folder_change_link_policy_details_validator = SharedFolderChangeLinkPolicyDetails_validator
EventDetails._shared_folder_change_members_inheritance_policy_details_validator = SharedFolderChangeMembersInheritancePolicyDetails_validator
EventDetails._shared_folder_change_members_management_policy_details_validator = SharedFolderChangeMembersManagementPolicyDetails_validator
EventDetails._shared_folder_change_members_policy_details_validator = SharedFolderChangeMembersPolicyDetails_validator
EventDetails._shared_folder_create_details_validator = SharedFolderCreateDetails_validator
EventDetails._shared_folder_decline_invitation_details_validator = SharedFolderDeclineInvitationDetails_validator
EventDetails._shared_folder_mount_details_validator = SharedFolderMountDetails_validator
EventDetails._shared_folder_nest_details_validator = SharedFolderNestDetails_validator
EventDetails._shared_folder_transfer_ownership_details_validator = SharedFolderTransferOwnershipDetails_validator
EventDetails._shared_folder_unmount_details_validator = SharedFolderUnmountDetails_validator
EventDetails._shared_link_add_expiry_details_validator = SharedLinkAddExpiryDetails_validator
EventDetails._shared_link_change_expiry_details_validator = SharedLinkChangeExpiryDetails_validator
EventDetails._shared_link_change_visibility_details_validator = SharedLinkChangeVisibilityDetails_validator
EventDetails._shared_link_copy_details_validator = SharedLinkCopyDetails_validator
EventDetails._shared_link_create_details_validator = SharedLinkCreateDetails_validator
EventDetails._shared_link_disable_details_validator = SharedLinkDisableDetails_validator
EventDetails._shared_link_download_details_validator = SharedLinkDownloadDetails_validator
EventDetails._shared_link_remove_expiry_details_validator = SharedLinkRemoveExpiryDetails_validator
EventDetails._shared_link_share_details_validator = SharedLinkShareDetails_validator
EventDetails._shared_link_view_details_validator = SharedLinkViewDetails_validator
EventDetails._shared_note_opened_details_validator = SharedNoteOpenedDetails_validator
EventDetails._shmodel_group_share_details_validator = ShmodelGroupShareDetails_validator
EventDetails._showcase_access_granted_details_validator = ShowcaseAccessGrantedDetails_validator
EventDetails._showcase_add_member_details_validator = ShowcaseAddMemberDetails_validator
EventDetails._showcase_archived_details_validator = ShowcaseArchivedDetails_validator
EventDetails._showcase_created_details_validator = ShowcaseCreatedDetails_validator
EventDetails._showcase_delete_comment_details_validator = ShowcaseDeleteCommentDetails_validator
EventDetails._showcase_edited_details_validator = ShowcaseEditedDetails_validator
EventDetails._showcase_edit_comment_details_validator = ShowcaseEditCommentDetails_validator
EventDetails._showcase_file_added_details_validator = ShowcaseFileAddedDetails_validator
EventDetails._showcase_file_download_details_validator = ShowcaseFileDownloadDetails_validator
EventDetails._showcase_file_removed_details_validator = ShowcaseFileRemovedDetails_validator
EventDetails._showcase_file_view_details_validator = ShowcaseFileViewDetails_validator
EventDetails._showcase_permanently_deleted_details_validator = ShowcasePermanentlyDeletedDetails_validator
EventDetails._showcase_post_comment_details_validator = ShowcasePostCommentDetails_validator
EventDetails._showcase_remove_member_details_validator = ShowcaseRemoveMemberDetails_validator
EventDetails._showcase_renamed_details_validator = ShowcaseRenamedDetails_validator
EventDetails._showcase_request_access_details_validator = ShowcaseRequestAccessDetails_validator
EventDetails._showcase_resolve_comment_details_validator = ShowcaseResolveCommentDetails_validator
EventDetails._showcase_restored_details_validator = ShowcaseRestoredDetails_validator
EventDetails._showcase_trashed_details_validator = ShowcaseTrashedDetails_validator
EventDetails._showcase_trashed_deprecated_details_validator = ShowcaseTrashedDeprecatedDetails_validator
EventDetails._showcase_unresolve_comment_details_validator = ShowcaseUnresolveCommentDetails_validator
EventDetails._showcase_untrashed_details_validator = ShowcaseUntrashedDetails_validator
EventDetails._showcase_untrashed_deprecated_details_validator = ShowcaseUntrashedDeprecatedDetails_validator
EventDetails._showcase_view_details_validator = ShowcaseViewDetails_validator
EventDetails._sso_add_cert_details_validator = SsoAddCertDetails_validator
EventDetails._sso_add_login_url_details_validator = SsoAddLoginUrlDetails_validator
EventDetails._sso_add_logout_url_details_validator = SsoAddLogoutUrlDetails_validator
EventDetails._sso_change_cert_details_validator = SsoChangeCertDetails_validator
EventDetails._sso_change_login_url_details_validator = SsoChangeLoginUrlDetails_validator
EventDetails._sso_change_logout_url_details_validator = SsoChangeLogoutUrlDetails_validator
EventDetails._sso_change_saml_identity_mode_details_validator = SsoChangeSamlIdentityModeDetails_validator
EventDetails._sso_remove_cert_details_validator = SsoRemoveCertDetails_validator
EventDetails._sso_remove_login_url_details_validator = SsoRemoveLoginUrlDetails_validator
EventDetails._sso_remove_logout_url_details_validator = SsoRemoveLogoutUrlDetails_validator
EventDetails._team_folder_change_status_details_validator = TeamFolderChangeStatusDetails_validator
EventDetails._team_folder_create_details_validator = TeamFolderCreateDetails_validator
EventDetails._team_folder_downgrade_details_validator = TeamFolderDowngradeDetails_validator
EventDetails._team_folder_permanently_delete_details_validator = TeamFolderPermanentlyDeleteDetails_validator
EventDetails._team_folder_rename_details_validator = TeamFolderRenameDetails_validator
EventDetails._team_selective_sync_settings_changed_details_validator = TeamSelectiveSyncSettingsChangedDetails_validator
EventDetails._account_capture_change_policy_details_validator = AccountCaptureChangePolicyDetails_validator
EventDetails._allow_download_disabled_details_validator = AllowDownloadDisabledDetails_validator
EventDetails._allow_download_enabled_details_validator = AllowDownloadEnabledDetails_validator
EventDetails._camera_uploads_policy_changed_details_validator = CameraUploadsPolicyChangedDetails_validator
EventDetails._data_placement_restriction_change_policy_details_validator = DataPlacementRestrictionChangePolicyDetails_validator
EventDetails._data_placement_restriction_satisfy_policy_details_validator = DataPlacementRestrictionSatisfyPolicyDetails_validator
EventDetails._device_approvals_change_desktop_policy_details_validator = DeviceApprovalsChangeDesktopPolicyDetails_validator
EventDetails._device_approvals_change_mobile_policy_details_validator = DeviceApprovalsChangeMobilePolicyDetails_validator
EventDetails._device_approvals_change_overage_action_details_validator = DeviceApprovalsChangeOverageActionDetails_validator
EventDetails._device_approvals_change_unlink_action_details_validator = DeviceApprovalsChangeUnlinkActionDetails_validator
EventDetails._directory_restrictions_add_members_details_validator = DirectoryRestrictionsAddMembersDetails_validator
EventDetails._directory_restrictions_remove_members_details_validator = DirectoryRestrictionsRemoveMembersDetails_validator
EventDetails._emm_add_exception_details_validator = EmmAddExceptionDetails_validator
EventDetails._emm_change_policy_details_validator = EmmChangePolicyDetails_validator
EventDetails._emm_remove_exception_details_validator = EmmRemoveExceptionDetails_validator
EventDetails._extended_version_history_change_policy_details_validator = ExtendedVersionHistoryChangePolicyDetails_validator
EventDetails._file_comments_change_policy_details_validator = FileCommentsChangePolicyDetails_validator
EventDetails._file_requests_change_policy_details_validator = FileRequestsChangePolicyDetails_validator
EventDetails._file_requests_emails_enabled_details_validator = FileRequestsEmailsEnabledDetails_validator
EventDetails._file_requests_emails_restricted_to_team_only_details_validator = FileRequestsEmailsRestrictedToTeamOnlyDetails_validator
EventDetails._google_sso_change_policy_details_validator = GoogleSsoChangePolicyDetails_validator
EventDetails._group_user_management_change_policy_details_validator = GroupUserManagementChangePolicyDetails_validator
EventDetails._integration_policy_changed_details_validator = IntegrationPolicyChangedDetails_validator
EventDetails._member_requests_change_policy_details_validator = MemberRequestsChangePolicyDetails_validator
EventDetails._member_space_limits_add_exception_details_validator = MemberSpaceLimitsAddExceptionDetails_validator
EventDetails._member_space_limits_change_caps_type_policy_details_validator = MemberSpaceLimitsChangeCapsTypePolicyDetails_validator
EventDetails._member_space_limits_change_policy_details_validator = MemberSpaceLimitsChangePolicyDetails_validator
EventDetails._member_space_limits_remove_exception_details_validator = MemberSpaceLimitsRemoveExceptionDetails_validator
EventDetails._member_suggestions_change_policy_details_validator = MemberSuggestionsChangePolicyDetails_validator
EventDetails._microsoft_office_addin_change_policy_details_validator = MicrosoftOfficeAddinChangePolicyDetails_validator
EventDetails._network_control_change_policy_details_validator = NetworkControlChangePolicyDetails_validator
EventDetails._paper_change_deployment_policy_details_validator = PaperChangeDeploymentPolicyDetails_validator
EventDetails._paper_change_member_link_policy_details_validator = PaperChangeMemberLinkPolicyDetails_validator
EventDetails._paper_change_member_policy_details_validator = PaperChangeMemberPolicyDetails_validator
EventDetails._paper_change_policy_details_validator = PaperChangePolicyDetails_validator
EventDetails._paper_default_folder_policy_changed_details_validator = PaperDefaultFolderPolicyChangedDetails_validator
EventDetails._paper_desktop_policy_changed_details_validator = PaperDesktopPolicyChangedDetails_validator
EventDetails._paper_enabled_users_group_addition_details_validator = PaperEnabledUsersGroupAdditionDetails_validator
EventDetails._paper_enabled_users_group_removal_details_validator = PaperEnabledUsersGroupRemovalDetails_validator
EventDetails._permanent_delete_change_policy_details_validator = PermanentDeleteChangePolicyDetails_validator
EventDetails._reseller_support_change_policy_details_validator = ResellerSupportChangePolicyDetails_validator
EventDetails._sharing_change_folder_join_policy_details_validator = SharingChangeFolderJoinPolicyDetails_validator
EventDetails._sharing_change_link_policy_details_validator = SharingChangeLinkPolicyDetails_validator
EventDetails._sharing_change_member_policy_details_validator = SharingChangeMemberPolicyDetails_validator
EventDetails._showcase_change_download_policy_details_validator = ShowcaseChangeDownloadPolicyDetails_validator
EventDetails._showcase_change_enabled_policy_details_validator = ShowcaseChangeEnabledPolicyDetails_validator
EventDetails._showcase_change_external_sharing_policy_details_validator = ShowcaseChangeExternalSharingPolicyDetails_validator
EventDetails._smart_sync_change_policy_details_validator = SmartSyncChangePolicyDetails_validator
EventDetails._smart_sync_not_opt_out_details_validator = SmartSyncNotOptOutDetails_validator
EventDetails._smart_sync_opt_out_details_validator = SmartSyncOptOutDetails_validator
EventDetails._sso_change_policy_details_validator = SsoChangePolicyDetails_validator
EventDetails._team_extensions_policy_changed_details_validator = TeamExtensionsPolicyChangedDetails_validator
EventDetails._team_selective_sync_policy_changed_details_validator = TeamSelectiveSyncPolicyChangedDetails_validator
EventDetails._tfa_change_policy_details_validator = TfaChangePolicyDetails_validator
EventDetails._two_account_change_policy_details_validator = TwoAccountChangePolicyDetails_validator
EventDetails._viewer_info_policy_changed_details_validator = ViewerInfoPolicyChangedDetails_validator
EventDetails._web_sessions_change_fixed_length_policy_details_validator = WebSessionsChangeFixedLengthPolicyDetails_validator
EventDetails._web_sessions_change_idle_length_policy_details_validator = WebSessionsChangeIdleLengthPolicyDetails_validator
EventDetails._team_merge_from_details_validator = TeamMergeFromDetails_validator
EventDetails._team_merge_to_details_validator = TeamMergeToDetails_validator
EventDetails._team_profile_add_logo_details_validator = TeamProfileAddLogoDetails_validator
EventDetails._team_profile_change_default_language_details_validator = TeamProfileChangeDefaultLanguageDetails_validator
EventDetails._team_profile_change_logo_details_validator = TeamProfileChangeLogoDetails_validator
EventDetails._team_profile_change_name_details_validator = TeamProfileChangeNameDetails_validator
EventDetails._team_profile_remove_logo_details_validator = TeamProfileRemoveLogoDetails_validator
EventDetails._tfa_add_backup_phone_details_validator = TfaAddBackupPhoneDetails_validator
EventDetails._tfa_add_security_key_details_validator = TfaAddSecurityKeyDetails_validator
EventDetails._tfa_change_backup_phone_details_validator = TfaChangeBackupPhoneDetails_validator
EventDetails._tfa_change_status_details_validator = TfaChangeStatusDetails_validator
EventDetails._tfa_remove_backup_phone_details_validator = TfaRemoveBackupPhoneDetails_validator
EventDetails._tfa_remove_security_key_details_validator = TfaRemoveSecurityKeyDetails_validator
EventDetails._tfa_reset_details_validator = TfaResetDetails_validator
EventDetails._guest_admin_change_status_details_validator = GuestAdminChangeStatusDetails_validator
EventDetails._team_merge_request_accepted_details_validator = TeamMergeRequestAcceptedDetails_validator
EventDetails._team_merge_request_accepted_shown_to_primary_team_details_validator = TeamMergeRequestAcceptedShownToPrimaryTeamDetails_validator
EventDetails._team_merge_request_accepted_shown_to_secondary_team_details_validator = TeamMergeRequestAcceptedShownToSecondaryTeamDetails_validator
EventDetails._team_merge_request_auto_canceled_details_validator = TeamMergeRequestAutoCanceledDetails_validator
EventDetails._team_merge_request_canceled_details_validator = TeamMergeRequestCanceledDetails_validator
EventDetails._team_merge_request_canceled_shown_to_primary_team_details_validator = TeamMergeRequestCanceledShownToPrimaryTeamDetails_validator
EventDetails._team_merge_request_canceled_shown_to_secondary_team_details_validator = TeamMergeRequestCanceledShownToSecondaryTeamDetails_validator
EventDetails._team_merge_request_expired_details_validator = TeamMergeRequestExpiredDetails_validator
EventDetails._team_merge_request_expired_shown_to_primary_team_details_validator = TeamMergeRequestExpiredShownToPrimaryTeamDetails_validator
EventDetails._team_merge_request_expired_shown_to_secondary_team_details_validator = TeamMergeRequestExpiredShownToSecondaryTeamDetails_validator
EventDetails._team_merge_request_rejected_shown_to_primary_team_details_validator = TeamMergeRequestRejectedShownToPrimaryTeamDetails_validator
EventDetails._team_merge_request_rejected_shown_to_secondary_team_details_validator = TeamMergeRequestRejectedShownToSecondaryTeamDetails_validator
EventDetails._team_merge_request_reminder_details_validator = TeamMergeRequestReminderDetails_validator
EventDetails._team_merge_request_reminder_shown_to_primary_team_details_validator = TeamMergeRequestReminderShownToPrimaryTeamDetails_validator
EventDetails._team_merge_request_reminder_shown_to_secondary_team_details_validator = TeamMergeRequestReminderShownToSecondaryTeamDetails_validator
EventDetails._team_merge_request_revoked_details_validator = TeamMergeRequestRevokedDetails_validator
EventDetails._team_merge_request_sent_shown_to_primary_team_details_validator = TeamMergeRequestSentShownToPrimaryTeamDetails_validator
EventDetails._team_merge_request_sent_shown_to_secondary_team_details_validator = TeamMergeRequestSentShownToSecondaryTeamDetails_validator
EventDetails._missing_details_validator = MissingDetails_validator
EventDetails._other_validator = bv.Void()
EventDetails._tagmap = {
    'app_link_team_details': EventDetails._app_link_team_details_validator,
    'app_link_user_details': EventDetails._app_link_user_details_validator,
    'app_unlink_team_details': EventDetails._app_unlink_team_details_validator,
    'app_unlink_user_details': EventDetails._app_unlink_user_details_validator,
    'integration_connected_details': EventDetails._integration_connected_details_validator,
    'integration_disconnected_details': EventDetails._integration_disconnected_details_validator,
    'file_add_comment_details': EventDetails._file_add_comment_details_validator,
    'file_change_comment_subscription_details': EventDetails._file_change_comment_subscription_details_validator,
    'file_delete_comment_details': EventDetails._file_delete_comment_details_validator,
    'file_edit_comment_details': EventDetails._file_edit_comment_details_validator,
    'file_like_comment_details': EventDetails._file_like_comment_details_validator,
    'file_resolve_comment_details': EventDetails._file_resolve_comment_details_validator,
    'file_unlike_comment_details': EventDetails._file_unlike_comment_details_validator,
    'file_unresolve_comment_details': EventDetails._file_unresolve_comment_details_validator,
    'device_change_ip_desktop_details': EventDetails._device_change_ip_desktop_details_validator,
    'device_change_ip_mobile_details': EventDetails._device_change_ip_mobile_details_validator,
    'device_change_ip_web_details': EventDetails._device_change_ip_web_details_validator,
    'device_delete_on_unlink_fail_details': EventDetails._device_delete_on_unlink_fail_details_validator,
    'device_delete_on_unlink_success_details': EventDetails._device_delete_on_unlink_success_details_validator,
    'device_link_fail_details': EventDetails._device_link_fail_details_validator,
    'device_link_success_details': EventDetails._device_link_success_details_validator,
    'device_management_disabled_details': EventDetails._device_management_disabled_details_validator,
    'device_management_enabled_details': EventDetails._device_management_enabled_details_validator,
    'device_unlink_details': EventDetails._device_unlink_details_validator,
    'emm_refresh_auth_token_details': EventDetails._emm_refresh_auth_token_details_validator,
    'account_capture_change_availability_details': EventDetails._account_capture_change_availability_details_validator,
    'account_capture_migrate_account_details': EventDetails._account_capture_migrate_account_details_validator,
    'account_capture_notification_emails_sent_details': EventDetails._account_capture_notification_emails_sent_details_validator,
    'account_capture_relinquish_account_details': EventDetails._account_capture_relinquish_account_details_validator,
    'disabled_domain_invites_details': EventDetails._disabled_domain_invites_details_validator,
    'domain_invites_approve_request_to_join_team_details': EventDetails._domain_invites_approve_request_to_join_team_details_validator,
    'domain_invites_decline_request_to_join_team_details': EventDetails._domain_invites_decline_request_to_join_team_details_validator,
    'domain_invites_email_existing_users_details': EventDetails._domain_invites_email_existing_users_details_validator,
    'domain_invites_request_to_join_team_details': EventDetails._domain_invites_request_to_join_team_details_validator,
    'domain_invites_set_invite_new_user_pref_to_no_details': EventDetails._domain_invites_set_invite_new_user_pref_to_no_details_validator,
    'domain_invites_set_invite_new_user_pref_to_yes_details': EventDetails._domain_invites_set_invite_new_user_pref_to_yes_details_validator,
    'domain_verification_add_domain_fail_details': EventDetails._domain_verification_add_domain_fail_details_validator,
    'domain_verification_add_domain_success_details': EventDetails._domain_verification_add_domain_success_details_validator,
    'domain_verification_remove_domain_details': EventDetails._domain_verification_remove_domain_details_validator,
    'enabled_domain_invites_details': EventDetails._enabled_domain_invites_details_validator,
    'create_folder_details': EventDetails._create_folder_details_validator,
    'file_add_details': EventDetails._file_add_details_validator,
    'file_copy_details': EventDetails._file_copy_details_validator,
    'file_delete_details': EventDetails._file_delete_details_validator,
    'file_download_details': EventDetails._file_download_details_validator,
    'file_edit_details': EventDetails._file_edit_details_validator,
    'file_get_copy_reference_details': EventDetails._file_get_copy_reference_details_validator,
    'file_move_details': EventDetails._file_move_details_validator,
    'file_permanently_delete_details': EventDetails._file_permanently_delete_details_validator,
    'file_preview_details': EventDetails._file_preview_details_validator,
    'file_rename_details': EventDetails._file_rename_details_validator,
    'file_restore_details': EventDetails._file_restore_details_validator,
    'file_revert_details': EventDetails._file_revert_details_validator,
    'file_rollback_changes_details': EventDetails._file_rollback_changes_details_validator,
    'file_save_copy_reference_details': EventDetails._file_save_copy_reference_details_validator,
    'file_request_change_details': EventDetails._file_request_change_details_validator,
    'file_request_close_details': EventDetails._file_request_close_details_validator,
    'file_request_create_details': EventDetails._file_request_create_details_validator,
    'file_request_delete_details': EventDetails._file_request_delete_details_validator,
    'file_request_receive_file_details': EventDetails._file_request_receive_file_details_validator,
    'group_add_external_id_details': EventDetails._group_add_external_id_details_validator,
    'group_add_member_details': EventDetails._group_add_member_details_validator,
    'group_change_external_id_details': EventDetails._group_change_external_id_details_validator,
    'group_change_management_type_details': EventDetails._group_change_management_type_details_validator,
    'group_change_member_role_details': EventDetails._group_change_member_role_details_validator,
    'group_create_details': EventDetails._group_create_details_validator,
    'group_delete_details': EventDetails._group_delete_details_validator,
    'group_description_updated_details': EventDetails._group_description_updated_details_validator,
    'group_join_policy_updated_details': EventDetails._group_join_policy_updated_details_validator,
    'group_moved_details': EventDetails._group_moved_details_validator,
    'group_remove_external_id_details': EventDetails._group_remove_external_id_details_validator,
    'group_remove_member_details': EventDetails._group_remove_member_details_validator,
    'group_rename_details': EventDetails._group_rename_details_validator,
    'emm_error_details': EventDetails._emm_error_details_validator,
    'guest_admin_signed_in_via_trusted_teams_details': EventDetails._guest_admin_signed_in_via_trusted_teams_details_validator,
    'guest_admin_signed_out_via_trusted_teams_details': EventDetails._guest_admin_signed_out_via_trusted_teams_details_validator,
    'login_fail_details': EventDetails._login_fail_details_validator,
    'login_success_details': EventDetails._login_success_details_validator,
    'logout_details': EventDetails._logout_details_validator,
    'reseller_support_session_end_details': EventDetails._reseller_support_session_end_details_validator,
    'reseller_support_session_start_details': EventDetails._reseller_support_session_start_details_validator,
    'sign_in_as_session_end_details': EventDetails._sign_in_as_session_end_details_validator,
    'sign_in_as_session_start_details': EventDetails._sign_in_as_session_start_details_validator,
    'sso_error_details': EventDetails._sso_error_details_validator,
    'member_add_external_id_details': EventDetails._member_add_external_id_details_validator,
    'member_add_name_details': EventDetails._member_add_name_details_validator,
    'member_change_admin_role_details': EventDetails._member_change_admin_role_details_validator,
    'member_change_email_details': EventDetails._member_change_email_details_validator,
    'member_change_external_id_details': EventDetails._member_change_external_id_details_validator,
    'member_change_membership_type_details': EventDetails._member_change_membership_type_details_validator,
    'member_change_name_details': EventDetails._member_change_name_details_validator,
    'member_change_status_details': EventDetails._member_change_status_details_validator,
    'member_delete_manual_contacts_details': EventDetails._member_delete_manual_contacts_details_validator,
    'member_permanently_delete_account_contents_details': EventDetails._member_permanently_delete_account_contents_details_validator,
    'member_remove_external_id_details': EventDetails._member_remove_external_id_details_validator,
    'member_space_limits_add_custom_quota_details': EventDetails._member_space_limits_add_custom_quota_details_validator,
    'member_space_limits_change_custom_quota_details': EventDetails._member_space_limits_change_custom_quota_details_validator,
    'member_space_limits_change_status_details': EventDetails._member_space_limits_change_status_details_validator,
    'member_space_limits_remove_custom_quota_details': EventDetails._member_space_limits_remove_custom_quota_details_validator,
    'member_suggest_details': EventDetails._member_suggest_details_validator,
    'member_transfer_account_contents_details': EventDetails._member_transfer_account_contents_details_validator,
    'secondary_mails_policy_changed_details': EventDetails._secondary_mails_policy_changed_details_validator,
    'paper_content_add_member_details': EventDetails._paper_content_add_member_details_validator,
    'paper_content_add_to_folder_details': EventDetails._paper_content_add_to_folder_details_validator,
    'paper_content_archive_details': EventDetails._paper_content_archive_details_validator,
    'paper_content_create_details': EventDetails._paper_content_create_details_validator,
    'paper_content_permanently_delete_details': EventDetails._paper_content_permanently_delete_details_validator,
    'paper_content_remove_from_folder_details': EventDetails._paper_content_remove_from_folder_details_validator,
    'paper_content_remove_member_details': EventDetails._paper_content_remove_member_details_validator,
    'paper_content_rename_details': EventDetails._paper_content_rename_details_validator,
    'paper_content_restore_details': EventDetails._paper_content_restore_details_validator,
    'paper_doc_add_comment_details': EventDetails._paper_doc_add_comment_details_validator,
    'paper_doc_change_member_role_details': EventDetails._paper_doc_change_member_role_details_validator,
    'paper_doc_change_sharing_policy_details': EventDetails._paper_doc_change_sharing_policy_details_validator,
    'paper_doc_change_subscription_details': EventDetails._paper_doc_change_subscription_details_validator,
    'paper_doc_deleted_details': EventDetails._paper_doc_deleted_details_validator,
    'paper_doc_delete_comment_details': EventDetails._paper_doc_delete_comment_details_validator,
    'paper_doc_download_details': EventDetails._paper_doc_download_details_validator,
    'paper_doc_edit_details': EventDetails._paper_doc_edit_details_validator,
    'paper_doc_edit_comment_details': EventDetails._paper_doc_edit_comment_details_validator,
    'paper_doc_followed_details': EventDetails._paper_doc_followed_details_validator,
    'paper_doc_mention_details': EventDetails._paper_doc_mention_details_validator,
    'paper_doc_ownership_changed_details': EventDetails._paper_doc_ownership_changed_details_validator,
    'paper_doc_request_access_details': EventDetails._paper_doc_request_access_details_validator,
    'paper_doc_resolve_comment_details': EventDetails._paper_doc_resolve_comment_details_validator,
    'paper_doc_revert_details': EventDetails._paper_doc_revert_details_validator,
    'paper_doc_slack_share_details': EventDetails._paper_doc_slack_share_details_validator,
    'paper_doc_team_invite_details': EventDetails._paper_doc_team_invite_details_validator,
    'paper_doc_trashed_details': EventDetails._paper_doc_trashed_details_validator,
    'paper_doc_unresolve_comment_details': EventDetails._paper_doc_unresolve_comment_details_validator,
    'paper_doc_untrashed_details': EventDetails._paper_doc_untrashed_details_validator,
    'paper_doc_view_details': EventDetails._paper_doc_view_details_validator,
    'paper_external_view_allow_details': EventDetails._paper_external_view_allow_details_validator,
    'paper_external_view_default_team_details': EventDetails._paper_external_view_default_team_details_validator,
    'paper_external_view_forbid_details': EventDetails._paper_external_view_forbid_details_validator,
    'paper_folder_change_subscription_details': EventDetails._paper_folder_change_subscription_details_validator,
    'paper_folder_deleted_details': EventDetails._paper_folder_deleted_details_validator,
    'paper_folder_followed_details': EventDetails._paper_folder_followed_details_validator,
    'paper_folder_team_invite_details': EventDetails._paper_folder_team_invite_details_validator,
    'paper_published_link_create_details': EventDetails._paper_published_link_create_details_validator,
    'paper_published_link_disabled_details': EventDetails._paper_published_link_disabled_details_validator,
    'paper_published_link_view_details': EventDetails._paper_published_link_view_details_validator,
    'password_change_details': EventDetails._password_change_details_validator,
    'password_reset_details': EventDetails._password_reset_details_validator,
    'password_reset_all_details': EventDetails._password_reset_all_details_validator,
    'emm_create_exceptions_report_details': EventDetails._emm_create_exceptions_report_details_validator,
    'emm_create_usage_report_details': EventDetails._emm_create_usage_report_details_validator,
    'export_members_report_details': EventDetails._export_members_report_details_validator,
    'paper_admin_export_start_details': EventDetails._paper_admin_export_start_details_validator,
    'smart_sync_create_admin_privilege_report_details': EventDetails._smart_sync_create_admin_privilege_report_details_validator,
    'team_activity_create_report_details': EventDetails._team_activity_create_report_details_validator,
    'team_activity_create_report_fail_details': EventDetails._team_activity_create_report_fail_details_validator,
    'collection_share_details': EventDetails._collection_share_details_validator,
    'note_acl_invite_only_details': EventDetails._note_acl_invite_only_details_validator,
    'note_acl_link_details': EventDetails._note_acl_link_details_validator,
    'note_acl_team_link_details': EventDetails._note_acl_team_link_details_validator,
    'note_shared_details': EventDetails._note_shared_details_validator,
    'note_share_receive_details': EventDetails._note_share_receive_details_validator,
    'open_note_shared_details': EventDetails._open_note_shared_details_validator,
    'sf_add_group_details': EventDetails._sf_add_group_details_validator,
    'sf_allow_non_members_to_view_shared_links_details': EventDetails._sf_allow_non_members_to_view_shared_links_details_validator,
    'sf_external_invite_warn_details': EventDetails._sf_external_invite_warn_details_validator,
    'sf_fb_invite_details': EventDetails._sf_fb_invite_details_validator,
    'sf_fb_invite_change_role_details': EventDetails._sf_fb_invite_change_role_details_validator,
    'sf_fb_uninvite_details': EventDetails._sf_fb_uninvite_details_validator,
    'sf_invite_group_details': EventDetails._sf_invite_group_details_validator,
    'sf_team_grant_access_details': EventDetails._sf_team_grant_access_details_validator,
    'sf_team_invite_details': EventDetails._sf_team_invite_details_validator,
    'sf_team_invite_change_role_details': EventDetails._sf_team_invite_change_role_details_validator,
    'sf_team_join_details': EventDetails._sf_team_join_details_validator,
    'sf_team_join_from_oob_link_details': EventDetails._sf_team_join_from_oob_link_details_validator,
    'sf_team_uninvite_details': EventDetails._sf_team_uninvite_details_validator,
    'shared_content_add_invitees_details': EventDetails._shared_content_add_invitees_details_validator,
    'shared_content_add_link_expiry_details': EventDetails._shared_content_add_link_expiry_details_validator,
    'shared_content_add_link_password_details': EventDetails._shared_content_add_link_password_details_validator,
    'shared_content_add_member_details': EventDetails._shared_content_add_member_details_validator,
    'shared_content_change_downloads_policy_details': EventDetails._shared_content_change_downloads_policy_details_validator,
    'shared_content_change_invitee_role_details': EventDetails._shared_content_change_invitee_role_details_validator,
    'shared_content_change_link_audience_details': EventDetails._shared_content_change_link_audience_details_validator,
    'shared_content_change_link_expiry_details': EventDetails._shared_content_change_link_expiry_details_validator,
    'shared_content_change_link_password_details': EventDetails._shared_content_change_link_password_details_validator,
    'shared_content_change_member_role_details': EventDetails._shared_content_change_member_role_details_validator,
    'shared_content_change_viewer_info_policy_details': EventDetails._shared_content_change_viewer_info_policy_details_validator,
    'shared_content_claim_invitation_details': EventDetails._shared_content_claim_invitation_details_validator,
    'shared_content_copy_details': EventDetails._shared_content_copy_details_validator,
    'shared_content_download_details': EventDetails._shared_content_download_details_validator,
    'shared_content_relinquish_membership_details': EventDetails._shared_content_relinquish_membership_details_validator,
    'shared_content_remove_invitees_details': EventDetails._shared_content_remove_invitees_details_validator,
    'shared_content_remove_link_expiry_details': EventDetails._shared_content_remove_link_expiry_details_validator,
    'shared_content_remove_link_password_details': EventDetails._shared_content_remove_link_password_details_validator,
    'shared_content_remove_member_details': EventDetails._shared_content_remove_member_details_validator,
    'shared_content_request_access_details': EventDetails._shared_content_request_access_details_validator,
    'shared_content_unshare_details': EventDetails._shared_content_unshare_details_validator,
    'shared_content_view_details': EventDetails._shared_content_view_details_validator,
    'shared_folder_change_link_policy_details': EventDetails._shared_folder_change_link_policy_details_validator,
    'shared_folder_change_members_inheritance_policy_details': EventDetails._shared_folder_change_members_inheritance_policy_details_validator,
    'shared_folder_change_members_management_policy_details': EventDetails._shared_folder_change_members_management_policy_details_validator,
    'shared_folder_change_members_policy_details': EventDetails._shared_folder_change_members_policy_details_validator,
    'shared_folder_create_details': EventDetails._shared_folder_create_details_validator,
    'shared_folder_decline_invitation_details': EventDetails._shared_folder_decline_invitation_details_validator,
    'shared_folder_mount_details': EventDetails._shared_folder_mount_details_validator,
    'shared_folder_nest_details': EventDetails._shared_folder_nest_details_validator,
    'shared_folder_transfer_ownership_details': EventDetails._shared_folder_transfer_ownership_details_validator,
    'shared_folder_unmount_details': EventDetails._shared_folder_unmount_details_validator,
    'shared_link_add_expiry_details': EventDetails._shared_link_add_expiry_details_validator,
    'shared_link_change_expiry_details': EventDetails._shared_link_change_expiry_details_validator,
    'shared_link_change_visibility_details': EventDetails._shared_link_change_visibility_details_validator,
    'shared_link_copy_details': EventDetails._shared_link_copy_details_validator,
    'shared_link_create_details': EventDetails._shared_link_create_details_validator,
    'shared_link_disable_details': EventDetails._shared_link_disable_details_validator,
    'shared_link_download_details': EventDetails._shared_link_download_details_validator,
    'shared_link_remove_expiry_details': EventDetails._shared_link_remove_expiry_details_validator,
    'shared_link_share_details': EventDetails._shared_link_share_details_validator,
    'shared_link_view_details': EventDetails._shared_link_view_details_validator,
    'shared_note_opened_details': EventDetails._shared_note_opened_details_validator,
    'shmodel_group_share_details': EventDetails._shmodel_group_share_details_validator,
    'showcase_access_granted_details': EventDetails._showcase_access_granted_details_validator,
    'showcase_add_member_details': EventDetails._showcase_add_member_details_validator,
    'showcase_archived_details': EventDetails._showcase_archived_details_validator,
    'showcase_created_details': EventDetails._showcase_created_details_validator,
    'showcase_delete_comment_details': EventDetails._showcase_delete_comment_details_validator,
    'showcase_edited_details': EventDetails._showcase_edited_details_validator,
    'showcase_edit_comment_details': EventDetails._showcase_edit_comment_details_validator,
    'showcase_file_added_details': EventDetails._showcase_file_added_details_validator,
    'showcase_file_download_details': EventDetails._showcase_file_download_details_validator,
    'showcase_file_removed_details': EventDetails._showcase_file_removed_details_validator,
    'showcase_file_view_details': EventDetails._showcase_file_view_details_validator,
    'showcase_permanently_deleted_details': EventDetails._showcase_permanently_deleted_details_validator,
    'showcase_post_comment_details': EventDetails._showcase_post_comment_details_validator,
    'showcase_remove_member_details': EventDetails._showcase_remove_member_details_validator,
    'showcase_renamed_details': EventDetails._showcase_renamed_details_validator,
    'showcase_request_access_details': EventDetails._showcase_request_access_details_validator,
    'showcase_resolve_comment_details': EventDetails._showcase_resolve_comment_details_validator,
    'showcase_restored_details': EventDetails._showcase_restored_details_validator,
    'showcase_trashed_details': EventDetails._showcase_trashed_details_validator,
    'showcase_trashed_deprecated_details': EventDetails._showcase_trashed_deprecated_details_validator,
    'showcase_unresolve_comment_details': EventDetails._showcase_unresolve_comment_details_validator,
    'showcase_untrashed_details': EventDetails._showcase_untrashed_details_validator,
    'showcase_untrashed_deprecated_details': EventDetails._showcase_untrashed_deprecated_details_validator,
    'showcase_view_details': EventDetails._showcase_view_details_validator,
    'sso_add_cert_details': EventDetails._sso_add_cert_details_validator,
    'sso_add_login_url_details': EventDetails._sso_add_login_url_details_validator,
    'sso_add_logout_url_details': EventDetails._sso_add_logout_url_details_validator,
    'sso_change_cert_details': EventDetails._sso_change_cert_details_validator,
    'sso_change_login_url_details': EventDetails._sso_change_login_url_details_validator,
    'sso_change_logout_url_details': EventDetails._sso_change_logout_url_details_validator,
    'sso_change_saml_identity_mode_details': EventDetails._sso_change_saml_identity_mode_details_validator,
    'sso_remove_cert_details': EventDetails._sso_remove_cert_details_validator,
    'sso_remove_login_url_details': EventDetails._sso_remove_login_url_details_validator,
    'sso_remove_logout_url_details': EventDetails._sso_remove_logout_url_details_validator,
    'team_folder_change_status_details': EventDetails._team_folder_change_status_details_validator,
    'team_folder_create_details': EventDetails._team_folder_create_details_validator,
    'team_folder_downgrade_details': EventDetails._team_folder_downgrade_details_validator,
    'team_folder_permanently_delete_details': EventDetails._team_folder_permanently_delete_details_validator,
    'team_folder_rename_details': EventDetails._team_folder_rename_details_validator,
    'team_selective_sync_settings_changed_details': EventDetails._team_selective_sync_settings_changed_details_validator,
    'account_capture_change_policy_details': EventDetails._account_capture_change_policy_details_validator,
    'allow_download_disabled_details': EventDetails._allow_download_disabled_details_validator,
    'allow_download_enabled_details': EventDetails._allow_download_enabled_details_validator,
    'camera_uploads_policy_changed_details': EventDetails._camera_uploads_policy_changed_details_validator,
    'data_placement_restriction_change_policy_details': EventDetails._data_placement_restriction_change_policy_details_validator,
    'data_placement_restriction_satisfy_policy_details': EventDetails._data_placement_restriction_satisfy_policy_details_validator,
    'device_approvals_change_desktop_policy_details': EventDetails._device_approvals_change_desktop_policy_details_validator,
    'device_approvals_change_mobile_policy_details': EventDetails._device_approvals_change_mobile_policy_details_validator,
    'device_approvals_change_overage_action_details': EventDetails._device_approvals_change_overage_action_details_validator,
    'device_approvals_change_unlink_action_details': EventDetails._device_approvals_change_unlink_action_details_validator,
    'directory_restrictions_add_members_details': EventDetails._directory_restrictions_add_members_details_validator,
    'directory_restrictions_remove_members_details': EventDetails._directory_restrictions_remove_members_details_validator,
    'emm_add_exception_details': EventDetails._emm_add_exception_details_validator,
    'emm_change_policy_details': EventDetails._emm_change_policy_details_validator,
    'emm_remove_exception_details': EventDetails._emm_remove_exception_details_validator,
    'extended_version_history_change_policy_details': EventDetails._extended_version_history_change_policy_details_validator,
    'file_comments_change_policy_details': EventDetails._file_comments_change_policy_details_validator,
    'file_requests_change_policy_details': EventDetails._file_requests_change_policy_details_validator,
    'file_requests_emails_enabled_details': EventDetails._file_requests_emails_enabled_details_validator,
    'file_requests_emails_restricted_to_team_only_details': EventDetails._file_requests_emails_restricted_to_team_only_details_validator,
    'google_sso_change_policy_details': EventDetails._google_sso_change_policy_details_validator,
    'group_user_management_change_policy_details': EventDetails._group_user_management_change_policy_details_validator,
    'integration_policy_changed_details': EventDetails._integration_policy_changed_details_validator,
    'member_requests_change_policy_details': EventDetails._member_requests_change_policy_details_validator,
    'member_space_limits_add_exception_details': EventDetails._member_space_limits_add_exception_details_validator,
    'member_space_limits_change_caps_type_policy_details': EventDetails._member_space_limits_change_caps_type_policy_details_validator,
    'member_space_limits_change_policy_details': EventDetails._member_space_limits_change_policy_details_validator,
    'member_space_limits_remove_exception_details': EventDetails._member_space_limits_remove_exception_details_validator,
    'member_suggestions_change_policy_details': EventDetails._member_suggestions_change_policy_details_validator,
    'microsoft_office_addin_change_policy_details': EventDetails._microsoft_office_addin_change_policy_details_validator,
    'network_control_change_policy_details': EventDetails._network_control_change_policy_details_validator,
    'paper_change_deployment_policy_details': EventDetails._paper_change_deployment_policy_details_validator,
    'paper_change_member_link_policy_details': EventDetails._paper_change_member_link_policy_details_validator,
    'paper_change_member_policy_details': EventDetails._paper_change_member_policy_details_validator,
    'paper_change_policy_details': EventDetails._paper_change_policy_details_validator,
    'paper_default_folder_policy_changed_details': EventDetails._paper_default_folder_policy_changed_details_validator,
    'paper_desktop_policy_changed_details': EventDetails._paper_desktop_policy_changed_details_validator,
    'paper_enabled_users_group_addition_details': EventDetails._paper_enabled_users_group_addition_details_validator,
    'paper_enabled_users_group_removal_details': EventDetails._paper_enabled_users_group_removal_details_validator,
    'permanent_delete_change_policy_details': EventDetails._permanent_delete_change_policy_details_validator,
    'reseller_support_change_policy_details': EventDetails._reseller_support_change_policy_details_validator,
    'sharing_change_folder_join_policy_details': EventDetails._sharing_change_folder_join_policy_details_validator,
    'sharing_change_link_policy_details': EventDetails._sharing_change_link_policy_details_validator,
    'sharing_change_member_policy_details': EventDetails._sharing_change_member_policy_details_validator,
    'showcase_change_download_policy_details': EventDetails._showcase_change_download_policy_details_validator,
    'showcase_change_enabled_policy_details': EventDetails._showcase_change_enabled_policy_details_validator,
    'showcase_change_external_sharing_policy_details': EventDetails._showcase_change_external_sharing_policy_details_validator,
    'smart_sync_change_policy_details': EventDetails._smart_sync_change_policy_details_validator,
    'smart_sync_not_opt_out_details': EventDetails._smart_sync_not_opt_out_details_validator,
    'smart_sync_opt_out_details': EventDetails._smart_sync_opt_out_details_validator,
    'sso_change_policy_details': EventDetails._sso_change_policy_details_validator,
    'team_extensions_policy_changed_details': EventDetails._team_extensions_policy_changed_details_validator,
    'team_selective_sync_policy_changed_details': EventDetails._team_selective_sync_policy_changed_details_validator,
    'tfa_change_policy_details': EventDetails._tfa_change_policy_details_validator,
    'two_account_change_policy_details': EventDetails._two_account_change_policy_details_validator,
    'viewer_info_policy_changed_details': EventDetails._viewer_info_policy_changed_details_validator,
    'web_sessions_change_fixed_length_policy_details': EventDetails._web_sessions_change_fixed_length_policy_details_validator,
    'web_sessions_change_idle_length_policy_details': EventDetails._web_sessions_change_idle_length_policy_details_validator,
    'team_merge_from_details': EventDetails._team_merge_from_details_validator,
    'team_merge_to_details': EventDetails._team_merge_to_details_validator,
    'team_profile_add_logo_details': EventDetails._team_profile_add_logo_details_validator,
    'team_profile_change_default_language_details': EventDetails._team_profile_change_default_language_details_validator,
    'team_profile_change_logo_details': EventDetails._team_profile_change_logo_details_validator,
    'team_profile_change_name_details': EventDetails._team_profile_change_name_details_validator,
    'team_profile_remove_logo_details': EventDetails._team_profile_remove_logo_details_validator,
    'tfa_add_backup_phone_details': EventDetails._tfa_add_backup_phone_details_validator,
    'tfa_add_security_key_details': EventDetails._tfa_add_security_key_details_validator,
    'tfa_change_backup_phone_details': EventDetails._tfa_change_backup_phone_details_validator,
    'tfa_change_status_details': EventDetails._tfa_change_status_details_validator,
    'tfa_remove_backup_phone_details': EventDetails._tfa_remove_backup_phone_details_validator,
    'tfa_remove_security_key_details': EventDetails._tfa_remove_security_key_details_validator,
    'tfa_reset_details': EventDetails._tfa_reset_details_validator,
    'guest_admin_change_status_details': EventDetails._guest_admin_change_status_details_validator,
    'team_merge_request_accepted_details': EventDetails._team_merge_request_accepted_details_validator,
    'team_merge_request_accepted_shown_to_primary_team_details': EventDetails._team_merge_request_accepted_shown_to_primary_team_details_validator,
    'team_merge_request_accepted_shown_to_secondary_team_details': EventDetails._team_merge_request_accepted_shown_to_secondary_team_details_validator,
    'team_merge_request_auto_canceled_details': EventDetails._team_merge_request_auto_canceled_details_validator,
    'team_merge_request_canceled_details': EventDetails._team_merge_request_canceled_details_validator,
    'team_merge_request_canceled_shown_to_primary_team_details': EventDetails._team_merge_request_canceled_shown_to_primary_team_details_validator,
    'team_merge_request_canceled_shown_to_secondary_team_details': EventDetails._team_merge_request_canceled_shown_to_secondary_team_details_validator,
    'team_merge_request_expired_details': EventDetails._team_merge_request_expired_details_validator,
    'team_merge_request_expired_shown_to_primary_team_details': EventDetails._team_merge_request_expired_shown_to_primary_team_details_validator,
    'team_merge_request_expired_shown_to_secondary_team_details': EventDetails._team_merge_request_expired_shown_to_secondary_team_details_validator,
    'team_merge_request_rejected_shown_to_primary_team_details': EventDetails._team_merge_request_rejected_shown_to_primary_team_details_validator,
    'team_merge_request_rejected_shown_to_secondary_team_details': EventDetails._team_merge_request_rejected_shown_to_secondary_team_details_validator,
    'team_merge_request_reminder_details': EventDetails._team_merge_request_reminder_details_validator,
    'team_merge_request_reminder_shown_to_primary_team_details': EventDetails._team_merge_request_reminder_shown_to_primary_team_details_validator,
    'team_merge_request_reminder_shown_to_secondary_team_details': EventDetails._team_merge_request_reminder_shown_to_secondary_team_details_validator,
    'team_merge_request_revoked_details': EventDetails._team_merge_request_revoked_details_validator,
    'team_merge_request_sent_shown_to_primary_team_details': EventDetails._team_merge_request_sent_shown_to_primary_team_details_validator,
    'team_merge_request_sent_shown_to_secondary_team_details': EventDetails._team_merge_request_sent_shown_to_secondary_team_details_validator,
    'missing_details': EventDetails._missing_details_validator,
    'other': EventDetails._other_validator,
}

EventDetails.other = EventDetails('other')

EventType._app_link_team_validator = AppLinkTeamType_validator
EventType._app_link_user_validator = AppLinkUserType_validator
EventType._app_unlink_team_validator = AppUnlinkTeamType_validator
EventType._app_unlink_user_validator = AppUnlinkUserType_validator
EventType._integration_connected_validator = IntegrationConnectedType_validator
EventType._integration_disconnected_validator = IntegrationDisconnectedType_validator
EventType._file_add_comment_validator = FileAddCommentType_validator
EventType._file_change_comment_subscription_validator = FileChangeCommentSubscriptionType_validator
EventType._file_delete_comment_validator = FileDeleteCommentType_validator
EventType._file_edit_comment_validator = FileEditCommentType_validator
EventType._file_like_comment_validator = FileLikeCommentType_validator
EventType._file_resolve_comment_validator = FileResolveCommentType_validator
EventType._file_unlike_comment_validator = FileUnlikeCommentType_validator
EventType._file_unresolve_comment_validator = FileUnresolveCommentType_validator
EventType._device_change_ip_desktop_validator = DeviceChangeIpDesktopType_validator
EventType._device_change_ip_mobile_validator = DeviceChangeIpMobileType_validator
EventType._device_change_ip_web_validator = DeviceChangeIpWebType_validator
EventType._device_delete_on_unlink_fail_validator = DeviceDeleteOnUnlinkFailType_validator
EventType._device_delete_on_unlink_success_validator = DeviceDeleteOnUnlinkSuccessType_validator
EventType._device_link_fail_validator = DeviceLinkFailType_validator
EventType._device_link_success_validator = DeviceLinkSuccessType_validator
EventType._device_management_disabled_validator = DeviceManagementDisabledType_validator
EventType._device_management_enabled_validator = DeviceManagementEnabledType_validator
EventType._device_unlink_validator = DeviceUnlinkType_validator
EventType._emm_refresh_auth_token_validator = EmmRefreshAuthTokenType_validator
EventType._account_capture_change_availability_validator = AccountCaptureChangeAvailabilityType_validator
EventType._account_capture_migrate_account_validator = AccountCaptureMigrateAccountType_validator
EventType._account_capture_notification_emails_sent_validator = AccountCaptureNotificationEmailsSentType_validator
EventType._account_capture_relinquish_account_validator = AccountCaptureRelinquishAccountType_validator
EventType._disabled_domain_invites_validator = DisabledDomainInvitesType_validator
EventType._domain_invites_approve_request_to_join_team_validator = DomainInvitesApproveRequestToJoinTeamType_validator
EventType._domain_invites_decline_request_to_join_team_validator = DomainInvitesDeclineRequestToJoinTeamType_validator
EventType._domain_invites_email_existing_users_validator = DomainInvitesEmailExistingUsersType_validator
EventType._domain_invites_request_to_join_team_validator = DomainInvitesRequestToJoinTeamType_validator
EventType._domain_invites_set_invite_new_user_pref_to_no_validator = DomainInvitesSetInviteNewUserPrefToNoType_validator
EventType._domain_invites_set_invite_new_user_pref_to_yes_validator = DomainInvitesSetInviteNewUserPrefToYesType_validator
EventType._domain_verification_add_domain_fail_validator = DomainVerificationAddDomainFailType_validator
EventType._domain_verification_add_domain_success_validator = DomainVerificationAddDomainSuccessType_validator
EventType._domain_verification_remove_domain_validator = DomainVerificationRemoveDomainType_validator
EventType._enabled_domain_invites_validator = EnabledDomainInvitesType_validator
EventType._create_folder_validator = CreateFolderType_validator
EventType._file_add_validator = FileAddType_validator
EventType._file_copy_validator = FileCopyType_validator
EventType._file_delete_validator = FileDeleteType_validator
EventType._file_download_validator = FileDownloadType_validator
EventType._file_edit_validator = FileEditType_validator
EventType._file_get_copy_reference_validator = FileGetCopyReferenceType_validator
EventType._file_move_validator = FileMoveType_validator
EventType._file_permanently_delete_validator = FilePermanentlyDeleteType_validator
EventType._file_preview_validator = FilePreviewType_validator
EventType._file_rename_validator = FileRenameType_validator
EventType._file_restore_validator = FileRestoreType_validator
EventType._file_revert_validator = FileRevertType_validator
EventType._file_rollback_changes_validator = FileRollbackChangesType_validator
EventType._file_save_copy_reference_validator = FileSaveCopyReferenceType_validator
EventType._file_request_change_validator = FileRequestChangeType_validator
EventType._file_request_close_validator = FileRequestCloseType_validator
EventType._file_request_create_validator = FileRequestCreateType_validator
EventType._file_request_delete_validator = FileRequestDeleteType_validator
EventType._file_request_receive_file_validator = FileRequestReceiveFileType_validator
EventType._group_add_external_id_validator = GroupAddExternalIdType_validator
EventType._group_add_member_validator = GroupAddMemberType_validator
EventType._group_change_external_id_validator = GroupChangeExternalIdType_validator
EventType._group_change_management_type_validator = GroupChangeManagementTypeType_validator
EventType._group_change_member_role_validator = GroupChangeMemberRoleType_validator
EventType._group_create_validator = GroupCreateType_validator
EventType._group_delete_validator = GroupDeleteType_validator
EventType._group_description_updated_validator = GroupDescriptionUpdatedType_validator
EventType._group_join_policy_updated_validator = GroupJoinPolicyUpdatedType_validator
EventType._group_moved_validator = GroupMovedType_validator
EventType._group_remove_external_id_validator = GroupRemoveExternalIdType_validator
EventType._group_remove_member_validator = GroupRemoveMemberType_validator
EventType._group_rename_validator = GroupRenameType_validator
EventType._emm_error_validator = EmmErrorType_validator
EventType._guest_admin_signed_in_via_trusted_teams_validator = GuestAdminSignedInViaTrustedTeamsType_validator
EventType._guest_admin_signed_out_via_trusted_teams_validator = GuestAdminSignedOutViaTrustedTeamsType_validator
EventType._login_fail_validator = LoginFailType_validator
EventType._login_success_validator = LoginSuccessType_validator
EventType._logout_validator = LogoutType_validator
EventType._reseller_support_session_end_validator = ResellerSupportSessionEndType_validator
EventType._reseller_support_session_start_validator = ResellerSupportSessionStartType_validator
EventType._sign_in_as_session_end_validator = SignInAsSessionEndType_validator
EventType._sign_in_as_session_start_validator = SignInAsSessionStartType_validator
EventType._sso_error_validator = SsoErrorType_validator
EventType._member_add_external_id_validator = MemberAddExternalIdType_validator
EventType._member_add_name_validator = MemberAddNameType_validator
EventType._member_change_admin_role_validator = MemberChangeAdminRoleType_validator
EventType._member_change_email_validator = MemberChangeEmailType_validator
EventType._member_change_external_id_validator = MemberChangeExternalIdType_validator
EventType._member_change_membership_type_validator = MemberChangeMembershipTypeType_validator
EventType._member_change_name_validator = MemberChangeNameType_validator
EventType._member_change_status_validator = MemberChangeStatusType_validator
EventType._member_delete_manual_contacts_validator = MemberDeleteManualContactsType_validator
EventType._member_permanently_delete_account_contents_validator = MemberPermanentlyDeleteAccountContentsType_validator
EventType._member_remove_external_id_validator = MemberRemoveExternalIdType_validator
EventType._member_space_limits_add_custom_quota_validator = MemberSpaceLimitsAddCustomQuotaType_validator
EventType._member_space_limits_change_custom_quota_validator = MemberSpaceLimitsChangeCustomQuotaType_validator
EventType._member_space_limits_change_status_validator = MemberSpaceLimitsChangeStatusType_validator
EventType._member_space_limits_remove_custom_quota_validator = MemberSpaceLimitsRemoveCustomQuotaType_validator
EventType._member_suggest_validator = MemberSuggestType_validator
EventType._member_transfer_account_contents_validator = MemberTransferAccountContentsType_validator
EventType._secondary_mails_policy_changed_validator = SecondaryMailsPolicyChangedType_validator
EventType._paper_content_add_member_validator = PaperContentAddMemberType_validator
EventType._paper_content_add_to_folder_validator = PaperContentAddToFolderType_validator
EventType._paper_content_archive_validator = PaperContentArchiveType_validator
EventType._paper_content_create_validator = PaperContentCreateType_validator
EventType._paper_content_permanently_delete_validator = PaperContentPermanentlyDeleteType_validator
EventType._paper_content_remove_from_folder_validator = PaperContentRemoveFromFolderType_validator
EventType._paper_content_remove_member_validator = PaperContentRemoveMemberType_validator
EventType._paper_content_rename_validator = PaperContentRenameType_validator
EventType._paper_content_restore_validator = PaperContentRestoreType_validator
EventType._paper_doc_add_comment_validator = PaperDocAddCommentType_validator
EventType._paper_doc_change_member_role_validator = PaperDocChangeMemberRoleType_validator
EventType._paper_doc_change_sharing_policy_validator = PaperDocChangeSharingPolicyType_validator
EventType._paper_doc_change_subscription_validator = PaperDocChangeSubscriptionType_validator
EventType._paper_doc_deleted_validator = PaperDocDeletedType_validator
EventType._paper_doc_delete_comment_validator = PaperDocDeleteCommentType_validator
EventType._paper_doc_download_validator = PaperDocDownloadType_validator
EventType._paper_doc_edit_validator = PaperDocEditType_validator
EventType._paper_doc_edit_comment_validator = PaperDocEditCommentType_validator
EventType._paper_doc_followed_validator = PaperDocFollowedType_validator
EventType._paper_doc_mention_validator = PaperDocMentionType_validator
EventType._paper_doc_ownership_changed_validator = PaperDocOwnershipChangedType_validator
EventType._paper_doc_request_access_validator = PaperDocRequestAccessType_validator
EventType._paper_doc_resolve_comment_validator = PaperDocResolveCommentType_validator
EventType._paper_doc_revert_validator = PaperDocRevertType_validator
EventType._paper_doc_slack_share_validator = PaperDocSlackShareType_validator
EventType._paper_doc_team_invite_validator = PaperDocTeamInviteType_validator
EventType._paper_doc_trashed_validator = PaperDocTrashedType_validator
EventType._paper_doc_unresolve_comment_validator = PaperDocUnresolveCommentType_validator
EventType._paper_doc_untrashed_validator = PaperDocUntrashedType_validator
EventType._paper_doc_view_validator = PaperDocViewType_validator
EventType._paper_external_view_allow_validator = PaperExternalViewAllowType_validator
EventType._paper_external_view_default_team_validator = PaperExternalViewDefaultTeamType_validator
EventType._paper_external_view_forbid_validator = PaperExternalViewForbidType_validator
EventType._paper_folder_change_subscription_validator = PaperFolderChangeSubscriptionType_validator
EventType._paper_folder_deleted_validator = PaperFolderDeletedType_validator
EventType._paper_folder_followed_validator = PaperFolderFollowedType_validator
EventType._paper_folder_team_invite_validator = PaperFolderTeamInviteType_validator
EventType._paper_published_link_create_validator = PaperPublishedLinkCreateType_validator
EventType._paper_published_link_disabled_validator = PaperPublishedLinkDisabledType_validator
EventType._paper_published_link_view_validator = PaperPublishedLinkViewType_validator
EventType._password_change_validator = PasswordChangeType_validator
EventType._password_reset_validator = PasswordResetType_validator
EventType._password_reset_all_validator = PasswordResetAllType_validator
EventType._emm_create_exceptions_report_validator = EmmCreateExceptionsReportType_validator
EventType._emm_create_usage_report_validator = EmmCreateUsageReportType_validator
EventType._export_members_report_validator = ExportMembersReportType_validator
EventType._paper_admin_export_start_validator = PaperAdminExportStartType_validator
EventType._smart_sync_create_admin_privilege_report_validator = SmartSyncCreateAdminPrivilegeReportType_validator
EventType._team_activity_create_report_validator = TeamActivityCreateReportType_validator
EventType._team_activity_create_report_fail_validator = TeamActivityCreateReportFailType_validator
EventType._collection_share_validator = CollectionShareType_validator
EventType._note_acl_invite_only_validator = NoteAclInviteOnlyType_validator
EventType._note_acl_link_validator = NoteAclLinkType_validator
EventType._note_acl_team_link_validator = NoteAclTeamLinkType_validator
EventType._note_shared_validator = NoteSharedType_validator
EventType._note_share_receive_validator = NoteShareReceiveType_validator
EventType._open_note_shared_validator = OpenNoteSharedType_validator
EventType._sf_add_group_validator = SfAddGroupType_validator
EventType._sf_allow_non_members_to_view_shared_links_validator = SfAllowNonMembersToViewSharedLinksType_validator
EventType._sf_external_invite_warn_validator = SfExternalInviteWarnType_validator
EventType._sf_fb_invite_validator = SfFbInviteType_validator
EventType._sf_fb_invite_change_role_validator = SfFbInviteChangeRoleType_validator
EventType._sf_fb_uninvite_validator = SfFbUninviteType_validator
EventType._sf_invite_group_validator = SfInviteGroupType_validator
EventType._sf_team_grant_access_validator = SfTeamGrantAccessType_validator
EventType._sf_team_invite_validator = SfTeamInviteType_validator
EventType._sf_team_invite_change_role_validator = SfTeamInviteChangeRoleType_validator
EventType._sf_team_join_validator = SfTeamJoinType_validator
EventType._sf_team_join_from_oob_link_validator = SfTeamJoinFromOobLinkType_validator
EventType._sf_team_uninvite_validator = SfTeamUninviteType_validator
EventType._shared_content_add_invitees_validator = SharedContentAddInviteesType_validator
EventType._shared_content_add_link_expiry_validator = SharedContentAddLinkExpiryType_validator
EventType._shared_content_add_link_password_validator = SharedContentAddLinkPasswordType_validator
EventType._shared_content_add_member_validator = SharedContentAddMemberType_validator
EventType._shared_content_change_downloads_policy_validator = SharedContentChangeDownloadsPolicyType_validator
EventType._shared_content_change_invitee_role_validator = SharedContentChangeInviteeRoleType_validator
EventType._shared_content_change_link_audience_validator = SharedContentChangeLinkAudienceType_validator
EventType._shared_content_change_link_expiry_validator = SharedContentChangeLinkExpiryType_validator
EventType._shared_content_change_link_password_validator = SharedContentChangeLinkPasswordType_validator
EventType._shared_content_change_member_role_validator = SharedContentChangeMemberRoleType_validator
EventType._shared_content_change_viewer_info_policy_validator = SharedContentChangeViewerInfoPolicyType_validator
EventType._shared_content_claim_invitation_validator = SharedContentClaimInvitationType_validator
EventType._shared_content_copy_validator = SharedContentCopyType_validator
EventType._shared_content_download_validator = SharedContentDownloadType_validator
EventType._shared_content_relinquish_membership_validator = SharedContentRelinquishMembershipType_validator
EventType._shared_content_remove_invitees_validator = SharedContentRemoveInviteesType_validator
EventType._shared_content_remove_link_expiry_validator = SharedContentRemoveLinkExpiryType_validator
EventType._shared_content_remove_link_password_validator = SharedContentRemoveLinkPasswordType_validator
EventType._shared_content_remove_member_validator = SharedContentRemoveMemberType_validator
EventType._shared_content_request_access_validator = SharedContentRequestAccessType_validator
EventType._shared_content_unshare_validator = SharedContentUnshareType_validator
EventType._shared_content_view_validator = SharedContentViewType_validator
EventType._shared_folder_change_link_policy_validator = SharedFolderChangeLinkPolicyType_validator
EventType._shared_folder_change_members_inheritance_policy_validator = SharedFolderChangeMembersInheritancePolicyType_validator
EventType._shared_folder_change_members_management_policy_validator = SharedFolderChangeMembersManagementPolicyType_validator
EventType._shared_folder_change_members_policy_validator = SharedFolderChangeMembersPolicyType_validator
EventType._shared_folder_create_validator = SharedFolderCreateType_validator
EventType._shared_folder_decline_invitation_validator = SharedFolderDeclineInvitationType_validator
EventType._shared_folder_mount_validator = SharedFolderMountType_validator
EventType._shared_folder_nest_validator = SharedFolderNestType_validator
EventType._shared_folder_transfer_ownership_validator = SharedFolderTransferOwnershipType_validator
EventType._shared_folder_unmount_validator = SharedFolderUnmountType_validator
EventType._shared_link_add_expiry_validator = SharedLinkAddExpiryType_validator
EventType._shared_link_change_expiry_validator = SharedLinkChangeExpiryType_validator
EventType._shared_link_change_visibility_validator = SharedLinkChangeVisibilityType_validator
EventType._shared_link_copy_validator = SharedLinkCopyType_validator
EventType._shared_link_create_validator = SharedLinkCreateType_validator
EventType._shared_link_disable_validator = SharedLinkDisableType_validator
EventType._shared_link_download_validator = SharedLinkDownloadType_validator
EventType._shared_link_remove_expiry_validator = SharedLinkRemoveExpiryType_validator
EventType._shared_link_share_validator = SharedLinkShareType_validator
EventType._shared_link_view_validator = SharedLinkViewType_validator
EventType._shared_note_opened_validator = SharedNoteOpenedType_validator
EventType._shmodel_group_share_validator = ShmodelGroupShareType_validator
EventType._showcase_access_granted_validator = ShowcaseAccessGrantedType_validator
EventType._showcase_add_member_validator = ShowcaseAddMemberType_validator
EventType._showcase_archived_validator = ShowcaseArchivedType_validator
EventType._showcase_created_validator = ShowcaseCreatedType_validator
EventType._showcase_delete_comment_validator = ShowcaseDeleteCommentType_validator
EventType._showcase_edited_validator = ShowcaseEditedType_validator
EventType._showcase_edit_comment_validator = ShowcaseEditCommentType_validator
EventType._showcase_file_added_validator = ShowcaseFileAddedType_validator
EventType._showcase_file_download_validator = ShowcaseFileDownloadType_validator
EventType._showcase_file_removed_validator = ShowcaseFileRemovedType_validator
EventType._showcase_file_view_validator = ShowcaseFileViewType_validator
EventType._showcase_permanently_deleted_validator = ShowcasePermanentlyDeletedType_validator
EventType._showcase_post_comment_validator = ShowcasePostCommentType_validator
EventType._showcase_remove_member_validator = ShowcaseRemoveMemberType_validator
EventType._showcase_renamed_validator = ShowcaseRenamedType_validator
EventType._showcase_request_access_validator = ShowcaseRequestAccessType_validator
EventType._showcase_resolve_comment_validator = ShowcaseResolveCommentType_validator
EventType._showcase_restored_validator = ShowcaseRestoredType_validator
EventType._showcase_trashed_validator = ShowcaseTrashedType_validator
EventType._showcase_trashed_deprecated_validator = ShowcaseTrashedDeprecatedType_validator
EventType._showcase_unresolve_comment_validator = ShowcaseUnresolveCommentType_validator
EventType._showcase_untrashed_validator = ShowcaseUntrashedType_validator
EventType._showcase_untrashed_deprecated_validator = ShowcaseUntrashedDeprecatedType_validator
EventType._showcase_view_validator = ShowcaseViewType_validator
EventType._sso_add_cert_validator = SsoAddCertType_validator
EventType._sso_add_login_url_validator = SsoAddLoginUrlType_validator
EventType._sso_add_logout_url_validator = SsoAddLogoutUrlType_validator
EventType._sso_change_cert_validator = SsoChangeCertType_validator
EventType._sso_change_login_url_validator = SsoChangeLoginUrlType_validator
EventType._sso_change_logout_url_validator = SsoChangeLogoutUrlType_validator
EventType._sso_change_saml_identity_mode_validator = SsoChangeSamlIdentityModeType_validator
EventType._sso_remove_cert_validator = SsoRemoveCertType_validator
EventType._sso_remove_login_url_validator = SsoRemoveLoginUrlType_validator
EventType._sso_remove_logout_url_validator = SsoRemoveLogoutUrlType_validator
EventType._team_folder_change_status_validator = TeamFolderChangeStatusType_validator
EventType._team_folder_create_validator = TeamFolderCreateType_validator
EventType._team_folder_downgrade_validator = TeamFolderDowngradeType_validator
EventType._team_folder_permanently_delete_validator = TeamFolderPermanentlyDeleteType_validator
EventType._team_folder_rename_validator = TeamFolderRenameType_validator
EventType._team_selective_sync_settings_changed_validator = TeamSelectiveSyncSettingsChangedType_validator
EventType._account_capture_change_policy_validator = AccountCaptureChangePolicyType_validator
EventType._allow_download_disabled_validator = AllowDownloadDisabledType_validator
EventType._allow_download_enabled_validator = AllowDownloadEnabledType_validator
EventType._camera_uploads_policy_changed_validator = CameraUploadsPolicyChangedType_validator
EventType._data_placement_restriction_change_policy_validator = DataPlacementRestrictionChangePolicyType_validator
EventType._data_placement_restriction_satisfy_policy_validator = DataPlacementRestrictionSatisfyPolicyType_validator
EventType._device_approvals_change_desktop_policy_validator = DeviceApprovalsChangeDesktopPolicyType_validator
EventType._device_approvals_change_mobile_policy_validator = DeviceApprovalsChangeMobilePolicyType_validator
EventType._device_approvals_change_overage_action_validator = DeviceApprovalsChangeOverageActionType_validator
EventType._device_approvals_change_unlink_action_validator = DeviceApprovalsChangeUnlinkActionType_validator
EventType._directory_restrictions_add_members_validator = DirectoryRestrictionsAddMembersType_validator
EventType._directory_restrictions_remove_members_validator = DirectoryRestrictionsRemoveMembersType_validator
EventType._emm_add_exception_validator = EmmAddExceptionType_validator
EventType._emm_change_policy_validator = EmmChangePolicyType_validator
EventType._emm_remove_exception_validator = EmmRemoveExceptionType_validator
EventType._extended_version_history_change_policy_validator = ExtendedVersionHistoryChangePolicyType_validator
EventType._file_comments_change_policy_validator = FileCommentsChangePolicyType_validator
EventType._file_requests_change_policy_validator = FileRequestsChangePolicyType_validator
EventType._file_requests_emails_enabled_validator = FileRequestsEmailsEnabledType_validator
EventType._file_requests_emails_restricted_to_team_only_validator = FileRequestsEmailsRestrictedToTeamOnlyType_validator
EventType._google_sso_change_policy_validator = GoogleSsoChangePolicyType_validator
EventType._group_user_management_change_policy_validator = GroupUserManagementChangePolicyType_validator
EventType._integration_policy_changed_validator = IntegrationPolicyChangedType_validator
EventType._member_requests_change_policy_validator = MemberRequestsChangePolicyType_validator
EventType._member_space_limits_add_exception_validator = MemberSpaceLimitsAddExceptionType_validator
EventType._member_space_limits_change_caps_type_policy_validator = MemberSpaceLimitsChangeCapsTypePolicyType_validator
EventType._member_space_limits_change_policy_validator = MemberSpaceLimitsChangePolicyType_validator
EventType._member_space_limits_remove_exception_validator = MemberSpaceLimitsRemoveExceptionType_validator
EventType._member_suggestions_change_policy_validator = MemberSuggestionsChangePolicyType_validator
EventType._microsoft_office_addin_change_policy_validator = MicrosoftOfficeAddinChangePolicyType_validator
EventType._network_control_change_policy_validator = NetworkControlChangePolicyType_validator
EventType._paper_change_deployment_policy_validator = PaperChangeDeploymentPolicyType_validator
EventType._paper_change_member_link_policy_validator = PaperChangeMemberLinkPolicyType_validator
EventType._paper_change_member_policy_validator = PaperChangeMemberPolicyType_validator
EventType._paper_change_policy_validator = PaperChangePolicyType_validator
EventType._paper_default_folder_policy_changed_validator = PaperDefaultFolderPolicyChangedType_validator
EventType._paper_desktop_policy_changed_validator = PaperDesktopPolicyChangedType_validator
EventType._paper_enabled_users_group_addition_validator = PaperEnabledUsersGroupAdditionType_validator
EventType._paper_enabled_users_group_removal_validator = PaperEnabledUsersGroupRemovalType_validator
EventType._permanent_delete_change_policy_validator = PermanentDeleteChangePolicyType_validator
EventType._reseller_support_change_policy_validator = ResellerSupportChangePolicyType_validator
EventType._sharing_change_folder_join_policy_validator = SharingChangeFolderJoinPolicyType_validator
EventType._sharing_change_link_policy_validator = SharingChangeLinkPolicyType_validator
EventType._sharing_change_member_policy_validator = SharingChangeMemberPolicyType_validator
EventType._showcase_change_download_policy_validator = ShowcaseChangeDownloadPolicyType_validator
EventType._showcase_change_enabled_policy_validator = ShowcaseChangeEnabledPolicyType_validator
EventType._showcase_change_external_sharing_policy_validator = ShowcaseChangeExternalSharingPolicyType_validator
EventType._smart_sync_change_policy_validator = SmartSyncChangePolicyType_validator
EventType._smart_sync_not_opt_out_validator = SmartSyncNotOptOutType_validator
EventType._smart_sync_opt_out_validator = SmartSyncOptOutType_validator
EventType._sso_change_policy_validator = SsoChangePolicyType_validator
EventType._team_extensions_policy_changed_validator = TeamExtensionsPolicyChangedType_validator
EventType._team_selective_sync_policy_changed_validator = TeamSelectiveSyncPolicyChangedType_validator
EventType._tfa_change_policy_validator = TfaChangePolicyType_validator
EventType._two_account_change_policy_validator = TwoAccountChangePolicyType_validator
EventType._viewer_info_policy_changed_validator = ViewerInfoPolicyChangedType_validator
EventType._web_sessions_change_fixed_length_policy_validator = WebSessionsChangeFixedLengthPolicyType_validator
EventType._web_sessions_change_idle_length_policy_validator = WebSessionsChangeIdleLengthPolicyType_validator
EventType._team_merge_from_validator = TeamMergeFromType_validator
EventType._team_merge_to_validator = TeamMergeToType_validator
EventType._team_profile_add_logo_validator = TeamProfileAddLogoType_validator
EventType._team_profile_change_default_language_validator = TeamProfileChangeDefaultLanguageType_validator
EventType._team_profile_change_logo_validator = TeamProfileChangeLogoType_validator
EventType._team_profile_change_name_validator = TeamProfileChangeNameType_validator
EventType._team_profile_remove_logo_validator = TeamProfileRemoveLogoType_validator
EventType._tfa_add_backup_phone_validator = TfaAddBackupPhoneType_validator
EventType._tfa_add_security_key_validator = TfaAddSecurityKeyType_validator
EventType._tfa_change_backup_phone_validator = TfaChangeBackupPhoneType_validator
EventType._tfa_change_status_validator = TfaChangeStatusType_validator
EventType._tfa_remove_backup_phone_validator = TfaRemoveBackupPhoneType_validator
EventType._tfa_remove_security_key_validator = TfaRemoveSecurityKeyType_validator
EventType._tfa_reset_validator = TfaResetType_validator
EventType._guest_admin_change_status_validator = GuestAdminChangeStatusType_validator
EventType._team_merge_request_accepted_validator = TeamMergeRequestAcceptedType_validator
EventType._team_merge_request_accepted_shown_to_primary_team_validator = TeamMergeRequestAcceptedShownToPrimaryTeamType_validator
EventType._team_merge_request_accepted_shown_to_secondary_team_validator = TeamMergeRequestAcceptedShownToSecondaryTeamType_validator
EventType._team_merge_request_auto_canceled_validator = TeamMergeRequestAutoCanceledType_validator
EventType._team_merge_request_canceled_validator = TeamMergeRequestCanceledType_validator
EventType._team_merge_request_canceled_shown_to_primary_team_validator = TeamMergeRequestCanceledShownToPrimaryTeamType_validator
EventType._team_merge_request_canceled_shown_to_secondary_team_validator = TeamMergeRequestCanceledShownToSecondaryTeamType_validator
EventType._team_merge_request_expired_validator = TeamMergeRequestExpiredType_validator
EventType._team_merge_request_expired_shown_to_primary_team_validator = TeamMergeRequestExpiredShownToPrimaryTeamType_validator
EventType._team_merge_request_expired_shown_to_secondary_team_validator = TeamMergeRequestExpiredShownToSecondaryTeamType_validator
EventType._team_merge_request_rejected_shown_to_primary_team_validator = TeamMergeRequestRejectedShownToPrimaryTeamType_validator
EventType._team_merge_request_rejected_shown_to_secondary_team_validator = TeamMergeRequestRejectedShownToSecondaryTeamType_validator
EventType._team_merge_request_reminder_validator = TeamMergeRequestReminderType_validator
EventType._team_merge_request_reminder_shown_to_primary_team_validator = TeamMergeRequestReminderShownToPrimaryTeamType_validator
EventType._team_merge_request_reminder_shown_to_secondary_team_validator = TeamMergeRequestReminderShownToSecondaryTeamType_validator
EventType._team_merge_request_revoked_validator = TeamMergeRequestRevokedType_validator
EventType._team_merge_request_sent_shown_to_primary_team_validator = TeamMergeRequestSentShownToPrimaryTeamType_validator
EventType._team_merge_request_sent_shown_to_secondary_team_validator = TeamMergeRequestSentShownToSecondaryTeamType_validator
EventType._other_validator = bv.Void()
EventType._tagmap = {
    'app_link_team': EventType._app_link_team_validator,
    'app_link_user': EventType._app_link_user_validator,
    'app_unlink_team': EventType._app_unlink_team_validator,
    'app_unlink_user': EventType._app_unlink_user_validator,
    'integration_connected': EventType._integration_connected_validator,
    'integration_disconnected': EventType._integration_disconnected_validator,
    'file_add_comment': EventType._file_add_comment_validator,
    'file_change_comment_subscription': EventType._file_change_comment_subscription_validator,
    'file_delete_comment': EventType._file_delete_comment_validator,
    'file_edit_comment': EventType._file_edit_comment_validator,
    'file_like_comment': EventType._file_like_comment_validator,
    'file_resolve_comment': EventType._file_resolve_comment_validator,
    'file_unlike_comment': EventType._file_unlike_comment_validator,
    'file_unresolve_comment': EventType._file_unresolve_comment_validator,
    'device_change_ip_desktop': EventType._device_change_ip_desktop_validator,
    'device_change_ip_mobile': EventType._device_change_ip_mobile_validator,
    'device_change_ip_web': EventType._device_change_ip_web_validator,
    'device_delete_on_unlink_fail': EventType._device_delete_on_unlink_fail_validator,
    'device_delete_on_unlink_success': EventType._device_delete_on_unlink_success_validator,
    'device_link_fail': EventType._device_link_fail_validator,
    'device_link_success': EventType._device_link_success_validator,
    'device_management_disabled': EventType._device_management_disabled_validator,
    'device_management_enabled': EventType._device_management_enabled_validator,
    'device_unlink': EventType._device_unlink_validator,
    'emm_refresh_auth_token': EventType._emm_refresh_auth_token_validator,
    'account_capture_change_availability': EventType._account_capture_change_availability_validator,
    'account_capture_migrate_account': EventType._account_capture_migrate_account_validator,
    'account_capture_notification_emails_sent': EventType._account_capture_notification_emails_sent_validator,
    'account_capture_relinquish_account': EventType._account_capture_relinquish_account_validator,
    'disabled_domain_invites': EventType._disabled_domain_invites_validator,
    'domain_invites_approve_request_to_join_team': EventType._domain_invites_approve_request_to_join_team_validator,
    'domain_invites_decline_request_to_join_team': EventType._domain_invites_decline_request_to_join_team_validator,
    'domain_invites_email_existing_users': EventType._domain_invites_email_existing_users_validator,
    'domain_invites_request_to_join_team': EventType._domain_invites_request_to_join_team_validator,
    'domain_invites_set_invite_new_user_pref_to_no': EventType._domain_invites_set_invite_new_user_pref_to_no_validator,
    'domain_invites_set_invite_new_user_pref_to_yes': EventType._domain_invites_set_invite_new_user_pref_to_yes_validator,
    'domain_verification_add_domain_fail': EventType._domain_verification_add_domain_fail_validator,
    'domain_verification_add_domain_success': EventType._domain_verification_add_domain_success_validator,
    'domain_verification_remove_domain': EventType._domain_verification_remove_domain_validator,
    'enabled_domain_invites': EventType._enabled_domain_invites_validator,
    'create_folder': EventType._create_folder_validator,
    'file_add': EventType._file_add_validator,
    'file_copy': EventType._file_copy_validator,
    'file_delete': EventType._file_delete_validator,
    'file_download': EventType._file_download_validator,
    'file_edit': EventType._file_edit_validator,
    'file_get_copy_reference': EventType._file_get_copy_reference_validator,
    'file_move': EventType._file_move_validator,
    'file_permanently_delete': EventType._file_permanently_delete_validator,
    'file_preview': EventType._file_preview_validator,
    'file_rename': EventType._file_rename_validator,
    'file_restore': EventType._file_restore_validator,
    'file_revert': EventType._file_revert_validator,
    'file_rollback_changes': EventType._file_rollback_changes_validator,
    'file_save_copy_reference': EventType._file_save_copy_reference_validator,
    'file_request_change': EventType._file_request_change_validator,
    'file_request_close': EventType._file_request_close_validator,
    'file_request_create': EventType._file_request_create_validator,
    'file_request_delete': EventType._file_request_delete_validator,
    'file_request_receive_file': EventType._file_request_receive_file_validator,
    'group_add_external_id': EventType._group_add_external_id_validator,
    'group_add_member': EventType._group_add_member_validator,
    'group_change_external_id': EventType._group_change_external_id_validator,
    'group_change_management_type': EventType._group_change_management_type_validator,
    'group_change_member_role': EventType._group_change_member_role_validator,
    'group_create': EventType._group_create_validator,
    'group_delete': EventType._group_delete_validator,
    'group_description_updated': EventType._group_description_updated_validator,
    'group_join_policy_updated': EventType._group_join_policy_updated_validator,
    'group_moved': EventType._group_moved_validator,
    'group_remove_external_id': EventType._group_remove_external_id_validator,
    'group_remove_member': EventType._group_remove_member_validator,
    'group_rename': EventType._group_rename_validator,
    'emm_error': EventType._emm_error_validator,
    'guest_admin_signed_in_via_trusted_teams': EventType._guest_admin_signed_in_via_trusted_teams_validator,
    'guest_admin_signed_out_via_trusted_teams': EventType._guest_admin_signed_out_via_trusted_teams_validator,
    'login_fail': EventType._login_fail_validator,
    'login_success': EventType._login_success_validator,
    'logout': EventType._logout_validator,
    'reseller_support_session_end': EventType._reseller_support_session_end_validator,
    'reseller_support_session_start': EventType._reseller_support_session_start_validator,
    'sign_in_as_session_end': EventType._sign_in_as_session_end_validator,
    'sign_in_as_session_start': EventType._sign_in_as_session_start_validator,
    'sso_error': EventType._sso_error_validator,
    'member_add_external_id': EventType._member_add_external_id_validator,
    'member_add_name': EventType._member_add_name_validator,
    'member_change_admin_role': EventType._member_change_admin_role_validator,
    'member_change_email': EventType._member_change_email_validator,
    'member_change_external_id': EventType._member_change_external_id_validator,
    'member_change_membership_type': EventType._member_change_membership_type_validator,
    'member_change_name': EventType._member_change_name_validator,
    'member_change_status': EventType._member_change_status_validator,
    'member_delete_manual_contacts': EventType._member_delete_manual_contacts_validator,
    'member_permanently_delete_account_contents': EventType._member_permanently_delete_account_contents_validator,
    'member_remove_external_id': EventType._member_remove_external_id_validator,
    'member_space_limits_add_custom_quota': EventType._member_space_limits_add_custom_quota_validator,
    'member_space_limits_change_custom_quota': EventType._member_space_limits_change_custom_quota_validator,
    'member_space_limits_change_status': EventType._member_space_limits_change_status_validator,
    'member_space_limits_remove_custom_quota': EventType._member_space_limits_remove_custom_quota_validator,
    'member_suggest': EventType._member_suggest_validator,
    'member_transfer_account_contents': EventType._member_transfer_account_contents_validator,
    'secondary_mails_policy_changed': EventType._secondary_mails_policy_changed_validator,
    'paper_content_add_member': EventType._paper_content_add_member_validator,
    'paper_content_add_to_folder': EventType._paper_content_add_to_folder_validator,
    'paper_content_archive': EventType._paper_content_archive_validator,
    'paper_content_create': EventType._paper_content_create_validator,
    'paper_content_permanently_delete': EventType._paper_content_permanently_delete_validator,
    'paper_content_remove_from_folder': EventType._paper_content_remove_from_folder_validator,
    'paper_content_remove_member': EventType._paper_content_remove_member_validator,
    'paper_content_rename': EventType._paper_content_rename_validator,
    'paper_content_restore': EventType._paper_content_restore_validator,
    'paper_doc_add_comment': EventType._paper_doc_add_comment_validator,
    'paper_doc_change_member_role': EventType._paper_doc_change_member_role_validator,
    'paper_doc_change_sharing_policy': EventType._paper_doc_change_sharing_policy_validator,
    'paper_doc_change_subscription': EventType._paper_doc_change_subscription_validator,
    'paper_doc_deleted': EventType._paper_doc_deleted_validator,
    'paper_doc_delete_comment': EventType._paper_doc_delete_comment_validator,
    'paper_doc_download': EventType._paper_doc_download_validator,
    'paper_doc_edit': EventType._paper_doc_edit_validator,
    'paper_doc_edit_comment': EventType._paper_doc_edit_comment_validator,
    'paper_doc_followed': EventType._paper_doc_followed_validator,
    'paper_doc_mention': EventType._paper_doc_mention_validator,
    'paper_doc_ownership_changed': EventType._paper_doc_ownership_changed_validator,
    'paper_doc_request_access': EventType._paper_doc_request_access_validator,
    'paper_doc_resolve_comment': EventType._paper_doc_resolve_comment_validator,
    'paper_doc_revert': EventType._paper_doc_revert_validator,
    'paper_doc_slack_share': EventType._paper_doc_slack_share_validator,
    'paper_doc_team_invite': EventType._paper_doc_team_invite_validator,
    'paper_doc_trashed': EventType._paper_doc_trashed_validator,
    'paper_doc_unresolve_comment': EventType._paper_doc_unresolve_comment_validator,
    'paper_doc_untrashed': EventType._paper_doc_untrashed_validator,
    'paper_doc_view': EventType._paper_doc_view_validator,
    'paper_external_view_allow': EventType._paper_external_view_allow_validator,
    'paper_external_view_default_team': EventType._paper_external_view_default_team_validator,
    'paper_external_view_forbid': EventType._paper_external_view_forbid_validator,
    'paper_folder_change_subscription': EventType._paper_folder_change_subscription_validator,
    'paper_folder_deleted': EventType._paper_folder_deleted_validator,
    'paper_folder_followed': EventType._paper_folder_followed_validator,
    'paper_folder_team_invite': EventType._paper_folder_team_invite_validator,
    'paper_published_link_create': EventType._paper_published_link_create_validator,
    'paper_published_link_disabled': EventType._paper_published_link_disabled_validator,
    'paper_published_link_view': EventType._paper_published_link_view_validator,
    'password_change': EventType._password_change_validator,
    'password_reset': EventType._password_reset_validator,
    'password_reset_all': EventType._password_reset_all_validator,
    'emm_create_exceptions_report': EventType._emm_create_exceptions_report_validator,
    'emm_create_usage_report': EventType._emm_create_usage_report_validator,
    'export_members_report': EventType._export_members_report_validator,
    'paper_admin_export_start': EventType._paper_admin_export_start_validator,
    'smart_sync_create_admin_privilege_report': EventType._smart_sync_create_admin_privilege_report_validator,
    'team_activity_create_report': EventType._team_activity_create_report_validator,
    'team_activity_create_report_fail': EventType._team_activity_create_report_fail_validator,
    'collection_share': EventType._collection_share_validator,
    'note_acl_invite_only': EventType._note_acl_invite_only_validator,
    'note_acl_link': EventType._note_acl_link_validator,
    'note_acl_team_link': EventType._note_acl_team_link_validator,
    'note_shared': EventType._note_shared_validator,
    'note_share_receive': EventType._note_share_receive_validator,
    'open_note_shared': EventType._open_note_shared_validator,
    'sf_add_group': EventType._sf_add_group_validator,
    'sf_allow_non_members_to_view_shared_links': EventType._sf_allow_non_members_to_view_shared_links_validator,
    'sf_external_invite_warn': EventType._sf_external_invite_warn_validator,
    'sf_fb_invite': EventType._sf_fb_invite_validator,
    'sf_fb_invite_change_role': EventType._sf_fb_invite_change_role_validator,
    'sf_fb_uninvite': EventType._sf_fb_uninvite_validator,
    'sf_invite_group': EventType._sf_invite_group_validator,
    'sf_team_grant_access': EventType._sf_team_grant_access_validator,
    'sf_team_invite': EventType._sf_team_invite_validator,
    'sf_team_invite_change_role': EventType._sf_team_invite_change_role_validator,
    'sf_team_join': EventType._sf_team_join_validator,
    'sf_team_join_from_oob_link': EventType._sf_team_join_from_oob_link_validator,
    'sf_team_uninvite': EventType._sf_team_uninvite_validator,
    'shared_content_add_invitees': EventType._shared_content_add_invitees_validator,
    'shared_content_add_link_expiry': EventType._shared_content_add_link_expiry_validator,
    'shared_content_add_link_password': EventType._shared_content_add_link_password_validator,
    'shared_content_add_member': EventType._shared_content_add_member_validator,
    'shared_content_change_downloads_policy': EventType._shared_content_change_downloads_policy_validator,
    'shared_content_change_invitee_role': EventType._shared_content_change_invitee_role_validator,
    'shared_content_change_link_audience': EventType._shared_content_change_link_audience_validator,
    'shared_content_change_link_expiry': EventType._shared_content_change_link_expiry_validator,
    'shared_content_change_link_password': EventType._shared_content_change_link_password_validator,
    'shared_content_change_member_role': EventType._shared_content_change_member_role_validator,
    'shared_content_change_viewer_info_policy': EventType._shared_content_change_viewer_info_policy_validator,
    'shared_content_claim_invitation': EventType._shared_content_claim_invitation_validator,
    'shared_content_copy': EventType._shared_content_copy_validator,
    'shared_content_download': EventType._shared_content_download_validator,
    'shared_content_relinquish_membership': EventType._shared_content_relinquish_membership_validator,
    'shared_content_remove_invitees': EventType._shared_content_remove_invitees_validator,
    'shared_content_remove_link_expiry': EventType._shared_content_remove_link_expiry_validator,
    'shared_content_remove_link_password': EventType._shared_content_remove_link_password_validator,
    'shared_content_remove_member': EventType._shared_content_remove_member_validator,
    'shared_content_request_access': EventType._shared_content_request_access_validator,
    'shared_content_unshare': EventType._shared_content_unshare_validator,
    'shared_content_view': EventType._shared_content_view_validator,
    'shared_folder_change_link_policy': EventType._shared_folder_change_link_policy_validator,
    'shared_folder_change_members_inheritance_policy': EventType._shared_folder_change_members_inheritance_policy_validator,
    'shared_folder_change_members_management_policy': EventType._shared_folder_change_members_management_policy_validator,
    'shared_folder_change_members_policy': EventType._shared_folder_change_members_policy_validator,
    'shared_folder_create': EventType._shared_folder_create_validator,
    'shared_folder_decline_invitation': EventType._shared_folder_decline_invitation_validator,
    'shared_folder_mount': EventType._shared_folder_mount_validator,
    'shared_folder_nest': EventType._shared_folder_nest_validator,
    'shared_folder_transfer_ownership': EventType._shared_folder_transfer_ownership_validator,
    'shared_folder_unmount': EventType._shared_folder_unmount_validator,
    'shared_link_add_expiry': EventType._shared_link_add_expiry_validator,
    'shared_link_change_expiry': EventType._shared_link_change_expiry_validator,
    'shared_link_change_visibility': EventType._shared_link_change_visibility_validator,
    'shared_link_copy': EventType._shared_link_copy_validator,
    'shared_link_create': EventType._shared_link_create_validator,
    'shared_link_disable': EventType._shared_link_disable_validator,
    'shared_link_download': EventType._shared_link_download_validator,
    'shared_link_remove_expiry': EventType._shared_link_remove_expiry_validator,
    'shared_link_share': EventType._shared_link_share_validator,
    'shared_link_view': EventType._shared_link_view_validator,
    'shared_note_opened': EventType._shared_note_opened_validator,
    'shmodel_group_share': EventType._shmodel_group_share_validator,
    'showcase_access_granted': EventType._showcase_access_granted_validator,
    'showcase_add_member': EventType._showcase_add_member_validator,
    'showcase_archived': EventType._showcase_archived_validator,
    'showcase_created': EventType._showcase_created_validator,
    'showcase_delete_comment': EventType._showcase_delete_comment_validator,
    'showcase_edited': EventType._showcase_edited_validator,
    'showcase_edit_comment': EventType._showcase_edit_comment_validator,
    'showcase_file_added': EventType._showcase_file_added_validator,
    'showcase_file_download': EventType._showcase_file_download_validator,
    'showcase_file_removed': EventType._showcase_file_removed_validator,
    'showcase_file_view': EventType._showcase_file_view_validator,
    'showcase_permanently_deleted': EventType._showcase_permanently_deleted_validator,
    'showcase_post_comment': EventType._showcase_post_comment_validator,
    'showcase_remove_member': EventType._showcase_remove_member_validator,
    'showcase_renamed': EventType._showcase_renamed_validator,
    'showcase_request_access': EventType._showcase_request_access_validator,
    'showcase_resolve_comment': EventType._showcase_resolve_comment_validator,
    'showcase_restored': EventType._showcase_restored_validator,
    'showcase_trashed': EventType._showcase_trashed_validator,
    'showcase_trashed_deprecated': EventType._showcase_trashed_deprecated_validator,
    'showcase_unresolve_comment': EventType._showcase_unresolve_comment_validator,
    'showcase_untrashed': EventType._showcase_untrashed_validator,
    'showcase_untrashed_deprecated': EventType._showcase_untrashed_deprecated_validator,
    'showcase_view': EventType._showcase_view_validator,
    'sso_add_cert': EventType._sso_add_cert_validator,
    'sso_add_login_url': EventType._sso_add_login_url_validator,
    'sso_add_logout_url': EventType._sso_add_logout_url_validator,
    'sso_change_cert': EventType._sso_change_cert_validator,
    'sso_change_login_url': EventType._sso_change_login_url_validator,
    'sso_change_logout_url': EventType._sso_change_logout_url_validator,
    'sso_change_saml_identity_mode': EventType._sso_change_saml_identity_mode_validator,
    'sso_remove_cert': EventType._sso_remove_cert_validator,
    'sso_remove_login_url': EventType._sso_remove_login_url_validator,
    'sso_remove_logout_url': EventType._sso_remove_logout_url_validator,
    'team_folder_change_status': EventType._team_folder_change_status_validator,
    'team_folder_create': EventType._team_folder_create_validator,
    'team_folder_downgrade': EventType._team_folder_downgrade_validator,
    'team_folder_permanently_delete': EventType._team_folder_permanently_delete_validator,
    'team_folder_rename': EventType._team_folder_rename_validator,
    'team_selective_sync_settings_changed': EventType._team_selective_sync_settings_changed_validator,
    'account_capture_change_policy': EventType._account_capture_change_policy_validator,
    'allow_download_disabled': EventType._allow_download_disabled_validator,
    'allow_download_enabled': EventType._allow_download_enabled_validator,
    'camera_uploads_policy_changed': EventType._camera_uploads_policy_changed_validator,
    'data_placement_restriction_change_policy': EventType._data_placement_restriction_change_policy_validator,
    'data_placement_restriction_satisfy_policy': EventType._data_placement_restriction_satisfy_policy_validator,
    'device_approvals_change_desktop_policy': EventType._device_approvals_change_desktop_policy_validator,
    'device_approvals_change_mobile_policy': EventType._device_approvals_change_mobile_policy_validator,
    'device_approvals_change_overage_action': EventType._device_approvals_change_overage_action_validator,
    'device_approvals_change_unlink_action': EventType._device_approvals_change_unlink_action_validator,
    'directory_restrictions_add_members': EventType._directory_restrictions_add_members_validator,
    'directory_restrictions_remove_members': EventType._directory_restrictions_remove_members_validator,
    'emm_add_exception': EventType._emm_add_exception_validator,
    'emm_change_policy': EventType._emm_change_policy_validator,
    'emm_remove_exception': EventType._emm_remove_exception_validator,
    'extended_version_history_change_policy': EventType._extended_version_history_change_policy_validator,
    'file_comments_change_policy': EventType._file_comments_change_policy_validator,
    'file_requests_change_policy': EventType._file_requests_change_policy_validator,
    'file_requests_emails_enabled': EventType._file_requests_emails_enabled_validator,
    'file_requests_emails_restricted_to_team_only': EventType._file_requests_emails_restricted_to_team_only_validator,
    'google_sso_change_policy': EventType._google_sso_change_policy_validator,
    'group_user_management_change_policy': EventType._group_user_management_change_policy_validator,
    'integration_policy_changed': EventType._integration_policy_changed_validator,
    'member_requests_change_policy': EventType._member_requests_change_policy_validator,
    'member_space_limits_add_exception': EventType._member_space_limits_add_exception_validator,
    'member_space_limits_change_caps_type_policy': EventType._member_space_limits_change_caps_type_policy_validator,
    'member_space_limits_change_policy': EventType._member_space_limits_change_policy_validator,
    'member_space_limits_remove_exception': EventType._member_space_limits_remove_exception_validator,
    'member_suggestions_change_policy': EventType._member_suggestions_change_policy_validator,
    'microsoft_office_addin_change_policy': EventType._microsoft_office_addin_change_policy_validator,
    'network_control_change_policy': EventType._network_control_change_policy_validator,
    'paper_change_deployment_policy': EventType._paper_change_deployment_policy_validator,
    'paper_change_member_link_policy': EventType._paper_change_member_link_policy_validator,
    'paper_change_member_policy': EventType._paper_change_member_policy_validator,
    'paper_change_policy': EventType._paper_change_policy_validator,
    'paper_default_folder_policy_changed': EventType._paper_default_folder_policy_changed_validator,
    'paper_desktop_policy_changed': EventType._paper_desktop_policy_changed_validator,
    'paper_enabled_users_group_addition': EventType._paper_enabled_users_group_addition_validator,
    'paper_enabled_users_group_removal': EventType._paper_enabled_users_group_removal_validator,
    'permanent_delete_change_policy': EventType._permanent_delete_change_policy_validator,
    'reseller_support_change_policy': EventType._reseller_support_change_policy_validator,
    'sharing_change_folder_join_policy': EventType._sharing_change_folder_join_policy_validator,
    'sharing_change_link_policy': EventType._sharing_change_link_policy_validator,
    'sharing_change_member_policy': EventType._sharing_change_member_policy_validator,
    'showcase_change_download_policy': EventType._showcase_change_download_policy_validator,
    'showcase_change_enabled_policy': EventType._showcase_change_enabled_policy_validator,
    'showcase_change_external_sharing_policy': EventType._showcase_change_external_sharing_policy_validator,
    'smart_sync_change_policy': EventType._smart_sync_change_policy_validator,
    'smart_sync_not_opt_out': EventType._smart_sync_not_opt_out_validator,
    'smart_sync_opt_out': EventType._smart_sync_opt_out_validator,
    'sso_change_policy': EventType._sso_change_policy_validator,
    'team_extensions_policy_changed': EventType._team_extensions_policy_changed_validator,
    'team_selective_sync_policy_changed': EventType._team_selective_sync_policy_changed_validator,
    'tfa_change_policy': EventType._tfa_change_policy_validator,
    'two_account_change_policy': EventType._two_account_change_policy_validator,
    'viewer_info_policy_changed': EventType._viewer_info_policy_changed_validator,
    'web_sessions_change_fixed_length_policy': EventType._web_sessions_change_fixed_length_policy_validator,
    'web_sessions_change_idle_length_policy': EventType._web_sessions_change_idle_length_policy_validator,
    'team_merge_from': EventType._team_merge_from_validator,
    'team_merge_to': EventType._team_merge_to_validator,
    'team_profile_add_logo': EventType._team_profile_add_logo_validator,
    'team_profile_change_default_language': EventType._team_profile_change_default_language_validator,
    'team_profile_change_logo': EventType._team_profile_change_logo_validator,
    'team_profile_change_name': EventType._team_profile_change_name_validator,
    'team_profile_remove_logo': EventType._team_profile_remove_logo_validator,
    'tfa_add_backup_phone': EventType._tfa_add_backup_phone_validator,
    'tfa_add_security_key': EventType._tfa_add_security_key_validator,
    'tfa_change_backup_phone': EventType._tfa_change_backup_phone_validator,
    'tfa_change_status': EventType._tfa_change_status_validator,
    'tfa_remove_backup_phone': EventType._tfa_remove_backup_phone_validator,
    'tfa_remove_security_key': EventType._tfa_remove_security_key_validator,
    'tfa_reset': EventType._tfa_reset_validator,
    'guest_admin_change_status': EventType._guest_admin_change_status_validator,
    'team_merge_request_accepted': EventType._team_merge_request_accepted_validator,
    'team_merge_request_accepted_shown_to_primary_team': EventType._team_merge_request_accepted_shown_to_primary_team_validator,
    'team_merge_request_accepted_shown_to_secondary_team': EventType._team_merge_request_accepted_shown_to_secondary_team_validator,
    'team_merge_request_auto_canceled': EventType._team_merge_request_auto_canceled_validator,
    'team_merge_request_canceled': EventType._team_merge_request_canceled_validator,
    'team_merge_request_canceled_shown_to_primary_team': EventType._team_merge_request_canceled_shown_to_primary_team_validator,
    'team_merge_request_canceled_shown_to_secondary_team': EventType._team_merge_request_canceled_shown_to_secondary_team_validator,
    'team_merge_request_expired': EventType._team_merge_request_expired_validator,
    'team_merge_request_expired_shown_to_primary_team': EventType._team_merge_request_expired_shown_to_primary_team_validator,
    'team_merge_request_expired_shown_to_secondary_team': EventType._team_merge_request_expired_shown_to_secondary_team_validator,
    'team_merge_request_rejected_shown_to_primary_team': EventType._team_merge_request_rejected_shown_to_primary_team_validator,
    'team_merge_request_rejected_shown_to_secondary_team': EventType._team_merge_request_rejected_shown_to_secondary_team_validator,
    'team_merge_request_reminder': EventType._team_merge_request_reminder_validator,
    'team_merge_request_reminder_shown_to_primary_team': EventType._team_merge_request_reminder_shown_to_primary_team_validator,
    'team_merge_request_reminder_shown_to_secondary_team': EventType._team_merge_request_reminder_shown_to_secondary_team_validator,
    'team_merge_request_revoked': EventType._team_merge_request_revoked_validator,
    'team_merge_request_sent_shown_to_primary_team': EventType._team_merge_request_sent_shown_to_primary_team_validator,
    'team_merge_request_sent_shown_to_secondary_team': EventType._team_merge_request_sent_shown_to_secondary_team_validator,
    'other': EventType._other_validator,
}

EventType.other = EventType('other')

ExportMembersReportDetails._all_field_names_ = set([])
ExportMembersReportDetails._all_fields_ = []

ExportMembersReportType._description_validator = bv.String()
ExportMembersReportType._all_field_names_ = set(['description'])
ExportMembersReportType._all_fields_ = [('description', ExportMembersReportType._description_validator)]

ExtendedVersionHistoryChangePolicyDetails._new_value_validator = ExtendedVersionHistoryPolicy_validator
ExtendedVersionHistoryChangePolicyDetails._previous_value_validator = bv.Nullable(ExtendedVersionHistoryPolicy_validator)
ExtendedVersionHistoryChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
ExtendedVersionHistoryChangePolicyDetails._all_fields_ = [
    ('new_value', ExtendedVersionHistoryChangePolicyDetails._new_value_validator),
    ('previous_value', ExtendedVersionHistoryChangePolicyDetails._previous_value_validator),
]

ExtendedVersionHistoryChangePolicyType._description_validator = bv.String()
ExtendedVersionHistoryChangePolicyType._all_field_names_ = set(['description'])
ExtendedVersionHistoryChangePolicyType._all_fields_ = [('description', ExtendedVersionHistoryChangePolicyType._description_validator)]

ExtendedVersionHistoryPolicy._explicitly_limited_validator = bv.Void()
ExtendedVersionHistoryPolicy._explicitly_unlimited_validator = bv.Void()
ExtendedVersionHistoryPolicy._implicitly_limited_validator = bv.Void()
ExtendedVersionHistoryPolicy._implicitly_unlimited_validator = bv.Void()
ExtendedVersionHistoryPolicy._other_validator = bv.Void()
ExtendedVersionHistoryPolicy._tagmap = {
    'explicitly_limited': ExtendedVersionHistoryPolicy._explicitly_limited_validator,
    'explicitly_unlimited': ExtendedVersionHistoryPolicy._explicitly_unlimited_validator,
    'implicitly_limited': ExtendedVersionHistoryPolicy._implicitly_limited_validator,
    'implicitly_unlimited': ExtendedVersionHistoryPolicy._implicitly_unlimited_validator,
    'other': ExtendedVersionHistoryPolicy._other_validator,
}

ExtendedVersionHistoryPolicy.explicitly_limited = ExtendedVersionHistoryPolicy('explicitly_limited')
ExtendedVersionHistoryPolicy.explicitly_unlimited = ExtendedVersionHistoryPolicy('explicitly_unlimited')
ExtendedVersionHistoryPolicy.implicitly_limited = ExtendedVersionHistoryPolicy('implicitly_limited')
ExtendedVersionHistoryPolicy.implicitly_unlimited = ExtendedVersionHistoryPolicy('implicitly_unlimited')
ExtendedVersionHistoryPolicy.other = ExtendedVersionHistoryPolicy('other')

ExternalUserLogInfo._user_identifier_validator = bv.String()
ExternalUserLogInfo._identifier_type_validator = IdentifierType_validator
ExternalUserLogInfo._all_field_names_ = set([
    'user_identifier',
    'identifier_type',
])
ExternalUserLogInfo._all_fields_ = [
    ('user_identifier', ExternalUserLogInfo._user_identifier_validator),
    ('identifier_type', ExternalUserLogInfo._identifier_type_validator),
]

FailureDetailsLogInfo._user_friendly_message_validator = bv.Nullable(bv.String())
FailureDetailsLogInfo._technical_error_message_validator = bv.Nullable(bv.String())
FailureDetailsLogInfo._all_field_names_ = set([
    'user_friendly_message',
    'technical_error_message',
])
FailureDetailsLogInfo._all_fields_ = [
    ('user_friendly_message', FailureDetailsLogInfo._user_friendly_message_validator),
    ('technical_error_message', FailureDetailsLogInfo._technical_error_message_validator),
]

FileAddCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileAddCommentDetails._all_field_names_ = set(['comment_text'])
FileAddCommentDetails._all_fields_ = [('comment_text', FileAddCommentDetails._comment_text_validator)]

FileAddCommentType._description_validator = bv.String()
FileAddCommentType._all_field_names_ = set(['description'])
FileAddCommentType._all_fields_ = [('description', FileAddCommentType._description_validator)]

FileAddDetails._all_field_names_ = set([])
FileAddDetails._all_fields_ = []

FileAddType._description_validator = bv.String()
FileAddType._all_field_names_ = set(['description'])
FileAddType._all_fields_ = [('description', FileAddType._description_validator)]

FileChangeCommentSubscriptionDetails._new_value_validator = FileCommentNotificationPolicy_validator
FileChangeCommentSubscriptionDetails._previous_value_validator = bv.Nullable(FileCommentNotificationPolicy_validator)
FileChangeCommentSubscriptionDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
FileChangeCommentSubscriptionDetails._all_fields_ = [
    ('new_value', FileChangeCommentSubscriptionDetails._new_value_validator),
    ('previous_value', FileChangeCommentSubscriptionDetails._previous_value_validator),
]

FileChangeCommentSubscriptionType._description_validator = bv.String()
FileChangeCommentSubscriptionType._all_field_names_ = set(['description'])
FileChangeCommentSubscriptionType._all_fields_ = [('description', FileChangeCommentSubscriptionType._description_validator)]

FileCommentNotificationPolicy._disabled_validator = bv.Void()
FileCommentNotificationPolicy._enabled_validator = bv.Void()
FileCommentNotificationPolicy._other_validator = bv.Void()
FileCommentNotificationPolicy._tagmap = {
    'disabled': FileCommentNotificationPolicy._disabled_validator,
    'enabled': FileCommentNotificationPolicy._enabled_validator,
    'other': FileCommentNotificationPolicy._other_validator,
}

FileCommentNotificationPolicy.disabled = FileCommentNotificationPolicy('disabled')
FileCommentNotificationPolicy.enabled = FileCommentNotificationPolicy('enabled')
FileCommentNotificationPolicy.other = FileCommentNotificationPolicy('other')

FileCommentsChangePolicyDetails._new_value_validator = FileCommentsPolicy_validator
FileCommentsChangePolicyDetails._previous_value_validator = bv.Nullable(FileCommentsPolicy_validator)
FileCommentsChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
FileCommentsChangePolicyDetails._all_fields_ = [
    ('new_value', FileCommentsChangePolicyDetails._new_value_validator),
    ('previous_value', FileCommentsChangePolicyDetails._previous_value_validator),
]

FileCommentsChangePolicyType._description_validator = bv.String()
FileCommentsChangePolicyType._all_field_names_ = set(['description'])
FileCommentsChangePolicyType._all_fields_ = [('description', FileCommentsChangePolicyType._description_validator)]

FileCommentsPolicy._disabled_validator = bv.Void()
FileCommentsPolicy._enabled_validator = bv.Void()
FileCommentsPolicy._other_validator = bv.Void()
FileCommentsPolicy._tagmap = {
    'disabled': FileCommentsPolicy._disabled_validator,
    'enabled': FileCommentsPolicy._enabled_validator,
    'other': FileCommentsPolicy._other_validator,
}

FileCommentsPolicy.disabled = FileCommentsPolicy('disabled')
FileCommentsPolicy.enabled = FileCommentsPolicy('enabled')
FileCommentsPolicy.other = FileCommentsPolicy('other')

FileCopyDetails._relocate_action_details_validator = bv.List(RelocateAssetReferencesLogInfo_validator)
FileCopyDetails._all_field_names_ = set(['relocate_action_details'])
FileCopyDetails._all_fields_ = [('relocate_action_details', FileCopyDetails._relocate_action_details_validator)]

FileCopyType._description_validator = bv.String()
FileCopyType._all_field_names_ = set(['description'])
FileCopyType._all_fields_ = [('description', FileCopyType._description_validator)]

FileDeleteCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileDeleteCommentDetails._all_field_names_ = set(['comment_text'])
FileDeleteCommentDetails._all_fields_ = [('comment_text', FileDeleteCommentDetails._comment_text_validator)]

FileDeleteCommentType._description_validator = bv.String()
FileDeleteCommentType._all_field_names_ = set(['description'])
FileDeleteCommentType._all_fields_ = [('description', FileDeleteCommentType._description_validator)]

FileDeleteDetails._all_field_names_ = set([])
FileDeleteDetails._all_fields_ = []

FileDeleteType._description_validator = bv.String()
FileDeleteType._all_field_names_ = set(['description'])
FileDeleteType._all_fields_ = [('description', FileDeleteType._description_validator)]

FileDownloadDetails._all_field_names_ = set([])
FileDownloadDetails._all_fields_ = []

FileDownloadType._description_validator = bv.String()
FileDownloadType._all_field_names_ = set(['description'])
FileDownloadType._all_fields_ = [('description', FileDownloadType._description_validator)]

FileEditCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileEditCommentDetails._previous_comment_text_validator = bv.String()
FileEditCommentDetails._all_field_names_ = set([
    'comment_text',
    'previous_comment_text',
])
FileEditCommentDetails._all_fields_ = [
    ('comment_text', FileEditCommentDetails._comment_text_validator),
    ('previous_comment_text', FileEditCommentDetails._previous_comment_text_validator),
]

FileEditCommentType._description_validator = bv.String()
FileEditCommentType._all_field_names_ = set(['description'])
FileEditCommentType._all_fields_ = [('description', FileEditCommentType._description_validator)]

FileEditDetails._all_field_names_ = set([])
FileEditDetails._all_fields_ = []

FileEditType._description_validator = bv.String()
FileEditType._all_field_names_ = set(['description'])
FileEditType._all_fields_ = [('description', FileEditType._description_validator)]

FileGetCopyReferenceDetails._all_field_names_ = set([])
FileGetCopyReferenceDetails._all_fields_ = []

FileGetCopyReferenceType._description_validator = bv.String()
FileGetCopyReferenceType._all_field_names_ = set(['description'])
FileGetCopyReferenceType._all_fields_ = [('description', FileGetCopyReferenceType._description_validator)]

FileLikeCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileLikeCommentDetails._all_field_names_ = set(['comment_text'])
FileLikeCommentDetails._all_fields_ = [('comment_text', FileLikeCommentDetails._comment_text_validator)]

FileLikeCommentType._description_validator = bv.String()
FileLikeCommentType._all_field_names_ = set(['description'])
FileLikeCommentType._all_fields_ = [('description', FileLikeCommentType._description_validator)]

FileOrFolderLogInfo._path_validator = PathLogInfo_validator
FileOrFolderLogInfo._display_name_validator = bv.Nullable(bv.String())
FileOrFolderLogInfo._file_id_validator = bv.Nullable(bv.String())
FileOrFolderLogInfo._all_field_names_ = set([
    'path',
    'display_name',
    'file_id',
])
FileOrFolderLogInfo._all_fields_ = [
    ('path', FileOrFolderLogInfo._path_validator),
    ('display_name', FileOrFolderLogInfo._display_name_validator),
    ('file_id', FileOrFolderLogInfo._file_id_validator),
]

FileLogInfo._all_field_names_ = FileOrFolderLogInfo._all_field_names_.union(set([]))
FileLogInfo._all_fields_ = FileOrFolderLogInfo._all_fields_ + []

FileMoveDetails._relocate_action_details_validator = bv.List(RelocateAssetReferencesLogInfo_validator)
FileMoveDetails._all_field_names_ = set(['relocate_action_details'])
FileMoveDetails._all_fields_ = [('relocate_action_details', FileMoveDetails._relocate_action_details_validator)]

FileMoveType._description_validator = bv.String()
FileMoveType._all_field_names_ = set(['description'])
FileMoveType._all_fields_ = [('description', FileMoveType._description_validator)]

FilePermanentlyDeleteDetails._all_field_names_ = set([])
FilePermanentlyDeleteDetails._all_fields_ = []

FilePermanentlyDeleteType._description_validator = bv.String()
FilePermanentlyDeleteType._all_field_names_ = set(['description'])
FilePermanentlyDeleteType._all_fields_ = [('description', FilePermanentlyDeleteType._description_validator)]

FilePreviewDetails._all_field_names_ = set([])
FilePreviewDetails._all_fields_ = []

FilePreviewType._description_validator = bv.String()
FilePreviewType._all_field_names_ = set(['description'])
FilePreviewType._all_fields_ = [('description', FilePreviewType._description_validator)]

FileRenameDetails._relocate_action_details_validator = bv.List(RelocateAssetReferencesLogInfo_validator)
FileRenameDetails._all_field_names_ = set(['relocate_action_details'])
FileRenameDetails._all_fields_ = [('relocate_action_details', FileRenameDetails._relocate_action_details_validator)]

FileRenameType._description_validator = bv.String()
FileRenameType._all_field_names_ = set(['description'])
FileRenameType._all_fields_ = [('description', FileRenameType._description_validator)]

FileRequestChangeDetails._file_request_id_validator = bv.Nullable(file_requests.FileRequestId_validator)
FileRequestChangeDetails._previous_details_validator = bv.Nullable(FileRequestDetails_validator)
FileRequestChangeDetails._new_details_validator = FileRequestDetails_validator
FileRequestChangeDetails._all_field_names_ = set([
    'file_request_id',
    'previous_details',
    'new_details',
])
FileRequestChangeDetails._all_fields_ = [
    ('file_request_id', FileRequestChangeDetails._file_request_id_validator),
    ('previous_details', FileRequestChangeDetails._previous_details_validator),
    ('new_details', FileRequestChangeDetails._new_details_validator),
]

FileRequestChangeType._description_validator = bv.String()
FileRequestChangeType._all_field_names_ = set(['description'])
FileRequestChangeType._all_fields_ = [('description', FileRequestChangeType._description_validator)]

FileRequestCloseDetails._file_request_id_validator = bv.Nullable(file_requests.FileRequestId_validator)
FileRequestCloseDetails._previous_details_validator = bv.Nullable(FileRequestDetails_validator)
FileRequestCloseDetails._all_field_names_ = set([
    'file_request_id',
    'previous_details',
])
FileRequestCloseDetails._all_fields_ = [
    ('file_request_id', FileRequestCloseDetails._file_request_id_validator),
    ('previous_details', FileRequestCloseDetails._previous_details_validator),
]

FileRequestCloseType._description_validator = bv.String()
FileRequestCloseType._all_field_names_ = set(['description'])
FileRequestCloseType._all_fields_ = [('description', FileRequestCloseType._description_validator)]

FileRequestCreateDetails._file_request_id_validator = bv.Nullable(file_requests.FileRequestId_validator)
FileRequestCreateDetails._request_details_validator = bv.Nullable(FileRequestDetails_validator)
FileRequestCreateDetails._all_field_names_ = set([
    'file_request_id',
    'request_details',
])
FileRequestCreateDetails._all_fields_ = [
    ('file_request_id', FileRequestCreateDetails._file_request_id_validator),
    ('request_details', FileRequestCreateDetails._request_details_validator),
]

FileRequestCreateType._description_validator = bv.String()
FileRequestCreateType._all_field_names_ = set(['description'])
FileRequestCreateType._all_fields_ = [('description', FileRequestCreateType._description_validator)]

FileRequestDeadline._deadline_validator = bv.Nullable(common.DropboxTimestamp_validator)
FileRequestDeadline._allow_late_uploads_validator = bv.Nullable(bv.String())
FileRequestDeadline._all_field_names_ = set([
    'deadline',
    'allow_late_uploads',
])
FileRequestDeadline._all_fields_ = [
    ('deadline', FileRequestDeadline._deadline_validator),
    ('allow_late_uploads', FileRequestDeadline._allow_late_uploads_validator),
]

FileRequestDeleteDetails._file_request_id_validator = bv.Nullable(file_requests.FileRequestId_validator)
FileRequestDeleteDetails._previous_details_validator = bv.Nullable(FileRequestDetails_validator)
FileRequestDeleteDetails._all_field_names_ = set([
    'file_request_id',
    'previous_details',
])
FileRequestDeleteDetails._all_fields_ = [
    ('file_request_id', FileRequestDeleteDetails._file_request_id_validator),
    ('previous_details', FileRequestDeleteDetails._previous_details_validator),
]

FileRequestDeleteType._description_validator = bv.String()
FileRequestDeleteType._all_field_names_ = set(['description'])
FileRequestDeleteType._all_fields_ = [('description', FileRequestDeleteType._description_validator)]

FileRequestDetails._asset_index_validator = bv.UInt64()
FileRequestDetails._deadline_validator = bv.Nullable(FileRequestDeadline_validator)
FileRequestDetails._all_field_names_ = set([
    'asset_index',
    'deadline',
])
FileRequestDetails._all_fields_ = [
    ('asset_index', FileRequestDetails._asset_index_validator),
    ('deadline', FileRequestDetails._deadline_validator),
]

FileRequestReceiveFileDetails._file_request_id_validator = bv.Nullable(file_requests.FileRequestId_validator)
FileRequestReceiveFileDetails._file_request_details_validator = bv.Nullable(FileRequestDetails_validator)
FileRequestReceiveFileDetails._submitted_file_names_validator = bv.List(bv.String())
FileRequestReceiveFileDetails._submitter_name_validator = bv.Nullable(common.DisplayNameLegacy_validator)
FileRequestReceiveFileDetails._submitter_email_validator = bv.Nullable(EmailAddress_validator)
FileRequestReceiveFileDetails._all_field_names_ = set([
    'file_request_id',
    'file_request_details',
    'submitted_file_names',
    'submitter_name',
    'submitter_email',
])
FileRequestReceiveFileDetails._all_fields_ = [
    ('file_request_id', FileRequestReceiveFileDetails._file_request_id_validator),
    ('file_request_details', FileRequestReceiveFileDetails._file_request_details_validator),
    ('submitted_file_names', FileRequestReceiveFileDetails._submitted_file_names_validator),
    ('submitter_name', FileRequestReceiveFileDetails._submitter_name_validator),
    ('submitter_email', FileRequestReceiveFileDetails._submitter_email_validator),
]

FileRequestReceiveFileType._description_validator = bv.String()
FileRequestReceiveFileType._all_field_names_ = set(['description'])
FileRequestReceiveFileType._all_fields_ = [('description', FileRequestReceiveFileType._description_validator)]

FileRequestsChangePolicyDetails._new_value_validator = FileRequestsPolicy_validator
FileRequestsChangePolicyDetails._previous_value_validator = bv.Nullable(FileRequestsPolicy_validator)
FileRequestsChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
FileRequestsChangePolicyDetails._all_fields_ = [
    ('new_value', FileRequestsChangePolicyDetails._new_value_validator),
    ('previous_value', FileRequestsChangePolicyDetails._previous_value_validator),
]

FileRequestsChangePolicyType._description_validator = bv.String()
FileRequestsChangePolicyType._all_field_names_ = set(['description'])
FileRequestsChangePolicyType._all_fields_ = [('description', FileRequestsChangePolicyType._description_validator)]

FileRequestsEmailsEnabledDetails._all_field_names_ = set([])
FileRequestsEmailsEnabledDetails._all_fields_ = []

FileRequestsEmailsEnabledType._description_validator = bv.String()
FileRequestsEmailsEnabledType._all_field_names_ = set(['description'])
FileRequestsEmailsEnabledType._all_fields_ = [('description', FileRequestsEmailsEnabledType._description_validator)]

FileRequestsEmailsRestrictedToTeamOnlyDetails._all_field_names_ = set([])
FileRequestsEmailsRestrictedToTeamOnlyDetails._all_fields_ = []

FileRequestsEmailsRestrictedToTeamOnlyType._description_validator = bv.String()
FileRequestsEmailsRestrictedToTeamOnlyType._all_field_names_ = set(['description'])
FileRequestsEmailsRestrictedToTeamOnlyType._all_fields_ = [('description', FileRequestsEmailsRestrictedToTeamOnlyType._description_validator)]

FileRequestsPolicy._disabled_validator = bv.Void()
FileRequestsPolicy._enabled_validator = bv.Void()
FileRequestsPolicy._other_validator = bv.Void()
FileRequestsPolicy._tagmap = {
    'disabled': FileRequestsPolicy._disabled_validator,
    'enabled': FileRequestsPolicy._enabled_validator,
    'other': FileRequestsPolicy._other_validator,
}

FileRequestsPolicy.disabled = FileRequestsPolicy('disabled')
FileRequestsPolicy.enabled = FileRequestsPolicy('enabled')
FileRequestsPolicy.other = FileRequestsPolicy('other')

FileResolveCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileResolveCommentDetails._all_field_names_ = set(['comment_text'])
FileResolveCommentDetails._all_fields_ = [('comment_text', FileResolveCommentDetails._comment_text_validator)]

FileResolveCommentType._description_validator = bv.String()
FileResolveCommentType._all_field_names_ = set(['description'])
FileResolveCommentType._all_fields_ = [('description', FileResolveCommentType._description_validator)]

FileRestoreDetails._all_field_names_ = set([])
FileRestoreDetails._all_fields_ = []

FileRestoreType._description_validator = bv.String()
FileRestoreType._all_field_names_ = set(['description'])
FileRestoreType._all_fields_ = [('description', FileRestoreType._description_validator)]

FileRevertDetails._all_field_names_ = set([])
FileRevertDetails._all_fields_ = []

FileRevertType._description_validator = bv.String()
FileRevertType._all_field_names_ = set(['description'])
FileRevertType._all_fields_ = [('description', FileRevertType._description_validator)]

FileRollbackChangesDetails._all_field_names_ = set([])
FileRollbackChangesDetails._all_fields_ = []

FileRollbackChangesType._description_validator = bv.String()
FileRollbackChangesType._all_field_names_ = set(['description'])
FileRollbackChangesType._all_fields_ = [('description', FileRollbackChangesType._description_validator)]

FileSaveCopyReferenceDetails._relocate_action_details_validator = bv.List(RelocateAssetReferencesLogInfo_validator)
FileSaveCopyReferenceDetails._all_field_names_ = set(['relocate_action_details'])
FileSaveCopyReferenceDetails._all_fields_ = [('relocate_action_details', FileSaveCopyReferenceDetails._relocate_action_details_validator)]

FileSaveCopyReferenceType._description_validator = bv.String()
FileSaveCopyReferenceType._all_field_names_ = set(['description'])
FileSaveCopyReferenceType._all_fields_ = [('description', FileSaveCopyReferenceType._description_validator)]

FileUnlikeCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileUnlikeCommentDetails._all_field_names_ = set(['comment_text'])
FileUnlikeCommentDetails._all_fields_ = [('comment_text', FileUnlikeCommentDetails._comment_text_validator)]

FileUnlikeCommentType._description_validator = bv.String()
FileUnlikeCommentType._all_field_names_ = set(['description'])
FileUnlikeCommentType._all_fields_ = [('description', FileUnlikeCommentType._description_validator)]

FileUnresolveCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileUnresolveCommentDetails._all_field_names_ = set(['comment_text'])
FileUnresolveCommentDetails._all_fields_ = [('comment_text', FileUnresolveCommentDetails._comment_text_validator)]

FileUnresolveCommentType._description_validator = bv.String()
FileUnresolveCommentType._all_field_names_ = set(['description'])
FileUnresolveCommentType._all_fields_ = [('description', FileUnresolveCommentType._description_validator)]

FolderLogInfo._all_field_names_ = FileOrFolderLogInfo._all_field_names_.union(set([]))
FolderLogInfo._all_fields_ = FileOrFolderLogInfo._all_fields_ + []

GeoLocationLogInfo._city_validator = bv.Nullable(bv.String())
GeoLocationLogInfo._region_validator = bv.Nullable(bv.String())
GeoLocationLogInfo._country_validator = bv.Nullable(bv.String())
GeoLocationLogInfo._ip_address_validator = IpAddress_validator
GeoLocationLogInfo._all_field_names_ = set([
    'city',
    'region',
    'country',
    'ip_address',
])
GeoLocationLogInfo._all_fields_ = [
    ('city', GeoLocationLogInfo._city_validator),
    ('region', GeoLocationLogInfo._region_validator),
    ('country', GeoLocationLogInfo._country_validator),
    ('ip_address', GeoLocationLogInfo._ip_address_validator),
]

GetTeamEventsArg._limit_validator = bv.UInt32(min_value=1, max_value=1000)
GetTeamEventsArg._account_id_validator = bv.Nullable(users_common.AccountId_validator)
GetTeamEventsArg._time_validator = bv.Nullable(team_common.TimeRange_validator)
GetTeamEventsArg._category_validator = bv.Nullable(EventCategory_validator)
GetTeamEventsArg._all_field_names_ = set([
    'limit',
    'account_id',
    'time',
    'category',
])
GetTeamEventsArg._all_fields_ = [
    ('limit', GetTeamEventsArg._limit_validator),
    ('account_id', GetTeamEventsArg._account_id_validator),
    ('time', GetTeamEventsArg._time_validator),
    ('category', GetTeamEventsArg._category_validator),
]

GetTeamEventsContinueArg._cursor_validator = bv.String()
GetTeamEventsContinueArg._all_field_names_ = set(['cursor'])
GetTeamEventsContinueArg._all_fields_ = [('cursor', GetTeamEventsContinueArg._cursor_validator)]

GetTeamEventsContinueError._bad_cursor_validator = bv.Void()
GetTeamEventsContinueError._reset_validator = common.DropboxTimestamp_validator
GetTeamEventsContinueError._other_validator = bv.Void()
GetTeamEventsContinueError._tagmap = {
    'bad_cursor': GetTeamEventsContinueError._bad_cursor_validator,
    'reset': GetTeamEventsContinueError._reset_validator,
    'other': GetTeamEventsContinueError._other_validator,
}

GetTeamEventsContinueError.bad_cursor = GetTeamEventsContinueError('bad_cursor')
GetTeamEventsContinueError.other = GetTeamEventsContinueError('other')

GetTeamEventsError._account_id_not_found_validator = bv.Void()
GetTeamEventsError._invalid_time_range_validator = bv.Void()
GetTeamEventsError._other_validator = bv.Void()
GetTeamEventsError._tagmap = {
    'account_id_not_found': GetTeamEventsError._account_id_not_found_validator,
    'invalid_time_range': GetTeamEventsError._invalid_time_range_validator,
    'other': GetTeamEventsError._other_validator,
}

GetTeamEventsError.account_id_not_found = GetTeamEventsError('account_id_not_found')
GetTeamEventsError.invalid_time_range = GetTeamEventsError('invalid_time_range')
GetTeamEventsError.other = GetTeamEventsError('other')

GetTeamEventsResult._events_validator = bv.List(TeamEvent_validator)
GetTeamEventsResult._cursor_validator = bv.String()
GetTeamEventsResult._has_more_validator = bv.Boolean()
GetTeamEventsResult._all_field_names_ = set([
    'events',
    'cursor',
    'has_more',
])
GetTeamEventsResult._all_fields_ = [
    ('events', GetTeamEventsResult._events_validator),
    ('cursor', GetTeamEventsResult._cursor_validator),
    ('has_more', GetTeamEventsResult._has_more_validator),
]

GoogleSsoChangePolicyDetails._new_value_validator = GoogleSsoPolicy_validator
GoogleSsoChangePolicyDetails._previous_value_validator = bv.Nullable(GoogleSsoPolicy_validator)
GoogleSsoChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
GoogleSsoChangePolicyDetails._all_fields_ = [
    ('new_value', GoogleSsoChangePolicyDetails._new_value_validator),
    ('previous_value', GoogleSsoChangePolicyDetails._previous_value_validator),
]

GoogleSsoChangePolicyType._description_validator = bv.String()
GoogleSsoChangePolicyType._all_field_names_ = set(['description'])
GoogleSsoChangePolicyType._all_fields_ = [('description', GoogleSsoChangePolicyType._description_validator)]

GoogleSsoPolicy._disabled_validator = bv.Void()
GoogleSsoPolicy._enabled_validator = bv.Void()
GoogleSsoPolicy._other_validator = bv.Void()
GoogleSsoPolicy._tagmap = {
    'disabled': GoogleSsoPolicy._disabled_validator,
    'enabled': GoogleSsoPolicy._enabled_validator,
    'other': GoogleSsoPolicy._other_validator,
}

GoogleSsoPolicy.disabled = GoogleSsoPolicy('disabled')
GoogleSsoPolicy.enabled = GoogleSsoPolicy('enabled')
GoogleSsoPolicy.other = GoogleSsoPolicy('other')

GroupAddExternalIdDetails._new_value_validator = team_common.GroupExternalId_validator
GroupAddExternalIdDetails._all_field_names_ = set(['new_value'])
GroupAddExternalIdDetails._all_fields_ = [('new_value', GroupAddExternalIdDetails._new_value_validator)]

GroupAddExternalIdType._description_validator = bv.String()
GroupAddExternalIdType._all_field_names_ = set(['description'])
GroupAddExternalIdType._all_fields_ = [('description', GroupAddExternalIdType._description_validator)]

GroupAddMemberDetails._is_group_owner_validator = bv.Boolean()
GroupAddMemberDetails._all_field_names_ = set(['is_group_owner'])
GroupAddMemberDetails._all_fields_ = [('is_group_owner', GroupAddMemberDetails._is_group_owner_validator)]

GroupAddMemberType._description_validator = bv.String()
GroupAddMemberType._all_field_names_ = set(['description'])
GroupAddMemberType._all_fields_ = [('description', GroupAddMemberType._description_validator)]

GroupChangeExternalIdDetails._new_value_validator = team_common.GroupExternalId_validator
GroupChangeExternalIdDetails._previous_value_validator = team_common.GroupExternalId_validator
GroupChangeExternalIdDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
GroupChangeExternalIdDetails._all_fields_ = [
    ('new_value', GroupChangeExternalIdDetails._new_value_validator),
    ('previous_value', GroupChangeExternalIdDetails._previous_value_validator),
]

GroupChangeExternalIdType._description_validator = bv.String()
GroupChangeExternalIdType._all_field_names_ = set(['description'])
GroupChangeExternalIdType._all_fields_ = [('description', GroupChangeExternalIdType._description_validator)]

GroupChangeManagementTypeDetails._new_value_validator = team_common.GroupManagementType_validator
GroupChangeManagementTypeDetails._previous_value_validator = bv.Nullable(team_common.GroupManagementType_validator)
GroupChangeManagementTypeDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
GroupChangeManagementTypeDetails._all_fields_ = [
    ('new_value', GroupChangeManagementTypeDetails._new_value_validator),
    ('previous_value', GroupChangeManagementTypeDetails._previous_value_validator),
]

GroupChangeManagementTypeType._description_validator = bv.String()
GroupChangeManagementTypeType._all_field_names_ = set(['description'])
GroupChangeManagementTypeType._all_fields_ = [('description', GroupChangeManagementTypeType._description_validator)]

GroupChangeMemberRoleDetails._is_group_owner_validator = bv.Boolean()
GroupChangeMemberRoleDetails._all_field_names_ = set(['is_group_owner'])
GroupChangeMemberRoleDetails._all_fields_ = [('is_group_owner', GroupChangeMemberRoleDetails._is_group_owner_validator)]

GroupChangeMemberRoleType._description_validator = bv.String()
GroupChangeMemberRoleType._all_field_names_ = set(['description'])
GroupChangeMemberRoleType._all_fields_ = [('description', GroupChangeMemberRoleType._description_validator)]

GroupCreateDetails._is_company_managed_validator = bv.Nullable(bv.Boolean())
GroupCreateDetails._join_policy_validator = bv.Nullable(GroupJoinPolicy_validator)
GroupCreateDetails._all_field_names_ = set([
    'is_company_managed',
    'join_policy',
])
GroupCreateDetails._all_fields_ = [
    ('is_company_managed', GroupCreateDetails._is_company_managed_validator),
    ('join_policy', GroupCreateDetails._join_policy_validator),
]

GroupCreateType._description_validator = bv.String()
GroupCreateType._all_field_names_ = set(['description'])
GroupCreateType._all_fields_ = [('description', GroupCreateType._description_validator)]

GroupDeleteDetails._is_company_managed_validator = bv.Nullable(bv.Boolean())
GroupDeleteDetails._all_field_names_ = set(['is_company_managed'])
GroupDeleteDetails._all_fields_ = [('is_company_managed', GroupDeleteDetails._is_company_managed_validator)]

GroupDeleteType._description_validator = bv.String()
GroupDeleteType._all_field_names_ = set(['description'])
GroupDeleteType._all_fields_ = [('description', GroupDeleteType._description_validator)]

GroupDescriptionUpdatedDetails._all_field_names_ = set([])
GroupDescriptionUpdatedDetails._all_fields_ = []

GroupDescriptionUpdatedType._description_validator = bv.String()
GroupDescriptionUpdatedType._all_field_names_ = set(['description'])
GroupDescriptionUpdatedType._all_fields_ = [('description', GroupDescriptionUpdatedType._description_validator)]

GroupJoinPolicy._open_validator = bv.Void()
GroupJoinPolicy._request_to_join_validator = bv.Void()
GroupJoinPolicy._other_validator = bv.Void()
GroupJoinPolicy._tagmap = {
    'open': GroupJoinPolicy._open_validator,
    'request_to_join': GroupJoinPolicy._request_to_join_validator,
    'other': GroupJoinPolicy._other_validator,
}

GroupJoinPolicy.open = GroupJoinPolicy('open')
GroupJoinPolicy.request_to_join = GroupJoinPolicy('request_to_join')
GroupJoinPolicy.other = GroupJoinPolicy('other')

GroupJoinPolicyUpdatedDetails._is_company_managed_validator = bv.Nullable(bv.Boolean())
GroupJoinPolicyUpdatedDetails._join_policy_validator = bv.Nullable(GroupJoinPolicy_validator)
GroupJoinPolicyUpdatedDetails._all_field_names_ = set([
    'is_company_managed',
    'join_policy',
])
GroupJoinPolicyUpdatedDetails._all_fields_ = [
    ('is_company_managed', GroupJoinPolicyUpdatedDetails._is_company_managed_validator),
    ('join_policy', GroupJoinPolicyUpdatedDetails._join_policy_validator),
]

GroupJoinPolicyUpdatedType._description_validator = bv.String()
GroupJoinPolicyUpdatedType._all_field_names_ = set(['description'])
GroupJoinPolicyUpdatedType._all_fields_ = [('description', GroupJoinPolicyUpdatedType._description_validator)]

GroupLogInfo._group_id_validator = bv.Nullable(team_common.GroupId_validator)
GroupLogInfo._display_name_validator = bv.String()
GroupLogInfo._external_id_validator = bv.Nullable(team_common.GroupExternalId_validator)
GroupLogInfo._all_field_names_ = set([
    'group_id',
    'display_name',
    'external_id',
])
GroupLogInfo._all_fields_ = [
    ('group_id', GroupLogInfo._group_id_validator),
    ('display_name', GroupLogInfo._display_name_validator),
    ('external_id', GroupLogInfo._external_id_validator),
]

GroupMovedDetails._all_field_names_ = set([])
GroupMovedDetails._all_fields_ = []

GroupMovedType._description_validator = bv.String()
GroupMovedType._all_field_names_ = set(['description'])
GroupMovedType._all_fields_ = [('description', GroupMovedType._description_validator)]

GroupRemoveExternalIdDetails._previous_value_validator = team_common.GroupExternalId_validator
GroupRemoveExternalIdDetails._all_field_names_ = set(['previous_value'])
GroupRemoveExternalIdDetails._all_fields_ = [('previous_value', GroupRemoveExternalIdDetails._previous_value_validator)]

GroupRemoveExternalIdType._description_validator = bv.String()
GroupRemoveExternalIdType._all_field_names_ = set(['description'])
GroupRemoveExternalIdType._all_fields_ = [('description', GroupRemoveExternalIdType._description_validator)]

GroupRemoveMemberDetails._all_field_names_ = set([])
GroupRemoveMemberDetails._all_fields_ = []

GroupRemoveMemberType._description_validator = bv.String()
GroupRemoveMemberType._all_field_names_ = set(['description'])
GroupRemoveMemberType._all_fields_ = [('description', GroupRemoveMemberType._description_validator)]

GroupRenameDetails._previous_value_validator = bv.String()
GroupRenameDetails._new_value_validator = bv.String()
GroupRenameDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
GroupRenameDetails._all_fields_ = [
    ('previous_value', GroupRenameDetails._previous_value_validator),
    ('new_value', GroupRenameDetails._new_value_validator),
]

GroupRenameType._description_validator = bv.String()
GroupRenameType._all_field_names_ = set(['description'])
GroupRenameType._all_fields_ = [('description', GroupRenameType._description_validator)]

GroupUserManagementChangePolicyDetails._new_value_validator = team_policies.GroupCreation_validator
GroupUserManagementChangePolicyDetails._previous_value_validator = bv.Nullable(team_policies.GroupCreation_validator)
GroupUserManagementChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
GroupUserManagementChangePolicyDetails._all_fields_ = [
    ('new_value', GroupUserManagementChangePolicyDetails._new_value_validator),
    ('previous_value', GroupUserManagementChangePolicyDetails._previous_value_validator),
]

GroupUserManagementChangePolicyType._description_validator = bv.String()
GroupUserManagementChangePolicyType._all_field_names_ = set(['description'])
GroupUserManagementChangePolicyType._all_fields_ = [('description', GroupUserManagementChangePolicyType._description_validator)]

GuestAdminChangeStatusDetails._is_guest_validator = bv.Boolean()
GuestAdminChangeStatusDetails._guest_team_name_validator = bv.Nullable(bv.String())
GuestAdminChangeStatusDetails._host_team_name_validator = bv.Nullable(bv.String())
GuestAdminChangeStatusDetails._previous_value_validator = TrustedTeamsRequestState_validator
GuestAdminChangeStatusDetails._new_value_validator = TrustedTeamsRequestState_validator
GuestAdminChangeStatusDetails._action_details_validator = TrustedTeamsRequestAction_validator
GuestAdminChangeStatusDetails._all_field_names_ = set([
    'is_guest',
    'guest_team_name',
    'host_team_name',
    'previous_value',
    'new_value',
    'action_details',
])
GuestAdminChangeStatusDetails._all_fields_ = [
    ('is_guest', GuestAdminChangeStatusDetails._is_guest_validator),
    ('guest_team_name', GuestAdminChangeStatusDetails._guest_team_name_validator),
    ('host_team_name', GuestAdminChangeStatusDetails._host_team_name_validator),
    ('previous_value', GuestAdminChangeStatusDetails._previous_value_validator),
    ('new_value', GuestAdminChangeStatusDetails._new_value_validator),
    ('action_details', GuestAdminChangeStatusDetails._action_details_validator),
]

GuestAdminChangeStatusType._description_validator = bv.String()
GuestAdminChangeStatusType._all_field_names_ = set(['description'])
GuestAdminChangeStatusType._all_fields_ = [('description', GuestAdminChangeStatusType._description_validator)]

GuestAdminSignedInViaTrustedTeamsDetails._team_name_validator = bv.Nullable(bv.String())
GuestAdminSignedInViaTrustedTeamsDetails._trusted_team_name_validator = bv.Nullable(bv.String())
GuestAdminSignedInViaTrustedTeamsDetails._all_field_names_ = set([
    'team_name',
    'trusted_team_name',
])
GuestAdminSignedInViaTrustedTeamsDetails._all_fields_ = [
    ('team_name', GuestAdminSignedInViaTrustedTeamsDetails._team_name_validator),
    ('trusted_team_name', GuestAdminSignedInViaTrustedTeamsDetails._trusted_team_name_validator),
]

GuestAdminSignedInViaTrustedTeamsType._description_validator = bv.String()
GuestAdminSignedInViaTrustedTeamsType._all_field_names_ = set(['description'])
GuestAdminSignedInViaTrustedTeamsType._all_fields_ = [('description', GuestAdminSignedInViaTrustedTeamsType._description_validator)]

GuestAdminSignedOutViaTrustedTeamsDetails._team_name_validator = bv.Nullable(bv.String())
GuestAdminSignedOutViaTrustedTeamsDetails._trusted_team_name_validator = bv.Nullable(bv.String())
GuestAdminSignedOutViaTrustedTeamsDetails._all_field_names_ = set([
    'team_name',
    'trusted_team_name',
])
GuestAdminSignedOutViaTrustedTeamsDetails._all_fields_ = [
    ('team_name', GuestAdminSignedOutViaTrustedTeamsDetails._team_name_validator),
    ('trusted_team_name', GuestAdminSignedOutViaTrustedTeamsDetails._trusted_team_name_validator),
]

GuestAdminSignedOutViaTrustedTeamsType._description_validator = bv.String()
GuestAdminSignedOutViaTrustedTeamsType._all_field_names_ = set(['description'])
GuestAdminSignedOutViaTrustedTeamsType._all_fields_ = [('description', GuestAdminSignedOutViaTrustedTeamsType._description_validator)]

IdentifierType._email_validator = bv.Void()
IdentifierType._facebook_profile_name_validator = bv.Void()
IdentifierType._other_validator = bv.Void()
IdentifierType._tagmap = {
    'email': IdentifierType._email_validator,
    'facebook_profile_name': IdentifierType._facebook_profile_name_validator,
    'other': IdentifierType._other_validator,
}

IdentifierType.email = IdentifierType('email')
IdentifierType.facebook_profile_name = IdentifierType('facebook_profile_name')
IdentifierType.other = IdentifierType('other')

IntegrationConnectedDetails._integration_name_validator = bv.String()
IntegrationConnectedDetails._all_field_names_ = set(['integration_name'])
IntegrationConnectedDetails._all_fields_ = [('integration_name', IntegrationConnectedDetails._integration_name_validator)]

IntegrationConnectedType._description_validator = bv.String()
IntegrationConnectedType._all_field_names_ = set(['description'])
IntegrationConnectedType._all_fields_ = [('description', IntegrationConnectedType._description_validator)]

IntegrationDisconnectedDetails._integration_name_validator = bv.String()
IntegrationDisconnectedDetails._all_field_names_ = set(['integration_name'])
IntegrationDisconnectedDetails._all_fields_ = [('integration_name', IntegrationDisconnectedDetails._integration_name_validator)]

IntegrationDisconnectedType._description_validator = bv.String()
IntegrationDisconnectedType._all_field_names_ = set(['description'])
IntegrationDisconnectedType._all_fields_ = [('description', IntegrationDisconnectedType._description_validator)]

IntegrationPolicy._disabled_validator = bv.Void()
IntegrationPolicy._enabled_validator = bv.Void()
IntegrationPolicy._other_validator = bv.Void()
IntegrationPolicy._tagmap = {
    'disabled': IntegrationPolicy._disabled_validator,
    'enabled': IntegrationPolicy._enabled_validator,
    'other': IntegrationPolicy._other_validator,
}

IntegrationPolicy.disabled = IntegrationPolicy('disabled')
IntegrationPolicy.enabled = IntegrationPolicy('enabled')
IntegrationPolicy.other = IntegrationPolicy('other')

IntegrationPolicyChangedDetails._integration_name_validator = bv.String()
IntegrationPolicyChangedDetails._new_value_validator = IntegrationPolicy_validator
IntegrationPolicyChangedDetails._previous_value_validator = IntegrationPolicy_validator
IntegrationPolicyChangedDetails._all_field_names_ = set([
    'integration_name',
    'new_value',
    'previous_value',
])
IntegrationPolicyChangedDetails._all_fields_ = [
    ('integration_name', IntegrationPolicyChangedDetails._integration_name_validator),
    ('new_value', IntegrationPolicyChangedDetails._new_value_validator),
    ('previous_value', IntegrationPolicyChangedDetails._previous_value_validator),
]

IntegrationPolicyChangedType._description_validator = bv.String()
IntegrationPolicyChangedType._all_field_names_ = set(['description'])
IntegrationPolicyChangedType._all_fields_ = [('description', IntegrationPolicyChangedType._description_validator)]

JoinTeamDetails._linked_apps_validator = bv.List(UserLinkedAppLogInfo_validator)
JoinTeamDetails._linked_devices_validator = bv.List(LinkedDeviceLogInfo_validator)
JoinTeamDetails._linked_shared_folders_validator = bv.List(FolderLogInfo_validator)
JoinTeamDetails._all_field_names_ = set([
    'linked_apps',
    'linked_devices',
    'linked_shared_folders',
])
JoinTeamDetails._all_fields_ = [
    ('linked_apps', JoinTeamDetails._linked_apps_validator),
    ('linked_devices', JoinTeamDetails._linked_devices_validator),
    ('linked_shared_folders', JoinTeamDetails._linked_shared_folders_validator),
]

LegacyDeviceSessionLogInfo._session_info_validator = bv.Nullable(SessionLogInfo_validator)
LegacyDeviceSessionLogInfo._display_name_validator = bv.Nullable(bv.String())
LegacyDeviceSessionLogInfo._is_emm_managed_validator = bv.Nullable(bv.Boolean())
LegacyDeviceSessionLogInfo._platform_validator = bv.Nullable(bv.String())
LegacyDeviceSessionLogInfo._mac_address_validator = bv.Nullable(IpAddress_validator)
LegacyDeviceSessionLogInfo._os_version_validator = bv.Nullable(bv.String())
LegacyDeviceSessionLogInfo._device_type_validator = bv.Nullable(bv.String())
LegacyDeviceSessionLogInfo._client_version_validator = bv.Nullable(bv.String())
LegacyDeviceSessionLogInfo._legacy_uniq_id_validator = bv.Nullable(bv.String())
LegacyDeviceSessionLogInfo._field_names_ = set([
    'session_info',
    'display_name',
    'is_emm_managed',
    'platform',
    'mac_address',
    'os_version',
    'device_type',
    'client_version',
    'legacy_uniq_id',
])
LegacyDeviceSessionLogInfo._all_field_names_ = DeviceSessionLogInfo._all_field_names_.union(LegacyDeviceSessionLogInfo._field_names_)
LegacyDeviceSessionLogInfo._fields_ = [
    ('session_info', LegacyDeviceSessionLogInfo._session_info_validator),
    ('display_name', LegacyDeviceSessionLogInfo._display_name_validator),
    ('is_emm_managed', LegacyDeviceSessionLogInfo._is_emm_managed_validator),
    ('platform', LegacyDeviceSessionLogInfo._platform_validator),
    ('mac_address', LegacyDeviceSessionLogInfo._mac_address_validator),
    ('os_version', LegacyDeviceSessionLogInfo._os_version_validator),
    ('device_type', LegacyDeviceSessionLogInfo._device_type_validator),
    ('client_version', LegacyDeviceSessionLogInfo._client_version_validator),
    ('legacy_uniq_id', LegacyDeviceSessionLogInfo._legacy_uniq_id_validator),
]
LegacyDeviceSessionLogInfo._all_fields_ = DeviceSessionLogInfo._all_fields_ + LegacyDeviceSessionLogInfo._fields_

LinkedDeviceLogInfo._mobile_device_session_validator = MobileDeviceSessionLogInfo_validator
LinkedDeviceLogInfo._desktop_device_session_validator = DesktopDeviceSessionLogInfo_validator
LinkedDeviceLogInfo._web_device_session_validator = WebDeviceSessionLogInfo_validator
LinkedDeviceLogInfo._legacy_device_session_validator = LegacyDeviceSessionLogInfo_validator
LinkedDeviceLogInfo._other_validator = bv.Void()
LinkedDeviceLogInfo._tagmap = {
    'mobile_device_session': LinkedDeviceLogInfo._mobile_device_session_validator,
    'desktop_device_session': LinkedDeviceLogInfo._desktop_device_session_validator,
    'web_device_session': LinkedDeviceLogInfo._web_device_session_validator,
    'legacy_device_session': LinkedDeviceLogInfo._legacy_device_session_validator,
    'other': LinkedDeviceLogInfo._other_validator,
}

LinkedDeviceLogInfo.other = LinkedDeviceLogInfo('other')

LoginFailDetails._is_emm_managed_validator = bv.Nullable(bv.Boolean())
LoginFailDetails._login_method_validator = LoginMethod_validator
LoginFailDetails._error_details_validator = FailureDetailsLogInfo_validator
LoginFailDetails._all_field_names_ = set([
    'is_emm_managed',
    'login_method',
    'error_details',
])
LoginFailDetails._all_fields_ = [
    ('is_emm_managed', LoginFailDetails._is_emm_managed_validator),
    ('login_method', LoginFailDetails._login_method_validator),
    ('error_details', LoginFailDetails._error_details_validator),
]

LoginFailType._description_validator = bv.String()
LoginFailType._all_field_names_ = set(['description'])
LoginFailType._all_fields_ = [('description', LoginFailType._description_validator)]

LoginMethod._password_validator = bv.Void()
LoginMethod._two_factor_authentication_validator = bv.Void()
LoginMethod._saml_validator = bv.Void()
LoginMethod._google_oauth_validator = bv.Void()
LoginMethod._other_validator = bv.Void()
LoginMethod._tagmap = {
    'password': LoginMethod._password_validator,
    'two_factor_authentication': LoginMethod._two_factor_authentication_validator,
    'saml': LoginMethod._saml_validator,
    'google_oauth': LoginMethod._google_oauth_validator,
    'other': LoginMethod._other_validator,
}

LoginMethod.password = LoginMethod('password')
LoginMethod.two_factor_authentication = LoginMethod('two_factor_authentication')
LoginMethod.saml = LoginMethod('saml')
LoginMethod.google_oauth = LoginMethod('google_oauth')
LoginMethod.other = LoginMethod('other')

LoginSuccessDetails._is_emm_managed_validator = bv.Nullable(bv.Boolean())
LoginSuccessDetails._login_method_validator = LoginMethod_validator
LoginSuccessDetails._all_field_names_ = set([
    'is_emm_managed',
    'login_method',
])
LoginSuccessDetails._all_fields_ = [
    ('is_emm_managed', LoginSuccessDetails._is_emm_managed_validator),
    ('login_method', LoginSuccessDetails._login_method_validator),
]

LoginSuccessType._description_validator = bv.String()
LoginSuccessType._all_field_names_ = set(['description'])
LoginSuccessType._all_fields_ = [('description', LoginSuccessType._description_validator)]

LogoutDetails._all_field_names_ = set([])
LogoutDetails._all_fields_ = []

LogoutType._description_validator = bv.String()
LogoutType._all_field_names_ = set(['description'])
LogoutType._all_fields_ = [('description', LogoutType._description_validator)]

MemberAddExternalIdDetails._new_value_validator = team_common.MemberExternalId_validator
MemberAddExternalIdDetails._all_field_names_ = set(['new_value'])
MemberAddExternalIdDetails._all_fields_ = [('new_value', MemberAddExternalIdDetails._new_value_validator)]

MemberAddExternalIdType._description_validator = bv.String()
MemberAddExternalIdType._all_field_names_ = set(['description'])
MemberAddExternalIdType._all_fields_ = [('description', MemberAddExternalIdType._description_validator)]

MemberAddNameDetails._new_value_validator = UserNameLogInfo_validator
MemberAddNameDetails._all_field_names_ = set(['new_value'])
MemberAddNameDetails._all_fields_ = [('new_value', MemberAddNameDetails._new_value_validator)]

MemberAddNameType._description_validator = bv.String()
MemberAddNameType._all_field_names_ = set(['description'])
MemberAddNameType._all_fields_ = [('description', MemberAddNameType._description_validator)]

MemberChangeAdminRoleDetails._new_value_validator = bv.Nullable(AdminRole_validator)
MemberChangeAdminRoleDetails._previous_value_validator = bv.Nullable(AdminRole_validator)
MemberChangeAdminRoleDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
MemberChangeAdminRoleDetails._all_fields_ = [
    ('new_value', MemberChangeAdminRoleDetails._new_value_validator),
    ('previous_value', MemberChangeAdminRoleDetails._previous_value_validator),
]

MemberChangeAdminRoleType._description_validator = bv.String()
MemberChangeAdminRoleType._all_field_names_ = set(['description'])
MemberChangeAdminRoleType._all_fields_ = [('description', MemberChangeAdminRoleType._description_validator)]

MemberChangeEmailDetails._new_value_validator = EmailAddress_validator
MemberChangeEmailDetails._previous_value_validator = bv.Nullable(EmailAddress_validator)
MemberChangeEmailDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
MemberChangeEmailDetails._all_fields_ = [
    ('new_value', MemberChangeEmailDetails._new_value_validator),
    ('previous_value', MemberChangeEmailDetails._previous_value_validator),
]

MemberChangeEmailType._description_validator = bv.String()
MemberChangeEmailType._all_field_names_ = set(['description'])
MemberChangeEmailType._all_fields_ = [('description', MemberChangeEmailType._description_validator)]

MemberChangeExternalIdDetails._new_value_validator = team_common.MemberExternalId_validator
MemberChangeExternalIdDetails._previous_value_validator = team_common.MemberExternalId_validator
MemberChangeExternalIdDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
MemberChangeExternalIdDetails._all_fields_ = [
    ('new_value', MemberChangeExternalIdDetails._new_value_validator),
    ('previous_value', MemberChangeExternalIdDetails._previous_value_validator),
]

MemberChangeExternalIdType._description_validator = bv.String()
MemberChangeExternalIdType._all_field_names_ = set(['description'])
MemberChangeExternalIdType._all_fields_ = [('description', MemberChangeExternalIdType._description_validator)]

MemberChangeMembershipTypeDetails._prev_value_validator = TeamMembershipType_validator
MemberChangeMembershipTypeDetails._new_value_validator = TeamMembershipType_validator
MemberChangeMembershipTypeDetails._all_field_names_ = set([
    'prev_value',
    'new_value',
])
MemberChangeMembershipTypeDetails._all_fields_ = [
    ('prev_value', MemberChangeMembershipTypeDetails._prev_value_validator),
    ('new_value', MemberChangeMembershipTypeDetails._new_value_validator),
]

MemberChangeMembershipTypeType._description_validator = bv.String()
MemberChangeMembershipTypeType._all_field_names_ = set(['description'])
MemberChangeMembershipTypeType._all_fields_ = [('description', MemberChangeMembershipTypeType._description_validator)]

MemberChangeNameDetails._new_value_validator = UserNameLogInfo_validator
MemberChangeNameDetails._previous_value_validator = bv.Nullable(UserNameLogInfo_validator)
MemberChangeNameDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
MemberChangeNameDetails._all_fields_ = [
    ('new_value', MemberChangeNameDetails._new_value_validator),
    ('previous_value', MemberChangeNameDetails._previous_value_validator),
]

MemberChangeNameType._description_validator = bv.String()
MemberChangeNameType._all_field_names_ = set(['description'])
MemberChangeNameType._all_fields_ = [('description', MemberChangeNameType._description_validator)]

MemberChangeStatusDetails._previous_value_validator = bv.Nullable(MemberStatus_validator)
MemberChangeStatusDetails._new_value_validator = MemberStatus_validator
MemberChangeStatusDetails._action_validator = bv.Nullable(ActionDetails_validator)
MemberChangeStatusDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
    'action',
])
MemberChangeStatusDetails._all_fields_ = [
    ('previous_value', MemberChangeStatusDetails._previous_value_validator),
    ('new_value', MemberChangeStatusDetails._new_value_validator),
    ('action', MemberChangeStatusDetails._action_validator),
]

MemberChangeStatusType._description_validator = bv.String()
MemberChangeStatusType._all_field_names_ = set(['description'])
MemberChangeStatusType._all_fields_ = [('description', MemberChangeStatusType._description_validator)]

MemberDeleteManualContactsDetails._all_field_names_ = set([])
MemberDeleteManualContactsDetails._all_fields_ = []

MemberDeleteManualContactsType._description_validator = bv.String()
MemberDeleteManualContactsType._all_field_names_ = set(['description'])
MemberDeleteManualContactsType._all_fields_ = [('description', MemberDeleteManualContactsType._description_validator)]

MemberPermanentlyDeleteAccountContentsDetails._all_field_names_ = set([])
MemberPermanentlyDeleteAccountContentsDetails._all_fields_ = []

MemberPermanentlyDeleteAccountContentsType._description_validator = bv.String()
MemberPermanentlyDeleteAccountContentsType._all_field_names_ = set(['description'])
MemberPermanentlyDeleteAccountContentsType._all_fields_ = [('description', MemberPermanentlyDeleteAccountContentsType._description_validator)]

MemberRemoveActionType._delete_validator = bv.Void()
MemberRemoveActionType._offboard_validator = bv.Void()
MemberRemoveActionType._leave_validator = bv.Void()
MemberRemoveActionType._offboard_and_retain_team_folders_validator = bv.Void()
MemberRemoveActionType._other_validator = bv.Void()
MemberRemoveActionType._tagmap = {
    'delete': MemberRemoveActionType._delete_validator,
    'offboard': MemberRemoveActionType._offboard_validator,
    'leave': MemberRemoveActionType._leave_validator,
    'offboard_and_retain_team_folders': MemberRemoveActionType._offboard_and_retain_team_folders_validator,
    'other': MemberRemoveActionType._other_validator,
}

MemberRemoveActionType.delete = MemberRemoveActionType('delete')
MemberRemoveActionType.offboard = MemberRemoveActionType('offboard')
MemberRemoveActionType.leave = MemberRemoveActionType('leave')
MemberRemoveActionType.offboard_and_retain_team_folders = MemberRemoveActionType('offboard_and_retain_team_folders')
MemberRemoveActionType.other = MemberRemoveActionType('other')

MemberRemoveExternalIdDetails._previous_value_validator = team_common.MemberExternalId_validator
MemberRemoveExternalIdDetails._all_field_names_ = set(['previous_value'])
MemberRemoveExternalIdDetails._all_fields_ = [('previous_value', MemberRemoveExternalIdDetails._previous_value_validator)]

MemberRemoveExternalIdType._description_validator = bv.String()
MemberRemoveExternalIdType._all_field_names_ = set(['description'])
MemberRemoveExternalIdType._all_fields_ = [('description', MemberRemoveExternalIdType._description_validator)]

MemberRequestsChangePolicyDetails._new_value_validator = MemberRequestsPolicy_validator
MemberRequestsChangePolicyDetails._previous_value_validator = bv.Nullable(MemberRequestsPolicy_validator)
MemberRequestsChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
MemberRequestsChangePolicyDetails._all_fields_ = [
    ('new_value', MemberRequestsChangePolicyDetails._new_value_validator),
    ('previous_value', MemberRequestsChangePolicyDetails._previous_value_validator),
]

MemberRequestsChangePolicyType._description_validator = bv.String()
MemberRequestsChangePolicyType._all_field_names_ = set(['description'])
MemberRequestsChangePolicyType._all_fields_ = [('description', MemberRequestsChangePolicyType._description_validator)]

MemberRequestsPolicy._auto_accept_validator = bv.Void()
MemberRequestsPolicy._disabled_validator = bv.Void()
MemberRequestsPolicy._require_approval_validator = bv.Void()
MemberRequestsPolicy._other_validator = bv.Void()
MemberRequestsPolicy._tagmap = {
    'auto_accept': MemberRequestsPolicy._auto_accept_validator,
    'disabled': MemberRequestsPolicy._disabled_validator,
    'require_approval': MemberRequestsPolicy._require_approval_validator,
    'other': MemberRequestsPolicy._other_validator,
}

MemberRequestsPolicy.auto_accept = MemberRequestsPolicy('auto_accept')
MemberRequestsPolicy.disabled = MemberRequestsPolicy('disabled')
MemberRequestsPolicy.require_approval = MemberRequestsPolicy('require_approval')
MemberRequestsPolicy.other = MemberRequestsPolicy('other')

MemberSpaceLimitsAddCustomQuotaDetails._new_value_validator = bv.UInt64()
MemberSpaceLimitsAddCustomQuotaDetails._all_field_names_ = set(['new_value'])
MemberSpaceLimitsAddCustomQuotaDetails._all_fields_ = [('new_value', MemberSpaceLimitsAddCustomQuotaDetails._new_value_validator)]

MemberSpaceLimitsAddCustomQuotaType._description_validator = bv.String()
MemberSpaceLimitsAddCustomQuotaType._all_field_names_ = set(['description'])
MemberSpaceLimitsAddCustomQuotaType._all_fields_ = [('description', MemberSpaceLimitsAddCustomQuotaType._description_validator)]

MemberSpaceLimitsAddExceptionDetails._all_field_names_ = set([])
MemberSpaceLimitsAddExceptionDetails._all_fields_ = []

MemberSpaceLimitsAddExceptionType._description_validator = bv.String()
MemberSpaceLimitsAddExceptionType._all_field_names_ = set(['description'])
MemberSpaceLimitsAddExceptionType._all_fields_ = [('description', MemberSpaceLimitsAddExceptionType._description_validator)]

MemberSpaceLimitsChangeCapsTypePolicyDetails._previous_value_validator = SpaceCapsType_validator
MemberSpaceLimitsChangeCapsTypePolicyDetails._new_value_validator = SpaceCapsType_validator
MemberSpaceLimitsChangeCapsTypePolicyDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
MemberSpaceLimitsChangeCapsTypePolicyDetails._all_fields_ = [
    ('previous_value', MemberSpaceLimitsChangeCapsTypePolicyDetails._previous_value_validator),
    ('new_value', MemberSpaceLimitsChangeCapsTypePolicyDetails._new_value_validator),
]

MemberSpaceLimitsChangeCapsTypePolicyType._description_validator = bv.String()
MemberSpaceLimitsChangeCapsTypePolicyType._all_field_names_ = set(['description'])
MemberSpaceLimitsChangeCapsTypePolicyType._all_fields_ = [('description', MemberSpaceLimitsChangeCapsTypePolicyType._description_validator)]

MemberSpaceLimitsChangeCustomQuotaDetails._previous_value_validator = bv.UInt64()
MemberSpaceLimitsChangeCustomQuotaDetails._new_value_validator = bv.UInt64()
MemberSpaceLimitsChangeCustomQuotaDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
MemberSpaceLimitsChangeCustomQuotaDetails._all_fields_ = [
    ('previous_value', MemberSpaceLimitsChangeCustomQuotaDetails._previous_value_validator),
    ('new_value', MemberSpaceLimitsChangeCustomQuotaDetails._new_value_validator),
]

MemberSpaceLimitsChangeCustomQuotaType._description_validator = bv.String()
MemberSpaceLimitsChangeCustomQuotaType._all_field_names_ = set(['description'])
MemberSpaceLimitsChangeCustomQuotaType._all_fields_ = [('description', MemberSpaceLimitsChangeCustomQuotaType._description_validator)]

MemberSpaceLimitsChangePolicyDetails._previous_value_validator = bv.Nullable(bv.UInt64())
MemberSpaceLimitsChangePolicyDetails._new_value_validator = bv.Nullable(bv.UInt64())
MemberSpaceLimitsChangePolicyDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
MemberSpaceLimitsChangePolicyDetails._all_fields_ = [
    ('previous_value', MemberSpaceLimitsChangePolicyDetails._previous_value_validator),
    ('new_value', MemberSpaceLimitsChangePolicyDetails._new_value_validator),
]

MemberSpaceLimitsChangePolicyType._description_validator = bv.String()
MemberSpaceLimitsChangePolicyType._all_field_names_ = set(['description'])
MemberSpaceLimitsChangePolicyType._all_fields_ = [('description', MemberSpaceLimitsChangePolicyType._description_validator)]

MemberSpaceLimitsChangeStatusDetails._previous_value_validator = SpaceLimitsStatus_validator
MemberSpaceLimitsChangeStatusDetails._new_value_validator = SpaceLimitsStatus_validator
MemberSpaceLimitsChangeStatusDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
MemberSpaceLimitsChangeStatusDetails._all_fields_ = [
    ('previous_value', MemberSpaceLimitsChangeStatusDetails._previous_value_validator),
    ('new_value', MemberSpaceLimitsChangeStatusDetails._new_value_validator),
]

MemberSpaceLimitsChangeStatusType._description_validator = bv.String()
MemberSpaceLimitsChangeStatusType._all_field_names_ = set(['description'])
MemberSpaceLimitsChangeStatusType._all_fields_ = [('description', MemberSpaceLimitsChangeStatusType._description_validator)]

MemberSpaceLimitsRemoveCustomQuotaDetails._all_field_names_ = set([])
MemberSpaceLimitsRemoveCustomQuotaDetails._all_fields_ = []

MemberSpaceLimitsRemoveCustomQuotaType._description_validator = bv.String()
MemberSpaceLimitsRemoveCustomQuotaType._all_field_names_ = set(['description'])
MemberSpaceLimitsRemoveCustomQuotaType._all_fields_ = [('description', MemberSpaceLimitsRemoveCustomQuotaType._description_validator)]

MemberSpaceLimitsRemoveExceptionDetails._all_field_names_ = set([])
MemberSpaceLimitsRemoveExceptionDetails._all_fields_ = []

MemberSpaceLimitsRemoveExceptionType._description_validator = bv.String()
MemberSpaceLimitsRemoveExceptionType._all_field_names_ = set(['description'])
MemberSpaceLimitsRemoveExceptionType._all_fields_ = [('description', MemberSpaceLimitsRemoveExceptionType._description_validator)]

MemberStatus._not_joined_validator = bv.Void()
MemberStatus._invited_validator = bv.Void()
MemberStatus._active_validator = bv.Void()
MemberStatus._suspended_validator = bv.Void()
MemberStatus._removed_validator = bv.Void()
MemberStatus._other_validator = bv.Void()
MemberStatus._tagmap = {
    'not_joined': MemberStatus._not_joined_validator,
    'invited': MemberStatus._invited_validator,
    'active': MemberStatus._active_validator,
    'suspended': MemberStatus._suspended_validator,
    'removed': MemberStatus._removed_validator,
    'other': MemberStatus._other_validator,
}

MemberStatus.not_joined = MemberStatus('not_joined')
MemberStatus.invited = MemberStatus('invited')
MemberStatus.active = MemberStatus('active')
MemberStatus.suspended = MemberStatus('suspended')
MemberStatus.removed = MemberStatus('removed')
MemberStatus.other = MemberStatus('other')

MemberSuggestDetails._suggested_members_validator = bv.List(EmailAddress_validator)
MemberSuggestDetails._all_field_names_ = set(['suggested_members'])
MemberSuggestDetails._all_fields_ = [('suggested_members', MemberSuggestDetails._suggested_members_validator)]

MemberSuggestType._description_validator = bv.String()
MemberSuggestType._all_field_names_ = set(['description'])
MemberSuggestType._all_fields_ = [('description', MemberSuggestType._description_validator)]

MemberSuggestionsChangePolicyDetails._new_value_validator = MemberSuggestionsPolicy_validator
MemberSuggestionsChangePolicyDetails._previous_value_validator = bv.Nullable(MemberSuggestionsPolicy_validator)
MemberSuggestionsChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
MemberSuggestionsChangePolicyDetails._all_fields_ = [
    ('new_value', MemberSuggestionsChangePolicyDetails._new_value_validator),
    ('previous_value', MemberSuggestionsChangePolicyDetails._previous_value_validator),
]

MemberSuggestionsChangePolicyType._description_validator = bv.String()
MemberSuggestionsChangePolicyType._all_field_names_ = set(['description'])
MemberSuggestionsChangePolicyType._all_fields_ = [('description', MemberSuggestionsChangePolicyType._description_validator)]

MemberSuggestionsPolicy._disabled_validator = bv.Void()
MemberSuggestionsPolicy._enabled_validator = bv.Void()
MemberSuggestionsPolicy._other_validator = bv.Void()
MemberSuggestionsPolicy._tagmap = {
    'disabled': MemberSuggestionsPolicy._disabled_validator,
    'enabled': MemberSuggestionsPolicy._enabled_validator,
    'other': MemberSuggestionsPolicy._other_validator,
}

MemberSuggestionsPolicy.disabled = MemberSuggestionsPolicy('disabled')
MemberSuggestionsPolicy.enabled = MemberSuggestionsPolicy('enabled')
MemberSuggestionsPolicy.other = MemberSuggestionsPolicy('other')

MemberTransferAccountContentsDetails._all_field_names_ = set([])
MemberTransferAccountContentsDetails._all_fields_ = []

MemberTransferAccountContentsType._description_validator = bv.String()
MemberTransferAccountContentsType._all_field_names_ = set(['description'])
MemberTransferAccountContentsType._all_fields_ = [('description', MemberTransferAccountContentsType._description_validator)]

MicrosoftOfficeAddinChangePolicyDetails._new_value_validator = MicrosoftOfficeAddinPolicy_validator
MicrosoftOfficeAddinChangePolicyDetails._previous_value_validator = bv.Nullable(MicrosoftOfficeAddinPolicy_validator)
MicrosoftOfficeAddinChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
MicrosoftOfficeAddinChangePolicyDetails._all_fields_ = [
    ('new_value', MicrosoftOfficeAddinChangePolicyDetails._new_value_validator),
    ('previous_value', MicrosoftOfficeAddinChangePolicyDetails._previous_value_validator),
]

MicrosoftOfficeAddinChangePolicyType._description_validator = bv.String()
MicrosoftOfficeAddinChangePolicyType._all_field_names_ = set(['description'])
MicrosoftOfficeAddinChangePolicyType._all_fields_ = [('description', MicrosoftOfficeAddinChangePolicyType._description_validator)]

MicrosoftOfficeAddinPolicy._disabled_validator = bv.Void()
MicrosoftOfficeAddinPolicy._enabled_validator = bv.Void()
MicrosoftOfficeAddinPolicy._other_validator = bv.Void()
MicrosoftOfficeAddinPolicy._tagmap = {
    'disabled': MicrosoftOfficeAddinPolicy._disabled_validator,
    'enabled': MicrosoftOfficeAddinPolicy._enabled_validator,
    'other': MicrosoftOfficeAddinPolicy._other_validator,
}

MicrosoftOfficeAddinPolicy.disabled = MicrosoftOfficeAddinPolicy('disabled')
MicrosoftOfficeAddinPolicy.enabled = MicrosoftOfficeAddinPolicy('enabled')
MicrosoftOfficeAddinPolicy.other = MicrosoftOfficeAddinPolicy('other')

MissingDetails._source_event_fields_validator = bv.Nullable(bv.String())
MissingDetails._all_field_names_ = set(['source_event_fields'])
MissingDetails._all_fields_ = [('source_event_fields', MissingDetails._source_event_fields_validator)]

MobileDeviceSessionLogInfo._session_info_validator = bv.Nullable(MobileSessionLogInfo_validator)
MobileDeviceSessionLogInfo._device_name_validator = bv.String()
MobileDeviceSessionLogInfo._client_type_validator = team.MobileClientPlatform_validator
MobileDeviceSessionLogInfo._client_version_validator = bv.Nullable(bv.String())
MobileDeviceSessionLogInfo._os_version_validator = bv.Nullable(bv.String())
MobileDeviceSessionLogInfo._last_carrier_validator = bv.Nullable(bv.String())
MobileDeviceSessionLogInfo._field_names_ = set([
    'session_info',
    'device_name',
    'client_type',
    'client_version',
    'os_version',
    'last_carrier',
])
MobileDeviceSessionLogInfo._all_field_names_ = DeviceSessionLogInfo._all_field_names_.union(MobileDeviceSessionLogInfo._field_names_)
MobileDeviceSessionLogInfo._fields_ = [
    ('session_info', MobileDeviceSessionLogInfo._session_info_validator),
    ('device_name', MobileDeviceSessionLogInfo._device_name_validator),
    ('client_type', MobileDeviceSessionLogInfo._client_type_validator),
    ('client_version', MobileDeviceSessionLogInfo._client_version_validator),
    ('os_version', MobileDeviceSessionLogInfo._os_version_validator),
    ('last_carrier', MobileDeviceSessionLogInfo._last_carrier_validator),
]
MobileDeviceSessionLogInfo._all_fields_ = DeviceSessionLogInfo._all_fields_ + MobileDeviceSessionLogInfo._fields_

MobileSessionLogInfo._field_names_ = set([])
MobileSessionLogInfo._all_field_names_ = SessionLogInfo._all_field_names_.union(MobileSessionLogInfo._field_names_)
MobileSessionLogInfo._fields_ = []
MobileSessionLogInfo._all_fields_ = SessionLogInfo._all_fields_ + MobileSessionLogInfo._fields_

NamespaceRelativePathLogInfo._ns_id_validator = bv.Nullable(NamespaceId_validator)
NamespaceRelativePathLogInfo._relative_path_validator = bv.Nullable(FilePath_validator)
NamespaceRelativePathLogInfo._all_field_names_ = set([
    'ns_id',
    'relative_path',
])
NamespaceRelativePathLogInfo._all_fields_ = [
    ('ns_id', NamespaceRelativePathLogInfo._ns_id_validator),
    ('relative_path', NamespaceRelativePathLogInfo._relative_path_validator),
]

NetworkControlChangePolicyDetails._new_value_validator = NetworkControlPolicy_validator
NetworkControlChangePolicyDetails._previous_value_validator = bv.Nullable(NetworkControlPolicy_validator)
NetworkControlChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
NetworkControlChangePolicyDetails._all_fields_ = [
    ('new_value', NetworkControlChangePolicyDetails._new_value_validator),
    ('previous_value', NetworkControlChangePolicyDetails._previous_value_validator),
]

NetworkControlChangePolicyType._description_validator = bv.String()
NetworkControlChangePolicyType._all_field_names_ = set(['description'])
NetworkControlChangePolicyType._all_fields_ = [('description', NetworkControlChangePolicyType._description_validator)]

NetworkControlPolicy._disabled_validator = bv.Void()
NetworkControlPolicy._enabled_validator = bv.Void()
NetworkControlPolicy._other_validator = bv.Void()
NetworkControlPolicy._tagmap = {
    'disabled': NetworkControlPolicy._disabled_validator,
    'enabled': NetworkControlPolicy._enabled_validator,
    'other': NetworkControlPolicy._other_validator,
}

NetworkControlPolicy.disabled = NetworkControlPolicy('disabled')
NetworkControlPolicy.enabled = NetworkControlPolicy('enabled')
NetworkControlPolicy.other = NetworkControlPolicy('other')

UserLogInfo._account_id_validator = bv.Nullable(users_common.AccountId_validator)
UserLogInfo._display_name_validator = bv.Nullable(common.DisplayNameLegacy_validator)
UserLogInfo._email_validator = bv.Nullable(EmailAddress_validator)
UserLogInfo._field_names_ = set([
    'account_id',
    'display_name',
    'email',
])
UserLogInfo._all_field_names_ = UserLogInfo._field_names_
UserLogInfo._fields_ = [
    ('account_id', UserLogInfo._account_id_validator),
    ('display_name', UserLogInfo._display_name_validator),
    ('email', UserLogInfo._email_validator),
]
UserLogInfo._all_fields_ = UserLogInfo._fields_

UserLogInfo._tag_to_subtype_ = {
    (u'team_member',): TeamMemberLogInfo_validator,
    (u'trusted_non_team_member',): TrustedNonTeamMemberLogInfo_validator,
    (u'non_team_member',): NonTeamMemberLogInfo_validator,
}
UserLogInfo._pytype_to_tag_and_subtype_ = {
    TeamMemberLogInfo: ((u'team_member',), TeamMemberLogInfo_validator),
    TrustedNonTeamMemberLogInfo: ((u'trusted_non_team_member',), TrustedNonTeamMemberLogInfo_validator),
    NonTeamMemberLogInfo: ((u'non_team_member',), NonTeamMemberLogInfo_validator),
}
UserLogInfo._is_catch_all_ = True

NonTeamMemberLogInfo._field_names_ = set([])
NonTeamMemberLogInfo._all_field_names_ = UserLogInfo._all_field_names_.union(NonTeamMemberLogInfo._field_names_)
NonTeamMemberLogInfo._fields_ = []
NonTeamMemberLogInfo._all_fields_ = UserLogInfo._all_fields_ + NonTeamMemberLogInfo._fields_

NoteAclInviteOnlyDetails._all_field_names_ = set([])
NoteAclInviteOnlyDetails._all_fields_ = []

NoteAclInviteOnlyType._description_validator = bv.String()
NoteAclInviteOnlyType._all_field_names_ = set(['description'])
NoteAclInviteOnlyType._all_fields_ = [('description', NoteAclInviteOnlyType._description_validator)]

NoteAclLinkDetails._all_field_names_ = set([])
NoteAclLinkDetails._all_fields_ = []

NoteAclLinkType._description_validator = bv.String()
NoteAclLinkType._all_field_names_ = set(['description'])
NoteAclLinkType._all_fields_ = [('description', NoteAclLinkType._description_validator)]

NoteAclTeamLinkDetails._all_field_names_ = set([])
NoteAclTeamLinkDetails._all_fields_ = []

NoteAclTeamLinkType._description_validator = bv.String()
NoteAclTeamLinkType._all_field_names_ = set(['description'])
NoteAclTeamLinkType._all_fields_ = [('description', NoteAclTeamLinkType._description_validator)]

NoteShareReceiveDetails._all_field_names_ = set([])
NoteShareReceiveDetails._all_fields_ = []

NoteShareReceiveType._description_validator = bv.String()
NoteShareReceiveType._all_field_names_ = set(['description'])
NoteShareReceiveType._all_fields_ = [('description', NoteShareReceiveType._description_validator)]

NoteSharedDetails._all_field_names_ = set([])
NoteSharedDetails._all_fields_ = []

NoteSharedType._description_validator = bv.String()
NoteSharedType._all_field_names_ = set(['description'])
NoteSharedType._all_fields_ = [('description', NoteSharedType._description_validator)]

OpenNoteSharedDetails._all_field_names_ = set([])
OpenNoteSharedDetails._all_fields_ = []

OpenNoteSharedType._description_validator = bv.String()
OpenNoteSharedType._all_field_names_ = set(['description'])
OpenNoteSharedType._all_fields_ = [('description', OpenNoteSharedType._description_validator)]

OriginLogInfo._geo_location_validator = bv.Nullable(GeoLocationLogInfo_validator)
OriginLogInfo._access_method_validator = AccessMethodLogInfo_validator
OriginLogInfo._all_field_names_ = set([
    'geo_location',
    'access_method',
])
OriginLogInfo._all_fields_ = [
    ('geo_location', OriginLogInfo._geo_location_validator),
    ('access_method', OriginLogInfo._access_method_validator),
]

PaperAccessType._viewer_validator = bv.Void()
PaperAccessType._commenter_validator = bv.Void()
PaperAccessType._editor_validator = bv.Void()
PaperAccessType._other_validator = bv.Void()
PaperAccessType._tagmap = {
    'viewer': PaperAccessType._viewer_validator,
    'commenter': PaperAccessType._commenter_validator,
    'editor': PaperAccessType._editor_validator,
    'other': PaperAccessType._other_validator,
}

PaperAccessType.viewer = PaperAccessType('viewer')
PaperAccessType.commenter = PaperAccessType('commenter')
PaperAccessType.editor = PaperAccessType('editor')
PaperAccessType.other = PaperAccessType('other')

PaperAdminExportStartDetails._all_field_names_ = set([])
PaperAdminExportStartDetails._all_fields_ = []

PaperAdminExportStartType._description_validator = bv.String()
PaperAdminExportStartType._all_field_names_ = set(['description'])
PaperAdminExportStartType._all_fields_ = [('description', PaperAdminExportStartType._description_validator)]

PaperChangeDeploymentPolicyDetails._new_value_validator = team_policies.PaperDeploymentPolicy_validator
PaperChangeDeploymentPolicyDetails._previous_value_validator = bv.Nullable(team_policies.PaperDeploymentPolicy_validator)
PaperChangeDeploymentPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
PaperChangeDeploymentPolicyDetails._all_fields_ = [
    ('new_value', PaperChangeDeploymentPolicyDetails._new_value_validator),
    ('previous_value', PaperChangeDeploymentPolicyDetails._previous_value_validator),
]

PaperChangeDeploymentPolicyType._description_validator = bv.String()
PaperChangeDeploymentPolicyType._all_field_names_ = set(['description'])
PaperChangeDeploymentPolicyType._all_fields_ = [('description', PaperChangeDeploymentPolicyType._description_validator)]

PaperChangeMemberLinkPolicyDetails._new_value_validator = PaperMemberPolicy_validator
PaperChangeMemberLinkPolicyDetails._all_field_names_ = set(['new_value'])
PaperChangeMemberLinkPolicyDetails._all_fields_ = [('new_value', PaperChangeMemberLinkPolicyDetails._new_value_validator)]

PaperChangeMemberLinkPolicyType._description_validator = bv.String()
PaperChangeMemberLinkPolicyType._all_field_names_ = set(['description'])
PaperChangeMemberLinkPolicyType._all_fields_ = [('description', PaperChangeMemberLinkPolicyType._description_validator)]

PaperChangeMemberPolicyDetails._new_value_validator = PaperMemberPolicy_validator
PaperChangeMemberPolicyDetails._previous_value_validator = bv.Nullable(PaperMemberPolicy_validator)
PaperChangeMemberPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
PaperChangeMemberPolicyDetails._all_fields_ = [
    ('new_value', PaperChangeMemberPolicyDetails._new_value_validator),
    ('previous_value', PaperChangeMemberPolicyDetails._previous_value_validator),
]

PaperChangeMemberPolicyType._description_validator = bv.String()
PaperChangeMemberPolicyType._all_field_names_ = set(['description'])
PaperChangeMemberPolicyType._all_fields_ = [('description', PaperChangeMemberPolicyType._description_validator)]

PaperChangePolicyDetails._new_value_validator = team_policies.PaperEnabledPolicy_validator
PaperChangePolicyDetails._previous_value_validator = bv.Nullable(team_policies.PaperEnabledPolicy_validator)
PaperChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
PaperChangePolicyDetails._all_fields_ = [
    ('new_value', PaperChangePolicyDetails._new_value_validator),
    ('previous_value', PaperChangePolicyDetails._previous_value_validator),
]

PaperChangePolicyType._description_validator = bv.String()
PaperChangePolicyType._all_field_names_ = set(['description'])
PaperChangePolicyType._all_fields_ = [('description', PaperChangePolicyType._description_validator)]

PaperContentAddMemberDetails._event_uuid_validator = bv.String()
PaperContentAddMemberDetails._all_field_names_ = set(['event_uuid'])
PaperContentAddMemberDetails._all_fields_ = [('event_uuid', PaperContentAddMemberDetails._event_uuid_validator)]

PaperContentAddMemberType._description_validator = bv.String()
PaperContentAddMemberType._all_field_names_ = set(['description'])
PaperContentAddMemberType._all_fields_ = [('description', PaperContentAddMemberType._description_validator)]

PaperContentAddToFolderDetails._event_uuid_validator = bv.String()
PaperContentAddToFolderDetails._target_asset_index_validator = bv.UInt64()
PaperContentAddToFolderDetails._parent_asset_index_validator = bv.UInt64()
PaperContentAddToFolderDetails._all_field_names_ = set([
    'event_uuid',
    'target_asset_index',
    'parent_asset_index',
])
PaperContentAddToFolderDetails._all_fields_ = [
    ('event_uuid', PaperContentAddToFolderDetails._event_uuid_validator),
    ('target_asset_index', PaperContentAddToFolderDetails._target_asset_index_validator),
    ('parent_asset_index', PaperContentAddToFolderDetails._parent_asset_index_validator),
]

PaperContentAddToFolderType._description_validator = bv.String()
PaperContentAddToFolderType._all_field_names_ = set(['description'])
PaperContentAddToFolderType._all_fields_ = [('description', PaperContentAddToFolderType._description_validator)]

PaperContentArchiveDetails._event_uuid_validator = bv.String()
PaperContentArchiveDetails._all_field_names_ = set(['event_uuid'])
PaperContentArchiveDetails._all_fields_ = [('event_uuid', PaperContentArchiveDetails._event_uuid_validator)]

PaperContentArchiveType._description_validator = bv.String()
PaperContentArchiveType._all_field_names_ = set(['description'])
PaperContentArchiveType._all_fields_ = [('description', PaperContentArchiveType._description_validator)]

PaperContentCreateDetails._event_uuid_validator = bv.String()
PaperContentCreateDetails._all_field_names_ = set(['event_uuid'])
PaperContentCreateDetails._all_fields_ = [('event_uuid', PaperContentCreateDetails._event_uuid_validator)]

PaperContentCreateType._description_validator = bv.String()
PaperContentCreateType._all_field_names_ = set(['description'])
PaperContentCreateType._all_fields_ = [('description', PaperContentCreateType._description_validator)]

PaperContentPermanentlyDeleteDetails._event_uuid_validator = bv.String()
PaperContentPermanentlyDeleteDetails._all_field_names_ = set(['event_uuid'])
PaperContentPermanentlyDeleteDetails._all_fields_ = [('event_uuid', PaperContentPermanentlyDeleteDetails._event_uuid_validator)]

PaperContentPermanentlyDeleteType._description_validator = bv.String()
PaperContentPermanentlyDeleteType._all_field_names_ = set(['description'])
PaperContentPermanentlyDeleteType._all_fields_ = [('description', PaperContentPermanentlyDeleteType._description_validator)]

PaperContentRemoveFromFolderDetails._event_uuid_validator = bv.String()
PaperContentRemoveFromFolderDetails._target_asset_index_validator = bv.UInt64()
PaperContentRemoveFromFolderDetails._parent_asset_index_validator = bv.UInt64()
PaperContentRemoveFromFolderDetails._all_field_names_ = set([
    'event_uuid',
    'target_asset_index',
    'parent_asset_index',
])
PaperContentRemoveFromFolderDetails._all_fields_ = [
    ('event_uuid', PaperContentRemoveFromFolderDetails._event_uuid_validator),
    ('target_asset_index', PaperContentRemoveFromFolderDetails._target_asset_index_validator),
    ('parent_asset_index', PaperContentRemoveFromFolderDetails._parent_asset_index_validator),
]

PaperContentRemoveFromFolderType._description_validator = bv.String()
PaperContentRemoveFromFolderType._all_field_names_ = set(['description'])
PaperContentRemoveFromFolderType._all_fields_ = [('description', PaperContentRemoveFromFolderType._description_validator)]

PaperContentRemoveMemberDetails._event_uuid_validator = bv.String()
PaperContentRemoveMemberDetails._all_field_names_ = set(['event_uuid'])
PaperContentRemoveMemberDetails._all_fields_ = [('event_uuid', PaperContentRemoveMemberDetails._event_uuid_validator)]

PaperContentRemoveMemberType._description_validator = bv.String()
PaperContentRemoveMemberType._all_field_names_ = set(['description'])
PaperContentRemoveMemberType._all_fields_ = [('description', PaperContentRemoveMemberType._description_validator)]

PaperContentRenameDetails._event_uuid_validator = bv.String()
PaperContentRenameDetails._all_field_names_ = set(['event_uuid'])
PaperContentRenameDetails._all_fields_ = [('event_uuid', PaperContentRenameDetails._event_uuid_validator)]

PaperContentRenameType._description_validator = bv.String()
PaperContentRenameType._all_field_names_ = set(['description'])
PaperContentRenameType._all_fields_ = [('description', PaperContentRenameType._description_validator)]

PaperContentRestoreDetails._event_uuid_validator = bv.String()
PaperContentRestoreDetails._all_field_names_ = set(['event_uuid'])
PaperContentRestoreDetails._all_fields_ = [('event_uuid', PaperContentRestoreDetails._event_uuid_validator)]

PaperContentRestoreType._description_validator = bv.String()
PaperContentRestoreType._all_field_names_ = set(['description'])
PaperContentRestoreType._all_fields_ = [('description', PaperContentRestoreType._description_validator)]

PaperDefaultFolderPolicy._everyone_in_team_validator = bv.Void()
PaperDefaultFolderPolicy._invite_only_validator = bv.Void()
PaperDefaultFolderPolicy._other_validator = bv.Void()
PaperDefaultFolderPolicy._tagmap = {
    'everyone_in_team': PaperDefaultFolderPolicy._everyone_in_team_validator,
    'invite_only': PaperDefaultFolderPolicy._invite_only_validator,
    'other': PaperDefaultFolderPolicy._other_validator,
}

PaperDefaultFolderPolicy.everyone_in_team = PaperDefaultFolderPolicy('everyone_in_team')
PaperDefaultFolderPolicy.invite_only = PaperDefaultFolderPolicy('invite_only')
PaperDefaultFolderPolicy.other = PaperDefaultFolderPolicy('other')

PaperDefaultFolderPolicyChangedDetails._new_value_validator = PaperDefaultFolderPolicy_validator
PaperDefaultFolderPolicyChangedDetails._previous_value_validator = PaperDefaultFolderPolicy_validator
PaperDefaultFolderPolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
PaperDefaultFolderPolicyChangedDetails._all_fields_ = [
    ('new_value', PaperDefaultFolderPolicyChangedDetails._new_value_validator),
    ('previous_value', PaperDefaultFolderPolicyChangedDetails._previous_value_validator),
]

PaperDefaultFolderPolicyChangedType._description_validator = bv.String()
PaperDefaultFolderPolicyChangedType._all_field_names_ = set(['description'])
PaperDefaultFolderPolicyChangedType._all_fields_ = [('description', PaperDefaultFolderPolicyChangedType._description_validator)]

PaperDesktopPolicy._disabled_validator = bv.Void()
PaperDesktopPolicy._enabled_validator = bv.Void()
PaperDesktopPolicy._other_validator = bv.Void()
PaperDesktopPolicy._tagmap = {
    'disabled': PaperDesktopPolicy._disabled_validator,
    'enabled': PaperDesktopPolicy._enabled_validator,
    'other': PaperDesktopPolicy._other_validator,
}

PaperDesktopPolicy.disabled = PaperDesktopPolicy('disabled')
PaperDesktopPolicy.enabled = PaperDesktopPolicy('enabled')
PaperDesktopPolicy.other = PaperDesktopPolicy('other')

PaperDesktopPolicyChangedDetails._new_value_validator = PaperDesktopPolicy_validator
PaperDesktopPolicyChangedDetails._previous_value_validator = PaperDesktopPolicy_validator
PaperDesktopPolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
PaperDesktopPolicyChangedDetails._all_fields_ = [
    ('new_value', PaperDesktopPolicyChangedDetails._new_value_validator),
    ('previous_value', PaperDesktopPolicyChangedDetails._previous_value_validator),
]

PaperDesktopPolicyChangedType._description_validator = bv.String()
PaperDesktopPolicyChangedType._all_field_names_ = set(['description'])
PaperDesktopPolicyChangedType._all_fields_ = [('description', PaperDesktopPolicyChangedType._description_validator)]

PaperDocAddCommentDetails._event_uuid_validator = bv.String()
PaperDocAddCommentDetails._comment_text_validator = bv.Nullable(bv.String())
PaperDocAddCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
PaperDocAddCommentDetails._all_fields_ = [
    ('event_uuid', PaperDocAddCommentDetails._event_uuid_validator),
    ('comment_text', PaperDocAddCommentDetails._comment_text_validator),
]

PaperDocAddCommentType._description_validator = bv.String()
PaperDocAddCommentType._all_field_names_ = set(['description'])
PaperDocAddCommentType._all_fields_ = [('description', PaperDocAddCommentType._description_validator)]

PaperDocChangeMemberRoleDetails._event_uuid_validator = bv.String()
PaperDocChangeMemberRoleDetails._access_type_validator = PaperAccessType_validator
PaperDocChangeMemberRoleDetails._all_field_names_ = set([
    'event_uuid',
    'access_type',
])
PaperDocChangeMemberRoleDetails._all_fields_ = [
    ('event_uuid', PaperDocChangeMemberRoleDetails._event_uuid_validator),
    ('access_type', PaperDocChangeMemberRoleDetails._access_type_validator),
]

PaperDocChangeMemberRoleType._description_validator = bv.String()
PaperDocChangeMemberRoleType._all_field_names_ = set(['description'])
PaperDocChangeMemberRoleType._all_fields_ = [('description', PaperDocChangeMemberRoleType._description_validator)]

PaperDocChangeSharingPolicyDetails._event_uuid_validator = bv.String()
PaperDocChangeSharingPolicyDetails._public_sharing_policy_validator = bv.Nullable(bv.String())
PaperDocChangeSharingPolicyDetails._team_sharing_policy_validator = bv.Nullable(bv.String())
PaperDocChangeSharingPolicyDetails._all_field_names_ = set([
    'event_uuid',
    'public_sharing_policy',
    'team_sharing_policy',
])
PaperDocChangeSharingPolicyDetails._all_fields_ = [
    ('event_uuid', PaperDocChangeSharingPolicyDetails._event_uuid_validator),
    ('public_sharing_policy', PaperDocChangeSharingPolicyDetails._public_sharing_policy_validator),
    ('team_sharing_policy', PaperDocChangeSharingPolicyDetails._team_sharing_policy_validator),
]

PaperDocChangeSharingPolicyType._description_validator = bv.String()
PaperDocChangeSharingPolicyType._all_field_names_ = set(['description'])
PaperDocChangeSharingPolicyType._all_fields_ = [('description', PaperDocChangeSharingPolicyType._description_validator)]

PaperDocChangeSubscriptionDetails._event_uuid_validator = bv.String()
PaperDocChangeSubscriptionDetails._new_subscription_level_validator = bv.String()
PaperDocChangeSubscriptionDetails._previous_subscription_level_validator = bv.Nullable(bv.String())
PaperDocChangeSubscriptionDetails._all_field_names_ = set([
    'event_uuid',
    'new_subscription_level',
    'previous_subscription_level',
])
PaperDocChangeSubscriptionDetails._all_fields_ = [
    ('event_uuid', PaperDocChangeSubscriptionDetails._event_uuid_validator),
    ('new_subscription_level', PaperDocChangeSubscriptionDetails._new_subscription_level_validator),
    ('previous_subscription_level', PaperDocChangeSubscriptionDetails._previous_subscription_level_validator),
]

PaperDocChangeSubscriptionType._description_validator = bv.String()
PaperDocChangeSubscriptionType._all_field_names_ = set(['description'])
PaperDocChangeSubscriptionType._all_fields_ = [('description', PaperDocChangeSubscriptionType._description_validator)]

PaperDocDeleteCommentDetails._event_uuid_validator = bv.String()
PaperDocDeleteCommentDetails._comment_text_validator = bv.Nullable(bv.String())
PaperDocDeleteCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
PaperDocDeleteCommentDetails._all_fields_ = [
    ('event_uuid', PaperDocDeleteCommentDetails._event_uuid_validator),
    ('comment_text', PaperDocDeleteCommentDetails._comment_text_validator),
]

PaperDocDeleteCommentType._description_validator = bv.String()
PaperDocDeleteCommentType._all_field_names_ = set(['description'])
PaperDocDeleteCommentType._all_fields_ = [('description', PaperDocDeleteCommentType._description_validator)]

PaperDocDeletedDetails._event_uuid_validator = bv.String()
PaperDocDeletedDetails._all_field_names_ = set(['event_uuid'])
PaperDocDeletedDetails._all_fields_ = [('event_uuid', PaperDocDeletedDetails._event_uuid_validator)]

PaperDocDeletedType._description_validator = bv.String()
PaperDocDeletedType._all_field_names_ = set(['description'])
PaperDocDeletedType._all_fields_ = [('description', PaperDocDeletedType._description_validator)]

PaperDocDownloadDetails._event_uuid_validator = bv.String()
PaperDocDownloadDetails._export_file_format_validator = PaperDownloadFormat_validator
PaperDocDownloadDetails._all_field_names_ = set([
    'event_uuid',
    'export_file_format',
])
PaperDocDownloadDetails._all_fields_ = [
    ('event_uuid', PaperDocDownloadDetails._event_uuid_validator),
    ('export_file_format', PaperDocDownloadDetails._export_file_format_validator),
]

PaperDocDownloadType._description_validator = bv.String()
PaperDocDownloadType._all_field_names_ = set(['description'])
PaperDocDownloadType._all_fields_ = [('description', PaperDocDownloadType._description_validator)]

PaperDocEditCommentDetails._event_uuid_validator = bv.String()
PaperDocEditCommentDetails._comment_text_validator = bv.Nullable(bv.String())
PaperDocEditCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
PaperDocEditCommentDetails._all_fields_ = [
    ('event_uuid', PaperDocEditCommentDetails._event_uuid_validator),
    ('comment_text', PaperDocEditCommentDetails._comment_text_validator),
]

PaperDocEditCommentType._description_validator = bv.String()
PaperDocEditCommentType._all_field_names_ = set(['description'])
PaperDocEditCommentType._all_fields_ = [('description', PaperDocEditCommentType._description_validator)]

PaperDocEditDetails._event_uuid_validator = bv.String()
PaperDocEditDetails._all_field_names_ = set(['event_uuid'])
PaperDocEditDetails._all_fields_ = [('event_uuid', PaperDocEditDetails._event_uuid_validator)]

PaperDocEditType._description_validator = bv.String()
PaperDocEditType._all_field_names_ = set(['description'])
PaperDocEditType._all_fields_ = [('description', PaperDocEditType._description_validator)]

PaperDocFollowedDetails._event_uuid_validator = bv.String()
PaperDocFollowedDetails._all_field_names_ = set(['event_uuid'])
PaperDocFollowedDetails._all_fields_ = [('event_uuid', PaperDocFollowedDetails._event_uuid_validator)]

PaperDocFollowedType._description_validator = bv.String()
PaperDocFollowedType._all_field_names_ = set(['description'])
PaperDocFollowedType._all_fields_ = [('description', PaperDocFollowedType._description_validator)]

PaperDocMentionDetails._event_uuid_validator = bv.String()
PaperDocMentionDetails._all_field_names_ = set(['event_uuid'])
PaperDocMentionDetails._all_fields_ = [('event_uuid', PaperDocMentionDetails._event_uuid_validator)]

PaperDocMentionType._description_validator = bv.String()
PaperDocMentionType._all_field_names_ = set(['description'])
PaperDocMentionType._all_fields_ = [('description', PaperDocMentionType._description_validator)]

PaperDocOwnershipChangedDetails._event_uuid_validator = bv.String()
PaperDocOwnershipChangedDetails._old_owner_user_id_validator = bv.Nullable(users_common.AccountId_validator)
PaperDocOwnershipChangedDetails._new_owner_user_id_validator = users_common.AccountId_validator
PaperDocOwnershipChangedDetails._all_field_names_ = set([
    'event_uuid',
    'old_owner_user_id',
    'new_owner_user_id',
])
PaperDocOwnershipChangedDetails._all_fields_ = [
    ('event_uuid', PaperDocOwnershipChangedDetails._event_uuid_validator),
    ('old_owner_user_id', PaperDocOwnershipChangedDetails._old_owner_user_id_validator),
    ('new_owner_user_id', PaperDocOwnershipChangedDetails._new_owner_user_id_validator),
]

PaperDocOwnershipChangedType._description_validator = bv.String()
PaperDocOwnershipChangedType._all_field_names_ = set(['description'])
PaperDocOwnershipChangedType._all_fields_ = [('description', PaperDocOwnershipChangedType._description_validator)]

PaperDocRequestAccessDetails._event_uuid_validator = bv.String()
PaperDocRequestAccessDetails._all_field_names_ = set(['event_uuid'])
PaperDocRequestAccessDetails._all_fields_ = [('event_uuid', PaperDocRequestAccessDetails._event_uuid_validator)]

PaperDocRequestAccessType._description_validator = bv.String()
PaperDocRequestAccessType._all_field_names_ = set(['description'])
PaperDocRequestAccessType._all_fields_ = [('description', PaperDocRequestAccessType._description_validator)]

PaperDocResolveCommentDetails._event_uuid_validator = bv.String()
PaperDocResolveCommentDetails._comment_text_validator = bv.Nullable(bv.String())
PaperDocResolveCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
PaperDocResolveCommentDetails._all_fields_ = [
    ('event_uuid', PaperDocResolveCommentDetails._event_uuid_validator),
    ('comment_text', PaperDocResolveCommentDetails._comment_text_validator),
]

PaperDocResolveCommentType._description_validator = bv.String()
PaperDocResolveCommentType._all_field_names_ = set(['description'])
PaperDocResolveCommentType._all_fields_ = [('description', PaperDocResolveCommentType._description_validator)]

PaperDocRevertDetails._event_uuid_validator = bv.String()
PaperDocRevertDetails._all_field_names_ = set(['event_uuid'])
PaperDocRevertDetails._all_fields_ = [('event_uuid', PaperDocRevertDetails._event_uuid_validator)]

PaperDocRevertType._description_validator = bv.String()
PaperDocRevertType._all_field_names_ = set(['description'])
PaperDocRevertType._all_fields_ = [('description', PaperDocRevertType._description_validator)]

PaperDocSlackShareDetails._event_uuid_validator = bv.String()
PaperDocSlackShareDetails._all_field_names_ = set(['event_uuid'])
PaperDocSlackShareDetails._all_fields_ = [('event_uuid', PaperDocSlackShareDetails._event_uuid_validator)]

PaperDocSlackShareType._description_validator = bv.String()
PaperDocSlackShareType._all_field_names_ = set(['description'])
PaperDocSlackShareType._all_fields_ = [('description', PaperDocSlackShareType._description_validator)]

PaperDocTeamInviteDetails._event_uuid_validator = bv.String()
PaperDocTeamInviteDetails._all_field_names_ = set(['event_uuid'])
PaperDocTeamInviteDetails._all_fields_ = [('event_uuid', PaperDocTeamInviteDetails._event_uuid_validator)]

PaperDocTeamInviteType._description_validator = bv.String()
PaperDocTeamInviteType._all_field_names_ = set(['description'])
PaperDocTeamInviteType._all_fields_ = [('description', PaperDocTeamInviteType._description_validator)]

PaperDocTrashedDetails._event_uuid_validator = bv.String()
PaperDocTrashedDetails._all_field_names_ = set(['event_uuid'])
PaperDocTrashedDetails._all_fields_ = [('event_uuid', PaperDocTrashedDetails._event_uuid_validator)]

PaperDocTrashedType._description_validator = bv.String()
PaperDocTrashedType._all_field_names_ = set(['description'])
PaperDocTrashedType._all_fields_ = [('description', PaperDocTrashedType._description_validator)]

PaperDocUnresolveCommentDetails._event_uuid_validator = bv.String()
PaperDocUnresolveCommentDetails._comment_text_validator = bv.Nullable(bv.String())
PaperDocUnresolveCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
PaperDocUnresolveCommentDetails._all_fields_ = [
    ('event_uuid', PaperDocUnresolveCommentDetails._event_uuid_validator),
    ('comment_text', PaperDocUnresolveCommentDetails._comment_text_validator),
]

PaperDocUnresolveCommentType._description_validator = bv.String()
PaperDocUnresolveCommentType._all_field_names_ = set(['description'])
PaperDocUnresolveCommentType._all_fields_ = [('description', PaperDocUnresolveCommentType._description_validator)]

PaperDocUntrashedDetails._event_uuid_validator = bv.String()
PaperDocUntrashedDetails._all_field_names_ = set(['event_uuid'])
PaperDocUntrashedDetails._all_fields_ = [('event_uuid', PaperDocUntrashedDetails._event_uuid_validator)]

PaperDocUntrashedType._description_validator = bv.String()
PaperDocUntrashedType._all_field_names_ = set(['description'])
PaperDocUntrashedType._all_fields_ = [('description', PaperDocUntrashedType._description_validator)]

PaperDocViewDetails._event_uuid_validator = bv.String()
PaperDocViewDetails._all_field_names_ = set(['event_uuid'])
PaperDocViewDetails._all_fields_ = [('event_uuid', PaperDocViewDetails._event_uuid_validator)]

PaperDocViewType._description_validator = bv.String()
PaperDocViewType._all_field_names_ = set(['description'])
PaperDocViewType._all_fields_ = [('description', PaperDocViewType._description_validator)]

PaperDocumentLogInfo._doc_id_validator = bv.String()
PaperDocumentLogInfo._doc_title_validator = bv.String()
PaperDocumentLogInfo._all_field_names_ = set([
    'doc_id',
    'doc_title',
])
PaperDocumentLogInfo._all_fields_ = [
    ('doc_id', PaperDocumentLogInfo._doc_id_validator),
    ('doc_title', PaperDocumentLogInfo._doc_title_validator),
]

PaperDownloadFormat._docx_validator = bv.Void()
PaperDownloadFormat._html_validator = bv.Void()
PaperDownloadFormat._markdown_validator = bv.Void()
PaperDownloadFormat._pdf_validator = bv.Void()
PaperDownloadFormat._other_validator = bv.Void()
PaperDownloadFormat._tagmap = {
    'docx': PaperDownloadFormat._docx_validator,
    'html': PaperDownloadFormat._html_validator,
    'markdown': PaperDownloadFormat._markdown_validator,
    'pdf': PaperDownloadFormat._pdf_validator,
    'other': PaperDownloadFormat._other_validator,
}

PaperDownloadFormat.docx = PaperDownloadFormat('docx')
PaperDownloadFormat.html = PaperDownloadFormat('html')
PaperDownloadFormat.markdown = PaperDownloadFormat('markdown')
PaperDownloadFormat.pdf = PaperDownloadFormat('pdf')
PaperDownloadFormat.other = PaperDownloadFormat('other')

PaperEnabledUsersGroupAdditionDetails._all_field_names_ = set([])
PaperEnabledUsersGroupAdditionDetails._all_fields_ = []

PaperEnabledUsersGroupAdditionType._description_validator = bv.String()
PaperEnabledUsersGroupAdditionType._all_field_names_ = set(['description'])
PaperEnabledUsersGroupAdditionType._all_fields_ = [('description', PaperEnabledUsersGroupAdditionType._description_validator)]

PaperEnabledUsersGroupRemovalDetails._all_field_names_ = set([])
PaperEnabledUsersGroupRemovalDetails._all_fields_ = []

PaperEnabledUsersGroupRemovalType._description_validator = bv.String()
PaperEnabledUsersGroupRemovalType._all_field_names_ = set(['description'])
PaperEnabledUsersGroupRemovalType._all_fields_ = [('description', PaperEnabledUsersGroupRemovalType._description_validator)]

PaperExternalViewAllowDetails._event_uuid_validator = bv.String()
PaperExternalViewAllowDetails._all_field_names_ = set(['event_uuid'])
PaperExternalViewAllowDetails._all_fields_ = [('event_uuid', PaperExternalViewAllowDetails._event_uuid_validator)]

PaperExternalViewAllowType._description_validator = bv.String()
PaperExternalViewAllowType._all_field_names_ = set(['description'])
PaperExternalViewAllowType._all_fields_ = [('description', PaperExternalViewAllowType._description_validator)]

PaperExternalViewDefaultTeamDetails._event_uuid_validator = bv.String()
PaperExternalViewDefaultTeamDetails._all_field_names_ = set(['event_uuid'])
PaperExternalViewDefaultTeamDetails._all_fields_ = [('event_uuid', PaperExternalViewDefaultTeamDetails._event_uuid_validator)]

PaperExternalViewDefaultTeamType._description_validator = bv.String()
PaperExternalViewDefaultTeamType._all_field_names_ = set(['description'])
PaperExternalViewDefaultTeamType._all_fields_ = [('description', PaperExternalViewDefaultTeamType._description_validator)]

PaperExternalViewForbidDetails._event_uuid_validator = bv.String()
PaperExternalViewForbidDetails._all_field_names_ = set(['event_uuid'])
PaperExternalViewForbidDetails._all_fields_ = [('event_uuid', PaperExternalViewForbidDetails._event_uuid_validator)]

PaperExternalViewForbidType._description_validator = bv.String()
PaperExternalViewForbidType._all_field_names_ = set(['description'])
PaperExternalViewForbidType._all_fields_ = [('description', PaperExternalViewForbidType._description_validator)]

PaperFolderChangeSubscriptionDetails._event_uuid_validator = bv.String()
PaperFolderChangeSubscriptionDetails._new_subscription_level_validator = bv.String()
PaperFolderChangeSubscriptionDetails._previous_subscription_level_validator = bv.Nullable(bv.String())
PaperFolderChangeSubscriptionDetails._all_field_names_ = set([
    'event_uuid',
    'new_subscription_level',
    'previous_subscription_level',
])
PaperFolderChangeSubscriptionDetails._all_fields_ = [
    ('event_uuid', PaperFolderChangeSubscriptionDetails._event_uuid_validator),
    ('new_subscription_level', PaperFolderChangeSubscriptionDetails._new_subscription_level_validator),
    ('previous_subscription_level', PaperFolderChangeSubscriptionDetails._previous_subscription_level_validator),
]

PaperFolderChangeSubscriptionType._description_validator = bv.String()
PaperFolderChangeSubscriptionType._all_field_names_ = set(['description'])
PaperFolderChangeSubscriptionType._all_fields_ = [('description', PaperFolderChangeSubscriptionType._description_validator)]

PaperFolderDeletedDetails._event_uuid_validator = bv.String()
PaperFolderDeletedDetails._all_field_names_ = set(['event_uuid'])
PaperFolderDeletedDetails._all_fields_ = [('event_uuid', PaperFolderDeletedDetails._event_uuid_validator)]

PaperFolderDeletedType._description_validator = bv.String()
PaperFolderDeletedType._all_field_names_ = set(['description'])
PaperFolderDeletedType._all_fields_ = [('description', PaperFolderDeletedType._description_validator)]

PaperFolderFollowedDetails._event_uuid_validator = bv.String()
PaperFolderFollowedDetails._all_field_names_ = set(['event_uuid'])
PaperFolderFollowedDetails._all_fields_ = [('event_uuid', PaperFolderFollowedDetails._event_uuid_validator)]

PaperFolderFollowedType._description_validator = bv.String()
PaperFolderFollowedType._all_field_names_ = set(['description'])
PaperFolderFollowedType._all_fields_ = [('description', PaperFolderFollowedType._description_validator)]

PaperFolderLogInfo._folder_id_validator = bv.String()
PaperFolderLogInfo._folder_name_validator = bv.String()
PaperFolderLogInfo._all_field_names_ = set([
    'folder_id',
    'folder_name',
])
PaperFolderLogInfo._all_fields_ = [
    ('folder_id', PaperFolderLogInfo._folder_id_validator),
    ('folder_name', PaperFolderLogInfo._folder_name_validator),
]

PaperFolderTeamInviteDetails._event_uuid_validator = bv.String()
PaperFolderTeamInviteDetails._all_field_names_ = set(['event_uuid'])
PaperFolderTeamInviteDetails._all_fields_ = [('event_uuid', PaperFolderTeamInviteDetails._event_uuid_validator)]

PaperFolderTeamInviteType._description_validator = bv.String()
PaperFolderTeamInviteType._all_field_names_ = set(['description'])
PaperFolderTeamInviteType._all_fields_ = [('description', PaperFolderTeamInviteType._description_validator)]

PaperMemberPolicy._anyone_with_link_validator = bv.Void()
PaperMemberPolicy._only_team_validator = bv.Void()
PaperMemberPolicy._team_and_explicitly_shared_validator = bv.Void()
PaperMemberPolicy._other_validator = bv.Void()
PaperMemberPolicy._tagmap = {
    'anyone_with_link': PaperMemberPolicy._anyone_with_link_validator,
    'only_team': PaperMemberPolicy._only_team_validator,
    'team_and_explicitly_shared': PaperMemberPolicy._team_and_explicitly_shared_validator,
    'other': PaperMemberPolicy._other_validator,
}

PaperMemberPolicy.anyone_with_link = PaperMemberPolicy('anyone_with_link')
PaperMemberPolicy.only_team = PaperMemberPolicy('only_team')
PaperMemberPolicy.team_and_explicitly_shared = PaperMemberPolicy('team_and_explicitly_shared')
PaperMemberPolicy.other = PaperMemberPolicy('other')

PaperPublishedLinkCreateDetails._event_uuid_validator = bv.String()
PaperPublishedLinkCreateDetails._all_field_names_ = set(['event_uuid'])
PaperPublishedLinkCreateDetails._all_fields_ = [('event_uuid', PaperPublishedLinkCreateDetails._event_uuid_validator)]

PaperPublishedLinkCreateType._description_validator = bv.String()
PaperPublishedLinkCreateType._all_field_names_ = set(['description'])
PaperPublishedLinkCreateType._all_fields_ = [('description', PaperPublishedLinkCreateType._description_validator)]

PaperPublishedLinkDisabledDetails._event_uuid_validator = bv.String()
PaperPublishedLinkDisabledDetails._all_field_names_ = set(['event_uuid'])
PaperPublishedLinkDisabledDetails._all_fields_ = [('event_uuid', PaperPublishedLinkDisabledDetails._event_uuid_validator)]

PaperPublishedLinkDisabledType._description_validator = bv.String()
PaperPublishedLinkDisabledType._all_field_names_ = set(['description'])
PaperPublishedLinkDisabledType._all_fields_ = [('description', PaperPublishedLinkDisabledType._description_validator)]

PaperPublishedLinkViewDetails._event_uuid_validator = bv.String()
PaperPublishedLinkViewDetails._all_field_names_ = set(['event_uuid'])
PaperPublishedLinkViewDetails._all_fields_ = [('event_uuid', PaperPublishedLinkViewDetails._event_uuid_validator)]

PaperPublishedLinkViewType._description_validator = bv.String()
PaperPublishedLinkViewType._all_field_names_ = set(['description'])
PaperPublishedLinkViewType._all_fields_ = [('description', PaperPublishedLinkViewType._description_validator)]

ParticipantLogInfo._user_validator = UserLogInfo_validator
ParticipantLogInfo._group_validator = GroupLogInfo_validator
ParticipantLogInfo._other_validator = bv.Void()
ParticipantLogInfo._tagmap = {
    'user': ParticipantLogInfo._user_validator,
    'group': ParticipantLogInfo._group_validator,
    'other': ParticipantLogInfo._other_validator,
}

ParticipantLogInfo.other = ParticipantLogInfo('other')

PassPolicy._enabled_validator = bv.Void()
PassPolicy._allow_validator = bv.Void()
PassPolicy._disabled_validator = bv.Void()
PassPolicy._other_validator = bv.Void()
PassPolicy._tagmap = {
    'enabled': PassPolicy._enabled_validator,
    'allow': PassPolicy._allow_validator,
    'disabled': PassPolicy._disabled_validator,
    'other': PassPolicy._other_validator,
}

PassPolicy.enabled = PassPolicy('enabled')
PassPolicy.allow = PassPolicy('allow')
PassPolicy.disabled = PassPolicy('disabled')
PassPolicy.other = PassPolicy('other')

PasswordChangeDetails._all_field_names_ = set([])
PasswordChangeDetails._all_fields_ = []

PasswordChangeType._description_validator = bv.String()
PasswordChangeType._all_field_names_ = set(['description'])
PasswordChangeType._all_fields_ = [('description', PasswordChangeType._description_validator)]

PasswordResetAllDetails._all_field_names_ = set([])
PasswordResetAllDetails._all_fields_ = []

PasswordResetAllType._description_validator = bv.String()
PasswordResetAllType._all_field_names_ = set(['description'])
PasswordResetAllType._all_fields_ = [('description', PasswordResetAllType._description_validator)]

PasswordResetDetails._all_field_names_ = set([])
PasswordResetDetails._all_fields_ = []

PasswordResetType._description_validator = bv.String()
PasswordResetType._all_field_names_ = set(['description'])
PasswordResetType._all_fields_ = [('description', PasswordResetType._description_validator)]

PathLogInfo._contextual_validator = bv.Nullable(FilePath_validator)
PathLogInfo._namespace_relative_validator = NamespaceRelativePathLogInfo_validator
PathLogInfo._all_field_names_ = set([
    'contextual',
    'namespace_relative',
])
PathLogInfo._all_fields_ = [
    ('contextual', PathLogInfo._contextual_validator),
    ('namespace_relative', PathLogInfo._namespace_relative_validator),
]

PermanentDeleteChangePolicyDetails._new_value_validator = ContentPermanentDeletePolicy_validator
PermanentDeleteChangePolicyDetails._previous_value_validator = bv.Nullable(ContentPermanentDeletePolicy_validator)
PermanentDeleteChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
PermanentDeleteChangePolicyDetails._all_fields_ = [
    ('new_value', PermanentDeleteChangePolicyDetails._new_value_validator),
    ('previous_value', PermanentDeleteChangePolicyDetails._previous_value_validator),
]

PermanentDeleteChangePolicyType._description_validator = bv.String()
PermanentDeleteChangePolicyType._all_field_names_ = set(['description'])
PermanentDeleteChangePolicyType._all_fields_ = [('description', PermanentDeleteChangePolicyType._description_validator)]

PlacementRestriction._australia_only_validator = bv.Void()
PlacementRestriction._europe_only_validator = bv.Void()
PlacementRestriction._japan_only_validator = bv.Void()
PlacementRestriction._none_validator = bv.Void()
PlacementRestriction._other_validator = bv.Void()
PlacementRestriction._tagmap = {
    'australia_only': PlacementRestriction._australia_only_validator,
    'europe_only': PlacementRestriction._europe_only_validator,
    'japan_only': PlacementRestriction._japan_only_validator,
    'none': PlacementRestriction._none_validator,
    'other': PlacementRestriction._other_validator,
}

PlacementRestriction.australia_only = PlacementRestriction('australia_only')
PlacementRestriction.europe_only = PlacementRestriction('europe_only')
PlacementRestriction.japan_only = PlacementRestriction('japan_only')
PlacementRestriction.none = PlacementRestriction('none')
PlacementRestriction.other = PlacementRestriction('other')

PrimaryTeamRequestAcceptedDetails._secondary_team_validator = bv.String()
PrimaryTeamRequestAcceptedDetails._sent_by_validator = bv.String()
PrimaryTeamRequestAcceptedDetails._all_field_names_ = set([
    'secondary_team',
    'sent_by',
])
PrimaryTeamRequestAcceptedDetails._all_fields_ = [
    ('secondary_team', PrimaryTeamRequestAcceptedDetails._secondary_team_validator),
    ('sent_by', PrimaryTeamRequestAcceptedDetails._sent_by_validator),
]

PrimaryTeamRequestCanceledDetails._secondary_team_validator = bv.String()
PrimaryTeamRequestCanceledDetails._sent_by_validator = bv.String()
PrimaryTeamRequestCanceledDetails._all_field_names_ = set([
    'secondary_team',
    'sent_by',
])
PrimaryTeamRequestCanceledDetails._all_fields_ = [
    ('secondary_team', PrimaryTeamRequestCanceledDetails._secondary_team_validator),
    ('sent_by', PrimaryTeamRequestCanceledDetails._sent_by_validator),
]

PrimaryTeamRequestExpiredDetails._secondary_team_validator = bv.String()
PrimaryTeamRequestExpiredDetails._sent_by_validator = bv.String()
PrimaryTeamRequestExpiredDetails._all_field_names_ = set([
    'secondary_team',
    'sent_by',
])
PrimaryTeamRequestExpiredDetails._all_fields_ = [
    ('secondary_team', PrimaryTeamRequestExpiredDetails._secondary_team_validator),
    ('sent_by', PrimaryTeamRequestExpiredDetails._sent_by_validator),
]

PrimaryTeamRequestReminderDetails._secondary_team_validator = bv.String()
PrimaryTeamRequestReminderDetails._sent_to_validator = bv.String()
PrimaryTeamRequestReminderDetails._all_field_names_ = set([
    'secondary_team',
    'sent_to',
])
PrimaryTeamRequestReminderDetails._all_fields_ = [
    ('secondary_team', PrimaryTeamRequestReminderDetails._secondary_team_validator),
    ('sent_to', PrimaryTeamRequestReminderDetails._sent_to_validator),
]

QuickActionType._delete_shared_link_validator = bv.Void()
QuickActionType._reset_password_validator = bv.Void()
QuickActionType._restore_file_or_folder_validator = bv.Void()
QuickActionType._unlink_app_validator = bv.Void()
QuickActionType._unlink_session_validator = bv.Void()
QuickActionType._other_validator = bv.Void()
QuickActionType._tagmap = {
    'delete_shared_link': QuickActionType._delete_shared_link_validator,
    'reset_password': QuickActionType._reset_password_validator,
    'restore_file_or_folder': QuickActionType._restore_file_or_folder_validator,
    'unlink_app': QuickActionType._unlink_app_validator,
    'unlink_session': QuickActionType._unlink_session_validator,
    'other': QuickActionType._other_validator,
}

QuickActionType.delete_shared_link = QuickActionType('delete_shared_link')
QuickActionType.reset_password = QuickActionType('reset_password')
QuickActionType.restore_file_or_folder = QuickActionType('restore_file_or_folder')
QuickActionType.unlink_app = QuickActionType('unlink_app')
QuickActionType.unlink_session = QuickActionType('unlink_session')
QuickActionType.other = QuickActionType('other')

RelocateAssetReferencesLogInfo._src_asset_index_validator = bv.UInt64()
RelocateAssetReferencesLogInfo._dest_asset_index_validator = bv.UInt64()
RelocateAssetReferencesLogInfo._all_field_names_ = set([
    'src_asset_index',
    'dest_asset_index',
])
RelocateAssetReferencesLogInfo._all_fields_ = [
    ('src_asset_index', RelocateAssetReferencesLogInfo._src_asset_index_validator),
    ('dest_asset_index', RelocateAssetReferencesLogInfo._dest_asset_index_validator),
]

ResellerLogInfo._reseller_name_validator = bv.String()
ResellerLogInfo._reseller_email_validator = EmailAddress_validator
ResellerLogInfo._all_field_names_ = set([
    'reseller_name',
    'reseller_email',
])
ResellerLogInfo._all_fields_ = [
    ('reseller_name', ResellerLogInfo._reseller_name_validator),
    ('reseller_email', ResellerLogInfo._reseller_email_validator),
]

ResellerSupportChangePolicyDetails._new_value_validator = ResellerSupportPolicy_validator
ResellerSupportChangePolicyDetails._previous_value_validator = ResellerSupportPolicy_validator
ResellerSupportChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
ResellerSupportChangePolicyDetails._all_fields_ = [
    ('new_value', ResellerSupportChangePolicyDetails._new_value_validator),
    ('previous_value', ResellerSupportChangePolicyDetails._previous_value_validator),
]

ResellerSupportChangePolicyType._description_validator = bv.String()
ResellerSupportChangePolicyType._all_field_names_ = set(['description'])
ResellerSupportChangePolicyType._all_fields_ = [('description', ResellerSupportChangePolicyType._description_validator)]

ResellerSupportPolicy._disabled_validator = bv.Void()
ResellerSupportPolicy._enabled_validator = bv.Void()
ResellerSupportPolicy._other_validator = bv.Void()
ResellerSupportPolicy._tagmap = {
    'disabled': ResellerSupportPolicy._disabled_validator,
    'enabled': ResellerSupportPolicy._enabled_validator,
    'other': ResellerSupportPolicy._other_validator,
}

ResellerSupportPolicy.disabled = ResellerSupportPolicy('disabled')
ResellerSupportPolicy.enabled = ResellerSupportPolicy('enabled')
ResellerSupportPolicy.other = ResellerSupportPolicy('other')

ResellerSupportSessionEndDetails._all_field_names_ = set([])
ResellerSupportSessionEndDetails._all_fields_ = []

ResellerSupportSessionEndType._description_validator = bv.String()
ResellerSupportSessionEndType._all_field_names_ = set(['description'])
ResellerSupportSessionEndType._all_fields_ = [('description', ResellerSupportSessionEndType._description_validator)]

ResellerSupportSessionStartDetails._all_field_names_ = set([])
ResellerSupportSessionStartDetails._all_fields_ = []

ResellerSupportSessionStartType._description_validator = bv.String()
ResellerSupportSessionStartType._all_field_names_ = set(['description'])
ResellerSupportSessionStartType._all_fields_ = [('description', ResellerSupportSessionStartType._description_validator)]

SecondaryMailsPolicy._disabled_validator = bv.Void()
SecondaryMailsPolicy._enabled_validator = bv.Void()
SecondaryMailsPolicy._other_validator = bv.Void()
SecondaryMailsPolicy._tagmap = {
    'disabled': SecondaryMailsPolicy._disabled_validator,
    'enabled': SecondaryMailsPolicy._enabled_validator,
    'other': SecondaryMailsPolicy._other_validator,
}

SecondaryMailsPolicy.disabled = SecondaryMailsPolicy('disabled')
SecondaryMailsPolicy.enabled = SecondaryMailsPolicy('enabled')
SecondaryMailsPolicy.other = SecondaryMailsPolicy('other')

SecondaryMailsPolicyChangedDetails._previous_value_validator = SecondaryMailsPolicy_validator
SecondaryMailsPolicyChangedDetails._new_value_validator = SecondaryMailsPolicy_validator
SecondaryMailsPolicyChangedDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
SecondaryMailsPolicyChangedDetails._all_fields_ = [
    ('previous_value', SecondaryMailsPolicyChangedDetails._previous_value_validator),
    ('new_value', SecondaryMailsPolicyChangedDetails._new_value_validator),
]

SecondaryMailsPolicyChangedType._description_validator = bv.String()
SecondaryMailsPolicyChangedType._all_field_names_ = set(['description'])
SecondaryMailsPolicyChangedType._all_fields_ = [('description', SecondaryMailsPolicyChangedType._description_validator)]

SecondaryTeamRequestAcceptedDetails._primary_team_validator = bv.String()
SecondaryTeamRequestAcceptedDetails._sent_by_validator = bv.String()
SecondaryTeamRequestAcceptedDetails._all_field_names_ = set([
    'primary_team',
    'sent_by',
])
SecondaryTeamRequestAcceptedDetails._all_fields_ = [
    ('primary_team', SecondaryTeamRequestAcceptedDetails._primary_team_validator),
    ('sent_by', SecondaryTeamRequestAcceptedDetails._sent_by_validator),
]

SecondaryTeamRequestCanceledDetails._sent_to_validator = bv.String()
SecondaryTeamRequestCanceledDetails._sent_by_validator = bv.String()
SecondaryTeamRequestCanceledDetails._all_field_names_ = set([
    'sent_to',
    'sent_by',
])
SecondaryTeamRequestCanceledDetails._all_fields_ = [
    ('sent_to', SecondaryTeamRequestCanceledDetails._sent_to_validator),
    ('sent_by', SecondaryTeamRequestCanceledDetails._sent_by_validator),
]

SecondaryTeamRequestExpiredDetails._sent_to_validator = bv.String()
SecondaryTeamRequestExpiredDetails._all_field_names_ = set(['sent_to'])
SecondaryTeamRequestExpiredDetails._all_fields_ = [('sent_to', SecondaryTeamRequestExpiredDetails._sent_to_validator)]

SecondaryTeamRequestReminderDetails._sent_to_validator = bv.String()
SecondaryTeamRequestReminderDetails._all_field_names_ = set(['sent_to'])
SecondaryTeamRequestReminderDetails._all_fields_ = [('sent_to', SecondaryTeamRequestReminderDetails._sent_to_validator)]

SfAddGroupDetails._target_asset_index_validator = bv.UInt64()
SfAddGroupDetails._original_folder_name_validator = bv.String()
SfAddGroupDetails._sharing_permission_validator = bv.Nullable(bv.String())
SfAddGroupDetails._team_name_validator = bv.String()
SfAddGroupDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'sharing_permission',
    'team_name',
])
SfAddGroupDetails._all_fields_ = [
    ('target_asset_index', SfAddGroupDetails._target_asset_index_validator),
    ('original_folder_name', SfAddGroupDetails._original_folder_name_validator),
    ('sharing_permission', SfAddGroupDetails._sharing_permission_validator),
    ('team_name', SfAddGroupDetails._team_name_validator),
]

SfAddGroupType._description_validator = bv.String()
SfAddGroupType._all_field_names_ = set(['description'])
SfAddGroupType._all_fields_ = [('description', SfAddGroupType._description_validator)]

SfAllowNonMembersToViewSharedLinksDetails._target_asset_index_validator = bv.UInt64()
SfAllowNonMembersToViewSharedLinksDetails._original_folder_name_validator = bv.String()
SfAllowNonMembersToViewSharedLinksDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SfAllowNonMembersToViewSharedLinksDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_folder_type',
])
SfAllowNonMembersToViewSharedLinksDetails._all_fields_ = [
    ('target_asset_index', SfAllowNonMembersToViewSharedLinksDetails._target_asset_index_validator),
    ('original_folder_name', SfAllowNonMembersToViewSharedLinksDetails._original_folder_name_validator),
    ('shared_folder_type', SfAllowNonMembersToViewSharedLinksDetails._shared_folder_type_validator),
]

SfAllowNonMembersToViewSharedLinksType._description_validator = bv.String()
SfAllowNonMembersToViewSharedLinksType._all_field_names_ = set(['description'])
SfAllowNonMembersToViewSharedLinksType._all_fields_ = [('description', SfAllowNonMembersToViewSharedLinksType._description_validator)]

SfExternalInviteWarnDetails._target_asset_index_validator = bv.UInt64()
SfExternalInviteWarnDetails._original_folder_name_validator = bv.String()
SfExternalInviteWarnDetails._new_sharing_permission_validator = bv.Nullable(bv.String())
SfExternalInviteWarnDetails._previous_sharing_permission_validator = bv.Nullable(bv.String())
SfExternalInviteWarnDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'new_sharing_permission',
    'previous_sharing_permission',
])
SfExternalInviteWarnDetails._all_fields_ = [
    ('target_asset_index', SfExternalInviteWarnDetails._target_asset_index_validator),
    ('original_folder_name', SfExternalInviteWarnDetails._original_folder_name_validator),
    ('new_sharing_permission', SfExternalInviteWarnDetails._new_sharing_permission_validator),
    ('previous_sharing_permission', SfExternalInviteWarnDetails._previous_sharing_permission_validator),
]

SfExternalInviteWarnType._description_validator = bv.String()
SfExternalInviteWarnType._all_field_names_ = set(['description'])
SfExternalInviteWarnType._all_fields_ = [('description', SfExternalInviteWarnType._description_validator)]

SfFbInviteChangeRoleDetails._target_asset_index_validator = bv.UInt64()
SfFbInviteChangeRoleDetails._original_folder_name_validator = bv.String()
SfFbInviteChangeRoleDetails._previous_sharing_permission_validator = bv.Nullable(bv.String())
SfFbInviteChangeRoleDetails._new_sharing_permission_validator = bv.Nullable(bv.String())
SfFbInviteChangeRoleDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'previous_sharing_permission',
    'new_sharing_permission',
])
SfFbInviteChangeRoleDetails._all_fields_ = [
    ('target_asset_index', SfFbInviteChangeRoleDetails._target_asset_index_validator),
    ('original_folder_name', SfFbInviteChangeRoleDetails._original_folder_name_validator),
    ('previous_sharing_permission', SfFbInviteChangeRoleDetails._previous_sharing_permission_validator),
    ('new_sharing_permission', SfFbInviteChangeRoleDetails._new_sharing_permission_validator),
]

SfFbInviteChangeRoleType._description_validator = bv.String()
SfFbInviteChangeRoleType._all_field_names_ = set(['description'])
SfFbInviteChangeRoleType._all_fields_ = [('description', SfFbInviteChangeRoleType._description_validator)]

SfFbInviteDetails._target_asset_index_validator = bv.UInt64()
SfFbInviteDetails._original_folder_name_validator = bv.String()
SfFbInviteDetails._sharing_permission_validator = bv.Nullable(bv.String())
SfFbInviteDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'sharing_permission',
])
SfFbInviteDetails._all_fields_ = [
    ('target_asset_index', SfFbInviteDetails._target_asset_index_validator),
    ('original_folder_name', SfFbInviteDetails._original_folder_name_validator),
    ('sharing_permission', SfFbInviteDetails._sharing_permission_validator),
]

SfFbInviteType._description_validator = bv.String()
SfFbInviteType._all_field_names_ = set(['description'])
SfFbInviteType._all_fields_ = [('description', SfFbInviteType._description_validator)]

SfFbUninviteDetails._target_asset_index_validator = bv.UInt64()
SfFbUninviteDetails._original_folder_name_validator = bv.String()
SfFbUninviteDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SfFbUninviteDetails._all_fields_ = [
    ('target_asset_index', SfFbUninviteDetails._target_asset_index_validator),
    ('original_folder_name', SfFbUninviteDetails._original_folder_name_validator),
]

SfFbUninviteType._description_validator = bv.String()
SfFbUninviteType._all_field_names_ = set(['description'])
SfFbUninviteType._all_fields_ = [('description', SfFbUninviteType._description_validator)]

SfInviteGroupDetails._target_asset_index_validator = bv.UInt64()
SfInviteGroupDetails._all_field_names_ = set(['target_asset_index'])
SfInviteGroupDetails._all_fields_ = [('target_asset_index', SfInviteGroupDetails._target_asset_index_validator)]

SfInviteGroupType._description_validator = bv.String()
SfInviteGroupType._all_field_names_ = set(['description'])
SfInviteGroupType._all_fields_ = [('description', SfInviteGroupType._description_validator)]

SfTeamGrantAccessDetails._target_asset_index_validator = bv.UInt64()
SfTeamGrantAccessDetails._original_folder_name_validator = bv.String()
SfTeamGrantAccessDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SfTeamGrantAccessDetails._all_fields_ = [
    ('target_asset_index', SfTeamGrantAccessDetails._target_asset_index_validator),
    ('original_folder_name', SfTeamGrantAccessDetails._original_folder_name_validator),
]

SfTeamGrantAccessType._description_validator = bv.String()
SfTeamGrantAccessType._all_field_names_ = set(['description'])
SfTeamGrantAccessType._all_fields_ = [('description', SfTeamGrantAccessType._description_validator)]

SfTeamInviteChangeRoleDetails._target_asset_index_validator = bv.UInt64()
SfTeamInviteChangeRoleDetails._original_folder_name_validator = bv.String()
SfTeamInviteChangeRoleDetails._new_sharing_permission_validator = bv.Nullable(bv.String())
SfTeamInviteChangeRoleDetails._previous_sharing_permission_validator = bv.Nullable(bv.String())
SfTeamInviteChangeRoleDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'new_sharing_permission',
    'previous_sharing_permission',
])
SfTeamInviteChangeRoleDetails._all_fields_ = [
    ('target_asset_index', SfTeamInviteChangeRoleDetails._target_asset_index_validator),
    ('original_folder_name', SfTeamInviteChangeRoleDetails._original_folder_name_validator),
    ('new_sharing_permission', SfTeamInviteChangeRoleDetails._new_sharing_permission_validator),
    ('previous_sharing_permission', SfTeamInviteChangeRoleDetails._previous_sharing_permission_validator),
]

SfTeamInviteChangeRoleType._description_validator = bv.String()
SfTeamInviteChangeRoleType._all_field_names_ = set(['description'])
SfTeamInviteChangeRoleType._all_fields_ = [('description', SfTeamInviteChangeRoleType._description_validator)]

SfTeamInviteDetails._target_asset_index_validator = bv.UInt64()
SfTeamInviteDetails._original_folder_name_validator = bv.String()
SfTeamInviteDetails._sharing_permission_validator = bv.Nullable(bv.String())
SfTeamInviteDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'sharing_permission',
])
SfTeamInviteDetails._all_fields_ = [
    ('target_asset_index', SfTeamInviteDetails._target_asset_index_validator),
    ('original_folder_name', SfTeamInviteDetails._original_folder_name_validator),
    ('sharing_permission', SfTeamInviteDetails._sharing_permission_validator),
]

SfTeamInviteType._description_validator = bv.String()
SfTeamInviteType._all_field_names_ = set(['description'])
SfTeamInviteType._all_fields_ = [('description', SfTeamInviteType._description_validator)]

SfTeamJoinDetails._target_asset_index_validator = bv.UInt64()
SfTeamJoinDetails._original_folder_name_validator = bv.String()
SfTeamJoinDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SfTeamJoinDetails._all_fields_ = [
    ('target_asset_index', SfTeamJoinDetails._target_asset_index_validator),
    ('original_folder_name', SfTeamJoinDetails._original_folder_name_validator),
]

SfTeamJoinFromOobLinkDetails._target_asset_index_validator = bv.UInt64()
SfTeamJoinFromOobLinkDetails._original_folder_name_validator = bv.String()
SfTeamJoinFromOobLinkDetails._token_key_validator = bv.Nullable(bv.String())
SfTeamJoinFromOobLinkDetails._sharing_permission_validator = bv.Nullable(bv.String())
SfTeamJoinFromOobLinkDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'token_key',
    'sharing_permission',
])
SfTeamJoinFromOobLinkDetails._all_fields_ = [
    ('target_asset_index', SfTeamJoinFromOobLinkDetails._target_asset_index_validator),
    ('original_folder_name', SfTeamJoinFromOobLinkDetails._original_folder_name_validator),
    ('token_key', SfTeamJoinFromOobLinkDetails._token_key_validator),
    ('sharing_permission', SfTeamJoinFromOobLinkDetails._sharing_permission_validator),
]

SfTeamJoinFromOobLinkType._description_validator = bv.String()
SfTeamJoinFromOobLinkType._all_field_names_ = set(['description'])
SfTeamJoinFromOobLinkType._all_fields_ = [('description', SfTeamJoinFromOobLinkType._description_validator)]

SfTeamJoinType._description_validator = bv.String()
SfTeamJoinType._all_field_names_ = set(['description'])
SfTeamJoinType._all_fields_ = [('description', SfTeamJoinType._description_validator)]

SfTeamUninviteDetails._target_asset_index_validator = bv.UInt64()
SfTeamUninviteDetails._original_folder_name_validator = bv.String()
SfTeamUninviteDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SfTeamUninviteDetails._all_fields_ = [
    ('target_asset_index', SfTeamUninviteDetails._target_asset_index_validator),
    ('original_folder_name', SfTeamUninviteDetails._original_folder_name_validator),
]

SfTeamUninviteType._description_validator = bv.String()
SfTeamUninviteType._all_field_names_ = set(['description'])
SfTeamUninviteType._all_fields_ = [('description', SfTeamUninviteType._description_validator)]

SharedContentAddInviteesDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedContentAddInviteesDetails._invitees_validator = bv.List(EmailAddress_validator)
SharedContentAddInviteesDetails._all_field_names_ = set([
    'shared_content_access_level',
    'invitees',
])
SharedContentAddInviteesDetails._all_fields_ = [
    ('shared_content_access_level', SharedContentAddInviteesDetails._shared_content_access_level_validator),
    ('invitees', SharedContentAddInviteesDetails._invitees_validator),
]

SharedContentAddInviteesType._description_validator = bv.String()
SharedContentAddInviteesType._all_field_names_ = set(['description'])
SharedContentAddInviteesType._all_fields_ = [('description', SharedContentAddInviteesType._description_validator)]

SharedContentAddLinkExpiryDetails._new_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedContentAddLinkExpiryDetails._all_field_names_ = set(['new_value'])
SharedContentAddLinkExpiryDetails._all_fields_ = [('new_value', SharedContentAddLinkExpiryDetails._new_value_validator)]

SharedContentAddLinkExpiryType._description_validator = bv.String()
SharedContentAddLinkExpiryType._all_field_names_ = set(['description'])
SharedContentAddLinkExpiryType._all_fields_ = [('description', SharedContentAddLinkExpiryType._description_validator)]

SharedContentAddLinkPasswordDetails._all_field_names_ = set([])
SharedContentAddLinkPasswordDetails._all_fields_ = []

SharedContentAddLinkPasswordType._description_validator = bv.String()
SharedContentAddLinkPasswordType._all_field_names_ = set(['description'])
SharedContentAddLinkPasswordType._all_fields_ = [('description', SharedContentAddLinkPasswordType._description_validator)]

SharedContentAddMemberDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedContentAddMemberDetails._all_field_names_ = set(['shared_content_access_level'])
SharedContentAddMemberDetails._all_fields_ = [('shared_content_access_level', SharedContentAddMemberDetails._shared_content_access_level_validator)]

SharedContentAddMemberType._description_validator = bv.String()
SharedContentAddMemberType._all_field_names_ = set(['description'])
SharedContentAddMemberType._all_fields_ = [('description', SharedContentAddMemberType._description_validator)]

SharedContentChangeDownloadsPolicyDetails._new_value_validator = DownloadPolicyType_validator
SharedContentChangeDownloadsPolicyDetails._previous_value_validator = bv.Nullable(DownloadPolicyType_validator)
SharedContentChangeDownloadsPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedContentChangeDownloadsPolicyDetails._all_fields_ = [
    ('new_value', SharedContentChangeDownloadsPolicyDetails._new_value_validator),
    ('previous_value', SharedContentChangeDownloadsPolicyDetails._previous_value_validator),
]

SharedContentChangeDownloadsPolicyType._description_validator = bv.String()
SharedContentChangeDownloadsPolicyType._all_field_names_ = set(['description'])
SharedContentChangeDownloadsPolicyType._all_fields_ = [('description', SharedContentChangeDownloadsPolicyType._description_validator)]

SharedContentChangeInviteeRoleDetails._previous_access_level_validator = bv.Nullable(sharing.AccessLevel_validator)
SharedContentChangeInviteeRoleDetails._new_access_level_validator = sharing.AccessLevel_validator
SharedContentChangeInviteeRoleDetails._invitee_validator = EmailAddress_validator
SharedContentChangeInviteeRoleDetails._all_field_names_ = set([
    'previous_access_level',
    'new_access_level',
    'invitee',
])
SharedContentChangeInviteeRoleDetails._all_fields_ = [
    ('previous_access_level', SharedContentChangeInviteeRoleDetails._previous_access_level_validator),
    ('new_access_level', SharedContentChangeInviteeRoleDetails._new_access_level_validator),
    ('invitee', SharedContentChangeInviteeRoleDetails._invitee_validator),
]

SharedContentChangeInviteeRoleType._description_validator = bv.String()
SharedContentChangeInviteeRoleType._all_field_names_ = set(['description'])
SharedContentChangeInviteeRoleType._all_fields_ = [('description', SharedContentChangeInviteeRoleType._description_validator)]

SharedContentChangeLinkAudienceDetails._new_value_validator = sharing.LinkAudience_validator
SharedContentChangeLinkAudienceDetails._previous_value_validator = bv.Nullable(sharing.LinkAudience_validator)
SharedContentChangeLinkAudienceDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedContentChangeLinkAudienceDetails._all_fields_ = [
    ('new_value', SharedContentChangeLinkAudienceDetails._new_value_validator),
    ('previous_value', SharedContentChangeLinkAudienceDetails._previous_value_validator),
]

SharedContentChangeLinkAudienceType._description_validator = bv.String()
SharedContentChangeLinkAudienceType._all_field_names_ = set(['description'])
SharedContentChangeLinkAudienceType._all_fields_ = [('description', SharedContentChangeLinkAudienceType._description_validator)]

SharedContentChangeLinkExpiryDetails._new_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedContentChangeLinkExpiryDetails._previous_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedContentChangeLinkExpiryDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedContentChangeLinkExpiryDetails._all_fields_ = [
    ('new_value', SharedContentChangeLinkExpiryDetails._new_value_validator),
    ('previous_value', SharedContentChangeLinkExpiryDetails._previous_value_validator),
]

SharedContentChangeLinkExpiryType._description_validator = bv.String()
SharedContentChangeLinkExpiryType._all_field_names_ = set(['description'])
SharedContentChangeLinkExpiryType._all_fields_ = [('description', SharedContentChangeLinkExpiryType._description_validator)]

SharedContentChangeLinkPasswordDetails._all_field_names_ = set([])
SharedContentChangeLinkPasswordDetails._all_fields_ = []

SharedContentChangeLinkPasswordType._description_validator = bv.String()
SharedContentChangeLinkPasswordType._all_field_names_ = set(['description'])
SharedContentChangeLinkPasswordType._all_fields_ = [('description', SharedContentChangeLinkPasswordType._description_validator)]

SharedContentChangeMemberRoleDetails._previous_access_level_validator = bv.Nullable(sharing.AccessLevel_validator)
SharedContentChangeMemberRoleDetails._new_access_level_validator = sharing.AccessLevel_validator
SharedContentChangeMemberRoleDetails._all_field_names_ = set([
    'previous_access_level',
    'new_access_level',
])
SharedContentChangeMemberRoleDetails._all_fields_ = [
    ('previous_access_level', SharedContentChangeMemberRoleDetails._previous_access_level_validator),
    ('new_access_level', SharedContentChangeMemberRoleDetails._new_access_level_validator),
]

SharedContentChangeMemberRoleType._description_validator = bv.String()
SharedContentChangeMemberRoleType._all_field_names_ = set(['description'])
SharedContentChangeMemberRoleType._all_fields_ = [('description', SharedContentChangeMemberRoleType._description_validator)]

SharedContentChangeViewerInfoPolicyDetails._new_value_validator = sharing.ViewerInfoPolicy_validator
SharedContentChangeViewerInfoPolicyDetails._previous_value_validator = bv.Nullable(sharing.ViewerInfoPolicy_validator)
SharedContentChangeViewerInfoPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedContentChangeViewerInfoPolicyDetails._all_fields_ = [
    ('new_value', SharedContentChangeViewerInfoPolicyDetails._new_value_validator),
    ('previous_value', SharedContentChangeViewerInfoPolicyDetails._previous_value_validator),
]

SharedContentChangeViewerInfoPolicyType._description_validator = bv.String()
SharedContentChangeViewerInfoPolicyType._all_field_names_ = set(['description'])
SharedContentChangeViewerInfoPolicyType._all_fields_ = [('description', SharedContentChangeViewerInfoPolicyType._description_validator)]

SharedContentClaimInvitationDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedContentClaimInvitationDetails._all_field_names_ = set(['shared_content_link'])
SharedContentClaimInvitationDetails._all_fields_ = [('shared_content_link', SharedContentClaimInvitationDetails._shared_content_link_validator)]

SharedContentClaimInvitationType._description_validator = bv.String()
SharedContentClaimInvitationType._all_field_names_ = set(['description'])
SharedContentClaimInvitationType._all_fields_ = [('description', SharedContentClaimInvitationType._description_validator)]

SharedContentCopyDetails._shared_content_link_validator = bv.String()
SharedContentCopyDetails._shared_content_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedContentCopyDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedContentCopyDetails._destination_path_validator = FilePath_validator
SharedContentCopyDetails._all_field_names_ = set([
    'shared_content_link',
    'shared_content_owner',
    'shared_content_access_level',
    'destination_path',
])
SharedContentCopyDetails._all_fields_ = [
    ('shared_content_link', SharedContentCopyDetails._shared_content_link_validator),
    ('shared_content_owner', SharedContentCopyDetails._shared_content_owner_validator),
    ('shared_content_access_level', SharedContentCopyDetails._shared_content_access_level_validator),
    ('destination_path', SharedContentCopyDetails._destination_path_validator),
]

SharedContentCopyType._description_validator = bv.String()
SharedContentCopyType._all_field_names_ = set(['description'])
SharedContentCopyType._all_fields_ = [('description', SharedContentCopyType._description_validator)]

SharedContentDownloadDetails._shared_content_link_validator = bv.String()
SharedContentDownloadDetails._shared_content_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedContentDownloadDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedContentDownloadDetails._all_field_names_ = set([
    'shared_content_link',
    'shared_content_owner',
    'shared_content_access_level',
])
SharedContentDownloadDetails._all_fields_ = [
    ('shared_content_link', SharedContentDownloadDetails._shared_content_link_validator),
    ('shared_content_owner', SharedContentDownloadDetails._shared_content_owner_validator),
    ('shared_content_access_level', SharedContentDownloadDetails._shared_content_access_level_validator),
]

SharedContentDownloadType._description_validator = bv.String()
SharedContentDownloadType._all_field_names_ = set(['description'])
SharedContentDownloadType._all_fields_ = [('description', SharedContentDownloadType._description_validator)]

SharedContentRelinquishMembershipDetails._all_field_names_ = set([])
SharedContentRelinquishMembershipDetails._all_fields_ = []

SharedContentRelinquishMembershipType._description_validator = bv.String()
SharedContentRelinquishMembershipType._all_field_names_ = set(['description'])
SharedContentRelinquishMembershipType._all_fields_ = [('description', SharedContentRelinquishMembershipType._description_validator)]

SharedContentRemoveInviteesDetails._invitees_validator = bv.List(EmailAddress_validator)
SharedContentRemoveInviteesDetails._all_field_names_ = set(['invitees'])
SharedContentRemoveInviteesDetails._all_fields_ = [('invitees', SharedContentRemoveInviteesDetails._invitees_validator)]

SharedContentRemoveInviteesType._description_validator = bv.String()
SharedContentRemoveInviteesType._all_field_names_ = set(['description'])
SharedContentRemoveInviteesType._all_fields_ = [('description', SharedContentRemoveInviteesType._description_validator)]

SharedContentRemoveLinkExpiryDetails._previous_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedContentRemoveLinkExpiryDetails._all_field_names_ = set(['previous_value'])
SharedContentRemoveLinkExpiryDetails._all_fields_ = [('previous_value', SharedContentRemoveLinkExpiryDetails._previous_value_validator)]

SharedContentRemoveLinkExpiryType._description_validator = bv.String()
SharedContentRemoveLinkExpiryType._all_field_names_ = set(['description'])
SharedContentRemoveLinkExpiryType._all_fields_ = [('description', SharedContentRemoveLinkExpiryType._description_validator)]

SharedContentRemoveLinkPasswordDetails._all_field_names_ = set([])
SharedContentRemoveLinkPasswordDetails._all_fields_ = []

SharedContentRemoveLinkPasswordType._description_validator = bv.String()
SharedContentRemoveLinkPasswordType._all_field_names_ = set(['description'])
SharedContentRemoveLinkPasswordType._all_fields_ = [('description', SharedContentRemoveLinkPasswordType._description_validator)]

SharedContentRemoveMemberDetails._shared_content_access_level_validator = bv.Nullable(sharing.AccessLevel_validator)
SharedContentRemoveMemberDetails._all_field_names_ = set(['shared_content_access_level'])
SharedContentRemoveMemberDetails._all_fields_ = [('shared_content_access_level', SharedContentRemoveMemberDetails._shared_content_access_level_validator)]

SharedContentRemoveMemberType._description_validator = bv.String()
SharedContentRemoveMemberType._all_field_names_ = set(['description'])
SharedContentRemoveMemberType._all_fields_ = [('description', SharedContentRemoveMemberType._description_validator)]

SharedContentRequestAccessDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedContentRequestAccessDetails._all_field_names_ = set(['shared_content_link'])
SharedContentRequestAccessDetails._all_fields_ = [('shared_content_link', SharedContentRequestAccessDetails._shared_content_link_validator)]

SharedContentRequestAccessType._description_validator = bv.String()
SharedContentRequestAccessType._all_field_names_ = set(['description'])
SharedContentRequestAccessType._all_fields_ = [('description', SharedContentRequestAccessType._description_validator)]

SharedContentUnshareDetails._all_field_names_ = set([])
SharedContentUnshareDetails._all_fields_ = []

SharedContentUnshareType._description_validator = bv.String()
SharedContentUnshareType._all_field_names_ = set(['description'])
SharedContentUnshareType._all_fields_ = [('description', SharedContentUnshareType._description_validator)]

SharedContentViewDetails._shared_content_link_validator = bv.String()
SharedContentViewDetails._shared_content_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedContentViewDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedContentViewDetails._all_field_names_ = set([
    'shared_content_link',
    'shared_content_owner',
    'shared_content_access_level',
])
SharedContentViewDetails._all_fields_ = [
    ('shared_content_link', SharedContentViewDetails._shared_content_link_validator),
    ('shared_content_owner', SharedContentViewDetails._shared_content_owner_validator),
    ('shared_content_access_level', SharedContentViewDetails._shared_content_access_level_validator),
]

SharedContentViewType._description_validator = bv.String()
SharedContentViewType._all_field_names_ = set(['description'])
SharedContentViewType._all_fields_ = [('description', SharedContentViewType._description_validator)]

SharedFolderChangeLinkPolicyDetails._new_value_validator = sharing.SharedLinkPolicy_validator
SharedFolderChangeLinkPolicyDetails._previous_value_validator = bv.Nullable(sharing.SharedLinkPolicy_validator)
SharedFolderChangeLinkPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedFolderChangeLinkPolicyDetails._all_fields_ = [
    ('new_value', SharedFolderChangeLinkPolicyDetails._new_value_validator),
    ('previous_value', SharedFolderChangeLinkPolicyDetails._previous_value_validator),
]

SharedFolderChangeLinkPolicyType._description_validator = bv.String()
SharedFolderChangeLinkPolicyType._all_field_names_ = set(['description'])
SharedFolderChangeLinkPolicyType._all_fields_ = [('description', SharedFolderChangeLinkPolicyType._description_validator)]

SharedFolderChangeMembersInheritancePolicyDetails._new_value_validator = SharedFolderMembersInheritancePolicy_validator
SharedFolderChangeMembersInheritancePolicyDetails._previous_value_validator = bv.Nullable(SharedFolderMembersInheritancePolicy_validator)
SharedFolderChangeMembersInheritancePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedFolderChangeMembersInheritancePolicyDetails._all_fields_ = [
    ('new_value', SharedFolderChangeMembersInheritancePolicyDetails._new_value_validator),
    ('previous_value', SharedFolderChangeMembersInheritancePolicyDetails._previous_value_validator),
]

SharedFolderChangeMembersInheritancePolicyType._description_validator = bv.String()
SharedFolderChangeMembersInheritancePolicyType._all_field_names_ = set(['description'])
SharedFolderChangeMembersInheritancePolicyType._all_fields_ = [('description', SharedFolderChangeMembersInheritancePolicyType._description_validator)]

SharedFolderChangeMembersManagementPolicyDetails._new_value_validator = sharing.AclUpdatePolicy_validator
SharedFolderChangeMembersManagementPolicyDetails._previous_value_validator = bv.Nullable(sharing.AclUpdatePolicy_validator)
SharedFolderChangeMembersManagementPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedFolderChangeMembersManagementPolicyDetails._all_fields_ = [
    ('new_value', SharedFolderChangeMembersManagementPolicyDetails._new_value_validator),
    ('previous_value', SharedFolderChangeMembersManagementPolicyDetails._previous_value_validator),
]

SharedFolderChangeMembersManagementPolicyType._description_validator = bv.String()
SharedFolderChangeMembersManagementPolicyType._all_field_names_ = set(['description'])
SharedFolderChangeMembersManagementPolicyType._all_fields_ = [('description', SharedFolderChangeMembersManagementPolicyType._description_validator)]

SharedFolderChangeMembersPolicyDetails._new_value_validator = sharing.MemberPolicy_validator
SharedFolderChangeMembersPolicyDetails._previous_value_validator = bv.Nullable(sharing.MemberPolicy_validator)
SharedFolderChangeMembersPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedFolderChangeMembersPolicyDetails._all_fields_ = [
    ('new_value', SharedFolderChangeMembersPolicyDetails._new_value_validator),
    ('previous_value', SharedFolderChangeMembersPolicyDetails._previous_value_validator),
]

SharedFolderChangeMembersPolicyType._description_validator = bv.String()
SharedFolderChangeMembersPolicyType._all_field_names_ = set(['description'])
SharedFolderChangeMembersPolicyType._all_fields_ = [('description', SharedFolderChangeMembersPolicyType._description_validator)]

SharedFolderCreateDetails._target_ns_id_validator = bv.Nullable(NamespaceId_validator)
SharedFolderCreateDetails._all_field_names_ = set(['target_ns_id'])
SharedFolderCreateDetails._all_fields_ = [('target_ns_id', SharedFolderCreateDetails._target_ns_id_validator)]

SharedFolderCreateType._description_validator = bv.String()
SharedFolderCreateType._all_field_names_ = set(['description'])
SharedFolderCreateType._all_fields_ = [('description', SharedFolderCreateType._description_validator)]

SharedFolderDeclineInvitationDetails._all_field_names_ = set([])
SharedFolderDeclineInvitationDetails._all_fields_ = []

SharedFolderDeclineInvitationType._description_validator = bv.String()
SharedFolderDeclineInvitationType._all_field_names_ = set(['description'])
SharedFolderDeclineInvitationType._all_fields_ = [('description', SharedFolderDeclineInvitationType._description_validator)]

SharedFolderMembersInheritancePolicy._inherit_members_validator = bv.Void()
SharedFolderMembersInheritancePolicy._dont_inherit_members_validator = bv.Void()
SharedFolderMembersInheritancePolicy._other_validator = bv.Void()
SharedFolderMembersInheritancePolicy._tagmap = {
    'inherit_members': SharedFolderMembersInheritancePolicy._inherit_members_validator,
    'dont_inherit_members': SharedFolderMembersInheritancePolicy._dont_inherit_members_validator,
    'other': SharedFolderMembersInheritancePolicy._other_validator,
}

SharedFolderMembersInheritancePolicy.inherit_members = SharedFolderMembersInheritancePolicy('inherit_members')
SharedFolderMembersInheritancePolicy.dont_inherit_members = SharedFolderMembersInheritancePolicy('dont_inherit_members')
SharedFolderMembersInheritancePolicy.other = SharedFolderMembersInheritancePolicy('other')

SharedFolderMountDetails._all_field_names_ = set([])
SharedFolderMountDetails._all_fields_ = []

SharedFolderMountType._description_validator = bv.String()
SharedFolderMountType._all_field_names_ = set(['description'])
SharedFolderMountType._all_fields_ = [('description', SharedFolderMountType._description_validator)]

SharedFolderNestDetails._previous_parent_ns_id_validator = bv.Nullable(NamespaceId_validator)
SharedFolderNestDetails._new_parent_ns_id_validator = bv.Nullable(NamespaceId_validator)
SharedFolderNestDetails._previous_ns_path_validator = bv.Nullable(FilePath_validator)
SharedFolderNestDetails._new_ns_path_validator = bv.Nullable(FilePath_validator)
SharedFolderNestDetails._all_field_names_ = set([
    'previous_parent_ns_id',
    'new_parent_ns_id',
    'previous_ns_path',
    'new_ns_path',
])
SharedFolderNestDetails._all_fields_ = [
    ('previous_parent_ns_id', SharedFolderNestDetails._previous_parent_ns_id_validator),
    ('new_parent_ns_id', SharedFolderNestDetails._new_parent_ns_id_validator),
    ('previous_ns_path', SharedFolderNestDetails._previous_ns_path_validator),
    ('new_ns_path', SharedFolderNestDetails._new_ns_path_validator),
]

SharedFolderNestType._description_validator = bv.String()
SharedFolderNestType._all_field_names_ = set(['description'])
SharedFolderNestType._all_fields_ = [('description', SharedFolderNestType._description_validator)]

SharedFolderTransferOwnershipDetails._previous_owner_email_validator = bv.Nullable(EmailAddress_validator)
SharedFolderTransferOwnershipDetails._new_owner_email_validator = EmailAddress_validator
SharedFolderTransferOwnershipDetails._all_field_names_ = set([
    'previous_owner_email',
    'new_owner_email',
])
SharedFolderTransferOwnershipDetails._all_fields_ = [
    ('previous_owner_email', SharedFolderTransferOwnershipDetails._previous_owner_email_validator),
    ('new_owner_email', SharedFolderTransferOwnershipDetails._new_owner_email_validator),
]

SharedFolderTransferOwnershipType._description_validator = bv.String()
SharedFolderTransferOwnershipType._all_field_names_ = set(['description'])
SharedFolderTransferOwnershipType._all_fields_ = [('description', SharedFolderTransferOwnershipType._description_validator)]

SharedFolderUnmountDetails._all_field_names_ = set([])
SharedFolderUnmountDetails._all_fields_ = []

SharedFolderUnmountType._description_validator = bv.String()
SharedFolderUnmountType._all_field_names_ = set(['description'])
SharedFolderUnmountType._all_fields_ = [('description', SharedFolderUnmountType._description_validator)]

SharedLinkAccessLevel._none_validator = bv.Void()
SharedLinkAccessLevel._reader_validator = bv.Void()
SharedLinkAccessLevel._writer_validator = bv.Void()
SharedLinkAccessLevel._other_validator = bv.Void()
SharedLinkAccessLevel._tagmap = {
    'none': SharedLinkAccessLevel._none_validator,
    'reader': SharedLinkAccessLevel._reader_validator,
    'writer': SharedLinkAccessLevel._writer_validator,
    'other': SharedLinkAccessLevel._other_validator,
}

SharedLinkAccessLevel.none = SharedLinkAccessLevel('none')
SharedLinkAccessLevel.reader = SharedLinkAccessLevel('reader')
SharedLinkAccessLevel.writer = SharedLinkAccessLevel('writer')
SharedLinkAccessLevel.other = SharedLinkAccessLevel('other')

SharedLinkAddExpiryDetails._new_value_validator = common.DropboxTimestamp_validator
SharedLinkAddExpiryDetails._all_field_names_ = set(['new_value'])
SharedLinkAddExpiryDetails._all_fields_ = [('new_value', SharedLinkAddExpiryDetails._new_value_validator)]

SharedLinkAddExpiryType._description_validator = bv.String()
SharedLinkAddExpiryType._all_field_names_ = set(['description'])
SharedLinkAddExpiryType._all_fields_ = [('description', SharedLinkAddExpiryType._description_validator)]

SharedLinkChangeExpiryDetails._new_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedLinkChangeExpiryDetails._previous_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedLinkChangeExpiryDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedLinkChangeExpiryDetails._all_fields_ = [
    ('new_value', SharedLinkChangeExpiryDetails._new_value_validator),
    ('previous_value', SharedLinkChangeExpiryDetails._previous_value_validator),
]

SharedLinkChangeExpiryType._description_validator = bv.String()
SharedLinkChangeExpiryType._all_field_names_ = set(['description'])
SharedLinkChangeExpiryType._all_fields_ = [('description', SharedLinkChangeExpiryType._description_validator)]

SharedLinkChangeVisibilityDetails._new_value_validator = SharedLinkVisibility_validator
SharedLinkChangeVisibilityDetails._previous_value_validator = bv.Nullable(SharedLinkVisibility_validator)
SharedLinkChangeVisibilityDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedLinkChangeVisibilityDetails._all_fields_ = [
    ('new_value', SharedLinkChangeVisibilityDetails._new_value_validator),
    ('previous_value', SharedLinkChangeVisibilityDetails._previous_value_validator),
]

SharedLinkChangeVisibilityType._description_validator = bv.String()
SharedLinkChangeVisibilityType._all_field_names_ = set(['description'])
SharedLinkChangeVisibilityType._all_fields_ = [('description', SharedLinkChangeVisibilityType._description_validator)]

SharedLinkCopyDetails._shared_link_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedLinkCopyDetails._all_field_names_ = set(['shared_link_owner'])
SharedLinkCopyDetails._all_fields_ = [('shared_link_owner', SharedLinkCopyDetails._shared_link_owner_validator)]

SharedLinkCopyType._description_validator = bv.String()
SharedLinkCopyType._all_field_names_ = set(['description'])
SharedLinkCopyType._all_fields_ = [('description', SharedLinkCopyType._description_validator)]

SharedLinkCreateDetails._shared_link_access_level_validator = bv.Nullable(SharedLinkAccessLevel_validator)
SharedLinkCreateDetails._all_field_names_ = set(['shared_link_access_level'])
SharedLinkCreateDetails._all_fields_ = [('shared_link_access_level', SharedLinkCreateDetails._shared_link_access_level_validator)]

SharedLinkCreateType._description_validator = bv.String()
SharedLinkCreateType._all_field_names_ = set(['description'])
SharedLinkCreateType._all_fields_ = [('description', SharedLinkCreateType._description_validator)]

SharedLinkDisableDetails._shared_link_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedLinkDisableDetails._all_field_names_ = set(['shared_link_owner'])
SharedLinkDisableDetails._all_fields_ = [('shared_link_owner', SharedLinkDisableDetails._shared_link_owner_validator)]

SharedLinkDisableType._description_validator = bv.String()
SharedLinkDisableType._all_field_names_ = set(['description'])
SharedLinkDisableType._all_fields_ = [('description', SharedLinkDisableType._description_validator)]

SharedLinkDownloadDetails._shared_link_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedLinkDownloadDetails._all_field_names_ = set(['shared_link_owner'])
SharedLinkDownloadDetails._all_fields_ = [('shared_link_owner', SharedLinkDownloadDetails._shared_link_owner_validator)]

SharedLinkDownloadType._description_validator = bv.String()
SharedLinkDownloadType._all_field_names_ = set(['description'])
SharedLinkDownloadType._all_fields_ = [('description', SharedLinkDownloadType._description_validator)]

SharedLinkRemoveExpiryDetails._previous_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedLinkRemoveExpiryDetails._all_field_names_ = set(['previous_value'])
SharedLinkRemoveExpiryDetails._all_fields_ = [('previous_value', SharedLinkRemoveExpiryDetails._previous_value_validator)]

SharedLinkRemoveExpiryType._description_validator = bv.String()
SharedLinkRemoveExpiryType._all_field_names_ = set(['description'])
SharedLinkRemoveExpiryType._all_fields_ = [('description', SharedLinkRemoveExpiryType._description_validator)]

SharedLinkShareDetails._shared_link_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedLinkShareDetails._external_users_validator = bv.Nullable(bv.List(ExternalUserLogInfo_validator))
SharedLinkShareDetails._all_field_names_ = set([
    'shared_link_owner',
    'external_users',
])
SharedLinkShareDetails._all_fields_ = [
    ('shared_link_owner', SharedLinkShareDetails._shared_link_owner_validator),
    ('external_users', SharedLinkShareDetails._external_users_validator),
]

SharedLinkShareType._description_validator = bv.String()
SharedLinkShareType._all_field_names_ = set(['description'])
SharedLinkShareType._all_fields_ = [('description', SharedLinkShareType._description_validator)]

SharedLinkViewDetails._shared_link_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedLinkViewDetails._all_field_names_ = set(['shared_link_owner'])
SharedLinkViewDetails._all_fields_ = [('shared_link_owner', SharedLinkViewDetails._shared_link_owner_validator)]

SharedLinkViewType._description_validator = bv.String()
SharedLinkViewType._all_field_names_ = set(['description'])
SharedLinkViewType._all_fields_ = [('description', SharedLinkViewType._description_validator)]

SharedLinkVisibility._password_validator = bv.Void()
SharedLinkVisibility._public_validator = bv.Void()
SharedLinkVisibility._team_only_validator = bv.Void()
SharedLinkVisibility._other_validator = bv.Void()
SharedLinkVisibility._tagmap = {
    'password': SharedLinkVisibility._password_validator,
    'public': SharedLinkVisibility._public_validator,
    'team_only': SharedLinkVisibility._team_only_validator,
    'other': SharedLinkVisibility._other_validator,
}

SharedLinkVisibility.password = SharedLinkVisibility('password')
SharedLinkVisibility.public = SharedLinkVisibility('public')
SharedLinkVisibility.team_only = SharedLinkVisibility('team_only')
SharedLinkVisibility.other = SharedLinkVisibility('other')

SharedNoteOpenedDetails._all_field_names_ = set([])
SharedNoteOpenedDetails._all_fields_ = []

SharedNoteOpenedType._description_validator = bv.String()
SharedNoteOpenedType._all_field_names_ = set(['description'])
SharedNoteOpenedType._all_fields_ = [('description', SharedNoteOpenedType._description_validator)]

SharingChangeFolderJoinPolicyDetails._new_value_validator = SharingFolderJoinPolicy_validator
SharingChangeFolderJoinPolicyDetails._previous_value_validator = bv.Nullable(SharingFolderJoinPolicy_validator)
SharingChangeFolderJoinPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharingChangeFolderJoinPolicyDetails._all_fields_ = [
    ('new_value', SharingChangeFolderJoinPolicyDetails._new_value_validator),
    ('previous_value', SharingChangeFolderJoinPolicyDetails._previous_value_validator),
]

SharingChangeFolderJoinPolicyType._description_validator = bv.String()
SharingChangeFolderJoinPolicyType._all_field_names_ = set(['description'])
SharingChangeFolderJoinPolicyType._all_fields_ = [('description', SharingChangeFolderJoinPolicyType._description_validator)]

SharingChangeLinkPolicyDetails._new_value_validator = SharingLinkPolicy_validator
SharingChangeLinkPolicyDetails._previous_value_validator = bv.Nullable(SharingLinkPolicy_validator)
SharingChangeLinkPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharingChangeLinkPolicyDetails._all_fields_ = [
    ('new_value', SharingChangeLinkPolicyDetails._new_value_validator),
    ('previous_value', SharingChangeLinkPolicyDetails._previous_value_validator),
]

SharingChangeLinkPolicyType._description_validator = bv.String()
SharingChangeLinkPolicyType._all_field_names_ = set(['description'])
SharingChangeLinkPolicyType._all_fields_ = [('description', SharingChangeLinkPolicyType._description_validator)]

SharingChangeMemberPolicyDetails._new_value_validator = SharingMemberPolicy_validator
SharingChangeMemberPolicyDetails._previous_value_validator = bv.Nullable(SharingMemberPolicy_validator)
SharingChangeMemberPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharingChangeMemberPolicyDetails._all_fields_ = [
    ('new_value', SharingChangeMemberPolicyDetails._new_value_validator),
    ('previous_value', SharingChangeMemberPolicyDetails._previous_value_validator),
]

SharingChangeMemberPolicyType._description_validator = bv.String()
SharingChangeMemberPolicyType._all_field_names_ = set(['description'])
SharingChangeMemberPolicyType._all_fields_ = [('description', SharingChangeMemberPolicyType._description_validator)]

SharingFolderJoinPolicy._from_anyone_validator = bv.Void()
SharingFolderJoinPolicy._from_team_only_validator = bv.Void()
SharingFolderJoinPolicy._other_validator = bv.Void()
SharingFolderJoinPolicy._tagmap = {
    'from_anyone': SharingFolderJoinPolicy._from_anyone_validator,
    'from_team_only': SharingFolderJoinPolicy._from_team_only_validator,
    'other': SharingFolderJoinPolicy._other_validator,
}

SharingFolderJoinPolicy.from_anyone = SharingFolderJoinPolicy('from_anyone')
SharingFolderJoinPolicy.from_team_only = SharingFolderJoinPolicy('from_team_only')
SharingFolderJoinPolicy.other = SharingFolderJoinPolicy('other')

SharingLinkPolicy._default_private_validator = bv.Void()
SharingLinkPolicy._default_public_validator = bv.Void()
SharingLinkPolicy._only_private_validator = bv.Void()
SharingLinkPolicy._other_validator = bv.Void()
SharingLinkPolicy._tagmap = {
    'default_private': SharingLinkPolicy._default_private_validator,
    'default_public': SharingLinkPolicy._default_public_validator,
    'only_private': SharingLinkPolicy._only_private_validator,
    'other': SharingLinkPolicy._other_validator,
}

SharingLinkPolicy.default_private = SharingLinkPolicy('default_private')
SharingLinkPolicy.default_public = SharingLinkPolicy('default_public')
SharingLinkPolicy.only_private = SharingLinkPolicy('only_private')
SharingLinkPolicy.other = SharingLinkPolicy('other')

SharingMemberPolicy._allow_validator = bv.Void()
SharingMemberPolicy._forbid_validator = bv.Void()
SharingMemberPolicy._other_validator = bv.Void()
SharingMemberPolicy._tagmap = {
    'allow': SharingMemberPolicy._allow_validator,
    'forbid': SharingMemberPolicy._forbid_validator,
    'other': SharingMemberPolicy._other_validator,
}

SharingMemberPolicy.allow = SharingMemberPolicy('allow')
SharingMemberPolicy.forbid = SharingMemberPolicy('forbid')
SharingMemberPolicy.other = SharingMemberPolicy('other')

ShmodelGroupShareDetails._all_field_names_ = set([])
ShmodelGroupShareDetails._all_fields_ = []

ShmodelGroupShareType._description_validator = bv.String()
ShmodelGroupShareType._all_field_names_ = set(['description'])
ShmodelGroupShareType._all_fields_ = [('description', ShmodelGroupShareType._description_validator)]

ShowcaseAccessGrantedDetails._event_uuid_validator = bv.String()
ShowcaseAccessGrantedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseAccessGrantedDetails._all_fields_ = [('event_uuid', ShowcaseAccessGrantedDetails._event_uuid_validator)]

ShowcaseAccessGrantedType._description_validator = bv.String()
ShowcaseAccessGrantedType._all_field_names_ = set(['description'])
ShowcaseAccessGrantedType._all_fields_ = [('description', ShowcaseAccessGrantedType._description_validator)]

ShowcaseAddMemberDetails._event_uuid_validator = bv.String()
ShowcaseAddMemberDetails._all_field_names_ = set(['event_uuid'])
ShowcaseAddMemberDetails._all_fields_ = [('event_uuid', ShowcaseAddMemberDetails._event_uuid_validator)]

ShowcaseAddMemberType._description_validator = bv.String()
ShowcaseAddMemberType._all_field_names_ = set(['description'])
ShowcaseAddMemberType._all_fields_ = [('description', ShowcaseAddMemberType._description_validator)]

ShowcaseArchivedDetails._event_uuid_validator = bv.String()
ShowcaseArchivedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseArchivedDetails._all_fields_ = [('event_uuid', ShowcaseArchivedDetails._event_uuid_validator)]

ShowcaseArchivedType._description_validator = bv.String()
ShowcaseArchivedType._all_field_names_ = set(['description'])
ShowcaseArchivedType._all_fields_ = [('description', ShowcaseArchivedType._description_validator)]

ShowcaseChangeDownloadPolicyDetails._new_value_validator = ShowcaseDownloadPolicy_validator
ShowcaseChangeDownloadPolicyDetails._previous_value_validator = ShowcaseDownloadPolicy_validator
ShowcaseChangeDownloadPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
ShowcaseChangeDownloadPolicyDetails._all_fields_ = [
    ('new_value', ShowcaseChangeDownloadPolicyDetails._new_value_validator),
    ('previous_value', ShowcaseChangeDownloadPolicyDetails._previous_value_validator),
]

ShowcaseChangeDownloadPolicyType._description_validator = bv.String()
ShowcaseChangeDownloadPolicyType._all_field_names_ = set(['description'])
ShowcaseChangeDownloadPolicyType._all_fields_ = [('description', ShowcaseChangeDownloadPolicyType._description_validator)]

ShowcaseChangeEnabledPolicyDetails._new_value_validator = ShowcaseEnabledPolicy_validator
ShowcaseChangeEnabledPolicyDetails._previous_value_validator = ShowcaseEnabledPolicy_validator
ShowcaseChangeEnabledPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
ShowcaseChangeEnabledPolicyDetails._all_fields_ = [
    ('new_value', ShowcaseChangeEnabledPolicyDetails._new_value_validator),
    ('previous_value', ShowcaseChangeEnabledPolicyDetails._previous_value_validator),
]

ShowcaseChangeEnabledPolicyType._description_validator = bv.String()
ShowcaseChangeEnabledPolicyType._all_field_names_ = set(['description'])
ShowcaseChangeEnabledPolicyType._all_fields_ = [('description', ShowcaseChangeEnabledPolicyType._description_validator)]

ShowcaseChangeExternalSharingPolicyDetails._new_value_validator = ShowcaseExternalSharingPolicy_validator
ShowcaseChangeExternalSharingPolicyDetails._previous_value_validator = ShowcaseExternalSharingPolicy_validator
ShowcaseChangeExternalSharingPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
ShowcaseChangeExternalSharingPolicyDetails._all_fields_ = [
    ('new_value', ShowcaseChangeExternalSharingPolicyDetails._new_value_validator),
    ('previous_value', ShowcaseChangeExternalSharingPolicyDetails._previous_value_validator),
]

ShowcaseChangeExternalSharingPolicyType._description_validator = bv.String()
ShowcaseChangeExternalSharingPolicyType._all_field_names_ = set(['description'])
ShowcaseChangeExternalSharingPolicyType._all_fields_ = [('description', ShowcaseChangeExternalSharingPolicyType._description_validator)]

ShowcaseCreatedDetails._event_uuid_validator = bv.String()
ShowcaseCreatedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseCreatedDetails._all_fields_ = [('event_uuid', ShowcaseCreatedDetails._event_uuid_validator)]

ShowcaseCreatedType._description_validator = bv.String()
ShowcaseCreatedType._all_field_names_ = set(['description'])
ShowcaseCreatedType._all_fields_ = [('description', ShowcaseCreatedType._description_validator)]

ShowcaseDeleteCommentDetails._event_uuid_validator = bv.String()
ShowcaseDeleteCommentDetails._comment_text_validator = bv.Nullable(bv.String())
ShowcaseDeleteCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
ShowcaseDeleteCommentDetails._all_fields_ = [
    ('event_uuid', ShowcaseDeleteCommentDetails._event_uuid_validator),
    ('comment_text', ShowcaseDeleteCommentDetails._comment_text_validator),
]

ShowcaseDeleteCommentType._description_validator = bv.String()
ShowcaseDeleteCommentType._all_field_names_ = set(['description'])
ShowcaseDeleteCommentType._all_fields_ = [('description', ShowcaseDeleteCommentType._description_validator)]

ShowcaseDocumentLogInfo._showcase_id_validator = bv.String()
ShowcaseDocumentLogInfo._showcase_title_validator = bv.String()
ShowcaseDocumentLogInfo._all_field_names_ = set([
    'showcase_id',
    'showcase_title',
])
ShowcaseDocumentLogInfo._all_fields_ = [
    ('showcase_id', ShowcaseDocumentLogInfo._showcase_id_validator),
    ('showcase_title', ShowcaseDocumentLogInfo._showcase_title_validator),
]

ShowcaseDownloadPolicy._disabled_validator = bv.Void()
ShowcaseDownloadPolicy._enabled_validator = bv.Void()
ShowcaseDownloadPolicy._other_validator = bv.Void()
ShowcaseDownloadPolicy._tagmap = {
    'disabled': ShowcaseDownloadPolicy._disabled_validator,
    'enabled': ShowcaseDownloadPolicy._enabled_validator,
    'other': ShowcaseDownloadPolicy._other_validator,
}

ShowcaseDownloadPolicy.disabled = ShowcaseDownloadPolicy('disabled')
ShowcaseDownloadPolicy.enabled = ShowcaseDownloadPolicy('enabled')
ShowcaseDownloadPolicy.other = ShowcaseDownloadPolicy('other')

ShowcaseEditCommentDetails._event_uuid_validator = bv.String()
ShowcaseEditCommentDetails._comment_text_validator = bv.Nullable(bv.String())
ShowcaseEditCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
ShowcaseEditCommentDetails._all_fields_ = [
    ('event_uuid', ShowcaseEditCommentDetails._event_uuid_validator),
    ('comment_text', ShowcaseEditCommentDetails._comment_text_validator),
]

ShowcaseEditCommentType._description_validator = bv.String()
ShowcaseEditCommentType._all_field_names_ = set(['description'])
ShowcaseEditCommentType._all_fields_ = [('description', ShowcaseEditCommentType._description_validator)]

ShowcaseEditedDetails._event_uuid_validator = bv.String()
ShowcaseEditedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseEditedDetails._all_fields_ = [('event_uuid', ShowcaseEditedDetails._event_uuid_validator)]

ShowcaseEditedType._description_validator = bv.String()
ShowcaseEditedType._all_field_names_ = set(['description'])
ShowcaseEditedType._all_fields_ = [('description', ShowcaseEditedType._description_validator)]

ShowcaseEnabledPolicy._disabled_validator = bv.Void()
ShowcaseEnabledPolicy._enabled_validator = bv.Void()
ShowcaseEnabledPolicy._other_validator = bv.Void()
ShowcaseEnabledPolicy._tagmap = {
    'disabled': ShowcaseEnabledPolicy._disabled_validator,
    'enabled': ShowcaseEnabledPolicy._enabled_validator,
    'other': ShowcaseEnabledPolicy._other_validator,
}

ShowcaseEnabledPolicy.disabled = ShowcaseEnabledPolicy('disabled')
ShowcaseEnabledPolicy.enabled = ShowcaseEnabledPolicy('enabled')
ShowcaseEnabledPolicy.other = ShowcaseEnabledPolicy('other')

ShowcaseExternalSharingPolicy._disabled_validator = bv.Void()
ShowcaseExternalSharingPolicy._enabled_validator = bv.Void()
ShowcaseExternalSharingPolicy._other_validator = bv.Void()
ShowcaseExternalSharingPolicy._tagmap = {
    'disabled': ShowcaseExternalSharingPolicy._disabled_validator,
    'enabled': ShowcaseExternalSharingPolicy._enabled_validator,
    'other': ShowcaseExternalSharingPolicy._other_validator,
}

ShowcaseExternalSharingPolicy.disabled = ShowcaseExternalSharingPolicy('disabled')
ShowcaseExternalSharingPolicy.enabled = ShowcaseExternalSharingPolicy('enabled')
ShowcaseExternalSharingPolicy.other = ShowcaseExternalSharingPolicy('other')

ShowcaseFileAddedDetails._event_uuid_validator = bv.String()
ShowcaseFileAddedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseFileAddedDetails._all_fields_ = [('event_uuid', ShowcaseFileAddedDetails._event_uuid_validator)]

ShowcaseFileAddedType._description_validator = bv.String()
ShowcaseFileAddedType._all_field_names_ = set(['description'])
ShowcaseFileAddedType._all_fields_ = [('description', ShowcaseFileAddedType._description_validator)]

ShowcaseFileDownloadDetails._event_uuid_validator = bv.String()
ShowcaseFileDownloadDetails._download_type_validator = bv.String()
ShowcaseFileDownloadDetails._all_field_names_ = set([
    'event_uuid',
    'download_type',
])
ShowcaseFileDownloadDetails._all_fields_ = [
    ('event_uuid', ShowcaseFileDownloadDetails._event_uuid_validator),
    ('download_type', ShowcaseFileDownloadDetails._download_type_validator),
]

ShowcaseFileDownloadType._description_validator = bv.String()
ShowcaseFileDownloadType._all_field_names_ = set(['description'])
ShowcaseFileDownloadType._all_fields_ = [('description', ShowcaseFileDownloadType._description_validator)]

ShowcaseFileRemovedDetails._event_uuid_validator = bv.String()
ShowcaseFileRemovedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseFileRemovedDetails._all_fields_ = [('event_uuid', ShowcaseFileRemovedDetails._event_uuid_validator)]

ShowcaseFileRemovedType._description_validator = bv.String()
ShowcaseFileRemovedType._all_field_names_ = set(['description'])
ShowcaseFileRemovedType._all_fields_ = [('description', ShowcaseFileRemovedType._description_validator)]

ShowcaseFileViewDetails._event_uuid_validator = bv.String()
ShowcaseFileViewDetails._all_field_names_ = set(['event_uuid'])
ShowcaseFileViewDetails._all_fields_ = [('event_uuid', ShowcaseFileViewDetails._event_uuid_validator)]

ShowcaseFileViewType._description_validator = bv.String()
ShowcaseFileViewType._all_field_names_ = set(['description'])
ShowcaseFileViewType._all_fields_ = [('description', ShowcaseFileViewType._description_validator)]

ShowcasePermanentlyDeletedDetails._event_uuid_validator = bv.String()
ShowcasePermanentlyDeletedDetails._all_field_names_ = set(['event_uuid'])
ShowcasePermanentlyDeletedDetails._all_fields_ = [('event_uuid', ShowcasePermanentlyDeletedDetails._event_uuid_validator)]

ShowcasePermanentlyDeletedType._description_validator = bv.String()
ShowcasePermanentlyDeletedType._all_field_names_ = set(['description'])
ShowcasePermanentlyDeletedType._all_fields_ = [('description', ShowcasePermanentlyDeletedType._description_validator)]

ShowcasePostCommentDetails._event_uuid_validator = bv.String()
ShowcasePostCommentDetails._comment_text_validator = bv.Nullable(bv.String())
ShowcasePostCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
ShowcasePostCommentDetails._all_fields_ = [
    ('event_uuid', ShowcasePostCommentDetails._event_uuid_validator),
    ('comment_text', ShowcasePostCommentDetails._comment_text_validator),
]

ShowcasePostCommentType._description_validator = bv.String()
ShowcasePostCommentType._all_field_names_ = set(['description'])
ShowcasePostCommentType._all_fields_ = [('description', ShowcasePostCommentType._description_validator)]

ShowcaseRemoveMemberDetails._event_uuid_validator = bv.String()
ShowcaseRemoveMemberDetails._all_field_names_ = set(['event_uuid'])
ShowcaseRemoveMemberDetails._all_fields_ = [('event_uuid', ShowcaseRemoveMemberDetails._event_uuid_validator)]

ShowcaseRemoveMemberType._description_validator = bv.String()
ShowcaseRemoveMemberType._all_field_names_ = set(['description'])
ShowcaseRemoveMemberType._all_fields_ = [('description', ShowcaseRemoveMemberType._description_validator)]

ShowcaseRenamedDetails._event_uuid_validator = bv.String()
ShowcaseRenamedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseRenamedDetails._all_fields_ = [('event_uuid', ShowcaseRenamedDetails._event_uuid_validator)]

ShowcaseRenamedType._description_validator = bv.String()
ShowcaseRenamedType._all_field_names_ = set(['description'])
ShowcaseRenamedType._all_fields_ = [('description', ShowcaseRenamedType._description_validator)]

ShowcaseRequestAccessDetails._event_uuid_validator = bv.String()
ShowcaseRequestAccessDetails._all_field_names_ = set(['event_uuid'])
ShowcaseRequestAccessDetails._all_fields_ = [('event_uuid', ShowcaseRequestAccessDetails._event_uuid_validator)]

ShowcaseRequestAccessType._description_validator = bv.String()
ShowcaseRequestAccessType._all_field_names_ = set(['description'])
ShowcaseRequestAccessType._all_fields_ = [('description', ShowcaseRequestAccessType._description_validator)]

ShowcaseResolveCommentDetails._event_uuid_validator = bv.String()
ShowcaseResolveCommentDetails._comment_text_validator = bv.Nullable(bv.String())
ShowcaseResolveCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
ShowcaseResolveCommentDetails._all_fields_ = [
    ('event_uuid', ShowcaseResolveCommentDetails._event_uuid_validator),
    ('comment_text', ShowcaseResolveCommentDetails._comment_text_validator),
]

ShowcaseResolveCommentType._description_validator = bv.String()
ShowcaseResolveCommentType._all_field_names_ = set(['description'])
ShowcaseResolveCommentType._all_fields_ = [('description', ShowcaseResolveCommentType._description_validator)]

ShowcaseRestoredDetails._event_uuid_validator = bv.String()
ShowcaseRestoredDetails._all_field_names_ = set(['event_uuid'])
ShowcaseRestoredDetails._all_fields_ = [('event_uuid', ShowcaseRestoredDetails._event_uuid_validator)]

ShowcaseRestoredType._description_validator = bv.String()
ShowcaseRestoredType._all_field_names_ = set(['description'])
ShowcaseRestoredType._all_fields_ = [('description', ShowcaseRestoredType._description_validator)]

ShowcaseTrashedDeprecatedDetails._event_uuid_validator = bv.String()
ShowcaseTrashedDeprecatedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseTrashedDeprecatedDetails._all_fields_ = [('event_uuid', ShowcaseTrashedDeprecatedDetails._event_uuid_validator)]

ShowcaseTrashedDeprecatedType._description_validator = bv.String()
ShowcaseTrashedDeprecatedType._all_field_names_ = set(['description'])
ShowcaseTrashedDeprecatedType._all_fields_ = [('description', ShowcaseTrashedDeprecatedType._description_validator)]

ShowcaseTrashedDetails._event_uuid_validator = bv.String()
ShowcaseTrashedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseTrashedDetails._all_fields_ = [('event_uuid', ShowcaseTrashedDetails._event_uuid_validator)]

ShowcaseTrashedType._description_validator = bv.String()
ShowcaseTrashedType._all_field_names_ = set(['description'])
ShowcaseTrashedType._all_fields_ = [('description', ShowcaseTrashedType._description_validator)]

ShowcaseUnresolveCommentDetails._event_uuid_validator = bv.String()
ShowcaseUnresolveCommentDetails._comment_text_validator = bv.Nullable(bv.String())
ShowcaseUnresolveCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
ShowcaseUnresolveCommentDetails._all_fields_ = [
    ('event_uuid', ShowcaseUnresolveCommentDetails._event_uuid_validator),
    ('comment_text', ShowcaseUnresolveCommentDetails._comment_text_validator),
]

ShowcaseUnresolveCommentType._description_validator = bv.String()
ShowcaseUnresolveCommentType._all_field_names_ = set(['description'])
ShowcaseUnresolveCommentType._all_fields_ = [('description', ShowcaseUnresolveCommentType._description_validator)]

ShowcaseUntrashedDeprecatedDetails._event_uuid_validator = bv.String()
ShowcaseUntrashedDeprecatedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseUntrashedDeprecatedDetails._all_fields_ = [('event_uuid', ShowcaseUntrashedDeprecatedDetails._event_uuid_validator)]

ShowcaseUntrashedDeprecatedType._description_validator = bv.String()
ShowcaseUntrashedDeprecatedType._all_field_names_ = set(['description'])
ShowcaseUntrashedDeprecatedType._all_fields_ = [('description', ShowcaseUntrashedDeprecatedType._description_validator)]

ShowcaseUntrashedDetails._event_uuid_validator = bv.String()
ShowcaseUntrashedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseUntrashedDetails._all_fields_ = [('event_uuid', ShowcaseUntrashedDetails._event_uuid_validator)]

ShowcaseUntrashedType._description_validator = bv.String()
ShowcaseUntrashedType._all_field_names_ = set(['description'])
ShowcaseUntrashedType._all_fields_ = [('description', ShowcaseUntrashedType._description_validator)]

ShowcaseViewDetails._event_uuid_validator = bv.String()
ShowcaseViewDetails._all_field_names_ = set(['event_uuid'])
ShowcaseViewDetails._all_fields_ = [('event_uuid', ShowcaseViewDetails._event_uuid_validator)]

ShowcaseViewType._description_validator = bv.String()
ShowcaseViewType._all_field_names_ = set(['description'])
ShowcaseViewType._all_fields_ = [('description', ShowcaseViewType._description_validator)]

SignInAsSessionEndDetails._all_field_names_ = set([])
SignInAsSessionEndDetails._all_fields_ = []

SignInAsSessionEndType._description_validator = bv.String()
SignInAsSessionEndType._all_field_names_ = set(['description'])
SignInAsSessionEndType._all_fields_ = [('description', SignInAsSessionEndType._description_validator)]

SignInAsSessionStartDetails._all_field_names_ = set([])
SignInAsSessionStartDetails._all_fields_ = []

SignInAsSessionStartType._description_validator = bv.String()
SignInAsSessionStartType._all_field_names_ = set(['description'])
SignInAsSessionStartType._all_fields_ = [('description', SignInAsSessionStartType._description_validator)]

SmartSyncChangePolicyDetails._new_value_validator = bv.Nullable(team_policies.SmartSyncPolicy_validator)
SmartSyncChangePolicyDetails._previous_value_validator = bv.Nullable(team_policies.SmartSyncPolicy_validator)
SmartSyncChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SmartSyncChangePolicyDetails._all_fields_ = [
    ('new_value', SmartSyncChangePolicyDetails._new_value_validator),
    ('previous_value', SmartSyncChangePolicyDetails._previous_value_validator),
]

SmartSyncChangePolicyType._description_validator = bv.String()
SmartSyncChangePolicyType._all_field_names_ = set(['description'])
SmartSyncChangePolicyType._all_fields_ = [('description', SmartSyncChangePolicyType._description_validator)]

SmartSyncCreateAdminPrivilegeReportDetails._all_field_names_ = set([])
SmartSyncCreateAdminPrivilegeReportDetails._all_fields_ = []

SmartSyncCreateAdminPrivilegeReportType._description_validator = bv.String()
SmartSyncCreateAdminPrivilegeReportType._all_field_names_ = set(['description'])
SmartSyncCreateAdminPrivilegeReportType._all_fields_ = [('description', SmartSyncCreateAdminPrivilegeReportType._description_validator)]

SmartSyncNotOptOutDetails._previous_value_validator = SmartSyncOptOutPolicy_validator
SmartSyncNotOptOutDetails._new_value_validator = SmartSyncOptOutPolicy_validator
SmartSyncNotOptOutDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
SmartSyncNotOptOutDetails._all_fields_ = [
    ('previous_value', SmartSyncNotOptOutDetails._previous_value_validator),
    ('new_value', SmartSyncNotOptOutDetails._new_value_validator),
]

SmartSyncNotOptOutType._description_validator = bv.String()
SmartSyncNotOptOutType._all_field_names_ = set(['description'])
SmartSyncNotOptOutType._all_fields_ = [('description', SmartSyncNotOptOutType._description_validator)]

SmartSyncOptOutDetails._previous_value_validator = SmartSyncOptOutPolicy_validator
SmartSyncOptOutDetails._new_value_validator = SmartSyncOptOutPolicy_validator
SmartSyncOptOutDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
SmartSyncOptOutDetails._all_fields_ = [
    ('previous_value', SmartSyncOptOutDetails._previous_value_validator),
    ('new_value', SmartSyncOptOutDetails._new_value_validator),
]

SmartSyncOptOutPolicy._default_validator = bv.Void()
SmartSyncOptOutPolicy._opted_out_validator = bv.Void()
SmartSyncOptOutPolicy._other_validator = bv.Void()
SmartSyncOptOutPolicy._tagmap = {
    'default': SmartSyncOptOutPolicy._default_validator,
    'opted_out': SmartSyncOptOutPolicy._opted_out_validator,
    'other': SmartSyncOptOutPolicy._other_validator,
}

SmartSyncOptOutPolicy.default = SmartSyncOptOutPolicy('default')
SmartSyncOptOutPolicy.opted_out = SmartSyncOptOutPolicy('opted_out')
SmartSyncOptOutPolicy.other = SmartSyncOptOutPolicy('other')

SmartSyncOptOutType._description_validator = bv.String()
SmartSyncOptOutType._all_field_names_ = set(['description'])
SmartSyncOptOutType._all_fields_ = [('description', SmartSyncOptOutType._description_validator)]

SpaceCapsType._hard_validator = bv.Void()
SpaceCapsType._off_validator = bv.Void()
SpaceCapsType._soft_validator = bv.Void()
SpaceCapsType._other_validator = bv.Void()
SpaceCapsType._tagmap = {
    'hard': SpaceCapsType._hard_validator,
    'off': SpaceCapsType._off_validator,
    'soft': SpaceCapsType._soft_validator,
    'other': SpaceCapsType._other_validator,
}

SpaceCapsType.hard = SpaceCapsType('hard')
SpaceCapsType.off = SpaceCapsType('off')
SpaceCapsType.soft = SpaceCapsType('soft')
SpaceCapsType.other = SpaceCapsType('other')

SpaceLimitsStatus._within_quota_validator = bv.Void()
SpaceLimitsStatus._near_quota_validator = bv.Void()
SpaceLimitsStatus._over_quota_validator = bv.Void()
SpaceLimitsStatus._other_validator = bv.Void()
SpaceLimitsStatus._tagmap = {
    'within_quota': SpaceLimitsStatus._within_quota_validator,
    'near_quota': SpaceLimitsStatus._near_quota_validator,
    'over_quota': SpaceLimitsStatus._over_quota_validator,
    'other': SpaceLimitsStatus._other_validator,
}

SpaceLimitsStatus.within_quota = SpaceLimitsStatus('within_quota')
SpaceLimitsStatus.near_quota = SpaceLimitsStatus('near_quota')
SpaceLimitsStatus.over_quota = SpaceLimitsStatus('over_quota')
SpaceLimitsStatus.other = SpaceLimitsStatus('other')

SsoAddCertDetails._certificate_details_validator = Certificate_validator
SsoAddCertDetails._all_field_names_ = set(['certificate_details'])
SsoAddCertDetails._all_fields_ = [('certificate_details', SsoAddCertDetails._certificate_details_validator)]

SsoAddCertType._description_validator = bv.String()
SsoAddCertType._all_field_names_ = set(['description'])
SsoAddCertType._all_fields_ = [('description', SsoAddCertType._description_validator)]

SsoAddLoginUrlDetails._new_value_validator = bv.String()
SsoAddLoginUrlDetails._all_field_names_ = set(['new_value'])
SsoAddLoginUrlDetails._all_fields_ = [('new_value', SsoAddLoginUrlDetails._new_value_validator)]

SsoAddLoginUrlType._description_validator = bv.String()
SsoAddLoginUrlType._all_field_names_ = set(['description'])
SsoAddLoginUrlType._all_fields_ = [('description', SsoAddLoginUrlType._description_validator)]

SsoAddLogoutUrlDetails._new_value_validator = bv.Nullable(bv.String())
SsoAddLogoutUrlDetails._all_field_names_ = set(['new_value'])
SsoAddLogoutUrlDetails._all_fields_ = [('new_value', SsoAddLogoutUrlDetails._new_value_validator)]

SsoAddLogoutUrlType._description_validator = bv.String()
SsoAddLogoutUrlType._all_field_names_ = set(['description'])
SsoAddLogoutUrlType._all_fields_ = [('description', SsoAddLogoutUrlType._description_validator)]

SsoChangeCertDetails._previous_certificate_details_validator = bv.Nullable(Certificate_validator)
SsoChangeCertDetails._new_certificate_details_validator = Certificate_validator
SsoChangeCertDetails._all_field_names_ = set([
    'previous_certificate_details',
    'new_certificate_details',
])
SsoChangeCertDetails._all_fields_ = [
    ('previous_certificate_details', SsoChangeCertDetails._previous_certificate_details_validator),
    ('new_certificate_details', SsoChangeCertDetails._new_certificate_details_validator),
]

SsoChangeCertType._description_validator = bv.String()
SsoChangeCertType._all_field_names_ = set(['description'])
SsoChangeCertType._all_fields_ = [('description', SsoChangeCertType._description_validator)]

SsoChangeLoginUrlDetails._previous_value_validator = bv.String()
SsoChangeLoginUrlDetails._new_value_validator = bv.String()
SsoChangeLoginUrlDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
SsoChangeLoginUrlDetails._all_fields_ = [
    ('previous_value', SsoChangeLoginUrlDetails._previous_value_validator),
    ('new_value', SsoChangeLoginUrlDetails._new_value_validator),
]

SsoChangeLoginUrlType._description_validator = bv.String()
SsoChangeLoginUrlType._all_field_names_ = set(['description'])
SsoChangeLoginUrlType._all_fields_ = [('description', SsoChangeLoginUrlType._description_validator)]

SsoChangeLogoutUrlDetails._previous_value_validator = bv.Nullable(bv.String())
SsoChangeLogoutUrlDetails._new_value_validator = bv.Nullable(bv.String())
SsoChangeLogoutUrlDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
SsoChangeLogoutUrlDetails._all_fields_ = [
    ('previous_value', SsoChangeLogoutUrlDetails._previous_value_validator),
    ('new_value', SsoChangeLogoutUrlDetails._new_value_validator),
]

SsoChangeLogoutUrlType._description_validator = bv.String()
SsoChangeLogoutUrlType._all_field_names_ = set(['description'])
SsoChangeLogoutUrlType._all_fields_ = [('description', SsoChangeLogoutUrlType._description_validator)]

SsoChangePolicyDetails._new_value_validator = team_policies.SsoPolicy_validator
SsoChangePolicyDetails._previous_value_validator = bv.Nullable(team_policies.SsoPolicy_validator)
SsoChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SsoChangePolicyDetails._all_fields_ = [
    ('new_value', SsoChangePolicyDetails._new_value_validator),
    ('previous_value', SsoChangePolicyDetails._previous_value_validator),
]

SsoChangePolicyType._description_validator = bv.String()
SsoChangePolicyType._all_field_names_ = set(['description'])
SsoChangePolicyType._all_fields_ = [('description', SsoChangePolicyType._description_validator)]

SsoChangeSamlIdentityModeDetails._previous_value_validator = bv.Int64()
SsoChangeSamlIdentityModeDetails._new_value_validator = bv.Int64()
SsoChangeSamlIdentityModeDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
SsoChangeSamlIdentityModeDetails._all_fields_ = [
    ('previous_value', SsoChangeSamlIdentityModeDetails._previous_value_validator),
    ('new_value', SsoChangeSamlIdentityModeDetails._new_value_validator),
]

SsoChangeSamlIdentityModeType._description_validator = bv.String()
SsoChangeSamlIdentityModeType._all_field_names_ = set(['description'])
SsoChangeSamlIdentityModeType._all_fields_ = [('description', SsoChangeSamlIdentityModeType._description_validator)]

SsoErrorDetails._error_details_validator = FailureDetailsLogInfo_validator
SsoErrorDetails._all_field_names_ = set(['error_details'])
SsoErrorDetails._all_fields_ = [('error_details', SsoErrorDetails._error_details_validator)]

SsoErrorType._description_validator = bv.String()
SsoErrorType._all_field_names_ = set(['description'])
SsoErrorType._all_fields_ = [('description', SsoErrorType._description_validator)]

SsoRemoveCertDetails._all_field_names_ = set([])
SsoRemoveCertDetails._all_fields_ = []

SsoRemoveCertType._description_validator = bv.String()
SsoRemoveCertType._all_field_names_ = set(['description'])
SsoRemoveCertType._all_fields_ = [('description', SsoRemoveCertType._description_validator)]

SsoRemoveLoginUrlDetails._previous_value_validator = bv.String()
SsoRemoveLoginUrlDetails._all_field_names_ = set(['previous_value'])
SsoRemoveLoginUrlDetails._all_fields_ = [('previous_value', SsoRemoveLoginUrlDetails._previous_value_validator)]

SsoRemoveLoginUrlType._description_validator = bv.String()
SsoRemoveLoginUrlType._all_field_names_ = set(['description'])
SsoRemoveLoginUrlType._all_fields_ = [('description', SsoRemoveLoginUrlType._description_validator)]

SsoRemoveLogoutUrlDetails._previous_value_validator = bv.String()
SsoRemoveLogoutUrlDetails._all_field_names_ = set(['previous_value'])
SsoRemoveLogoutUrlDetails._all_fields_ = [('previous_value', SsoRemoveLogoutUrlDetails._previous_value_validator)]

SsoRemoveLogoutUrlType._description_validator = bv.String()
SsoRemoveLogoutUrlType._all_field_names_ = set(['description'])
SsoRemoveLogoutUrlType._all_fields_ = [('description', SsoRemoveLogoutUrlType._description_validator)]

TeamActivityCreateReportDetails._start_date_validator = common.DropboxTimestamp_validator
TeamActivityCreateReportDetails._end_date_validator = common.DropboxTimestamp_validator
TeamActivityCreateReportDetails._all_field_names_ = set([
    'start_date',
    'end_date',
])
TeamActivityCreateReportDetails._all_fields_ = [
    ('start_date', TeamActivityCreateReportDetails._start_date_validator),
    ('end_date', TeamActivityCreateReportDetails._end_date_validator),
]

TeamActivityCreateReportFailDetails._failure_reason_validator = team.TeamReportFailureReason_validator
TeamActivityCreateReportFailDetails._all_field_names_ = set(['failure_reason'])
TeamActivityCreateReportFailDetails._all_fields_ = [('failure_reason', TeamActivityCreateReportFailDetails._failure_reason_validator)]

TeamActivityCreateReportFailType._description_validator = bv.String()
TeamActivityCreateReportFailType._all_field_names_ = set(['description'])
TeamActivityCreateReportFailType._all_fields_ = [('description', TeamActivityCreateReportFailType._description_validator)]

TeamActivityCreateReportType._description_validator = bv.String()
TeamActivityCreateReportType._all_field_names_ = set(['description'])
TeamActivityCreateReportType._all_fields_ = [('description', TeamActivityCreateReportType._description_validator)]

TeamEvent._timestamp_validator = common.DropboxTimestamp_validator
TeamEvent._event_category_validator = EventCategory_validator
TeamEvent._actor_validator = bv.Nullable(ActorLogInfo_validator)
TeamEvent._origin_validator = bv.Nullable(OriginLogInfo_validator)
TeamEvent._involve_non_team_member_validator = bv.Nullable(bv.Boolean())
TeamEvent._context_validator = bv.Nullable(ContextLogInfo_validator)
TeamEvent._participants_validator = bv.Nullable(bv.List(ParticipantLogInfo_validator))
TeamEvent._assets_validator = bv.Nullable(bv.List(AssetLogInfo_validator))
TeamEvent._event_type_validator = EventType_validator
TeamEvent._details_validator = EventDetails_validator
TeamEvent._all_field_names_ = set([
    'timestamp',
    'event_category',
    'actor',
    'origin',
    'involve_non_team_member',
    'context',
    'participants',
    'assets',
    'event_type',
    'details',
])
TeamEvent._all_fields_ = [
    ('timestamp', TeamEvent._timestamp_validator),
    ('event_category', TeamEvent._event_category_validator),
    ('actor', TeamEvent._actor_validator),
    ('origin', TeamEvent._origin_validator),
    ('involve_non_team_member', TeamEvent._involve_non_team_member_validator),
    ('context', TeamEvent._context_validator),
    ('participants', TeamEvent._participants_validator),
    ('assets', TeamEvent._assets_validator),
    ('event_type', TeamEvent._event_type_validator),
    ('details', TeamEvent._details_validator),
]

TeamExtensionsPolicy._disabled_validator = bv.Void()
TeamExtensionsPolicy._enabled_validator = bv.Void()
TeamExtensionsPolicy._other_validator = bv.Void()
TeamExtensionsPolicy._tagmap = {
    'disabled': TeamExtensionsPolicy._disabled_validator,
    'enabled': TeamExtensionsPolicy._enabled_validator,
    'other': TeamExtensionsPolicy._other_validator,
}

TeamExtensionsPolicy.disabled = TeamExtensionsPolicy('disabled')
TeamExtensionsPolicy.enabled = TeamExtensionsPolicy('enabled')
TeamExtensionsPolicy.other = TeamExtensionsPolicy('other')

TeamExtensionsPolicyChangedDetails._new_value_validator = TeamExtensionsPolicy_validator
TeamExtensionsPolicyChangedDetails._previous_value_validator = TeamExtensionsPolicy_validator
TeamExtensionsPolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
TeamExtensionsPolicyChangedDetails._all_fields_ = [
    ('new_value', TeamExtensionsPolicyChangedDetails._new_value_validator),
    ('previous_value', TeamExtensionsPolicyChangedDetails._previous_value_validator),
]

TeamExtensionsPolicyChangedType._description_validator = bv.String()
TeamExtensionsPolicyChangedType._all_field_names_ = set(['description'])
TeamExtensionsPolicyChangedType._all_fields_ = [('description', TeamExtensionsPolicyChangedType._description_validator)]

TeamFolderChangeStatusDetails._new_value_validator = team.TeamFolderStatus_validator
TeamFolderChangeStatusDetails._previous_value_validator = bv.Nullable(team.TeamFolderStatus_validator)
TeamFolderChangeStatusDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
TeamFolderChangeStatusDetails._all_fields_ = [
    ('new_value', TeamFolderChangeStatusDetails._new_value_validator),
    ('previous_value', TeamFolderChangeStatusDetails._previous_value_validator),
]

TeamFolderChangeStatusType._description_validator = bv.String()
TeamFolderChangeStatusType._all_field_names_ = set(['description'])
TeamFolderChangeStatusType._all_fields_ = [('description', TeamFolderChangeStatusType._description_validator)]

TeamFolderCreateDetails._all_field_names_ = set([])
TeamFolderCreateDetails._all_fields_ = []

TeamFolderCreateType._description_validator = bv.String()
TeamFolderCreateType._all_field_names_ = set(['description'])
TeamFolderCreateType._all_fields_ = [('description', TeamFolderCreateType._description_validator)]

TeamFolderDowngradeDetails._target_asset_index_validator = bv.UInt64()
TeamFolderDowngradeDetails._all_field_names_ = set(['target_asset_index'])
TeamFolderDowngradeDetails._all_fields_ = [('target_asset_index', TeamFolderDowngradeDetails._target_asset_index_validator)]

TeamFolderDowngradeType._description_validator = bv.String()
TeamFolderDowngradeType._all_field_names_ = set(['description'])
TeamFolderDowngradeType._all_fields_ = [('description', TeamFolderDowngradeType._description_validator)]

TeamFolderPermanentlyDeleteDetails._all_field_names_ = set([])
TeamFolderPermanentlyDeleteDetails._all_fields_ = []

TeamFolderPermanentlyDeleteType._description_validator = bv.String()
TeamFolderPermanentlyDeleteType._all_field_names_ = set(['description'])
TeamFolderPermanentlyDeleteType._all_fields_ = [('description', TeamFolderPermanentlyDeleteType._description_validator)]

TeamFolderRenameDetails._previous_folder_name_validator = bv.String()
TeamFolderRenameDetails._new_folder_name_validator = bv.String()
TeamFolderRenameDetails._all_field_names_ = set([
    'previous_folder_name',
    'new_folder_name',
])
TeamFolderRenameDetails._all_fields_ = [
    ('previous_folder_name', TeamFolderRenameDetails._previous_folder_name_validator),
    ('new_folder_name', TeamFolderRenameDetails._new_folder_name_validator),
]

TeamFolderRenameType._description_validator = bv.String()
TeamFolderRenameType._all_field_names_ = set(['description'])
TeamFolderRenameType._all_fields_ = [('description', TeamFolderRenameType._description_validator)]

TeamLinkedAppLogInfo._field_names_ = set([])
TeamLinkedAppLogInfo._all_field_names_ = AppLogInfo._all_field_names_.union(TeamLinkedAppLogInfo._field_names_)
TeamLinkedAppLogInfo._fields_ = []
TeamLinkedAppLogInfo._all_fields_ = AppLogInfo._all_fields_ + TeamLinkedAppLogInfo._fields_

TeamMemberLogInfo._team_member_id_validator = bv.Nullable(team_common.TeamMemberId_validator)
TeamMemberLogInfo._member_external_id_validator = bv.Nullable(team_common.MemberExternalId_validator)
TeamMemberLogInfo._field_names_ = set([
    'team_member_id',
    'member_external_id',
])
TeamMemberLogInfo._all_field_names_ = UserLogInfo._all_field_names_.union(TeamMemberLogInfo._field_names_)
TeamMemberLogInfo._fields_ = [
    ('team_member_id', TeamMemberLogInfo._team_member_id_validator),
    ('member_external_id', TeamMemberLogInfo._member_external_id_validator),
]
TeamMemberLogInfo._all_fields_ = UserLogInfo._all_fields_ + TeamMemberLogInfo._fields_

TeamMembershipType._free_validator = bv.Void()
TeamMembershipType._full_validator = bv.Void()
TeamMembershipType._other_validator = bv.Void()
TeamMembershipType._tagmap = {
    'free': TeamMembershipType._free_validator,
    'full': TeamMembershipType._full_validator,
    'other': TeamMembershipType._other_validator,
}

TeamMembershipType.free = TeamMembershipType('free')
TeamMembershipType.full = TeamMembershipType('full')
TeamMembershipType.other = TeamMembershipType('other')

TeamMergeFromDetails._team_name_validator = bv.String()
TeamMergeFromDetails._all_field_names_ = set(['team_name'])
TeamMergeFromDetails._all_fields_ = [('team_name', TeamMergeFromDetails._team_name_validator)]

TeamMergeFromType._description_validator = bv.String()
TeamMergeFromType._all_field_names_ = set(['description'])
TeamMergeFromType._all_fields_ = [('description', TeamMergeFromType._description_validator)]

TeamMergeRequestAcceptedDetails._request_accepted_details_validator = TeamMergeRequestAcceptedExtraDetails_validator
TeamMergeRequestAcceptedDetails._all_field_names_ = set(['request_accepted_details'])
TeamMergeRequestAcceptedDetails._all_fields_ = [('request_accepted_details', TeamMergeRequestAcceptedDetails._request_accepted_details_validator)]

TeamMergeRequestAcceptedExtraDetails._primary_team_validator = PrimaryTeamRequestAcceptedDetails_validator
TeamMergeRequestAcceptedExtraDetails._secondary_team_validator = SecondaryTeamRequestAcceptedDetails_validator
TeamMergeRequestAcceptedExtraDetails._other_validator = bv.Void()
TeamMergeRequestAcceptedExtraDetails._tagmap = {
    'primary_team': TeamMergeRequestAcceptedExtraDetails._primary_team_validator,
    'secondary_team': TeamMergeRequestAcceptedExtraDetails._secondary_team_validator,
    'other': TeamMergeRequestAcceptedExtraDetails._other_validator,
}

TeamMergeRequestAcceptedExtraDetails.other = TeamMergeRequestAcceptedExtraDetails('other')

TeamMergeRequestAcceptedShownToPrimaryTeamDetails._secondary_team_validator = bv.String()
TeamMergeRequestAcceptedShownToPrimaryTeamDetails._sent_by_validator = bv.String()
TeamMergeRequestAcceptedShownToPrimaryTeamDetails._all_field_names_ = set([
    'secondary_team',
    'sent_by',
])
TeamMergeRequestAcceptedShownToPrimaryTeamDetails._all_fields_ = [
    ('secondary_team', TeamMergeRequestAcceptedShownToPrimaryTeamDetails._secondary_team_validator),
    ('sent_by', TeamMergeRequestAcceptedShownToPrimaryTeamDetails._sent_by_validator),
]

TeamMergeRequestAcceptedShownToPrimaryTeamType._description_validator = bv.String()
TeamMergeRequestAcceptedShownToPrimaryTeamType._all_field_names_ = set(['description'])
TeamMergeRequestAcceptedShownToPrimaryTeamType._all_fields_ = [('description', TeamMergeRequestAcceptedShownToPrimaryTeamType._description_validator)]

TeamMergeRequestAcceptedShownToSecondaryTeamDetails._primary_team_validator = bv.String()
TeamMergeRequestAcceptedShownToSecondaryTeamDetails._sent_by_validator = bv.String()
TeamMergeRequestAcceptedShownToSecondaryTeamDetails._all_field_names_ = set([
    'primary_team',
    'sent_by',
])
TeamMergeRequestAcceptedShownToSecondaryTeamDetails._all_fields_ = [
    ('primary_team', TeamMergeRequestAcceptedShownToSecondaryTeamDetails._primary_team_validator),
    ('sent_by', TeamMergeRequestAcceptedShownToSecondaryTeamDetails._sent_by_validator),
]

TeamMergeRequestAcceptedShownToSecondaryTeamType._description_validator = bv.String()
TeamMergeRequestAcceptedShownToSecondaryTeamType._all_field_names_ = set(['description'])
TeamMergeRequestAcceptedShownToSecondaryTeamType._all_fields_ = [('description', TeamMergeRequestAcceptedShownToSecondaryTeamType._description_validator)]

TeamMergeRequestAcceptedType._description_validator = bv.String()
TeamMergeRequestAcceptedType._all_field_names_ = set(['description'])
TeamMergeRequestAcceptedType._all_fields_ = [('description', TeamMergeRequestAcceptedType._description_validator)]

TeamMergeRequestAutoCanceledDetails._details_validator = bv.Nullable(bv.String())
TeamMergeRequestAutoCanceledDetails._all_field_names_ = set(['details'])
TeamMergeRequestAutoCanceledDetails._all_fields_ = [('details', TeamMergeRequestAutoCanceledDetails._details_validator)]

TeamMergeRequestAutoCanceledType._description_validator = bv.String()
TeamMergeRequestAutoCanceledType._all_field_names_ = set(['description'])
TeamMergeRequestAutoCanceledType._all_fields_ = [('description', TeamMergeRequestAutoCanceledType._description_validator)]

TeamMergeRequestCanceledDetails._request_canceled_details_validator = TeamMergeRequestCanceledExtraDetails_validator
TeamMergeRequestCanceledDetails._all_field_names_ = set(['request_canceled_details'])
TeamMergeRequestCanceledDetails._all_fields_ = [('request_canceled_details', TeamMergeRequestCanceledDetails._request_canceled_details_validator)]

TeamMergeRequestCanceledExtraDetails._primary_team_validator = PrimaryTeamRequestCanceledDetails_validator
TeamMergeRequestCanceledExtraDetails._secondary_team_validator = SecondaryTeamRequestCanceledDetails_validator
TeamMergeRequestCanceledExtraDetails._other_validator = bv.Void()
TeamMergeRequestCanceledExtraDetails._tagmap = {
    'primary_team': TeamMergeRequestCanceledExtraDetails._primary_team_validator,
    'secondary_team': TeamMergeRequestCanceledExtraDetails._secondary_team_validator,
    'other': TeamMergeRequestCanceledExtraDetails._other_validator,
}

TeamMergeRequestCanceledExtraDetails.other = TeamMergeRequestCanceledExtraDetails('other')

TeamMergeRequestCanceledShownToPrimaryTeamDetails._secondary_team_validator = bv.String()
TeamMergeRequestCanceledShownToPrimaryTeamDetails._sent_by_validator = bv.String()
TeamMergeRequestCanceledShownToPrimaryTeamDetails._all_field_names_ = set([
    'secondary_team',
    'sent_by',
])
TeamMergeRequestCanceledShownToPrimaryTeamDetails._all_fields_ = [
    ('secondary_team', TeamMergeRequestCanceledShownToPrimaryTeamDetails._secondary_team_validator),
    ('sent_by', TeamMergeRequestCanceledShownToPrimaryTeamDetails._sent_by_validator),
]

TeamMergeRequestCanceledShownToPrimaryTeamType._description_validator = bv.String()
TeamMergeRequestCanceledShownToPrimaryTeamType._all_field_names_ = set(['description'])
TeamMergeRequestCanceledShownToPrimaryTeamType._all_fields_ = [('description', TeamMergeRequestCanceledShownToPrimaryTeamType._description_validator)]

TeamMergeRequestCanceledShownToSecondaryTeamDetails._sent_to_validator = bv.String()
TeamMergeRequestCanceledShownToSecondaryTeamDetails._sent_by_validator = bv.String()
TeamMergeRequestCanceledShownToSecondaryTeamDetails._all_field_names_ = set([
    'sent_to',
    'sent_by',
])
TeamMergeRequestCanceledShownToSecondaryTeamDetails._all_fields_ = [
    ('sent_to', TeamMergeRequestCanceledShownToSecondaryTeamDetails._sent_to_validator),
    ('sent_by', TeamMergeRequestCanceledShownToSecondaryTeamDetails._sent_by_validator),
]

TeamMergeRequestCanceledShownToSecondaryTeamType._description_validator = bv.String()
TeamMergeRequestCanceledShownToSecondaryTeamType._all_field_names_ = set(['description'])
TeamMergeRequestCanceledShownToSecondaryTeamType._all_fields_ = [('description', TeamMergeRequestCanceledShownToSecondaryTeamType._description_validator)]

TeamMergeRequestCanceledType._description_validator = bv.String()
TeamMergeRequestCanceledType._all_field_names_ = set(['description'])
TeamMergeRequestCanceledType._all_fields_ = [('description', TeamMergeRequestCanceledType._description_validator)]

TeamMergeRequestExpiredDetails._request_expired_details_validator = TeamMergeRequestExpiredExtraDetails_validator
TeamMergeRequestExpiredDetails._all_field_names_ = set(['request_expired_details'])
TeamMergeRequestExpiredDetails._all_fields_ = [('request_expired_details', TeamMergeRequestExpiredDetails._request_expired_details_validator)]

TeamMergeRequestExpiredExtraDetails._primary_team_validator = PrimaryTeamRequestExpiredDetails_validator
TeamMergeRequestExpiredExtraDetails._secondary_team_validator = SecondaryTeamRequestExpiredDetails_validator
TeamMergeRequestExpiredExtraDetails._other_validator = bv.Void()
TeamMergeRequestExpiredExtraDetails._tagmap = {
    'primary_team': TeamMergeRequestExpiredExtraDetails._primary_team_validator,
    'secondary_team': TeamMergeRequestExpiredExtraDetails._secondary_team_validator,
    'other': TeamMergeRequestExpiredExtraDetails._other_validator,
}

TeamMergeRequestExpiredExtraDetails.other = TeamMergeRequestExpiredExtraDetails('other')

TeamMergeRequestExpiredShownToPrimaryTeamDetails._secondary_team_validator = bv.String()
TeamMergeRequestExpiredShownToPrimaryTeamDetails._sent_by_validator = bv.String()
TeamMergeRequestExpiredShownToPrimaryTeamDetails._all_field_names_ = set([
    'secondary_team',
    'sent_by',
])
TeamMergeRequestExpiredShownToPrimaryTeamDetails._all_fields_ = [
    ('secondary_team', TeamMergeRequestExpiredShownToPrimaryTeamDetails._secondary_team_validator),
    ('sent_by', TeamMergeRequestExpiredShownToPrimaryTeamDetails._sent_by_validator),
]

TeamMergeRequestExpiredShownToPrimaryTeamType._description_validator = bv.String()
TeamMergeRequestExpiredShownToPrimaryTeamType._all_field_names_ = set(['description'])
TeamMergeRequestExpiredShownToPrimaryTeamType._all_fields_ = [('description', TeamMergeRequestExpiredShownToPrimaryTeamType._description_validator)]

TeamMergeRequestExpiredShownToSecondaryTeamDetails._sent_to_validator = bv.String()
TeamMergeRequestExpiredShownToSecondaryTeamDetails._all_field_names_ = set(['sent_to'])
TeamMergeRequestExpiredShownToSecondaryTeamDetails._all_fields_ = [('sent_to', TeamMergeRequestExpiredShownToSecondaryTeamDetails._sent_to_validator)]

TeamMergeRequestExpiredShownToSecondaryTeamType._description_validator = bv.String()
TeamMergeRequestExpiredShownToSecondaryTeamType._all_field_names_ = set(['description'])
TeamMergeRequestExpiredShownToSecondaryTeamType._all_fields_ = [('description', TeamMergeRequestExpiredShownToSecondaryTeamType._description_validator)]

TeamMergeRequestExpiredType._description_validator = bv.String()
TeamMergeRequestExpiredType._all_field_names_ = set(['description'])
TeamMergeRequestExpiredType._all_fields_ = [('description', TeamMergeRequestExpiredType._description_validator)]

TeamMergeRequestRejectedShownToPrimaryTeamDetails._secondary_team_validator = bv.String()
TeamMergeRequestRejectedShownToPrimaryTeamDetails._sent_by_validator = bv.String()
TeamMergeRequestRejectedShownToPrimaryTeamDetails._all_field_names_ = set([
    'secondary_team',
    'sent_by',
])
TeamMergeRequestRejectedShownToPrimaryTeamDetails._all_fields_ = [
    ('secondary_team', TeamMergeRequestRejectedShownToPrimaryTeamDetails._secondary_team_validator),
    ('sent_by', TeamMergeRequestRejectedShownToPrimaryTeamDetails._sent_by_validator),
]

TeamMergeRequestRejectedShownToPrimaryTeamType._description_validator = bv.String()
TeamMergeRequestRejectedShownToPrimaryTeamType._all_field_names_ = set(['description'])
TeamMergeRequestRejectedShownToPrimaryTeamType._all_fields_ = [('description', TeamMergeRequestRejectedShownToPrimaryTeamType._description_validator)]

TeamMergeRequestRejectedShownToSecondaryTeamDetails._sent_by_validator = bv.String()
TeamMergeRequestRejectedShownToSecondaryTeamDetails._all_field_names_ = set(['sent_by'])
TeamMergeRequestRejectedShownToSecondaryTeamDetails._all_fields_ = [('sent_by', TeamMergeRequestRejectedShownToSecondaryTeamDetails._sent_by_validator)]

TeamMergeRequestRejectedShownToSecondaryTeamType._description_validator = bv.String()
TeamMergeRequestRejectedShownToSecondaryTeamType._all_field_names_ = set(['description'])
TeamMergeRequestRejectedShownToSecondaryTeamType._all_fields_ = [('description', TeamMergeRequestRejectedShownToSecondaryTeamType._description_validator)]

TeamMergeRequestReminderDetails._request_reminder_details_validator = TeamMergeRequestReminderExtraDetails_validator
TeamMergeRequestReminderDetails._all_field_names_ = set(['request_reminder_details'])
TeamMergeRequestReminderDetails._all_fields_ = [('request_reminder_details', TeamMergeRequestReminderDetails._request_reminder_details_validator)]

TeamMergeRequestReminderExtraDetails._primary_team_validator = PrimaryTeamRequestReminderDetails_validator
TeamMergeRequestReminderExtraDetails._secondary_team_validator = SecondaryTeamRequestReminderDetails_validator
TeamMergeRequestReminderExtraDetails._other_validator = bv.Void()
TeamMergeRequestReminderExtraDetails._tagmap = {
    'primary_team': TeamMergeRequestReminderExtraDetails._primary_team_validator,
    'secondary_team': TeamMergeRequestReminderExtraDetails._secondary_team_validator,
    'other': TeamMergeRequestReminderExtraDetails._other_validator,
}

TeamMergeRequestReminderExtraDetails.other = TeamMergeRequestReminderExtraDetails('other')

TeamMergeRequestReminderShownToPrimaryTeamDetails._secondary_team_validator = bv.String()
TeamMergeRequestReminderShownToPrimaryTeamDetails._sent_to_validator = bv.String()
TeamMergeRequestReminderShownToPrimaryTeamDetails._all_field_names_ = set([
    'secondary_team',
    'sent_to',
])
TeamMergeRequestReminderShownToPrimaryTeamDetails._all_fields_ = [
    ('secondary_team', TeamMergeRequestReminderShownToPrimaryTeamDetails._secondary_team_validator),
    ('sent_to', TeamMergeRequestReminderShownToPrimaryTeamDetails._sent_to_validator),
]

TeamMergeRequestReminderShownToPrimaryTeamType._description_validator = bv.String()
TeamMergeRequestReminderShownToPrimaryTeamType._all_field_names_ = set(['description'])
TeamMergeRequestReminderShownToPrimaryTeamType._all_fields_ = [('description', TeamMergeRequestReminderShownToPrimaryTeamType._description_validator)]

TeamMergeRequestReminderShownToSecondaryTeamDetails._sent_to_validator = bv.String()
TeamMergeRequestReminderShownToSecondaryTeamDetails._all_field_names_ = set(['sent_to'])
TeamMergeRequestReminderShownToSecondaryTeamDetails._all_fields_ = [('sent_to', TeamMergeRequestReminderShownToSecondaryTeamDetails._sent_to_validator)]

TeamMergeRequestReminderShownToSecondaryTeamType._description_validator = bv.String()
TeamMergeRequestReminderShownToSecondaryTeamType._all_field_names_ = set(['description'])
TeamMergeRequestReminderShownToSecondaryTeamType._all_fields_ = [('description', TeamMergeRequestReminderShownToSecondaryTeamType._description_validator)]

TeamMergeRequestReminderType._description_validator = bv.String()
TeamMergeRequestReminderType._all_field_names_ = set(['description'])
TeamMergeRequestReminderType._all_fields_ = [('description', TeamMergeRequestReminderType._description_validator)]

TeamMergeRequestRevokedDetails._team_validator = bv.String()
TeamMergeRequestRevokedDetails._all_field_names_ = set(['team'])
TeamMergeRequestRevokedDetails._all_fields_ = [('team', TeamMergeRequestRevokedDetails._team_validator)]

TeamMergeRequestRevokedType._description_validator = bv.String()
TeamMergeRequestRevokedType._all_field_names_ = set(['description'])
TeamMergeRequestRevokedType._all_fields_ = [('description', TeamMergeRequestRevokedType._description_validator)]

TeamMergeRequestSentShownToPrimaryTeamDetails._secondary_team_validator = bv.String()
TeamMergeRequestSentShownToPrimaryTeamDetails._sent_to_validator = bv.String()
TeamMergeRequestSentShownToPrimaryTeamDetails._all_field_names_ = set([
    'secondary_team',
    'sent_to',
])
TeamMergeRequestSentShownToPrimaryTeamDetails._all_fields_ = [
    ('secondary_team', TeamMergeRequestSentShownToPrimaryTeamDetails._secondary_team_validator),
    ('sent_to', TeamMergeRequestSentShownToPrimaryTeamDetails._sent_to_validator),
]

TeamMergeRequestSentShownToPrimaryTeamType._description_validator = bv.String()
TeamMergeRequestSentShownToPrimaryTeamType._all_field_names_ = set(['description'])
TeamMergeRequestSentShownToPrimaryTeamType._all_fields_ = [('description', TeamMergeRequestSentShownToPrimaryTeamType._description_validator)]

TeamMergeRequestSentShownToSecondaryTeamDetails._sent_to_validator = bv.String()
TeamMergeRequestSentShownToSecondaryTeamDetails._all_field_names_ = set(['sent_to'])
TeamMergeRequestSentShownToSecondaryTeamDetails._all_fields_ = [('sent_to', TeamMergeRequestSentShownToSecondaryTeamDetails._sent_to_validator)]

TeamMergeRequestSentShownToSecondaryTeamType._description_validator = bv.String()
TeamMergeRequestSentShownToSecondaryTeamType._all_field_names_ = set(['description'])
TeamMergeRequestSentShownToSecondaryTeamType._all_fields_ = [('description', TeamMergeRequestSentShownToSecondaryTeamType._description_validator)]

TeamMergeToDetails._team_name_validator = bv.String()
TeamMergeToDetails._all_field_names_ = set(['team_name'])
TeamMergeToDetails._all_fields_ = [('team_name', TeamMergeToDetails._team_name_validator)]

TeamMergeToType._description_validator = bv.String()
TeamMergeToType._all_field_names_ = set(['description'])
TeamMergeToType._all_fields_ = [('description', TeamMergeToType._description_validator)]

TeamName._team_display_name_validator = bv.String()
TeamName._team_legal_name_validator = bv.String()
TeamName._all_field_names_ = set([
    'team_display_name',
    'team_legal_name',
])
TeamName._all_fields_ = [
    ('team_display_name', TeamName._team_display_name_validator),
    ('team_legal_name', TeamName._team_legal_name_validator),
]

TeamProfileAddLogoDetails._all_field_names_ = set([])
TeamProfileAddLogoDetails._all_fields_ = []

TeamProfileAddLogoType._description_validator = bv.String()
TeamProfileAddLogoType._all_field_names_ = set(['description'])
TeamProfileAddLogoType._all_fields_ = [('description', TeamProfileAddLogoType._description_validator)]

TeamProfileChangeDefaultLanguageDetails._new_value_validator = common.LanguageCode_validator
TeamProfileChangeDefaultLanguageDetails._previous_value_validator = common.LanguageCode_validator
TeamProfileChangeDefaultLanguageDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
TeamProfileChangeDefaultLanguageDetails._all_fields_ = [
    ('new_value', TeamProfileChangeDefaultLanguageDetails._new_value_validator),
    ('previous_value', TeamProfileChangeDefaultLanguageDetails._previous_value_validator),
]

TeamProfileChangeDefaultLanguageType._description_validator = bv.String()
TeamProfileChangeDefaultLanguageType._all_field_names_ = set(['description'])
TeamProfileChangeDefaultLanguageType._all_fields_ = [('description', TeamProfileChangeDefaultLanguageType._description_validator)]

TeamProfileChangeLogoDetails._all_field_names_ = set([])
TeamProfileChangeLogoDetails._all_fields_ = []

TeamProfileChangeLogoType._description_validator = bv.String()
TeamProfileChangeLogoType._all_field_names_ = set(['description'])
TeamProfileChangeLogoType._all_fields_ = [('description', TeamProfileChangeLogoType._description_validator)]

TeamProfileChangeNameDetails._previous_value_validator = bv.Nullable(TeamName_validator)
TeamProfileChangeNameDetails._new_value_validator = TeamName_validator
TeamProfileChangeNameDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
TeamProfileChangeNameDetails._all_fields_ = [
    ('previous_value', TeamProfileChangeNameDetails._previous_value_validator),
    ('new_value', TeamProfileChangeNameDetails._new_value_validator),
]

TeamProfileChangeNameType._description_validator = bv.String()
TeamProfileChangeNameType._all_field_names_ = set(['description'])
TeamProfileChangeNameType._all_fields_ = [('description', TeamProfileChangeNameType._description_validator)]

TeamProfileRemoveLogoDetails._all_field_names_ = set([])
TeamProfileRemoveLogoDetails._all_fields_ = []

TeamProfileRemoveLogoType._description_validator = bv.String()
TeamProfileRemoveLogoType._all_field_names_ = set(['description'])
TeamProfileRemoveLogoType._all_fields_ = [('description', TeamProfileRemoveLogoType._description_validator)]

TeamSelectiveSyncPolicy._disabled_validator = bv.Void()
TeamSelectiveSyncPolicy._enabled_validator = bv.Void()
TeamSelectiveSyncPolicy._other_validator = bv.Void()
TeamSelectiveSyncPolicy._tagmap = {
    'disabled': TeamSelectiveSyncPolicy._disabled_validator,
    'enabled': TeamSelectiveSyncPolicy._enabled_validator,
    'other': TeamSelectiveSyncPolicy._other_validator,
}

TeamSelectiveSyncPolicy.disabled = TeamSelectiveSyncPolicy('disabled')
TeamSelectiveSyncPolicy.enabled = TeamSelectiveSyncPolicy('enabled')
TeamSelectiveSyncPolicy.other = TeamSelectiveSyncPolicy('other')

TeamSelectiveSyncPolicyChangedDetails._new_value_validator = TeamSelectiveSyncPolicy_validator
TeamSelectiveSyncPolicyChangedDetails._previous_value_validator = TeamSelectiveSyncPolicy_validator
TeamSelectiveSyncPolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
TeamSelectiveSyncPolicyChangedDetails._all_fields_ = [
    ('new_value', TeamSelectiveSyncPolicyChangedDetails._new_value_validator),
    ('previous_value', TeamSelectiveSyncPolicyChangedDetails._previous_value_validator),
]

TeamSelectiveSyncPolicyChangedType._description_validator = bv.String()
TeamSelectiveSyncPolicyChangedType._all_field_names_ = set(['description'])
TeamSelectiveSyncPolicyChangedType._all_fields_ = [('description', TeamSelectiveSyncPolicyChangedType._description_validator)]

TeamSelectiveSyncSettingsChangedDetails._previous_value_validator = files.SyncSetting_validator
TeamSelectiveSyncSettingsChangedDetails._new_value_validator = files.SyncSetting_validator
TeamSelectiveSyncSettingsChangedDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
TeamSelectiveSyncSettingsChangedDetails._all_fields_ = [
    ('previous_value', TeamSelectiveSyncSettingsChangedDetails._previous_value_validator),
    ('new_value', TeamSelectiveSyncSettingsChangedDetails._new_value_validator),
]

TeamSelectiveSyncSettingsChangedType._description_validator = bv.String()
TeamSelectiveSyncSettingsChangedType._all_field_names_ = set(['description'])
TeamSelectiveSyncSettingsChangedType._all_fields_ = [('description', TeamSelectiveSyncSettingsChangedType._description_validator)]

TfaAddBackupPhoneDetails._all_field_names_ = set([])
TfaAddBackupPhoneDetails._all_fields_ = []

TfaAddBackupPhoneType._description_validator = bv.String()
TfaAddBackupPhoneType._all_field_names_ = set(['description'])
TfaAddBackupPhoneType._all_fields_ = [('description', TfaAddBackupPhoneType._description_validator)]

TfaAddSecurityKeyDetails._all_field_names_ = set([])
TfaAddSecurityKeyDetails._all_fields_ = []

TfaAddSecurityKeyType._description_validator = bv.String()
TfaAddSecurityKeyType._all_field_names_ = set(['description'])
TfaAddSecurityKeyType._all_fields_ = [('description', TfaAddSecurityKeyType._description_validator)]

TfaChangeBackupPhoneDetails._all_field_names_ = set([])
TfaChangeBackupPhoneDetails._all_fields_ = []

TfaChangeBackupPhoneType._description_validator = bv.String()
TfaChangeBackupPhoneType._all_field_names_ = set(['description'])
TfaChangeBackupPhoneType._all_fields_ = [('description', TfaChangeBackupPhoneType._description_validator)]

TfaChangePolicyDetails._new_value_validator = team_policies.TwoStepVerificationPolicy_validator
TfaChangePolicyDetails._previous_value_validator = bv.Nullable(team_policies.TwoStepVerificationPolicy_validator)
TfaChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
TfaChangePolicyDetails._all_fields_ = [
    ('new_value', TfaChangePolicyDetails._new_value_validator),
    ('previous_value', TfaChangePolicyDetails._previous_value_validator),
]

TfaChangePolicyType._description_validator = bv.String()
TfaChangePolicyType._all_field_names_ = set(['description'])
TfaChangePolicyType._all_fields_ = [('description', TfaChangePolicyType._description_validator)]

TfaChangeStatusDetails._new_value_validator = TfaConfiguration_validator
TfaChangeStatusDetails._previous_value_validator = bv.Nullable(TfaConfiguration_validator)
TfaChangeStatusDetails._used_rescue_code_validator = bv.Nullable(bv.Boolean())
TfaChangeStatusDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
    'used_rescue_code',
])
TfaChangeStatusDetails._all_fields_ = [
    ('new_value', TfaChangeStatusDetails._new_value_validator),
    ('previous_value', TfaChangeStatusDetails._previous_value_validator),
    ('used_rescue_code', TfaChangeStatusDetails._used_rescue_code_validator),
]

TfaChangeStatusType._description_validator = bv.String()
TfaChangeStatusType._all_field_names_ = set(['description'])
TfaChangeStatusType._all_fields_ = [('description', TfaChangeStatusType._description_validator)]

TfaConfiguration._disabled_validator = bv.Void()
TfaConfiguration._enabled_validator = bv.Void()
TfaConfiguration._sms_validator = bv.Void()
TfaConfiguration._authenticator_validator = bv.Void()
TfaConfiguration._other_validator = bv.Void()
TfaConfiguration._tagmap = {
    'disabled': TfaConfiguration._disabled_validator,
    'enabled': TfaConfiguration._enabled_validator,
    'sms': TfaConfiguration._sms_validator,
    'authenticator': TfaConfiguration._authenticator_validator,
    'other': TfaConfiguration._other_validator,
}

TfaConfiguration.disabled = TfaConfiguration('disabled')
TfaConfiguration.enabled = TfaConfiguration('enabled')
TfaConfiguration.sms = TfaConfiguration('sms')
TfaConfiguration.authenticator = TfaConfiguration('authenticator')
TfaConfiguration.other = TfaConfiguration('other')

TfaRemoveBackupPhoneDetails._all_field_names_ = set([])
TfaRemoveBackupPhoneDetails._all_fields_ = []

TfaRemoveBackupPhoneType._description_validator = bv.String()
TfaRemoveBackupPhoneType._all_field_names_ = set(['description'])
TfaRemoveBackupPhoneType._all_fields_ = [('description', TfaRemoveBackupPhoneType._description_validator)]

TfaRemoveSecurityKeyDetails._all_field_names_ = set([])
TfaRemoveSecurityKeyDetails._all_fields_ = []

TfaRemoveSecurityKeyType._description_validator = bv.String()
TfaRemoveSecurityKeyType._all_field_names_ = set(['description'])
TfaRemoveSecurityKeyType._all_fields_ = [('description', TfaRemoveSecurityKeyType._description_validator)]

TfaResetDetails._all_field_names_ = set([])
TfaResetDetails._all_fields_ = []

TfaResetType._description_validator = bv.String()
TfaResetType._all_field_names_ = set(['description'])
TfaResetType._all_fields_ = [('description', TfaResetType._description_validator)]

TimeUnit._milliseconds_validator = bv.Void()
TimeUnit._seconds_validator = bv.Void()
TimeUnit._minutes_validator = bv.Void()
TimeUnit._hours_validator = bv.Void()
TimeUnit._days_validator = bv.Void()
TimeUnit._weeks_validator = bv.Void()
TimeUnit._months_validator = bv.Void()
TimeUnit._years_validator = bv.Void()
TimeUnit._other_validator = bv.Void()
TimeUnit._tagmap = {
    'milliseconds': TimeUnit._milliseconds_validator,
    'seconds': TimeUnit._seconds_validator,
    'minutes': TimeUnit._minutes_validator,
    'hours': TimeUnit._hours_validator,
    'days': TimeUnit._days_validator,
    'weeks': TimeUnit._weeks_validator,
    'months': TimeUnit._months_validator,
    'years': TimeUnit._years_validator,
    'other': TimeUnit._other_validator,
}

TimeUnit.milliseconds = TimeUnit('milliseconds')
TimeUnit.seconds = TimeUnit('seconds')
TimeUnit.minutes = TimeUnit('minutes')
TimeUnit.hours = TimeUnit('hours')
TimeUnit.days = TimeUnit('days')
TimeUnit.weeks = TimeUnit('weeks')
TimeUnit.months = TimeUnit('months')
TimeUnit.years = TimeUnit('years')
TimeUnit.other = TimeUnit('other')

TrustedNonTeamMemberLogInfo._trusted_non_team_member_type_validator = TrustedNonTeamMemberType_validator
TrustedNonTeamMemberLogInfo._field_names_ = set(['trusted_non_team_member_type'])
TrustedNonTeamMemberLogInfo._all_field_names_ = UserLogInfo._all_field_names_.union(TrustedNonTeamMemberLogInfo._field_names_)
TrustedNonTeamMemberLogInfo._fields_ = [('trusted_non_team_member_type', TrustedNonTeamMemberLogInfo._trusted_non_team_member_type_validator)]
TrustedNonTeamMemberLogInfo._all_fields_ = UserLogInfo._all_fields_ + TrustedNonTeamMemberLogInfo._fields_

TrustedNonTeamMemberType._multi_instance_admin_validator = bv.Void()
TrustedNonTeamMemberType._other_validator = bv.Void()
TrustedNonTeamMemberType._tagmap = {
    'multi_instance_admin': TrustedNonTeamMemberType._multi_instance_admin_validator,
    'other': TrustedNonTeamMemberType._other_validator,
}

TrustedNonTeamMemberType.multi_instance_admin = TrustedNonTeamMemberType('multi_instance_admin')
TrustedNonTeamMemberType.other = TrustedNonTeamMemberType('other')

TrustedTeamsRequestAction._invited_validator = bv.Void()
TrustedTeamsRequestAction._expired_validator = bv.Void()
TrustedTeamsRequestAction._revoked_validator = bv.Void()
TrustedTeamsRequestAction._accepted_validator = bv.Void()
TrustedTeamsRequestAction._declined_validator = bv.Void()
TrustedTeamsRequestAction._other_validator = bv.Void()
TrustedTeamsRequestAction._tagmap = {
    'invited': TrustedTeamsRequestAction._invited_validator,
    'expired': TrustedTeamsRequestAction._expired_validator,
    'revoked': TrustedTeamsRequestAction._revoked_validator,
    'accepted': TrustedTeamsRequestAction._accepted_validator,
    'declined': TrustedTeamsRequestAction._declined_validator,
    'other': TrustedTeamsRequestAction._other_validator,
}

TrustedTeamsRequestAction.invited = TrustedTeamsRequestAction('invited')
TrustedTeamsRequestAction.expired = TrustedTeamsRequestAction('expired')
TrustedTeamsRequestAction.revoked = TrustedTeamsRequestAction('revoked')
TrustedTeamsRequestAction.accepted = TrustedTeamsRequestAction('accepted')
TrustedTeamsRequestAction.declined = TrustedTeamsRequestAction('declined')
TrustedTeamsRequestAction.other = TrustedTeamsRequestAction('other')

TrustedTeamsRequestState._invited_validator = bv.Void()
TrustedTeamsRequestState._linked_validator = bv.Void()
TrustedTeamsRequestState._unlinked_validator = bv.Void()
TrustedTeamsRequestState._other_validator = bv.Void()
TrustedTeamsRequestState._tagmap = {
    'invited': TrustedTeamsRequestState._invited_validator,
    'linked': TrustedTeamsRequestState._linked_validator,
    'unlinked': TrustedTeamsRequestState._unlinked_validator,
    'other': TrustedTeamsRequestState._other_validator,
}

TrustedTeamsRequestState.invited = TrustedTeamsRequestState('invited')
TrustedTeamsRequestState.linked = TrustedTeamsRequestState('linked')
TrustedTeamsRequestState.unlinked = TrustedTeamsRequestState('unlinked')
TrustedTeamsRequestState.other = TrustedTeamsRequestState('other')

TwoAccountChangePolicyDetails._new_value_validator = TwoAccountPolicy_validator
TwoAccountChangePolicyDetails._previous_value_validator = bv.Nullable(TwoAccountPolicy_validator)
TwoAccountChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
TwoAccountChangePolicyDetails._all_fields_ = [
    ('new_value', TwoAccountChangePolicyDetails._new_value_validator),
    ('previous_value', TwoAccountChangePolicyDetails._previous_value_validator),
]

TwoAccountChangePolicyType._description_validator = bv.String()
TwoAccountChangePolicyType._all_field_names_ = set(['description'])
TwoAccountChangePolicyType._all_fields_ = [('description', TwoAccountChangePolicyType._description_validator)]

TwoAccountPolicy._disabled_validator = bv.Void()
TwoAccountPolicy._enabled_validator = bv.Void()
TwoAccountPolicy._other_validator = bv.Void()
TwoAccountPolicy._tagmap = {
    'disabled': TwoAccountPolicy._disabled_validator,
    'enabled': TwoAccountPolicy._enabled_validator,
    'other': TwoAccountPolicy._other_validator,
}

TwoAccountPolicy.disabled = TwoAccountPolicy('disabled')
TwoAccountPolicy.enabled = TwoAccountPolicy('enabled')
TwoAccountPolicy.other = TwoAccountPolicy('other')

UserLinkedAppLogInfo._field_names_ = set([])
UserLinkedAppLogInfo._all_field_names_ = AppLogInfo._all_field_names_.union(UserLinkedAppLogInfo._field_names_)
UserLinkedAppLogInfo._fields_ = []
UserLinkedAppLogInfo._all_fields_ = AppLogInfo._all_fields_ + UserLinkedAppLogInfo._fields_

UserNameLogInfo._given_name_validator = bv.String()
UserNameLogInfo._surname_validator = bv.String()
UserNameLogInfo._locale_validator = bv.Nullable(bv.String())
UserNameLogInfo._all_field_names_ = set([
    'given_name',
    'surname',
    'locale',
])
UserNameLogInfo._all_fields_ = [
    ('given_name', UserNameLogInfo._given_name_validator),
    ('surname', UserNameLogInfo._surname_validator),
    ('locale', UserNameLogInfo._locale_validator),
]

UserOrTeamLinkedAppLogInfo._field_names_ = set([])
UserOrTeamLinkedAppLogInfo._all_field_names_ = AppLogInfo._all_field_names_.union(UserOrTeamLinkedAppLogInfo._field_names_)
UserOrTeamLinkedAppLogInfo._fields_ = []
UserOrTeamLinkedAppLogInfo._all_fields_ = AppLogInfo._all_fields_ + UserOrTeamLinkedAppLogInfo._fields_

ViewerInfoPolicyChangedDetails._previous_value_validator = PassPolicy_validator
ViewerInfoPolicyChangedDetails._new_value_validator = PassPolicy_validator
ViewerInfoPolicyChangedDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
ViewerInfoPolicyChangedDetails._all_fields_ = [
    ('previous_value', ViewerInfoPolicyChangedDetails._previous_value_validator),
    ('new_value', ViewerInfoPolicyChangedDetails._new_value_validator),
]

ViewerInfoPolicyChangedType._description_validator = bv.String()
ViewerInfoPolicyChangedType._all_field_names_ = set(['description'])
ViewerInfoPolicyChangedType._all_fields_ = [('description', ViewerInfoPolicyChangedType._description_validator)]

WebDeviceSessionLogInfo._session_info_validator = bv.Nullable(WebSessionLogInfo_validator)
WebDeviceSessionLogInfo._user_agent_validator = bv.String()
WebDeviceSessionLogInfo._os_validator = bv.String()
WebDeviceSessionLogInfo._browser_validator = bv.String()
WebDeviceSessionLogInfo._field_names_ = set([
    'session_info',
    'user_agent',
    'os',
    'browser',
])
WebDeviceSessionLogInfo._all_field_names_ = DeviceSessionLogInfo._all_field_names_.union(WebDeviceSessionLogInfo._field_names_)
WebDeviceSessionLogInfo._fields_ = [
    ('session_info', WebDeviceSessionLogInfo._session_info_validator),
    ('user_agent', WebDeviceSessionLogInfo._user_agent_validator),
    ('os', WebDeviceSessionLogInfo._os_validator),
    ('browser', WebDeviceSessionLogInfo._browser_validator),
]
WebDeviceSessionLogInfo._all_fields_ = DeviceSessionLogInfo._all_fields_ + WebDeviceSessionLogInfo._fields_

WebSessionLogInfo._field_names_ = set([])
WebSessionLogInfo._all_field_names_ = SessionLogInfo._all_field_names_.union(WebSessionLogInfo._field_names_)
WebSessionLogInfo._fields_ = []
WebSessionLogInfo._all_fields_ = SessionLogInfo._all_fields_ + WebSessionLogInfo._fields_

WebSessionsChangeFixedLengthPolicyDetails._new_value_validator = bv.Nullable(WebSessionsFixedLengthPolicy_validator)
WebSessionsChangeFixedLengthPolicyDetails._previous_value_validator = bv.Nullable(WebSessionsFixedLengthPolicy_validator)
WebSessionsChangeFixedLengthPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
WebSessionsChangeFixedLengthPolicyDetails._all_fields_ = [
    ('new_value', WebSessionsChangeFixedLengthPolicyDetails._new_value_validator),
    ('previous_value', WebSessionsChangeFixedLengthPolicyDetails._previous_value_validator),
]

WebSessionsChangeFixedLengthPolicyType._description_validator = bv.String()
WebSessionsChangeFixedLengthPolicyType._all_field_names_ = set(['description'])
WebSessionsChangeFixedLengthPolicyType._all_fields_ = [('description', WebSessionsChangeFixedLengthPolicyType._description_validator)]

WebSessionsChangeIdleLengthPolicyDetails._new_value_validator = bv.Nullable(WebSessionsIdleLengthPolicy_validator)
WebSessionsChangeIdleLengthPolicyDetails._previous_value_validator = bv.Nullable(WebSessionsIdleLengthPolicy_validator)
WebSessionsChangeIdleLengthPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
WebSessionsChangeIdleLengthPolicyDetails._all_fields_ = [
    ('new_value', WebSessionsChangeIdleLengthPolicyDetails._new_value_validator),
    ('previous_value', WebSessionsChangeIdleLengthPolicyDetails._previous_value_validator),
]

WebSessionsChangeIdleLengthPolicyType._description_validator = bv.String()
WebSessionsChangeIdleLengthPolicyType._all_field_names_ = set(['description'])
WebSessionsChangeIdleLengthPolicyType._all_fields_ = [('description', WebSessionsChangeIdleLengthPolicyType._description_validator)]

WebSessionsFixedLengthPolicy._defined_validator = DurationLogInfo_validator
WebSessionsFixedLengthPolicy._undefined_validator = bv.Void()
WebSessionsFixedLengthPolicy._other_validator = bv.Void()
WebSessionsFixedLengthPolicy._tagmap = {
    'defined': WebSessionsFixedLengthPolicy._defined_validator,
    'undefined': WebSessionsFixedLengthPolicy._undefined_validator,
    'other': WebSessionsFixedLengthPolicy._other_validator,
}

WebSessionsFixedLengthPolicy.undefined = WebSessionsFixedLengthPolicy('undefined')
WebSessionsFixedLengthPolicy.other = WebSessionsFixedLengthPolicy('other')

WebSessionsIdleLengthPolicy._defined_validator = DurationLogInfo_validator
WebSessionsIdleLengthPolicy._undefined_validator = bv.Void()
WebSessionsIdleLengthPolicy._other_validator = bv.Void()
WebSessionsIdleLengthPolicy._tagmap = {
    'defined': WebSessionsIdleLengthPolicy._defined_validator,
    'undefined': WebSessionsIdleLengthPolicy._undefined_validator,
    'other': WebSessionsIdleLengthPolicy._other_validator,
}

WebSessionsIdleLengthPolicy.undefined = WebSessionsIdleLengthPolicy('undefined')
WebSessionsIdleLengthPolicy.other = WebSessionsIdleLengthPolicy('other')

get_events = bb.Route(
    'get_events',
    1,
    False,
    GetTeamEventsArg_validator,
    GetTeamEventsResult_validator,
    GetTeamEventsError_validator,
    {'host': u'api',
     'style': u'rpc'},
)
get_events_continue = bb.Route(
    'get_events/continue',
    1,
    False,
    GetTeamEventsContinueArg_validator,
    GetTeamEventsResult_validator,
    GetTeamEventsContinueError_validator,
    {'host': u'api',
     'style': u'rpc'},
)

ROUTES = {
    'get_events': get_events,
    'get_events/continue': get_events_continue,
}

