# -*- 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 WebSessionLogInfo AccessMethodLogInfo.admin_console: Admin console
        session details.
    :ivar ApiSessionLogInfo AccessMethodLogInfo.api: Api session details.
    :ivar WebSessionLogInfo AccessMethodLogInfo.content_manager: Content manager
        session details.
    :ivar SessionLogInfo AccessMethodLogInfo.end_user: End user session details.
    :ivar WebSessionLogInfo AccessMethodLogInfo.enterprise_console: Enterprise
        console session details.
    :ivar WebSessionLogInfo AccessMethodLogInfo.sign_in_as: Sign in as session
        details.
    """

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

    @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)

    @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 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 enterprise_console(cls, val):
        """
        Create an instance of this class set to the ``enterprise_console`` tag
        with value ``val``.

        :param WebSessionLogInfo val:
        :rtype: AccessMethodLogInfo
        """
        return cls('enterprise_console', 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)

    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_content_manager(self):
        """
        Check if the union tag is ``content_manager``.

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

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

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

    def is_enterprise_console(self):
        """
        Check if the union tag is ``enterprise_console``.

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

    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_other(self):
        """
        Check if the union tag is ``other``.

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

    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 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_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_enterprise_console(self):
        """
        Enterprise console session details.

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

        :rtype: WebSessionLogInfo
        """
        if not self.is_enterprise_console():
            raise AttributeError("tag 'enterprise_console' 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 _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
    available = None
    # Attribute is overwritten below the class definition
    unavailable = None
    # Attribute is overwritten below the class definition
    other = None

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

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

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

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

    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 account capture email to all unmanaged members.

    :ivar team_log.AccountCaptureNotificationEmailsSentDetails.domain_name:
        Domain name.
    :ivar
        team_log.AccountCaptureNotificationEmailsSentDetails.notification_type:
        Account-capture email notification type.
    """

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

    _has_required_fields = True

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

    @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 notification_type(self):
        """
        Account-capture email notification type.

        :rtype: AccountCaptureNotificationType
        """
        if self._notification_type_present:
            return self._notification_type_value
        else:
            return None

    @notification_type.setter
    def notification_type(self, val):
        if val is None:
            del self.notification_type
            return
        self._notification_type_validator.validate_type_only(val)
        self._notification_type_value = val
        self._notification_type_present = True

    @notification_type.deleter
    def notification_type(self):
        self._notification_type_value = None
        self._notification_type_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}, notification_type={!r})'.format(
            self._domain_name_value,
            self._notification_type_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 AccountCaptureNotificationType(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
    actionable_notification = None
    # Attribute is overwritten below the class definition
    proactive_warning_notification = None
    # Attribute is overwritten below the class definition
    other = None

    def is_actionable_notification(self):
        """
        Check if the union tag is ``actionable_notification``.

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

    def is_proactive_warning_notification(self):
        """
        Check if the union tag is ``proactive_warning_notification``.

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

    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(AccountCaptureNotificationType, self)._process_custom_annotations(annotation_type, field_path, processor)

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

AccountCaptureNotificationType_validator = bv.Union(AccountCaptureNotificationType)

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
    all_users = None
    # 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
    other = None

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

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

    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_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 AccountLockOrUnlockedDetails(bb.Struct):
    """
    Unlocked/locked account after failed sign in attempts.

    :ivar team_log.AccountLockOrUnlockedDetails.previous_value: The previous
        account status.
    :ivar team_log.AccountLockOrUnlockedDetails.new_value: The new account
        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):
        """
        The previous account status.

        :rtype: AccountState
        """
        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):
        """
        The new account status.

        :rtype: AccountState
        """
        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(AccountLockOrUnlockedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

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

AccountLockOrUnlockedDetails_validator = bv.Struct(AccountLockOrUnlockedDetails)

class AccountLockOrUnlockedType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

AccountLockOrUnlockedType_validator = bv.Struct(AccountLockOrUnlockedType)

class AccountState(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
    locked = None
    # Attribute is overwritten below the class definition
    unlocked = None
    # Attribute is overwritten below the class definition
    other = None

    def is_locked(self):
        """
        Check if the union tag is ``locked``.

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

    def is_unlocked(self):
        """
        Check if the union tag is ``unlocked``.

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

    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(AccountState, self)._process_custom_annotations(annotation_type, field_path, processor)

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

AccountState_validator = bv.Union(AccountState)

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 MemberRemoveActionType ActionDetails.remove_action: Define how the
        user was removed from the team.
    :ivar TeamInviteDetails ActionDetails.team_invite_details: Additional
        information relevant when someone is invited to the team.
    :ivar JoinTeamDetails ActionDetails.team_join_details: Additional
        information relevant when a new member joins the team.
    """

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

    @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)

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

        :param TeamInviteDetails val:
        :rtype: ActionDetails
        """
        return cls('team_invite_details', val)

    @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)

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

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

    def is_team_invite_details(self):
        """
        Check if the union tag is ``team_invite_details``.

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

    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_other(self):
        """
        Check if the union tag is ``other``.

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

    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 get_team_invite_details(self):
        """
        Additional information relevant when someone is invited to the team.

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

        :rtype: TeamInviteDetails
        """
        if not self.is_team_invite_details():
            raise AttributeError("tag 'team_invite_details' not set")
        return self._value

    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 _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.admin: The admin who did the action.
    :ivar team_log.ActorLogInfo.anonymous: Anonymous actor.
    :ivar AppLogInfo ActorLogInfo.app: The application who did the action.
    :ivar team_log.ActorLogInfo.dropbox: Action done by Dropbox.
    :ivar ResellerLogInfo ActorLogInfo.reseller: Action done by reseller.
    :ivar UserLogInfo ActorLogInfo.user: The user who did the action.
    """

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

    @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)

    @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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    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 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 _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
    limited_admin = None
    # Attribute is overwritten below the class definition
    member_only = None
    # Attribute is overwritten below the class definition
    support_admin = None
    # 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
    other = None

    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_support_admin(self):
        """
        Check if the union tag is ``support_admin``.

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

    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_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 BackupStatus(bb.Union):
    """
    Backup status

    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(BackupStatus, self)._process_custom_annotations(annotation_type, field_path, processor)

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

BackupStatus_validator = bv.Union(BackupStatus)

class BinderAddPageDetails(bb.Struct):
    """
    Added Binder page.

    :ivar team_log.BinderAddPageDetails.event_uuid: Event unique identifier.
    :ivar team_log.BinderAddPageDetails.doc_title: Title of the Binder doc.
    :ivar team_log.BinderAddPageDetails.binder_item_name: Name of the Binder
        page/section.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_doc_title_value',
        '_doc_title_present',
        '_binder_item_name_value',
        '_binder_item_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 doc_title=None,
                 binder_item_name=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._doc_title_value = None
        self._doc_title_present = False
        self._binder_item_name_value = None
        self._binder_item_name_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if doc_title is not None:
            self.doc_title = doc_title
        if binder_item_name is not None:
            self.binder_item_name = binder_item_name

    @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 doc_title(self):
        """
        Title of the Binder doc.

        :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

    @property
    def binder_item_name(self):
        """
        Name of the Binder page/section.

        :rtype: str
        """
        if self._binder_item_name_present:
            return self._binder_item_name_value
        else:
            raise AttributeError("missing required field 'binder_item_name'")

    @binder_item_name.setter
    def binder_item_name(self, val):
        val = self._binder_item_name_validator.validate(val)
        self._binder_item_name_value = val
        self._binder_item_name_present = True

    @binder_item_name.deleter
    def binder_item_name(self):
        self._binder_item_name_value = None
        self._binder_item_name_present = False

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

    def __repr__(self):
        return 'BinderAddPageDetails(event_uuid={!r}, doc_title={!r}, binder_item_name={!r})'.format(
            self._event_uuid_value,
            self._doc_title_value,
            self._binder_item_name_value,
        )

BinderAddPageDetails_validator = bv.Struct(BinderAddPageDetails)

class BinderAddPageType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

BinderAddPageType_validator = bv.Struct(BinderAddPageType)

class BinderAddSectionDetails(bb.Struct):
    """
    Added Binder section.

    :ivar team_log.BinderAddSectionDetails.event_uuid: Event unique identifier.
    :ivar team_log.BinderAddSectionDetails.doc_title: Title of the Binder doc.
    :ivar team_log.BinderAddSectionDetails.binder_item_name: Name of the Binder
        page/section.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_doc_title_value',
        '_doc_title_present',
        '_binder_item_name_value',
        '_binder_item_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 doc_title=None,
                 binder_item_name=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._doc_title_value = None
        self._doc_title_present = False
        self._binder_item_name_value = None
        self._binder_item_name_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if doc_title is not None:
            self.doc_title = doc_title
        if binder_item_name is not None:
            self.binder_item_name = binder_item_name

    @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 doc_title(self):
        """
        Title of the Binder doc.

        :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

    @property
    def binder_item_name(self):
        """
        Name of the Binder page/section.

        :rtype: str
        """
        if self._binder_item_name_present:
            return self._binder_item_name_value
        else:
            raise AttributeError("missing required field 'binder_item_name'")

    @binder_item_name.setter
    def binder_item_name(self, val):
        val = self._binder_item_name_validator.validate(val)
        self._binder_item_name_value = val
        self._binder_item_name_present = True

    @binder_item_name.deleter
    def binder_item_name(self):
        self._binder_item_name_value = None
        self._binder_item_name_present = False

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

    def __repr__(self):
        return 'BinderAddSectionDetails(event_uuid={!r}, doc_title={!r}, binder_item_name={!r})'.format(
            self._event_uuid_value,
            self._doc_title_value,
            self._binder_item_name_value,
        )

BinderAddSectionDetails_validator = bv.Struct(BinderAddSectionDetails)

class BinderAddSectionType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

BinderAddSectionType_validator = bv.Struct(BinderAddSectionType)

class BinderRemovePageDetails(bb.Struct):
    """
    Removed Binder page.

    :ivar team_log.BinderRemovePageDetails.event_uuid: Event unique identifier.
    :ivar team_log.BinderRemovePageDetails.doc_title: Title of the Binder doc.
    :ivar team_log.BinderRemovePageDetails.binder_item_name: Name of the Binder
        page/section.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_doc_title_value',
        '_doc_title_present',
        '_binder_item_name_value',
        '_binder_item_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 doc_title=None,
                 binder_item_name=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._doc_title_value = None
        self._doc_title_present = False
        self._binder_item_name_value = None
        self._binder_item_name_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if doc_title is not None:
            self.doc_title = doc_title
        if binder_item_name is not None:
            self.binder_item_name = binder_item_name

    @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 doc_title(self):
        """
        Title of the Binder doc.

        :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

    @property
    def binder_item_name(self):
        """
        Name of the Binder page/section.

        :rtype: str
        """
        if self._binder_item_name_present:
            return self._binder_item_name_value
        else:
            raise AttributeError("missing required field 'binder_item_name'")

    @binder_item_name.setter
    def binder_item_name(self, val):
        val = self._binder_item_name_validator.validate(val)
        self._binder_item_name_value = val
        self._binder_item_name_present = True

    @binder_item_name.deleter
    def binder_item_name(self):
        self._binder_item_name_value = None
        self._binder_item_name_present = False

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

    def __repr__(self):
        return 'BinderRemovePageDetails(event_uuid={!r}, doc_title={!r}, binder_item_name={!r})'.format(
            self._event_uuid_value,
            self._doc_title_value,
            self._binder_item_name_value,
        )

BinderRemovePageDetails_validator = bv.Struct(BinderRemovePageDetails)

class BinderRemovePageType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

BinderRemovePageType_validator = bv.Struct(BinderRemovePageType)

class BinderRemoveSectionDetails(bb.Struct):
    """
    Removed Binder section.

    :ivar team_log.BinderRemoveSectionDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.BinderRemoveSectionDetails.doc_title: Title of the Binder
        doc.
    :ivar team_log.BinderRemoveSectionDetails.binder_item_name: Name of the
        Binder page/section.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_doc_title_value',
        '_doc_title_present',
        '_binder_item_name_value',
        '_binder_item_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 doc_title=None,
                 binder_item_name=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._doc_title_value = None
        self._doc_title_present = False
        self._binder_item_name_value = None
        self._binder_item_name_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if doc_title is not None:
            self.doc_title = doc_title
        if binder_item_name is not None:
            self.binder_item_name = binder_item_name

    @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 doc_title(self):
        """
        Title of the Binder doc.

        :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

    @property
    def binder_item_name(self):
        """
        Name of the Binder page/section.

        :rtype: str
        """
        if self._binder_item_name_present:
            return self._binder_item_name_value
        else:
            raise AttributeError("missing required field 'binder_item_name'")

    @binder_item_name.setter
    def binder_item_name(self, val):
        val = self._binder_item_name_validator.validate(val)
        self._binder_item_name_value = val
        self._binder_item_name_present = True

    @binder_item_name.deleter
    def binder_item_name(self):
        self._binder_item_name_value = None
        self._binder_item_name_present = False

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

    def __repr__(self):
        return 'BinderRemoveSectionDetails(event_uuid={!r}, doc_title={!r}, binder_item_name={!r})'.format(
            self._event_uuid_value,
            self._doc_title_value,
            self._binder_item_name_value,
        )

BinderRemoveSectionDetails_validator = bv.Struct(BinderRemoveSectionDetails)

class BinderRemoveSectionType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

BinderRemoveSectionType_validator = bv.Struct(BinderRemoveSectionType)

class BinderRenamePageDetails(bb.Struct):
    """
    Renamed Binder page.

    :ivar team_log.BinderRenamePageDetails.event_uuid: Event unique identifier.
    :ivar team_log.BinderRenamePageDetails.doc_title: Title of the Binder doc.
    :ivar team_log.BinderRenamePageDetails.binder_item_name: Name of the Binder
        page/section.
    :ivar team_log.BinderRenamePageDetails.previous_binder_item_name: Previous
        name of the Binder page/section.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_doc_title_value',
        '_doc_title_present',
        '_binder_item_name_value',
        '_binder_item_name_present',
        '_previous_binder_item_name_value',
        '_previous_binder_item_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 doc_title=None,
                 binder_item_name=None,
                 previous_binder_item_name=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._doc_title_value = None
        self._doc_title_present = False
        self._binder_item_name_value = None
        self._binder_item_name_present = False
        self._previous_binder_item_name_value = None
        self._previous_binder_item_name_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if doc_title is not None:
            self.doc_title = doc_title
        if binder_item_name is not None:
            self.binder_item_name = binder_item_name
        if previous_binder_item_name is not None:
            self.previous_binder_item_name = previous_binder_item_name

    @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 doc_title(self):
        """
        Title of the Binder doc.

        :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

    @property
    def binder_item_name(self):
        """
        Name of the Binder page/section.

        :rtype: str
        """
        if self._binder_item_name_present:
            return self._binder_item_name_value
        else:
            raise AttributeError("missing required field 'binder_item_name'")

    @binder_item_name.setter
    def binder_item_name(self, val):
        val = self._binder_item_name_validator.validate(val)
        self._binder_item_name_value = val
        self._binder_item_name_present = True

    @binder_item_name.deleter
    def binder_item_name(self):
        self._binder_item_name_value = None
        self._binder_item_name_present = False

    @property
    def previous_binder_item_name(self):
        """
        Previous name of the Binder page/section.

        :rtype: str
        """
        if self._previous_binder_item_name_present:
            return self._previous_binder_item_name_value
        else:
            return None

    @previous_binder_item_name.setter
    def previous_binder_item_name(self, val):
        if val is None:
            del self.previous_binder_item_name
            return
        val = self._previous_binder_item_name_validator.validate(val)
        self._previous_binder_item_name_value = val
        self._previous_binder_item_name_present = True

    @previous_binder_item_name.deleter
    def previous_binder_item_name(self):
        self._previous_binder_item_name_value = None
        self._previous_binder_item_name_present = False

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

    def __repr__(self):
        return 'BinderRenamePageDetails(event_uuid={!r}, doc_title={!r}, binder_item_name={!r}, previous_binder_item_name={!r})'.format(
            self._event_uuid_value,
            self._doc_title_value,
            self._binder_item_name_value,
            self._previous_binder_item_name_value,
        )

BinderRenamePageDetails_validator = bv.Struct(BinderRenamePageDetails)

class BinderRenamePageType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

BinderRenamePageType_validator = bv.Struct(BinderRenamePageType)

class BinderRenameSectionDetails(bb.Struct):
    """
    Renamed Binder section.

    :ivar team_log.BinderRenameSectionDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.BinderRenameSectionDetails.doc_title: Title of the Binder
        doc.
    :ivar team_log.BinderRenameSectionDetails.binder_item_name: Name of the
        Binder page/section.
    :ivar team_log.BinderRenameSectionDetails.previous_binder_item_name:
        Previous name of the Binder page/section.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_doc_title_value',
        '_doc_title_present',
        '_binder_item_name_value',
        '_binder_item_name_present',
        '_previous_binder_item_name_value',
        '_previous_binder_item_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 doc_title=None,
                 binder_item_name=None,
                 previous_binder_item_name=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._doc_title_value = None
        self._doc_title_present = False
        self._binder_item_name_value = None
        self._binder_item_name_present = False
        self._previous_binder_item_name_value = None
        self._previous_binder_item_name_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if doc_title is not None:
            self.doc_title = doc_title
        if binder_item_name is not None:
            self.binder_item_name = binder_item_name
        if previous_binder_item_name is not None:
            self.previous_binder_item_name = previous_binder_item_name

    @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 doc_title(self):
        """
        Title of the Binder doc.

        :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

    @property
    def binder_item_name(self):
        """
        Name of the Binder page/section.

        :rtype: str
        """
        if self._binder_item_name_present:
            return self._binder_item_name_value
        else:
            raise AttributeError("missing required field 'binder_item_name'")

    @binder_item_name.setter
    def binder_item_name(self, val):
        val = self._binder_item_name_validator.validate(val)
        self._binder_item_name_value = val
        self._binder_item_name_present = True

    @binder_item_name.deleter
    def binder_item_name(self):
        self._binder_item_name_value = None
        self._binder_item_name_present = False

    @property
    def previous_binder_item_name(self):
        """
        Previous name of the Binder page/section.

        :rtype: str
        """
        if self._previous_binder_item_name_present:
            return self._previous_binder_item_name_value
        else:
            return None

    @previous_binder_item_name.setter
    def previous_binder_item_name(self, val):
        if val is None:
            del self.previous_binder_item_name
            return
        val = self._previous_binder_item_name_validator.validate(val)
        self._previous_binder_item_name_value = val
        self._previous_binder_item_name_present = True

    @previous_binder_item_name.deleter
    def previous_binder_item_name(self):
        self._previous_binder_item_name_value = None
        self._previous_binder_item_name_present = False

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

    def __repr__(self):
        return 'BinderRenameSectionDetails(event_uuid={!r}, doc_title={!r}, binder_item_name={!r}, previous_binder_item_name={!r})'.format(
            self._event_uuid_value,
            self._doc_title_value,
            self._binder_item_name_value,
            self._previous_binder_item_name_value,
        )

BinderRenameSectionDetails_validator = bv.Struct(BinderRenameSectionDetails)

class BinderRenameSectionType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

BinderRenameSectionType_validator = bv.Struct(BinderRenameSectionType)

class BinderReorderPageDetails(bb.Struct):
    """
    Reordered Binder page.

    :ivar team_log.BinderReorderPageDetails.event_uuid: Event unique identifier.
    :ivar team_log.BinderReorderPageDetails.doc_title: Title of the Binder doc.
    :ivar team_log.BinderReorderPageDetails.binder_item_name: Name of the Binder
        page/section.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_doc_title_value',
        '_doc_title_present',
        '_binder_item_name_value',
        '_binder_item_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 doc_title=None,
                 binder_item_name=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._doc_title_value = None
        self._doc_title_present = False
        self._binder_item_name_value = None
        self._binder_item_name_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if doc_title is not None:
            self.doc_title = doc_title
        if binder_item_name is not None:
            self.binder_item_name = binder_item_name

    @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 doc_title(self):
        """
        Title of the Binder doc.

        :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

    @property
    def binder_item_name(self):
        """
        Name of the Binder page/section.

        :rtype: str
        """
        if self._binder_item_name_present:
            return self._binder_item_name_value
        else:
            raise AttributeError("missing required field 'binder_item_name'")

    @binder_item_name.setter
    def binder_item_name(self, val):
        val = self._binder_item_name_validator.validate(val)
        self._binder_item_name_value = val
        self._binder_item_name_present = True

    @binder_item_name.deleter
    def binder_item_name(self):
        self._binder_item_name_value = None
        self._binder_item_name_present = False

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

    def __repr__(self):
        return 'BinderReorderPageDetails(event_uuid={!r}, doc_title={!r}, binder_item_name={!r})'.format(
            self._event_uuid_value,
            self._doc_title_value,
            self._binder_item_name_value,
        )

BinderReorderPageDetails_validator = bv.Struct(BinderReorderPageDetails)

class BinderReorderPageType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

BinderReorderPageType_validator = bv.Struct(BinderReorderPageType)

class BinderReorderSectionDetails(bb.Struct):
    """
    Reordered Binder section.

    :ivar team_log.BinderReorderSectionDetails.event_uuid: Event unique
        identifier.
    :ivar team_log.BinderReorderSectionDetails.doc_title: Title of the Binder
        doc.
    :ivar team_log.BinderReorderSectionDetails.binder_item_name: Name of the
        Binder page/section.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_doc_title_value',
        '_doc_title_present',
        '_binder_item_name_value',
        '_binder_item_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 doc_title=None,
                 binder_item_name=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._doc_title_value = None
        self._doc_title_present = False
        self._binder_item_name_value = None
        self._binder_item_name_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if doc_title is not None:
            self.doc_title = doc_title
        if binder_item_name is not None:
            self.binder_item_name = binder_item_name

    @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 doc_title(self):
        """
        Title of the Binder doc.

        :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

    @property
    def binder_item_name(self):
        """
        Name of the Binder page/section.

        :rtype: str
        """
        if self._binder_item_name_present:
            return self._binder_item_name_value
        else:
            raise AttributeError("missing required field 'binder_item_name'")

    @binder_item_name.setter
    def binder_item_name(self, val):
        val = self._binder_item_name_validator.validate(val)
        self._binder_item_name_value = val
        self._binder_item_name_present = True

    @binder_item_name.deleter
    def binder_item_name(self):
        self._binder_item_name_value = None
        self._binder_item_name_present = False

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

    def __repr__(self):
        return 'BinderReorderSectionDetails(event_uuid={!r}, doc_title={!r}, binder_item_name={!r})'.format(
            self._event_uuid_value,
            self._doc_title_value,
            self._binder_item_name_value,
        )

BinderReorderSectionDetails_validator = bv.Struct(BinderReorderSectionDetails)

class BinderReorderSectionType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

BinderReorderSectionType_validator = bv.Struct(BinderReorderSectionType)

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 ChangedEnterpriseAdminRoleDetails(bb.Struct):
    """
    Changed enterprise admin role.

    :ivar team_log.ChangedEnterpriseAdminRoleDetails.previous_value: The
        member&#x2019s previous enterprise admin role.
    :ivar team_log.ChangedEnterpriseAdminRoleDetails.new_value: The
        member&#x2019s new enterprise admin role.
    :ivar team_log.ChangedEnterpriseAdminRoleDetails.team_name: The name of the
        member&#x2019s team.
    """

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

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None,
                 team_name=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        self._team_name_value = None
        self._team_name_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 team_name is not None:
            self.team_name = team_name

    @property
    def previous_value(self):
        """
        The member&#x2019s previous enterprise admin role.

        :rtype: FedAdminRole
        """
        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):
        """
        The member&#x2019s new enterprise admin role.

        :rtype: FedAdminRole
        """
        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 team_name(self):
        """
        The name of the member&#x2019s 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(ChangedEnterpriseAdminRoleDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

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

ChangedEnterpriseAdminRoleDetails_validator = bv.Struct(ChangedEnterpriseAdminRoleDetails)

class ChangedEnterpriseAdminRoleType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

ChangedEnterpriseAdminRoleType_validator = bv.Struct(ChangedEnterpriseAdminRoleType)

class ChangedEnterpriseConnectedTeamStatusDetails(bb.Struct):
    """
    Changed enterprise-connected team status.

    :ivar team_log.ChangedEnterpriseConnectedTeamStatusDetails.action: The
        preformed change in the team&#x2019s connection status.
    :ivar team_log.ChangedEnterpriseConnectedTeamStatusDetails.additional_info:
        Additional information about the organization or team.
    :ivar team_log.ChangedEnterpriseConnectedTeamStatusDetails.previous_value:
        Previous request state.
    :ivar team_log.ChangedEnterpriseConnectedTeamStatusDetails.new_value: New
        request state.
    """

    __slots__ = [
        '_action_value',
        '_action_present',
        '_additional_info_value',
        '_additional_info_present',
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 action=None,
                 additional_info=None,
                 previous_value=None,
                 new_value=None):
        self._action_value = None
        self._action_present = False
        self._additional_info_value = None
        self._additional_info_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if action is not None:
            self.action = action
        if additional_info is not None:
            self.additional_info = additional_info
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def action(self):
        """
        The preformed change in the team&#x2019s connection status.

        :rtype: FedHandshakeAction
        """
        if self._action_present:
            return self._action_value
        else:
            raise AttributeError("missing required field 'action'")

    @action.setter
    def action(self, val):
        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

    @property
    def additional_info(self):
        """
        Additional information about the organization or team.

        :rtype: FederationStatusChangeAdditionalInfo
        """
        if self._additional_info_present:
            return self._additional_info_value
        else:
            raise AttributeError("missing required field 'additional_info'")

    @additional_info.setter
    def additional_info(self, val):
        self._additional_info_validator.validate_type_only(val)
        self._additional_info_value = val
        self._additional_info_present = True

    @additional_info.deleter
    def additional_info(self):
        self._additional_info_value = None
        self._additional_info_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

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

    def __repr__(self):
        return 'ChangedEnterpriseConnectedTeamStatusDetails(action={!r}, additional_info={!r}, previous_value={!r}, new_value={!r})'.format(
            self._action_value,
            self._additional_info_value,
            self._previous_value_value,
            self._new_value_value,
        )

ChangedEnterpriseConnectedTeamStatusDetails_validator = bv.Struct(ChangedEnterpriseConnectedTeamStatusDetails)

class ChangedEnterpriseConnectedTeamStatusType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

ChangedEnterpriseConnectedTeamStatusType_validator = bv.Struct(ChangedEnterpriseConnectedTeamStatusType)

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 ComputerBackupPolicy(bb.Union):
    """
    Policy for controlling team access to computer backup feature

    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
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = 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_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(ComputerBackupPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

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

ComputerBackupPolicy_validator = bv.Union(ComputerBackupPolicy)

class ComputerBackupPolicyChangedDetails(bb.Struct):
    """
    Changed computer backup policy for team.

    :ivar team_log.ComputerBackupPolicyChangedDetails.new_value: New computer
        backup policy.
    :ivar team_log.ComputerBackupPolicyChangedDetails.previous_value: Previous
        computer backup 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 computer backup policy.

        :rtype: ComputerBackupPolicy
        """
        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 computer backup policy.

        :rtype: ComputerBackupPolicy
        """
        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(ComputerBackupPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

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

ComputerBackupPolicyChangedDetails_validator = bv.Struct(ComputerBackupPolicyChangedDetails)

class ComputerBackupPolicyChangedType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

ComputerBackupPolicyChangedType_validator = bv.Struct(ComputerBackupPolicyChangedType)

class ConnectedTeamName(bb.Struct):
    """
    The name of the team

    :ivar team_log.ConnectedTeamName.team: The name of the 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 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(ConnectedTeamName, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ConnectedTeamName(team={!r})'.format(
            self._team_value,
        )

ConnectedTeamName_validator = bv.Struct(ConnectedTeamName)

class ContentAdministrationPolicyChangedDetails(bb.Struct):
    """
    Changed content management setting.

    :ivar team_log.ContentAdministrationPolicyChangedDetails.new_value: New
        content administration policy.
    :ivar team_log.ContentAdministrationPolicyChangedDetails.previous_value:
        Previous content administration 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 content administration policy.

        :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 content administration policy.

        :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(ContentAdministrationPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

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

ContentAdministrationPolicyChangedDetails_validator = bv.Struct(ContentAdministrationPolicyChangedDetails)

class ContentAdministrationPolicyChangedType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

ContentAdministrationPolicyChangedType_validator = bv.Struct(ContentAdministrationPolicyChangedType)

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 team_log.ContextLogInfo.anonymous: Anonymous context.
    :ivar NonTeamMemberLogInfo ContextLogInfo.non_team_member: Action was done
        on behalf of a non team member.
    :ivar TeamLogInfo ContextLogInfo.organization_team: Action was done on
        behalf of a team that's part of an organization.
    :ivar team_log.ContextLogInfo.team: Action was done on behalf of the team.
    :ivar TeamMemberLogInfo ContextLogInfo.team_member: Action was done on
        behalf of a team member.
    :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 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 organization_team(cls, val):
        """
        Create an instance of this class set to the ``organization_team`` tag
        with value ``val``.

        :param TeamLogInfo val:
        :rtype: ContextLogInfo
        """
        return cls('organization_team', val)

    @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 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_anonymous(self):
        """
        Check if the union tag is ``anonymous``.

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

    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_organization_team(self):
        """
        Check if the union tag is ``organization_team``.

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

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

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

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

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

    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_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_organization_team(self):
        """
        Action was done on behalf of a team that's part of an organization.

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

        :rtype: TeamLogInfo
        """
        if not self.is_organization_team():
            raise AttributeError("tag 'organization_team' not set")
        return self._value

    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_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 CreateTeamInviteLinkDetails(bb.Struct):
    """
    Created team invite link.

    :ivar team_log.CreateTeamInviteLinkDetails.link_url: The invite link url
        that was created.
    :ivar team_log.CreateTeamInviteLinkDetails.expiry_date: The expiration date
        of the invite link.
    """

    __slots__ = [
        '_link_url_value',
        '_link_url_present',
        '_expiry_date_value',
        '_expiry_date_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 link_url=None,
                 expiry_date=None):
        self._link_url_value = None
        self._link_url_present = False
        self._expiry_date_value = None
        self._expiry_date_present = False
        if link_url is not None:
            self.link_url = link_url
        if expiry_date is not None:
            self.expiry_date = expiry_date

    @property
    def link_url(self):
        """
        The invite link url that was created.

        :rtype: str
        """
        if self._link_url_present:
            return self._link_url_value
        else:
            raise AttributeError("missing required field 'link_url'")

    @link_url.setter
    def link_url(self, val):
        val = self._link_url_validator.validate(val)
        self._link_url_value = val
        self._link_url_present = True

    @link_url.deleter
    def link_url(self):
        self._link_url_value = None
        self._link_url_present = False

    @property
    def expiry_date(self):
        """
        The expiration date of the invite link.

        :rtype: str
        """
        if self._expiry_date_present:
            return self._expiry_date_value
        else:
            raise AttributeError("missing required field 'expiry_date'")

    @expiry_date.setter
    def expiry_date(self, val):
        val = self._expiry_date_validator.validate(val)
        self._expiry_date_value = val
        self._expiry_date_present = True

    @expiry_date.deleter
    def expiry_date(self):
        self._expiry_date_value = None
        self._expiry_date_present = False

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

    def __repr__(self):
        return 'CreateTeamInviteLinkDetails(link_url={!r}, expiry_date={!r})'.format(
            self._link_url_value,
            self._expiry_date_value,
        )

CreateTeamInviteLinkDetails_validator = bv.Struct(CreateTeamInviteLinkDetails)

class CreateTeamInviteLinkType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

CreateTeamInviteLinkType_validator = bv.Struct(CreateTeamInviteLinkType)

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 DeleteTeamInviteLinkDetails(bb.Struct):
    """
    Deleted team invite link.

    :ivar team_log.DeleteTeamInviteLinkDetails.link_url: The invite link url
        that was deleted.
    """

    __slots__ = [
        '_link_url_value',
        '_link_url_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 link_url=None):
        self._link_url_value = None
        self._link_url_present = False
        if link_url is not None:
            self.link_url = link_url

    @property
    def link_url(self):
        """
        The invite link url that was deleted.

        :rtype: str
        """
        if self._link_url_present:
            return self._link_url_value
        else:
            raise AttributeError("missing required field 'link_url'")

    @link_url.setter
    def link_url(self, val):
        val = self._link_url_validator.validate(val)
        self._link_url_value = val
        self._link_url_present = True

    @link_url.deleter
    def link_url(self):
        self._link_url_value = None
        self._link_url_present = False

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

    def __repr__(self):
        return 'DeleteTeamInviteLinkDetails(link_url={!r})'.format(
            self._link_url_value,
        )

DeleteTeamInviteLinkDetails_validator = bv.Struct(DeleteTeamInviteLinkDetails)

class DeleteTeamInviteLinkType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

DeleteTeamInviteLinkType_validator = bv.Struct(DeleteTeamInviteLinkType)

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 DeviceApprovalsAddExceptionDetails(bb.Struct):
    """
    Added members to device approvals exception list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

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

DeviceApprovalsAddExceptionDetails_validator = bv.Struct(DeviceApprovalsAddExceptionDetails)

class DeviceApprovalsAddExceptionType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

DeviceApprovalsAddExceptionType_validator = bv.Struct(DeviceApprovalsAddExceptionType)

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
    limited = None
    # Attribute is overwritten below the class definition
    unlimited = None
    # Attribute is overwritten below the class definition
    other = None

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

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

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

        :rtype: bool
        """
        return self._tag == '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(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 DeviceApprovalsRemoveExceptionDetails(bb.Struct):
    """
    Removed members from device approvals exception list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

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

DeviceApprovalsRemoveExceptionDetails_validator = bv.Struct(DeviceApprovalsRemoveExceptionDetails)

class DeviceApprovalsRemoveExceptionType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

DeviceApprovalsRemoveExceptionType_validator = bv.Struct(DeviceApprovalsRemoveExceptionType)

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 DeviceSyncBackupStatusChangedDetails(bb.Struct):
    """
    Enabled/disabled backup for computer.

    :ivar
        team_log.DeviceSyncBackupStatusChangedDetails.desktop_device_session_info:
        Device's session logged information.
    :ivar team_log.DeviceSyncBackupStatusChangedDetails.previous_value: Previous
        status of computer backup on the device.
    :ivar team_log.DeviceSyncBackupStatusChangedDetails.new_value: Next status
        of computer backup on the device.
    """

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

    _has_required_fields = True

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

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

        :rtype: DesktopDeviceSessionLogInfo
        """
        if self._desktop_device_session_info_present:
            return self._desktop_device_session_info_value
        else:
            raise AttributeError("missing required field 'desktop_device_session_info'")

    @desktop_device_session_info.setter
    def desktop_device_session_info(self, val):
        self._desktop_device_session_info_validator.validate_type_only(val)
        self._desktop_device_session_info_value = val
        self._desktop_device_session_info_present = True

    @desktop_device_session_info.deleter
    def desktop_device_session_info(self):
        self._desktop_device_session_info_value = None
        self._desktop_device_session_info_present = False

    @property
    def previous_value(self):
        """
        Previous status of computer backup on the device.

        :rtype: BackupStatus
        """
        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):
        """
        Next status of computer backup on the device.

        :rtype: BackupStatus
        """
        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(DeviceSyncBackupStatusChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

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

DeviceSyncBackupStatusChangedDetails_validator = bv.Struct(DeviceSyncBackupStatusChangedDetails)

class DeviceSyncBackupStatusChangedType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

DeviceSyncBackupStatusChangedType_validator = bv.Struct(DeviceSyncBackupStatusChangedType)

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
    keep = None
    # Attribute is overwritten below the class definition
    remove = None
    # Attribute is overwritten below the class definition
    other = None

    def is_keep(self):
        """
        Check if the union tag is ``keep``.

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

    def is_remove(self):
        """
        Check if the union tag is ``remove``.

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

    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 EndedEnterpriseAdminSessionDeprecatedDetails(bb.Struct):
    """
    Ended enterprise admin session.

    :ivar
        team_log.EndedEnterpriseAdminSessionDeprecatedDetails.federation_extra_details:
        More information about the organization or team.
    """

    __slots__ = [
        '_federation_extra_details_value',
        '_federation_extra_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 federation_extra_details=None):
        self._federation_extra_details_value = None
        self._federation_extra_details_present = False
        if federation_extra_details is not None:
            self.federation_extra_details = federation_extra_details

    @property
    def federation_extra_details(self):
        """
        More information about the organization or team.

        :rtype: FedExtraDetails
        """
        if self._federation_extra_details_present:
            return self._federation_extra_details_value
        else:
            raise AttributeError("missing required field 'federation_extra_details'")

    @federation_extra_details.setter
    def federation_extra_details(self, val):
        self._federation_extra_details_validator.validate_type_only(val)
        self._federation_extra_details_value = val
        self._federation_extra_details_present = True

    @federation_extra_details.deleter
    def federation_extra_details(self):
        self._federation_extra_details_value = None
        self._federation_extra_details_present = False

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

    def __repr__(self):
        return 'EndedEnterpriseAdminSessionDeprecatedDetails(federation_extra_details={!r})'.format(
            self._federation_extra_details_value,
        )

EndedEnterpriseAdminSessionDeprecatedDetails_validator = bv.Struct(EndedEnterpriseAdminSessionDeprecatedDetails)

class EndedEnterpriseAdminSessionDeprecatedType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

EndedEnterpriseAdminSessionDeprecatedType_validator = bv.Struct(EndedEnterpriseAdminSessionDeprecatedType)

class EndedEnterpriseAdminSessionDetails(bb.Struct):
    """
    Ended enterprise admin session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

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

EndedEnterpriseAdminSessionDetails_validator = bv.Struct(EndedEnterpriseAdminSessionDetails)

class EndedEnterpriseAdminSessionType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

EndedEnterpriseAdminSessionType_validator = bv.Struct(EndedEnterpriseAdminSessionType)

class EnterpriseSettingsLockingDetails(bb.Struct):
    """
    Changed who can update a setting.

    :ivar team_log.EnterpriseSettingsLockingDetails.team_name: The secondary
        team name.
    :ivar team_log.EnterpriseSettingsLockingDetails.settings_page_name: Settings
        page name.
    :ivar
        team_log.EnterpriseSettingsLockingDetails.previous_settings_page_locking_state:
        Previous locked settings page state.
    :ivar
        team_log.EnterpriseSettingsLockingDetails.new_settings_page_locking_state:
        New locked settings page state.
    """

    __slots__ = [
        '_team_name_value',
        '_team_name_present',
        '_settings_page_name_value',
        '_settings_page_name_present',
        '_previous_settings_page_locking_state_value',
        '_previous_settings_page_locking_state_present',
        '_new_settings_page_locking_state_value',
        '_new_settings_page_locking_state_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 team_name=None,
                 settings_page_name=None,
                 previous_settings_page_locking_state=None,
                 new_settings_page_locking_state=None):
        self._team_name_value = None
        self._team_name_present = False
        self._settings_page_name_value = None
        self._settings_page_name_present = False
        self._previous_settings_page_locking_state_value = None
        self._previous_settings_page_locking_state_present = False
        self._new_settings_page_locking_state_value = None
        self._new_settings_page_locking_state_present = False
        if team_name is not None:
            self.team_name = team_name
        if settings_page_name is not None:
            self.settings_page_name = settings_page_name
        if previous_settings_page_locking_state is not None:
            self.previous_settings_page_locking_state = previous_settings_page_locking_state
        if new_settings_page_locking_state is not None:
            self.new_settings_page_locking_state = new_settings_page_locking_state

    @property
    def team_name(self):
        """
        The secondary 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

    @property
    def settings_page_name(self):
        """
        Settings page name.

        :rtype: str
        """
        if self._settings_page_name_present:
            return self._settings_page_name_value
        else:
            raise AttributeError("missing required field 'settings_page_name'")

    @settings_page_name.setter
    def settings_page_name(self, val):
        val = self._settings_page_name_validator.validate(val)
        self._settings_page_name_value = val
        self._settings_page_name_present = True

    @settings_page_name.deleter
    def settings_page_name(self):
        self._settings_page_name_value = None
        self._settings_page_name_present = False

    @property
    def previous_settings_page_locking_state(self):
        """
        Previous locked settings page state.

        :rtype: str
        """
        if self._previous_settings_page_locking_state_present:
            return self._previous_settings_page_locking_state_value
        else:
            raise AttributeError("missing required field 'previous_settings_page_locking_state'")

    @previous_settings_page_locking_state.setter
    def previous_settings_page_locking_state(self, val):
        val = self._previous_settings_page_locking_state_validator.validate(val)
        self._previous_settings_page_locking_state_value = val
        self._previous_settings_page_locking_state_present = True

    @previous_settings_page_locking_state.deleter
    def previous_settings_page_locking_state(self):
        self._previous_settings_page_locking_state_value = None
        self._previous_settings_page_locking_state_present = False

    @property
    def new_settings_page_locking_state(self):
        """
        New locked settings page state.

        :rtype: str
        """
        if self._new_settings_page_locking_state_present:
            return self._new_settings_page_locking_state_value
        else:
            raise AttributeError("missing required field 'new_settings_page_locking_state'")

    @new_settings_page_locking_state.setter
    def new_settings_page_locking_state(self, val):
        val = self._new_settings_page_locking_state_validator.validate(val)
        self._new_settings_page_locking_state_value = val
        self._new_settings_page_locking_state_present = True

    @new_settings_page_locking_state.deleter
    def new_settings_page_locking_state(self):
        self._new_settings_page_locking_state_value = None
        self._new_settings_page_locking_state_present = False

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

    def __repr__(self):
        return 'EnterpriseSettingsLockingDetails(team_name={!r}, settings_page_name={!r}, previous_settings_page_locking_state={!r}, new_settings_page_locking_state={!r})'.format(
            self._team_name_value,
            self._settings_page_name_value,
            self._previous_settings_page_locking_state_value,
            self._new_settings_page_locking_state_value,
        )

EnterpriseSettingsLockingDetails_validator = bv.Struct(EnterpriseSettingsLockingDetails)

class EnterpriseSettingsLockingType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

EnterpriseSettingsLockingType_validator = bv.Struct(EnterpriseSettingsLockingType)

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.data_governance: Events that involve data
        governance actions
    :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
    data_governance = 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_data_governance(self):
        """
        Check if the union tag is ``data_governance``.

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

    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 governance_policy_add_folders_details(cls, val):
        """
        Create an instance of this class set to the
        ``governance_policy_add_folders_details`` tag with value ``val``.

        :param GovernancePolicyAddFoldersDetails val:
        :rtype: EventDetails
        """
        return cls('governance_policy_add_folders_details', val)

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

        :param GovernancePolicyCreateDetails val:
        :rtype: EventDetails
        """
        return cls('governance_policy_create_details', val)

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

        :param GovernancePolicyDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('governance_policy_delete_details', val)

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

        :param GovernancePolicyEditDetailsDetails val:
        :rtype: EventDetails
        """
        return cls('governance_policy_edit_details_details', val)

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

        :param GovernancePolicyEditDurationDetails val:
        :rtype: EventDetails
        """
        return cls('governance_policy_edit_duration_details', val)

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

        :param GovernancePolicyRemoveFoldersDetails val:
        :rtype: EventDetails
        """
        return cls('governance_policy_remove_folders_details', val)

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

        :param LegalHoldsActivateAHoldDetails val:
        :rtype: EventDetails
        """
        return cls('legal_holds_activate_a_hold_details', val)

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

        :param LegalHoldsAddMembersDetails val:
        :rtype: EventDetails
        """
        return cls('legal_holds_add_members_details', val)

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

        :param LegalHoldsChangeHoldDetailsDetails val:
        :rtype: EventDetails
        """
        return cls('legal_holds_change_hold_details_details', val)

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

        :param LegalHoldsChangeHoldNameDetails val:
        :rtype: EventDetails
        """
        return cls('legal_holds_change_hold_name_details', val)

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

        :param LegalHoldsExportAHoldDetails val:
        :rtype: EventDetails
        """
        return cls('legal_holds_export_a_hold_details', val)

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

        :param LegalHoldsExportCancelledDetails val:
        :rtype: EventDetails
        """
        return cls('legal_holds_export_cancelled_details', val)

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

        :param LegalHoldsExportDownloadedDetails val:
        :rtype: EventDetails
        """
        return cls('legal_holds_export_downloaded_details', val)

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

        :param LegalHoldsExportRemovedDetails val:
        :rtype: EventDetails
        """
        return cls('legal_holds_export_removed_details', val)

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

        :param LegalHoldsReleaseAHoldDetails val:
        :rtype: EventDetails
        """
        return cls('legal_holds_release_a_hold_details', val)

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

        :param LegalHoldsRemoveMembersDetails val:
        :rtype: EventDetails
        """
        return cls('legal_holds_remove_members_details', val)

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

        :param LegalHoldsReportAHoldDetails val:
        :rtype: EventDetails
        """
        return cls('legal_holds_report_a_hold_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_sync_backup_status_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_sync_backup_status_changed_details`` tag with value ``val``.

        :param DeviceSyncBackupStatusChangedDetails val:
        :rtype: EventDetails
        """
        return cls('device_sync_backup_status_changed_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_locking_lock_status_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_locking_lock_status_changed_details`` tag with value ``val``.

        :param FileLockingLockStatusChangedDetails val:
        :rtype: EventDetails
        """
        return cls('file_locking_lock_status_changed_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 folder_overview_description_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``folder_overview_description_changed_details`` tag with value ``val``.

        :param FolderOverviewDescriptionChangedDetails val:
        :rtype: EventDetails
        """
        return cls('folder_overview_description_changed_details', val)

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

        :param FolderOverviewItemPinnedDetails val:
        :rtype: EventDetails
        """
        return cls('folder_overview_item_pinned_details', val)

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

        :param FolderOverviewItemUnpinnedDetails val:
        :rtype: EventDetails
        """
        return cls('folder_overview_item_unpinned_details', val)

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

        :param RewindFolderDetails val:
        :rtype: EventDetails
        """
        return cls('rewind_folder_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 account_lock_or_unlocked_details(cls, val):
        """
        Create an instance of this class set to the
        ``account_lock_or_unlocked_details`` tag with value ``val``.

        :param AccountLockOrUnlockedDetails val:
        :rtype: EventDetails
        """
        return cls('account_lock_or_unlocked_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 create_team_invite_link_details(cls, val):
        """
        Create an instance of this class set to the
        ``create_team_invite_link_details`` tag with value ``val``.

        :param CreateTeamInviteLinkDetails val:
        :rtype: EventDetails
        """
        return cls('create_team_invite_link_details', val)

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

        :param DeleteTeamInviteLinkDetails val:
        :rtype: EventDetails
        """
        return cls('delete_team_invite_link_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_delete_profile_photo_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_delete_profile_photo_details`` tag with value ``val``.

        :param MemberDeleteProfilePhotoDetails val:
        :rtype: EventDetails
        """
        return cls('member_delete_profile_photo_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_set_profile_photo_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_set_profile_photo_details`` tag with value ``val``.

        :param MemberSetProfilePhotoDetails val:
        :rtype: EventDetails
        """
        return cls('member_set_profile_photo_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 pending_secondary_email_added_details(cls, val):
        """
        Create an instance of this class set to the
        ``pending_secondary_email_added_details`` tag with value ``val``.

        :param PendingSecondaryEmailAddedDetails val:
        :rtype: EventDetails
        """
        return cls('pending_secondary_email_added_details', val)

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

        :param SecondaryEmailDeletedDetails val:
        :rtype: EventDetails
        """
        return cls('secondary_email_deleted_details', val)

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

        :param SecondaryEmailVerifiedDetails val:
        :rtype: EventDetails
        """
        return cls('secondary_email_verified_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 binder_add_page_details(cls, val):
        """
        Create an instance of this class set to the ``binder_add_page_details``
        tag with value ``val``.

        :param BinderAddPageDetails val:
        :rtype: EventDetails
        """
        return cls('binder_add_page_details', val)

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

        :param BinderAddSectionDetails val:
        :rtype: EventDetails
        """
        return cls('binder_add_section_details', val)

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

        :param BinderRemovePageDetails val:
        :rtype: EventDetails
        """
        return cls('binder_remove_page_details', val)

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

        :param BinderRemoveSectionDetails val:
        :rtype: EventDetails
        """
        return cls('binder_remove_section_details', val)

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

        :param BinderRenamePageDetails val:
        :rtype: EventDetails
        """
        return cls('binder_rename_page_details', val)

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

        :param BinderRenameSectionDetails val:
        :rtype: EventDetails
        """
        return cls('binder_rename_section_details', val)

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

        :param BinderReorderPageDetails val:
        :rtype: EventDetails
        """
        return cls('binder_reorder_page_details', val)

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

        :param BinderReorderSectionDetails val:
        :rtype: EventDetails
        """
        return cls('binder_reorder_section_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_change_permission_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_published_link_change_permission_details`` tag with value
        ``val``.

        :param PaperPublishedLinkChangePermissionDetails val:
        :rtype: EventDetails
        """
        return cls('paper_published_link_change_permission_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 export_members_report_fail_details(cls, val):
        """
        Create an instance of this class set to the
        ``export_members_report_fail_details`` tag with value ``val``.

        :param ExportMembersReportFailDetails val:
        :rtype: EventDetails
        """
        return cls('export_members_report_fail_details', val)

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

        :param ExternalSharingCreateReportDetails val:
        :rtype: EventDetails
        """
        return cls('external_sharing_create_report_details', val)

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

        :param ExternalSharingReportFailedDetails val:
        :rtype: EventDetails
        """
        return cls('external_sharing_report_failed_details', val)

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

        :param NoExpirationLinkGenCreateReportDetails val:
        :rtype: EventDetails
        """
        return cls('no_expiration_link_gen_create_report_details', val)

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

        :param NoExpirationLinkGenReportFailedDetails val:
        :rtype: EventDetails
        """
        return cls('no_expiration_link_gen_report_failed_details', val)

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

        :param NoPasswordLinkGenCreateReportDetails val:
        :rtype: EventDetails
        """
        return cls('no_password_link_gen_create_report_details', val)

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

        :param NoPasswordLinkGenReportFailedDetails val:
        :rtype: EventDetails
        """
        return cls('no_password_link_gen_report_failed_details', val)

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

        :param NoPasswordLinkViewCreateReportDetails val:
        :rtype: EventDetails
        """
        return cls('no_password_link_view_create_report_details', val)

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

        :param NoPasswordLinkViewReportFailedDetails val:
        :rtype: EventDetails
        """
        return cls('no_password_link_view_report_failed_details', val)

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

        :param OutdatedLinkViewCreateReportDetails val:
        :rtype: EventDetails
        """
        return cls('outdated_link_view_create_report_details', val)

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

        :param OutdatedLinkViewReportFailedDetails val:
        :rtype: EventDetails
        """
        return cls('outdated_link_view_report_failed_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 file_transfers_file_add_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_transfers_file_add_details`` tag with value ``val``.

        :param FileTransfersFileAddDetails val:
        :rtype: EventDetails
        """
        return cls('file_transfers_file_add_details', val)

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

        :param FileTransfersTransferDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('file_transfers_transfer_delete_details', val)

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

        :param FileTransfersTransferDownloadDetails val:
        :rtype: EventDetails
        """
        return cls('file_transfers_transfer_download_details', val)

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

        :param FileTransfersTransferSendDetails val:
        :rtype: EventDetails
        """
        return cls('file_transfers_transfer_send_details', val)

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

        :param FileTransfersTransferViewDetails val:
        :rtype: EventDetails
        """
        return cls('file_transfers_transfer_view_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_restore_invitees_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_restore_invitees_details`` tag with value ``val``.

        :param SharedContentRestoreInviteesDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_restore_invitees_details', val)

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

        :param SharedContentRestoreMemberDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_restore_member_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_settings_add_expiration_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_settings_add_expiration_details`` tag with value ``val``.

        :param SharedLinkSettingsAddExpirationDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_settings_add_expiration_details', val)

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

        :param SharedLinkSettingsAddPasswordDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_settings_add_password_details', val)

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

        :param SharedLinkSettingsAllowDownloadDisabledDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_settings_allow_download_disabled_details', val)

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

        :param SharedLinkSettingsAllowDownloadEnabledDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_settings_allow_download_enabled_details', val)

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

        :param SharedLinkSettingsChangeAudienceDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_settings_change_audience_details', val)

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

        :param SharedLinkSettingsChangeExpirationDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_settings_change_expiration_details', val)

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

        :param SharedLinkSettingsChangePasswordDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_settings_change_password_details', val)

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

        :param SharedLinkSettingsRemoveExpirationDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_settings_remove_expiration_details', val)

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

        :param SharedLinkSettingsRemovePasswordDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_settings_remove_password_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_disable_downloads_details(cls, val):
        """
        Create an instance of this class set to the
        ``shmodel_disable_downloads_details`` tag with value ``val``.

        :param ShmodelDisableDownloadsDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_disable_downloads_details', val)

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

        :param ShmodelEnableDownloadsDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_enable_downloads_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 computer_backup_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``computer_backup_policy_changed_details`` tag with value ``val``.

        :param ComputerBackupPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('computer_backup_policy_changed_details', val)

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

        :param ContentAdministrationPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('content_administration_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_add_exception_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_add_exception_details`` tag with value ``val``.

        :param DeviceApprovalsAddExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('device_approvals_add_exception_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 device_approvals_remove_exception_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_remove_exception_details`` tag with value ``val``.

        :param DeviceApprovalsRemoveExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('device_approvals_remove_exception_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_locking_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_locking_policy_changed_details`` tag with value ``val``.

        :param FileLockingPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('file_locking_policy_changed_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 file_transfers_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_transfers_policy_changed_details`` tag with value ``val``.

        :param FileTransfersPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('file_transfers_policy_changed_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_send_invite_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_send_invite_policy_changed_details`` tag with value ``val``.

        :param MemberSendInvitePolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('member_send_invite_policy_changed_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 password_strength_requirements_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``password_strength_requirements_change_policy_details`` tag with value
        ``val``.

        :param PasswordStrengthRequirementsChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('password_strength_requirements_change_policy_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 rewind_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``rewind_policy_changed_details`` tag with value ``val``.

        :param RewindPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('rewind_policy_changed_details', val)

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

        :param SendForSignaturePolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('send_for_signature_policy_changed_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 smarter_smart_sync_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``smarter_smart_sync_policy_changed_details`` tag with value ``val``.

        :param SmarterSmartSyncPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('smarter_smart_sync_policy_changed_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 team_sharing_whitelist_subjects_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_sharing_whitelist_subjects_changed_details`` tag with value
        ``val``.

        :param TeamSharingWhitelistSubjectsChangedDetails val:
        :rtype: EventDetails
        """
        return cls('team_sharing_whitelist_subjects_changed_details', val)

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

        :param TfaAddExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_add_exception_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 tfa_remove_exception_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_remove_exception_details`` tag with value ``val``.

        :param TfaRemoveExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_remove_exception_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 watermarking_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``watermarking_policy_changed_details`` tag with value ``val``.

        :param WatermarkingPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('watermarking_policy_changed_details', val)

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

        :param WebSessionsChangeActiveSessionLimitDetails val:
        :rtype: EventDetails
        """
        return cls('web_sessions_change_active_session_limit_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 changed_enterprise_admin_role_details(cls, val):
        """
        Create an instance of this class set to the
        ``changed_enterprise_admin_role_details`` tag with value ``val``.

        :param ChangedEnterpriseAdminRoleDetails val:
        :rtype: EventDetails
        """
        return cls('changed_enterprise_admin_role_details', val)

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

        :param ChangedEnterpriseConnectedTeamStatusDetails val:
        :rtype: EventDetails
        """
        return cls('changed_enterprise_connected_team_status_details', val)

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

        :param EndedEnterpriseAdminSessionDetails val:
        :rtype: EventDetails
        """
        return cls('ended_enterprise_admin_session_details', val)

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

        :param EndedEnterpriseAdminSessionDeprecatedDetails val:
        :rtype: EventDetails
        """
        return cls('ended_enterprise_admin_session_deprecated_details', val)

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

        :param EnterpriseSettingsLockingDetails val:
        :rtype: EventDetails
        """
        return cls('enterprise_settings_locking_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 started_enterprise_admin_session_details(cls, val):
        """
        Create an instance of this class set to the
        ``started_enterprise_admin_session_details`` tag with value ``val``.

        :param StartedEnterpriseAdminSessionDetails val:
        :rtype: EventDetails
        """
        return cls('started_enterprise_admin_session_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_governance_policy_add_folders_details(self):
        """
        Check if the union tag is ``governance_policy_add_folders_details``.

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

    def is_governance_policy_create_details(self):
        """
        Check if the union tag is ``governance_policy_create_details``.

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

    def is_governance_policy_delete_details(self):
        """
        Check if the union tag is ``governance_policy_delete_details``.

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

    def is_governance_policy_edit_details_details(self):
        """
        Check if the union tag is ``governance_policy_edit_details_details``.

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

    def is_governance_policy_edit_duration_details(self):
        """
        Check if the union tag is ``governance_policy_edit_duration_details``.

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

    def is_governance_policy_remove_folders_details(self):
        """
        Check if the union tag is ``governance_policy_remove_folders_details``.

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

    def is_legal_holds_activate_a_hold_details(self):
        """
        Check if the union tag is ``legal_holds_activate_a_hold_details``.

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

    def is_legal_holds_add_members_details(self):
        """
        Check if the union tag is ``legal_holds_add_members_details``.

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

    def is_legal_holds_change_hold_details_details(self):
        """
        Check if the union tag is ``legal_holds_change_hold_details_details``.

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

    def is_legal_holds_change_hold_name_details(self):
        """
        Check if the union tag is ``legal_holds_change_hold_name_details``.

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

    def is_legal_holds_export_a_hold_details(self):
        """
        Check if the union tag is ``legal_holds_export_a_hold_details``.

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

    def is_legal_holds_export_cancelled_details(self):
        """
        Check if the union tag is ``legal_holds_export_cancelled_details``.

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

    def is_legal_holds_export_downloaded_details(self):
        """
        Check if the union tag is ``legal_holds_export_downloaded_details``.

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

    def is_legal_holds_export_removed_details(self):
        """
        Check if the union tag is ``legal_holds_export_removed_details``.

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

    def is_legal_holds_release_a_hold_details(self):
        """
        Check if the union tag is ``legal_holds_release_a_hold_details``.

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

    def is_legal_holds_remove_members_details(self):
        """
        Check if the union tag is ``legal_holds_remove_members_details``.

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

    def is_legal_holds_report_a_hold_details(self):
        """
        Check if the union tag is ``legal_holds_report_a_hold_details``.

        :rtype: bool
        """
        return self._tag == 'legal_holds_report_a_hold_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_sync_backup_status_changed_details(self):
        """
        Check if the union tag is ``device_sync_backup_status_changed_details``.

        :rtype: bool
        """
        return self._tag == 'device_sync_backup_status_changed_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_locking_lock_status_changed_details(self):
        """
        Check if the union tag is ``file_locking_lock_status_changed_details``.

        :rtype: bool
        """
        return self._tag == 'file_locking_lock_status_changed_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_folder_overview_description_changed_details(self):
        """
        Check if the union tag is ``folder_overview_description_changed_details``.

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

    def is_folder_overview_item_pinned_details(self):
        """
        Check if the union tag is ``folder_overview_item_pinned_details``.

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

    def is_folder_overview_item_unpinned_details(self):
        """
        Check if the union tag is ``folder_overview_item_unpinned_details``.

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

    def is_rewind_folder_details(self):
        """
        Check if the union tag is ``rewind_folder_details``.

        :rtype: bool
        """
        return self._tag == 'rewind_folder_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_account_lock_or_unlocked_details(self):
        """
        Check if the union tag is ``account_lock_or_unlocked_details``.

        :rtype: bool
        """
        return self._tag == 'account_lock_or_unlocked_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_create_team_invite_link_details(self):
        """
        Check if the union tag is ``create_team_invite_link_details``.

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

    def is_delete_team_invite_link_details(self):
        """
        Check if the union tag is ``delete_team_invite_link_details``.

        :rtype: bool
        """
        return self._tag == 'delete_team_invite_link_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_delete_profile_photo_details(self):
        """
        Check if the union tag is ``member_delete_profile_photo_details``.

        :rtype: bool
        """
        return self._tag == 'member_delete_profile_photo_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_set_profile_photo_details(self):
        """
        Check if the union tag is ``member_set_profile_photo_details``.

        :rtype: bool
        """
        return self._tag == 'member_set_profile_photo_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_pending_secondary_email_added_details(self):
        """
        Check if the union tag is ``pending_secondary_email_added_details``.

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

    def is_secondary_email_deleted_details(self):
        """
        Check if the union tag is ``secondary_email_deleted_details``.

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

    def is_secondary_email_verified_details(self):
        """
        Check if the union tag is ``secondary_email_verified_details``.

        :rtype: bool
        """
        return self._tag == 'secondary_email_verified_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_binder_add_page_details(self):
        """
        Check if the union tag is ``binder_add_page_details``.

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

    def is_binder_add_section_details(self):
        """
        Check if the union tag is ``binder_add_section_details``.

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

    def is_binder_remove_page_details(self):
        """
        Check if the union tag is ``binder_remove_page_details``.

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

    def is_binder_remove_section_details(self):
        """
        Check if the union tag is ``binder_remove_section_details``.

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

    def is_binder_rename_page_details(self):
        """
        Check if the union tag is ``binder_rename_page_details``.

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

    def is_binder_rename_section_details(self):
        """
        Check if the union tag is ``binder_rename_section_details``.

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

    def is_binder_reorder_page_details(self):
        """
        Check if the union tag is ``binder_reorder_page_details``.

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

    def is_binder_reorder_section_details(self):
        """
        Check if the union tag is ``binder_reorder_section_details``.

        :rtype: bool
        """
        return self._tag == 'binder_reorder_section_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_change_permission_details(self):
        """
        Check if the union tag is ``paper_published_link_change_permission_details``.

        :rtype: bool
        """
        return self._tag == 'paper_published_link_change_permission_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_export_members_report_fail_details(self):
        """
        Check if the union tag is ``export_members_report_fail_details``.

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

    def is_external_sharing_create_report_details(self):
        """
        Check if the union tag is ``external_sharing_create_report_details``.

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

    def is_external_sharing_report_failed_details(self):
        """
        Check if the union tag is ``external_sharing_report_failed_details``.

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

    def is_no_expiration_link_gen_create_report_details(self):
        """
        Check if the union tag is ``no_expiration_link_gen_create_report_details``.

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

    def is_no_expiration_link_gen_report_failed_details(self):
        """
        Check if the union tag is ``no_expiration_link_gen_report_failed_details``.

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

    def is_no_password_link_gen_create_report_details(self):
        """
        Check if the union tag is ``no_password_link_gen_create_report_details``.

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

    def is_no_password_link_gen_report_failed_details(self):
        """
        Check if the union tag is ``no_password_link_gen_report_failed_details``.

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

    def is_no_password_link_view_create_report_details(self):
        """
        Check if the union tag is ``no_password_link_view_create_report_details``.

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

    def is_no_password_link_view_report_failed_details(self):
        """
        Check if the union tag is ``no_password_link_view_report_failed_details``.

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

    def is_outdated_link_view_create_report_details(self):
        """
        Check if the union tag is ``outdated_link_view_create_report_details``.

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

    def is_outdated_link_view_report_failed_details(self):
        """
        Check if the union tag is ``outdated_link_view_report_failed_details``.

        :rtype: bool
        """
        return self._tag == 'outdated_link_view_report_failed_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_file_transfers_file_add_details(self):
        """
        Check if the union tag is ``file_transfers_file_add_details``.

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

    def is_file_transfers_transfer_delete_details(self):
        """
        Check if the union tag is ``file_transfers_transfer_delete_details``.

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

    def is_file_transfers_transfer_download_details(self):
        """
        Check if the union tag is ``file_transfers_transfer_download_details``.

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

    def is_file_transfers_transfer_send_details(self):
        """
        Check if the union tag is ``file_transfers_transfer_send_details``.

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

    def is_file_transfers_transfer_view_details(self):
        """
        Check if the union tag is ``file_transfers_transfer_view_details``.

        :rtype: bool
        """
        return self._tag == 'file_transfers_transfer_view_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_restore_invitees_details(self):
        """
        Check if the union tag is ``shared_content_restore_invitees_details``.

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

    def is_shared_content_restore_member_details(self):
        """
        Check if the union tag is ``shared_content_restore_member_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_restore_member_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_settings_add_expiration_details(self):
        """
        Check if the union tag is ``shared_link_settings_add_expiration_details``.

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

    def is_shared_link_settings_add_password_details(self):
        """
        Check if the union tag is ``shared_link_settings_add_password_details``.

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

    def is_shared_link_settings_allow_download_disabled_details(self):
        """
        Check if the union tag is ``shared_link_settings_allow_download_disabled_details``.

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

    def is_shared_link_settings_allow_download_enabled_details(self):
        """
        Check if the union tag is ``shared_link_settings_allow_download_enabled_details``.

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

    def is_shared_link_settings_change_audience_details(self):
        """
        Check if the union tag is ``shared_link_settings_change_audience_details``.

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

    def is_shared_link_settings_change_expiration_details(self):
        """
        Check if the union tag is ``shared_link_settings_change_expiration_details``.

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

    def is_shared_link_settings_change_password_details(self):
        """
        Check if the union tag is ``shared_link_settings_change_password_details``.

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

    def is_shared_link_settings_remove_expiration_details(self):
        """
        Check if the union tag is ``shared_link_settings_remove_expiration_details``.

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

    def is_shared_link_settings_remove_password_details(self):
        """
        Check if the union tag is ``shared_link_settings_remove_password_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_settings_remove_password_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_disable_downloads_details(self):
        """
        Check if the union tag is ``shmodel_disable_downloads_details``.

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

    def is_shmodel_enable_downloads_details(self):
        """
        Check if the union tag is ``shmodel_enable_downloads_details``.

        :rtype: bool
        """
        return self._tag == 'shmodel_enable_downloads_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_computer_backup_policy_changed_details(self):
        """
        Check if the union tag is ``computer_backup_policy_changed_details``.

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

    def is_content_administration_policy_changed_details(self):
        """
        Check if the union tag is ``content_administration_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'content_administration_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_add_exception_details(self):
        """
        Check if the union tag is ``device_approvals_add_exception_details``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_add_exception_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_device_approvals_remove_exception_details(self):
        """
        Check if the union tag is ``device_approvals_remove_exception_details``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_remove_exception_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_locking_policy_changed_details(self):
        """
        Check if the union tag is ``file_locking_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'file_locking_policy_changed_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_file_transfers_policy_changed_details(self):
        """
        Check if the union tag is ``file_transfers_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'file_transfers_policy_changed_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_send_invite_policy_changed_details(self):
        """
        Check if the union tag is ``member_send_invite_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'member_send_invite_policy_changed_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_password_strength_requirements_change_policy_details(self):
        """
        Check if the union tag is ``password_strength_requirements_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'password_strength_requirements_change_policy_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_rewind_policy_changed_details(self):
        """
        Check if the union tag is ``rewind_policy_changed_details``.

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

    def is_send_for_signature_policy_changed_details(self):
        """
        Check if the union tag is ``send_for_signature_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'send_for_signature_policy_changed_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_smarter_smart_sync_policy_changed_details(self):
        """
        Check if the union tag is ``smarter_smart_sync_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'smarter_smart_sync_policy_changed_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_team_sharing_whitelist_subjects_changed_details(self):
        """
        Check if the union tag is ``team_sharing_whitelist_subjects_changed_details``.

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

    def is_tfa_add_exception_details(self):
        """
        Check if the union tag is ``tfa_add_exception_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_add_exception_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_tfa_remove_exception_details(self):
        """
        Check if the union tag is ``tfa_remove_exception_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_remove_exception_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_watermarking_policy_changed_details(self):
        """
        Check if the union tag is ``watermarking_policy_changed_details``.

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

    def is_web_sessions_change_active_session_limit_details(self):
        """
        Check if the union tag is ``web_sessions_change_active_session_limit_details``.

        :rtype: bool
        """
        return self._tag == 'web_sessions_change_active_session_limit_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_changed_enterprise_admin_role_details(self):
        """
        Check if the union tag is ``changed_enterprise_admin_role_details``.

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

    def is_changed_enterprise_connected_team_status_details(self):
        """
        Check if the union tag is ``changed_enterprise_connected_team_status_details``.

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

    def is_ended_enterprise_admin_session_details(self):
        """
        Check if the union tag is ``ended_enterprise_admin_session_details``.

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

    def is_ended_enterprise_admin_session_deprecated_details(self):
        """
        Check if the union tag is ``ended_enterprise_admin_session_deprecated_details``.

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

    def is_enterprise_settings_locking_details(self):
        """
        Check if the union tag is ``enterprise_settings_locking_details``.

        :rtype: bool
        """
        return self._tag == 'enterprise_settings_locking_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_started_enterprise_admin_session_details(self):
        """
        Check if the union tag is ``started_enterprise_admin_session_details``.

        :rtype: bool
        """
        return self._tag == 'started_enterprise_admin_session_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_governance_policy_add_folders_details(self):
        """
        Only call this if :meth:`is_governance_policy_add_folders_details` is true.

        :rtype: GovernancePolicyAddFoldersDetails
        """
        if not self.is_governance_policy_add_folders_details():
            raise AttributeError("tag 'governance_policy_add_folders_details' not set")
        return self._value

    def get_governance_policy_create_details(self):
        """
        Only call this if :meth:`is_governance_policy_create_details` is true.

        :rtype: GovernancePolicyCreateDetails
        """
        if not self.is_governance_policy_create_details():
            raise AttributeError("tag 'governance_policy_create_details' not set")
        return self._value

    def get_governance_policy_delete_details(self):
        """
        Only call this if :meth:`is_governance_policy_delete_details` is true.

        :rtype: GovernancePolicyDeleteDetails
        """
        if not self.is_governance_policy_delete_details():
            raise AttributeError("tag 'governance_policy_delete_details' not set")
        return self._value

    def get_governance_policy_edit_details_details(self):
        """
        Only call this if :meth:`is_governance_policy_edit_details_details` is true.

        :rtype: GovernancePolicyEditDetailsDetails
        """
        if not self.is_governance_policy_edit_details_details():
            raise AttributeError("tag 'governance_policy_edit_details_details' not set")
        return self._value

    def get_governance_policy_edit_duration_details(self):
        """
        Only call this if :meth:`is_governance_policy_edit_duration_details` is true.

        :rtype: GovernancePolicyEditDurationDetails
        """
        if not self.is_governance_policy_edit_duration_details():
            raise AttributeError("tag 'governance_policy_edit_duration_details' not set")
        return self._value

    def get_governance_policy_remove_folders_details(self):
        """
        Only call this if :meth:`is_governance_policy_remove_folders_details` is true.

        :rtype: GovernancePolicyRemoveFoldersDetails
        """
        if not self.is_governance_policy_remove_folders_details():
            raise AttributeError("tag 'governance_policy_remove_folders_details' not set")
        return self._value

    def get_legal_holds_activate_a_hold_details(self):
        """
        Only call this if :meth:`is_legal_holds_activate_a_hold_details` is true.

        :rtype: LegalHoldsActivateAHoldDetails
        """
        if not self.is_legal_holds_activate_a_hold_details():
            raise AttributeError("tag 'legal_holds_activate_a_hold_details' not set")
        return self._value

    def get_legal_holds_add_members_details(self):
        """
        Only call this if :meth:`is_legal_holds_add_members_details` is true.

        :rtype: LegalHoldsAddMembersDetails
        """
        if not self.is_legal_holds_add_members_details():
            raise AttributeError("tag 'legal_holds_add_members_details' not set")
        return self._value

    def get_legal_holds_change_hold_details_details(self):
        """
        Only call this if :meth:`is_legal_holds_change_hold_details_details` is true.

        :rtype: LegalHoldsChangeHoldDetailsDetails
        """
        if not self.is_legal_holds_change_hold_details_details():
            raise AttributeError("tag 'legal_holds_change_hold_details_details' not set")
        return self._value

    def get_legal_holds_change_hold_name_details(self):
        """
        Only call this if :meth:`is_legal_holds_change_hold_name_details` is true.

        :rtype: LegalHoldsChangeHoldNameDetails
        """
        if not self.is_legal_holds_change_hold_name_details():
            raise AttributeError("tag 'legal_holds_change_hold_name_details' not set")
        return self._value

    def get_legal_holds_export_a_hold_details(self):
        """
        Only call this if :meth:`is_legal_holds_export_a_hold_details` is true.

        :rtype: LegalHoldsExportAHoldDetails
        """
        if not self.is_legal_holds_export_a_hold_details():
            raise AttributeError("tag 'legal_holds_export_a_hold_details' not set")
        return self._value

    def get_legal_holds_export_cancelled_details(self):
        """
        Only call this if :meth:`is_legal_holds_export_cancelled_details` is true.

        :rtype: LegalHoldsExportCancelledDetails
        """
        if not self.is_legal_holds_export_cancelled_details():
            raise AttributeError("tag 'legal_holds_export_cancelled_details' not set")
        return self._value

    def get_legal_holds_export_downloaded_details(self):
        """
        Only call this if :meth:`is_legal_holds_export_downloaded_details` is true.

        :rtype: LegalHoldsExportDownloadedDetails
        """
        if not self.is_legal_holds_export_downloaded_details():
            raise AttributeError("tag 'legal_holds_export_downloaded_details' not set")
        return self._value

    def get_legal_holds_export_removed_details(self):
        """
        Only call this if :meth:`is_legal_holds_export_removed_details` is true.

        :rtype: LegalHoldsExportRemovedDetails
        """
        if not self.is_legal_holds_export_removed_details():
            raise AttributeError("tag 'legal_holds_export_removed_details' not set")
        return self._value

    def get_legal_holds_release_a_hold_details(self):
        """
        Only call this if :meth:`is_legal_holds_release_a_hold_details` is true.

        :rtype: LegalHoldsReleaseAHoldDetails
        """
        if not self.is_legal_holds_release_a_hold_details():
            raise AttributeError("tag 'legal_holds_release_a_hold_details' not set")
        return self._value

    def get_legal_holds_remove_members_details(self):
        """
        Only call this if :meth:`is_legal_holds_remove_members_details` is true.

        :rtype: LegalHoldsRemoveMembersDetails
        """
        if not self.is_legal_holds_remove_members_details():
            raise AttributeError("tag 'legal_holds_remove_members_details' not set")
        return self._value

    def get_legal_holds_report_a_hold_details(self):
        """
        Only call this if :meth:`is_legal_holds_report_a_hold_details` is true.

        :rtype: LegalHoldsReportAHoldDetails
        """
        if not self.is_legal_holds_report_a_hold_details():
            raise AttributeError("tag 'legal_holds_report_a_hold_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_sync_backup_status_changed_details(self):
        """
        Only call this if :meth:`is_device_sync_backup_status_changed_details` is true.

        :rtype: DeviceSyncBackupStatusChangedDetails
        """
        if not self.is_device_sync_backup_status_changed_details():
            raise AttributeError("tag 'device_sync_backup_status_changed_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_locking_lock_status_changed_details(self):
        """
        Only call this if :meth:`is_file_locking_lock_status_changed_details` is true.

        :rtype: FileLockingLockStatusChangedDetails
        """
        if not self.is_file_locking_lock_status_changed_details():
            raise AttributeError("tag 'file_locking_lock_status_changed_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_folder_overview_description_changed_details(self):
        """
        Only call this if :meth:`is_folder_overview_description_changed_details` is true.

        :rtype: FolderOverviewDescriptionChangedDetails
        """
        if not self.is_folder_overview_description_changed_details():
            raise AttributeError("tag 'folder_overview_description_changed_details' not set")
        return self._value

    def get_folder_overview_item_pinned_details(self):
        """
        Only call this if :meth:`is_folder_overview_item_pinned_details` is true.

        :rtype: FolderOverviewItemPinnedDetails
        """
        if not self.is_folder_overview_item_pinned_details():
            raise AttributeError("tag 'folder_overview_item_pinned_details' not set")
        return self._value

    def get_folder_overview_item_unpinned_details(self):
        """
        Only call this if :meth:`is_folder_overview_item_unpinned_details` is true.

        :rtype: FolderOverviewItemUnpinnedDetails
        """
        if not self.is_folder_overview_item_unpinned_details():
            raise AttributeError("tag 'folder_overview_item_unpinned_details' not set")
        return self._value

    def get_rewind_folder_details(self):
        """
        Only call this if :meth:`is_rewind_folder_details` is true.

        :rtype: RewindFolderDetails
        """
        if not self.is_rewind_folder_details():
            raise AttributeError("tag 'rewind_folder_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_account_lock_or_unlocked_details(self):
        """
        Only call this if :meth:`is_account_lock_or_unlocked_details` is true.

        :rtype: AccountLockOrUnlockedDetails
        """
        if not self.is_account_lock_or_unlocked_details():
            raise AttributeError("tag 'account_lock_or_unlocked_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_create_team_invite_link_details(self):
        """
        Only call this if :meth:`is_create_team_invite_link_details` is true.

        :rtype: CreateTeamInviteLinkDetails
        """
        if not self.is_create_team_invite_link_details():
            raise AttributeError("tag 'create_team_invite_link_details' not set")
        return self._value

    def get_delete_team_invite_link_details(self):
        """
        Only call this if :meth:`is_delete_team_invite_link_details` is true.

        :rtype: DeleteTeamInviteLinkDetails
        """
        if not self.is_delete_team_invite_link_details():
            raise AttributeError("tag 'delete_team_invite_link_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_delete_profile_photo_details(self):
        """
        Only call this if :meth:`is_member_delete_profile_photo_details` is true.

        :rtype: MemberDeleteProfilePhotoDetails
        """
        if not self.is_member_delete_profile_photo_details():
            raise AttributeError("tag 'member_delete_profile_photo_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_set_profile_photo_details(self):
        """
        Only call this if :meth:`is_member_set_profile_photo_details` is true.

        :rtype: MemberSetProfilePhotoDetails
        """
        if not self.is_member_set_profile_photo_details():
            raise AttributeError("tag 'member_set_profile_photo_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_pending_secondary_email_added_details(self):
        """
        Only call this if :meth:`is_pending_secondary_email_added_details` is true.

        :rtype: PendingSecondaryEmailAddedDetails
        """
        if not self.is_pending_secondary_email_added_details():
            raise AttributeError("tag 'pending_secondary_email_added_details' not set")
        return self._value

    def get_secondary_email_deleted_details(self):
        """
        Only call this if :meth:`is_secondary_email_deleted_details` is true.

        :rtype: SecondaryEmailDeletedDetails
        """
        if not self.is_secondary_email_deleted_details():
            raise AttributeError("tag 'secondary_email_deleted_details' not set")
        return self._value

    def get_secondary_email_verified_details(self):
        """
        Only call this if :meth:`is_secondary_email_verified_details` is true.

        :rtype: SecondaryEmailVerifiedDetails
        """
        if not self.is_secondary_email_verified_details():
            raise AttributeError("tag 'secondary_email_verified_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_binder_add_page_details(self):
        """
        Only call this if :meth:`is_binder_add_page_details` is true.

        :rtype: BinderAddPageDetails
        """
        if not self.is_binder_add_page_details():
            raise AttributeError("tag 'binder_add_page_details' not set")
        return self._value

    def get_binder_add_section_details(self):
        """
        Only call this if :meth:`is_binder_add_section_details` is true.

        :rtype: BinderAddSectionDetails
        """
        if not self.is_binder_add_section_details():
            raise AttributeError("tag 'binder_add_section_details' not set")
        return self._value

    def get_binder_remove_page_details(self):
        """
        Only call this if :meth:`is_binder_remove_page_details` is true.

        :rtype: BinderRemovePageDetails
        """
        if not self.is_binder_remove_page_details():
            raise AttributeError("tag 'binder_remove_page_details' not set")
        return self._value

    def get_binder_remove_section_details(self):
        """
        Only call this if :meth:`is_binder_remove_section_details` is true.

        :rtype: BinderRemoveSectionDetails
        """
        if not self.is_binder_remove_section_details():
            raise AttributeError("tag 'binder_remove_section_details' not set")
        return self._value

    def get_binder_rename_page_details(self):
        """
        Only call this if :meth:`is_binder_rename_page_details` is true.

        :rtype: BinderRenamePageDetails
        """
        if not self.is_binder_rename_page_details():
            raise AttributeError("tag 'binder_rename_page_details' not set")
        return self._value

    def get_binder_rename_section_details(self):
        """
        Only call this if :meth:`is_binder_rename_section_details` is true.

        :rtype: BinderRenameSectionDetails
        """
        if not self.is_binder_rename_section_details():
            raise AttributeError("tag 'binder_rename_section_details' not set")
        return self._value

    def get_binder_reorder_page_details(self):
        """
        Only call this if :meth:`is_binder_reorder_page_details` is true.

        :rtype: BinderReorderPageDetails
        """
        if not self.is_binder_reorder_page_details():
            raise AttributeError("tag 'binder_reorder_page_details' not set")
        return self._value

    def get_binder_reorder_section_details(self):
        """
        Only call this if :meth:`is_binder_reorder_section_details` is true.

        :rtype: BinderReorderSectionDetails
        """
        if not self.is_binder_reorder_section_details():
            raise AttributeError("tag 'binder_reorder_section_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_change_permission_details(self):
        """
        Only call this if :meth:`is_paper_published_link_change_permission_details` is true.

        :rtype: PaperPublishedLinkChangePermissionDetails
        """
        if not self.is_paper_published_link_change_permission_details():
            raise AttributeError("tag 'paper_published_link_change_permission_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_export_members_report_fail_details(self):
        """
        Only call this if :meth:`is_export_members_report_fail_details` is true.

        :rtype: ExportMembersReportFailDetails
        """
        if not self.is_export_members_report_fail_details():
            raise AttributeError("tag 'export_members_report_fail_details' not set")
        return self._value

    def get_external_sharing_create_report_details(self):
        """
        Only call this if :meth:`is_external_sharing_create_report_details` is true.

        :rtype: ExternalSharingCreateReportDetails
        """
        if not self.is_external_sharing_create_report_details():
            raise AttributeError("tag 'external_sharing_create_report_details' not set")
        return self._value

    def get_external_sharing_report_failed_details(self):
        """
        Only call this if :meth:`is_external_sharing_report_failed_details` is true.

        :rtype: ExternalSharingReportFailedDetails
        """
        if not self.is_external_sharing_report_failed_details():
            raise AttributeError("tag 'external_sharing_report_failed_details' not set")
        return self._value

    def get_no_expiration_link_gen_create_report_details(self):
        """
        Only call this if :meth:`is_no_expiration_link_gen_create_report_details` is true.

        :rtype: NoExpirationLinkGenCreateReportDetails
        """
        if not self.is_no_expiration_link_gen_create_report_details():
            raise AttributeError("tag 'no_expiration_link_gen_create_report_details' not set")
        return self._value

    def get_no_expiration_link_gen_report_failed_details(self):
        """
        Only call this if :meth:`is_no_expiration_link_gen_report_failed_details` is true.

        :rtype: NoExpirationLinkGenReportFailedDetails
        """
        if not self.is_no_expiration_link_gen_report_failed_details():
            raise AttributeError("tag 'no_expiration_link_gen_report_failed_details' not set")
        return self._value

    def get_no_password_link_gen_create_report_details(self):
        """
        Only call this if :meth:`is_no_password_link_gen_create_report_details` is true.

        :rtype: NoPasswordLinkGenCreateReportDetails
        """
        if not self.is_no_password_link_gen_create_report_details():
            raise AttributeError("tag 'no_password_link_gen_create_report_details' not set")
        return self._value

    def get_no_password_link_gen_report_failed_details(self):
        """
        Only call this if :meth:`is_no_password_link_gen_report_failed_details` is true.

        :rtype: NoPasswordLinkGenReportFailedDetails
        """
        if not self.is_no_password_link_gen_report_failed_details():
            raise AttributeError("tag 'no_password_link_gen_report_failed_details' not set")
        return self._value

    def get_no_password_link_view_create_report_details(self):
        """
        Only call this if :meth:`is_no_password_link_view_create_report_details` is true.

        :rtype: NoPasswordLinkViewCreateReportDetails
        """
        if not self.is_no_password_link_view_create_report_details():
            raise AttributeError("tag 'no_password_link_view_create_report_details' not set")
        return self._value

    def get_no_password_link_view_report_failed_details(self):
        """
        Only call this if :meth:`is_no_password_link_view_report_failed_details` is true.

        :rtype: NoPasswordLinkViewReportFailedDetails
        """
        if not self.is_no_password_link_view_report_failed_details():
            raise AttributeError("tag 'no_password_link_view_report_failed_details' not set")
        return self._value

    def get_outdated_link_view_create_report_details(self):
        """
        Only call this if :meth:`is_outdated_link_view_create_report_details` is true.

        :rtype: OutdatedLinkViewCreateReportDetails
        """
        if not self.is_outdated_link_view_create_report_details():
            raise AttributeError("tag 'outdated_link_view_create_report_details' not set")
        return self._value

    def get_outdated_link_view_report_failed_details(self):
        """
        Only call this if :meth:`is_outdated_link_view_report_failed_details` is true.

        :rtype: OutdatedLinkViewReportFailedDetails
        """
        if not self.is_outdated_link_view_report_failed_details():
            raise AttributeError("tag 'outdated_link_view_report_failed_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_file_transfers_file_add_details(self):
        """
        Only call this if :meth:`is_file_transfers_file_add_details` is true.

        :rtype: FileTransfersFileAddDetails
        """
        if not self.is_file_transfers_file_add_details():
            raise AttributeError("tag 'file_transfers_file_add_details' not set")
        return self._value

    def get_file_transfers_transfer_delete_details(self):
        """
        Only call this if :meth:`is_file_transfers_transfer_delete_details` is true.

        :rtype: FileTransfersTransferDeleteDetails
        """
        if not self.is_file_transfers_transfer_delete_details():
            raise AttributeError("tag 'file_transfers_transfer_delete_details' not set")
        return self._value

    def get_file_transfers_transfer_download_details(self):
        """
        Only call this if :meth:`is_file_transfers_transfer_download_details` is true.

        :rtype: FileTransfersTransferDownloadDetails
        """
        if not self.is_file_transfers_transfer_download_details():
            raise AttributeError("tag 'file_transfers_transfer_download_details' not set")
        return self._value

    def get_file_transfers_transfer_send_details(self):
        """
        Only call this if :meth:`is_file_transfers_transfer_send_details` is true.

        :rtype: FileTransfersTransferSendDetails
        """
        if not self.is_file_transfers_transfer_send_details():
            raise AttributeError("tag 'file_transfers_transfer_send_details' not set")
        return self._value

    def get_file_transfers_transfer_view_details(self):
        """
        Only call this if :meth:`is_file_transfers_transfer_view_details` is true.

        :rtype: FileTransfersTransferViewDetails
        """
        if not self.is_file_transfers_transfer_view_details():
            raise AttributeError("tag 'file_transfers_transfer_view_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_restore_invitees_details(self):
        """
        Only call this if :meth:`is_shared_content_restore_invitees_details` is true.

        :rtype: SharedContentRestoreInviteesDetails
        """
        if not self.is_shared_content_restore_invitees_details():
            raise AttributeError("tag 'shared_content_restore_invitees_details' not set")
        return self._value

    def get_shared_content_restore_member_details(self):
        """
        Only call this if :meth:`is_shared_content_restore_member_details` is true.

        :rtype: SharedContentRestoreMemberDetails
        """
        if not self.is_shared_content_restore_member_details():
            raise AttributeError("tag 'shared_content_restore_member_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_settings_add_expiration_details(self):
        """
        Only call this if :meth:`is_shared_link_settings_add_expiration_details` is true.

        :rtype: SharedLinkSettingsAddExpirationDetails
        """
        if not self.is_shared_link_settings_add_expiration_details():
            raise AttributeError("tag 'shared_link_settings_add_expiration_details' not set")
        return self._value

    def get_shared_link_settings_add_password_details(self):
        """
        Only call this if :meth:`is_shared_link_settings_add_password_details` is true.

        :rtype: SharedLinkSettingsAddPasswordDetails
        """
        if not self.is_shared_link_settings_add_password_details():
            raise AttributeError("tag 'shared_link_settings_add_password_details' not set")
        return self._value

    def get_shared_link_settings_allow_download_disabled_details(self):
        """
        Only call this if :meth:`is_shared_link_settings_allow_download_disabled_details` is true.

        :rtype: SharedLinkSettingsAllowDownloadDisabledDetails
        """
        if not self.is_shared_link_settings_allow_download_disabled_details():
            raise AttributeError("tag 'shared_link_settings_allow_download_disabled_details' not set")
        return self._value

    def get_shared_link_settings_allow_download_enabled_details(self):
        """
        Only call this if :meth:`is_shared_link_settings_allow_download_enabled_details` is true.

        :rtype: SharedLinkSettingsAllowDownloadEnabledDetails
        """
        if not self.is_shared_link_settings_allow_download_enabled_details():
            raise AttributeError("tag 'shared_link_settings_allow_download_enabled_details' not set")
        return self._value

    def get_shared_link_settings_change_audience_details(self):
        """
        Only call this if :meth:`is_shared_link_settings_change_audience_details` is true.

        :rtype: SharedLinkSettingsChangeAudienceDetails
        """
        if not self.is_shared_link_settings_change_audience_details():
            raise AttributeError("tag 'shared_link_settings_change_audience_details' not set")
        return self._value

    def get_shared_link_settings_change_expiration_details(self):
        """
        Only call this if :meth:`is_shared_link_settings_change_expiration_details` is true.

        :rtype: SharedLinkSettingsChangeExpirationDetails
        """
        if not self.is_shared_link_settings_change_expiration_details():
            raise AttributeError("tag 'shared_link_settings_change_expiration_details' not set")
        return self._value

    def get_shared_link_settings_change_password_details(self):
        """
        Only call this if :meth:`is_shared_link_settings_change_password_details` is true.

        :rtype: SharedLinkSettingsChangePasswordDetails
        """
        if not self.is_shared_link_settings_change_password_details():
            raise AttributeError("tag 'shared_link_settings_change_password_details' not set")
        return self._value

    def get_shared_link_settings_remove_expiration_details(self):
        """
        Only call this if :meth:`is_shared_link_settings_remove_expiration_details` is true.

        :rtype: SharedLinkSettingsRemoveExpirationDetails
        """
        if not self.is_shared_link_settings_remove_expiration_details():
            raise AttributeError("tag 'shared_link_settings_remove_expiration_details' not set")
        return self._value

    def get_shared_link_settings_remove_password_details(self):
        """
        Only call this if :meth:`is_shared_link_settings_remove_password_details` is true.

        :rtype: SharedLinkSettingsRemovePasswordDetails
        """
        if not self.is_shared_link_settings_remove_password_details():
            raise AttributeError("tag 'shared_link_settings_remove_password_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_disable_downloads_details(self):
        """
        Only call this if :meth:`is_shmodel_disable_downloads_details` is true.

        :rtype: ShmodelDisableDownloadsDetails
        """
        if not self.is_shmodel_disable_downloads_details():
            raise AttributeError("tag 'shmodel_disable_downloads_details' not set")
        return self._value

    def get_shmodel_enable_downloads_details(self):
        """
        Only call this if :meth:`is_shmodel_enable_downloads_details` is true.

        :rtype: ShmodelEnableDownloadsDetails
        """
        if not self.is_shmodel_enable_downloads_details():
            raise AttributeError("tag 'shmodel_enable_downloads_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_computer_backup_policy_changed_details(self):
        """
        Only call this if :meth:`is_computer_backup_policy_changed_details` is true.

        :rtype: ComputerBackupPolicyChangedDetails
        """
        if not self.is_computer_backup_policy_changed_details():
            raise AttributeError("tag 'computer_backup_policy_changed_details' not set")
        return self._value

    def get_content_administration_policy_changed_details(self):
        """
        Only call this if :meth:`is_content_administration_policy_changed_details` is true.

        :rtype: ContentAdministrationPolicyChangedDetails
        """
        if not self.is_content_administration_policy_changed_details():
            raise AttributeError("tag 'content_administration_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_add_exception_details(self):
        """
        Only call this if :meth:`is_device_approvals_add_exception_details` is true.

        :rtype: DeviceApprovalsAddExceptionDetails
        """
        if not self.is_device_approvals_add_exception_details():
            raise AttributeError("tag 'device_approvals_add_exception_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_device_approvals_remove_exception_details(self):
        """
        Only call this if :meth:`is_device_approvals_remove_exception_details` is true.

        :rtype: DeviceApprovalsRemoveExceptionDetails
        """
        if not self.is_device_approvals_remove_exception_details():
            raise AttributeError("tag 'device_approvals_remove_exception_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_locking_policy_changed_details(self):
        """
        Only call this if :meth:`is_file_locking_policy_changed_details` is true.

        :rtype: FileLockingPolicyChangedDetails
        """
        if not self.is_file_locking_policy_changed_details():
            raise AttributeError("tag 'file_locking_policy_changed_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_file_transfers_policy_changed_details(self):
        """
        Only call this if :meth:`is_file_transfers_policy_changed_details` is true.

        :rtype: FileTransfersPolicyChangedDetails
        """
        if not self.is_file_transfers_policy_changed_details():
            raise AttributeError("tag 'file_transfers_policy_changed_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_send_invite_policy_changed_details(self):
        """
        Only call this if :meth:`is_member_send_invite_policy_changed_details` is true.

        :rtype: MemberSendInvitePolicyChangedDetails
        """
        if not self.is_member_send_invite_policy_changed_details():
            raise AttributeError("tag 'member_send_invite_policy_changed_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_password_strength_requirements_change_policy_details(self):
        """
        Only call this if :meth:`is_password_strength_requirements_change_policy_details` is true.

        :rtype: PasswordStrengthRequirementsChangePolicyDetails
        """
        if not self.is_password_strength_requirements_change_policy_details():
            raise AttributeError("tag 'password_strength_requirements_change_policy_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_rewind_policy_changed_details(self):
        """
        Only call this if :meth:`is_rewind_policy_changed_details` is true.

        :rtype: RewindPolicyChangedDetails
        """
        if not self.is_rewind_policy_changed_details():
            raise AttributeError("tag 'rewind_policy_changed_details' not set")
        return self._value

    def get_send_for_signature_policy_changed_details(self):
        """
        Only call this if :meth:`is_send_for_signature_policy_changed_details` is true.

        :rtype: SendForSignaturePolicyChangedDetails
        """
        if not self.is_send_for_signature_policy_changed_details():
            raise AttributeError("tag 'send_for_signature_policy_changed_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_smarter_smart_sync_policy_changed_details(self):
        """
        Only call this if :meth:`is_smarter_smart_sync_policy_changed_details` is true.

        :rtype: SmarterSmartSyncPolicyChangedDetails
        """
        if not self.is_smarter_smart_sync_policy_changed_details():
            raise AttributeError("tag 'smarter_smart_sync_policy_changed_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_team_sharing_whitelist_subjects_changed_details(self):
        """
        Only call this if :meth:`is_team_sharing_whitelist_subjects_changed_details` is true.

        :rtype: TeamSharingWhitelistSubjectsChangedDetails
        """
        if not self.is_team_sharing_whitelist_subjects_changed_details():
            raise AttributeError("tag 'team_sharing_whitelist_subjects_changed_details' not set")
        return self._value

    def get_tfa_add_exception_details(self):
        """
        Only call this if :meth:`is_tfa_add_exception_details` is true.

        :rtype: TfaAddExceptionDetails
        """
        if not self.is_tfa_add_exception_details():
            raise AttributeError("tag 'tfa_add_exception_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_tfa_remove_exception_details(self):
        """
        Only call this if :meth:`is_tfa_remove_exception_details` is true.

        :rtype: TfaRemoveExceptionDetails
        """
        if not self.is_tfa_remove_exception_details():
            raise AttributeError("tag 'tfa_remove_exception_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_watermarking_policy_changed_details(self):
        """
        Only call this if :meth:`is_watermarking_policy_changed_details` is true.

        :rtype: WatermarkingPolicyChangedDetails
        """
        if not self.is_watermarking_policy_changed_details():
            raise AttributeError("tag 'watermarking_policy_changed_details' not set")
        return self._value

    def get_web_sessions_change_active_session_limit_details(self):
        """
        Only call this if :meth:`is_web_sessions_change_active_session_limit_details` is true.

        :rtype: WebSessionsChangeActiveSessionLimitDetails
        """
        if not self.is_web_sessions_change_active_session_limit_details():
            raise AttributeError("tag 'web_sessions_change_active_session_limit_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_changed_enterprise_admin_role_details(self):
        """
        Only call this if :meth:`is_changed_enterprise_admin_role_details` is true.

        :rtype: ChangedEnterpriseAdminRoleDetails
        """
        if not self.is_changed_enterprise_admin_role_details():
            raise AttributeError("tag 'changed_enterprise_admin_role_details' not set")
        return self._value

    def get_changed_enterprise_connected_team_status_details(self):
        """
        Only call this if :meth:`is_changed_enterprise_connected_team_status_details` is true.

        :rtype: ChangedEnterpriseConnectedTeamStatusDetails
        """
        if not self.is_changed_enterprise_connected_team_status_details():
            raise AttributeError("tag 'changed_enterprise_connected_team_status_details' not set")
        return self._value

    def get_ended_enterprise_admin_session_details(self):
        """
        Only call this if :meth:`is_ended_enterprise_admin_session_details` is true.

        :rtype: EndedEnterpriseAdminSessionDetails
        """
        if not self.is_ended_enterprise_admin_session_details():
            raise AttributeError("tag 'ended_enterprise_admin_session_details' not set")
        return self._value

    def get_ended_enterprise_admin_session_deprecated_details(self):
        """
        Only call this if :meth:`is_ended_enterprise_admin_session_deprecated_details` is true.

        :rtype: EndedEnterpriseAdminSessionDeprecatedDetails
        """
        if not self.is_ended_enterprise_admin_session_deprecated_details():
            raise AttributeError("tag 'ended_enterprise_admin_session_deprecated_details' not set")
        return self._value

    def get_enterprise_settings_locking_details(self):
        """
        Only call this if :meth:`is_enterprise_settings_locking_details` is true.

        :rtype: EnterpriseSettingsLockingDetails
        """
        if not self.is_enterprise_settings_locking_details():
            raise AttributeError("tag 'enterprise_settings_locking_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_started_enterprise_admin_session_details(self):
        """
        Only call this if :meth:`is_started_enterprise_admin_session_details` is true.

        :rtype: StartedEnterpriseAdminSessionDetails
        """
        if not self.is_started_enterprise_admin_session_details():
            raise AttributeError("tag 'started_enterprise_admin_session_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 with description.

    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 GovernancePolicyAddFoldersType
        EventType.governance_policy_add_folders: (data_governance) Added folders
        to policy
    :ivar GovernancePolicyCreateType EventType.governance_policy_create:
        (data_governance) Activated a new policy
    :ivar GovernancePolicyDeleteType EventType.governance_policy_delete:
        (data_governance) Deleted a policy
    :ivar GovernancePolicyEditDetailsType
        EventType.governance_policy_edit_details: (data_governance) Edited
        policy
    :ivar GovernancePolicyEditDurationType
        EventType.governance_policy_edit_duration: (data_governance) Changed
        policy duration
    :ivar GovernancePolicyRemoveFoldersType
        EventType.governance_policy_remove_folders: (data_governance) Removed
        folders from policy
    :ivar LegalHoldsActivateAHoldType EventType.legal_holds_activate_a_hold:
        (data_governance) Activated a hold
    :ivar LegalHoldsAddMembersType EventType.legal_holds_add_members:
        (data_governance) Added members to a hold
    :ivar LegalHoldsChangeHoldDetailsType
        EventType.legal_holds_change_hold_details: (data_governance) Edited
        details for a hold
    :ivar LegalHoldsChangeHoldNameType EventType.legal_holds_change_hold_name:
        (data_governance) Renamed a hold
    :ivar LegalHoldsExportAHoldType EventType.legal_holds_export_a_hold:
        (data_governance) Exported hold
    :ivar LegalHoldsExportCancelledType EventType.legal_holds_export_cancelled:
        (data_governance) Canceled export for a hold
    :ivar LegalHoldsExportDownloadedType
        EventType.legal_holds_export_downloaded: (data_governance) Downloaded
        export for a hold
    :ivar LegalHoldsExportRemovedType EventType.legal_holds_export_removed:
        (data_governance) Removed export for a hold
    :ivar LegalHoldsReleaseAHoldType EventType.legal_holds_release_a_hold:
        (data_governance) Released a hold
    :ivar LegalHoldsRemoveMembersType EventType.legal_holds_remove_members:
        (data_governance) Removed members from a hold
    :ivar LegalHoldsReportAHoldType EventType.legal_holds_report_a_hold:
        (data_governance) Created a summary report for a hold
    :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 DeviceSyncBackupStatusChangedType
        EventType.device_sync_backup_status_changed: (devices) Enabled/disabled
        backup for computer
    :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
        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 FileLockingLockStatusChangedType
        EventType.file_locking_lock_status_changed: (file_operations)
        Locked/unlocked editing for a file
    :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 FolderOverviewDescriptionChangedType
        EventType.folder_overview_description_changed: (file_operations) Updated
        folder overview
    :ivar FolderOverviewItemPinnedType EventType.folder_overview_item_pinned:
        (file_operations) Pinned item to folder overview
    :ivar FolderOverviewItemUnpinnedType
        EventType.folder_overview_item_unpinned: (file_operations) Unpinned item
        from folder overview
    :ivar RewindFolderType EventType.rewind_folder: (file_operations) Rewound a
        folder
    :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 AccountLockOrUnlockedType EventType.account_lock_or_unlocked: (logins)
        Unlocked/locked account after failed sign in attempts
    :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 CreateTeamInviteLinkType EventType.create_team_invite_link: (members)
        Created team invite link
    :ivar DeleteTeamInviteLinkType EventType.delete_team_invite_link: (members)
        Deleted team invite link
    :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 MemberDeleteProfilePhotoType EventType.member_delete_profile_photo:
        (members) Deleted team member profile photo
    :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 MemberSetProfilePhotoType EventType.member_set_profile_photo:
        (members) Set team member profile photo
    :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 PendingSecondaryEmailAddedType
        EventType.pending_secondary_email_added: (members) Added pending
        secondary email
    :ivar SecondaryEmailDeletedType EventType.secondary_email_deleted: (members)
        Deleted secondary email
    :ivar SecondaryEmailVerifiedType EventType.secondary_email_verified:
        (members) Verified secondary email
    :ivar SecondaryMailsPolicyChangedType
        EventType.secondary_mails_policy_changed: (members) Secondary mails
        policy changed
    :ivar BinderAddPageType EventType.binder_add_page: (paper) Added Binder page
        (deprecated, replaced by 'Edited files')
    :ivar BinderAddSectionType EventType.binder_add_section: (paper) Added
        Binder section (deprecated, replaced by 'Edited files')
    :ivar BinderRemovePageType EventType.binder_remove_page: (paper) Removed
        Binder page (deprecated, replaced by 'Edited files')
    :ivar BinderRemoveSectionType EventType.binder_remove_section: (paper)
        Removed Binder section (deprecated, replaced by 'Edited files')
    :ivar BinderRenamePageType EventType.binder_rename_page: (paper) Renamed
        Binder page (deprecated, replaced by 'Edited files')
    :ivar BinderRenameSectionType EventType.binder_rename_section: (paper)
        Renamed Binder section (deprecated, replaced by 'Edited files')
    :ivar BinderReorderPageType EventType.binder_reorder_page: (paper) Reordered
        Binder page (deprecated, replaced by 'Edited files')
    :ivar BinderReorderSectionType EventType.binder_reorder_section: (paper)
        Reordered Binder section (deprecated, replaced by 'Edited files')
    :ivar PaperContentAddMemberType EventType.paper_content_add_member: (paper)
        Added users and/or groups 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 users and/or groups 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 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
        user 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 users and/or groups (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 users and/or groups (deprecated, no longer
        logged)
    :ivar PaperPublishedLinkChangePermissionType
        EventType.paper_published_link_change_permission: (paper) Changed
        permissions for published doc
    :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 ExportMembersReportFailType EventType.export_members_report_fail:
        (reports) Failed to create members data report
    :ivar ExternalSharingCreateReportType
        EventType.external_sharing_create_report: (reports) Created External
        sharing report
    :ivar ExternalSharingReportFailedType
        EventType.external_sharing_report_failed: (reports) Couldn't create
        External sharing report
    :ivar NoExpirationLinkGenCreateReportType
        EventType.no_expiration_link_gen_create_report: (reports) Report
        created: Links created with no expiration
    :ivar NoExpirationLinkGenReportFailedType
        EventType.no_expiration_link_gen_report_failed: (reports) Couldn't
        create report: Links created with no expiration
    :ivar NoPasswordLinkGenCreateReportType
        EventType.no_password_link_gen_create_report: (reports) Report created:
        Links created without passwords
    :ivar NoPasswordLinkGenReportFailedType
        EventType.no_password_link_gen_report_failed: (reports) Couldn't create
        report: Links created without passwords
    :ivar NoPasswordLinkViewCreateReportType
        EventType.no_password_link_view_create_report: (reports) Report created:
        Views of links without passwords
    :ivar NoPasswordLinkViewReportFailedType
        EventType.no_password_link_view_report_failed: (reports) Couldn't create
        report: Views of links without passwords
    :ivar OutdatedLinkViewCreateReportType
        EventType.outdated_link_view_create_report: (reports) Report created:
        Views of old links
    :ivar OutdatedLinkViewReportFailedType
        EventType.outdated_link_view_report_failed: (reports) Couldn't create
        report: Views of old links
    :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 FileTransfersFileAddType EventType.file_transfers_file_add: (sharing)
        Transfer files added
    :ivar FileTransfersTransferDeleteType
        EventType.file_transfers_transfer_delete: (sharing) Deleted transfer
    :ivar FileTransfersTransferDownloadType
        EventType.file_transfers_transfer_download: (sharing) Transfer
        downloaded
    :ivar FileTransfersTransferSendType EventType.file_transfers_transfer_send:
        (sharing) Sent transfer
    :ivar FileTransfersTransferViewType EventType.file_transfers_transfer_view:
        (sharing) Viewed transfer
    :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 (deprecated, no longer logged)
    :ivar SharedContentAddLinkPasswordType
        EventType.shared_content_add_link_password: (sharing) Added password to
        link for shared file/folder (deprecated, no longer logged)
    :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 (deprecated, no longer
        logged)
    :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 (deprecated, no longer logged)
    :ivar SharedContentChangeLinkExpiryType
        EventType.shared_content_change_link_expiry: (sharing) Changed link
        expiration of shared file/folder (deprecated, no longer logged)
    :ivar SharedContentChangeLinkPasswordType
        EventType.shared_content_change_link_password: (sharing) Changed link
        password of shared file/folder (deprecated, no longer logged)
    :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 (deprecated, no longer logged)
    :ivar SharedContentRemoveLinkPasswordType
        EventType.shared_content_remove_link_password: (sharing) Removed link
        password of shared file/folder (deprecated, no longer logged)
    :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 SharedContentRestoreInviteesType
        EventType.shared_content_restore_invitees: (sharing) Restored shared
        file/folder invitees
    :ivar SharedContentRestoreMemberType
        EventType.shared_content_restore_member: (sharing) Restored users and/or
        groups to membership of shared file/folder
    :ivar SharedContentUnshareType EventType.shared_content_unshare: (sharing)
        Unshared file/folder by clearing membership
    :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 SharedLinkSettingsAddExpirationType
        EventType.shared_link_settings_add_expiration: (sharing) Added an
        expiration date to the shared link
    :ivar SharedLinkSettingsAddPasswordType
        EventType.shared_link_settings_add_password: (sharing) Added a password
        to the shared link
    :ivar SharedLinkSettingsAllowDownloadDisabledType
        EventType.shared_link_settings_allow_download_disabled: (sharing)
        Disabled downloads
    :ivar SharedLinkSettingsAllowDownloadEnabledType
        EventType.shared_link_settings_allow_download_enabled: (sharing) Enabled
        downloads
    :ivar SharedLinkSettingsChangeAudienceType
        EventType.shared_link_settings_change_audience: (sharing) Changed the
        audience of the shared link
    :ivar SharedLinkSettingsChangeExpirationType
        EventType.shared_link_settings_change_expiration: (sharing) Changed the
        expiration date of the shared link
    :ivar SharedLinkSettingsChangePasswordType
        EventType.shared_link_settings_change_password: (sharing) Changed the
        password of the shared link
    :ivar SharedLinkSettingsRemoveExpirationType
        EventType.shared_link_settings_remove_expiration: (sharing) Removed the
        expiration date from the shared link
    :ivar SharedLinkSettingsRemovePasswordType
        EventType.shared_link_settings_remove_password: (sharing) Removed the
        password from the shared link
    :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 ShmodelDisableDownloadsType EventType.shmodel_disable_downloads:
        (sharing) Disabled downloads for link (deprecated, no longer logged)
    :ivar ShmodelEnableDownloadsType EventType.shmodel_enable_downloads:
        (sharing) Enabled downloads for link (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 ComputerBackupPolicyChangedType
        EventType.computer_backup_policy_changed: (team_policies) Changed
        computer backup policy for team
    :ivar ContentAdministrationPolicyChangedType
        EventType.content_administration_policy_changed: (team_policies) Changed
        content management setting
    :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 DeviceApprovalsAddExceptionType
        EventType.device_approvals_add_exception: (team_policies) Added members
        to device approvals exception list
    :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 DeviceApprovalsRemoveExceptionType
        EventType.device_approvals_remove_exception: (team_policies) Removed
        members from device approvals exception list
    :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 FileLockingPolicyChangedType EventType.file_locking_policy_changed:
        (team_policies) Changed file locking policy for team
    :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 FileTransfersPolicyChangedType
        EventType.file_transfers_policy_changed: (team_policies) Changed file
        transfers policy for team
    :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 MemberSendInvitePolicyChangedType
        EventType.member_send_invite_policy_changed: (team_policies) Changed
        member send invite policy for team
    :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 PasswordStrengthRequirementsChangePolicyType
        EventType.password_strength_requirements_change_policy: (team_policies)
        Changed team password strength requirements
    :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 RewindPolicyChangedType EventType.rewind_policy_changed:
        (team_policies) Changed Rewind policy for team
    :ivar SendForSignaturePolicyChangedType
        EventType.send_for_signature_policy_changed: (team_policies) Changed
        send for signature policy for team
    :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 SmarterSmartSyncPolicyChangedType
        EventType.smarter_smart_sync_policy_changed: (team_policies) Changed
        automatic Smart Sync setting 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 TeamSharingWhitelistSubjectsChangedType
        EventType.team_sharing_whitelist_subjects_changed: (team_policies)
        Edited the approved list for sharing externally
    :ivar TfaAddExceptionType EventType.tfa_add_exception: (team_policies) Added
        members to two factor authentication exception list
    :ivar TfaChangePolicyType EventType.tfa_change_policy: (team_policies)
        Changed two-step verification setting for team
    :ivar TfaRemoveExceptionType EventType.tfa_remove_exception: (team_policies)
        Removed members from two factor authentication exception list
    :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 WatermarkingPolicyChangedType EventType.watermarking_policy_changed:
        (team_policies) Changed watermarking policy for team
    :ivar WebSessionsChangeActiveSessionLimitType
        EventType.web_sessions_change_active_session_limit: (team_policies)
        Changed limit on active sessions per member
    :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 ChangedEnterpriseAdminRoleType
        EventType.changed_enterprise_admin_role: (trusted_teams) Changed
        enterprise admin role
    :ivar ChangedEnterpriseConnectedTeamStatusType
        EventType.changed_enterprise_connected_team_status: (trusted_teams)
        Changed enterprise-connected team status
    :ivar EndedEnterpriseAdminSessionType
        EventType.ended_enterprise_admin_session: (trusted_teams) Ended
        enterprise admin session
    :ivar EndedEnterpriseAdminSessionDeprecatedType
        EventType.ended_enterprise_admin_session_deprecated: (trusted_teams)
        Ended enterprise admin session (deprecated, replaced by 'Ended
        enterprise admin session')
    :ivar EnterpriseSettingsLockingType EventType.enterprise_settings_locking:
        (trusted_teams) Changed who can update a setting
    :ivar GuestAdminChangeStatusType EventType.guest_admin_change_status:
        (trusted_teams) Changed guest team admin status
    :ivar StartedEnterpriseAdminSessionType
        EventType.started_enterprise_admin_session: (trusted_teams) Started
        enterprise admin session
    :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 governance_policy_add_folders(cls, val):
        """
        Create an instance of this class set to the
        ``governance_policy_add_folders`` tag with value ``val``.

        :param GovernancePolicyAddFoldersType val:
        :rtype: EventType
        """
        return cls('governance_policy_add_folders', val)

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

        :param GovernancePolicyCreateType val:
        :rtype: EventType
        """
        return cls('governance_policy_create', val)

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

        :param GovernancePolicyDeleteType val:
        :rtype: EventType
        """
        return cls('governance_policy_delete', val)

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

        :param GovernancePolicyEditDetailsType val:
        :rtype: EventType
        """
        return cls('governance_policy_edit_details', val)

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

        :param GovernancePolicyEditDurationType val:
        :rtype: EventType
        """
        return cls('governance_policy_edit_duration', val)

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

        :param GovernancePolicyRemoveFoldersType val:
        :rtype: EventType
        """
        return cls('governance_policy_remove_folders', val)

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

        :param LegalHoldsActivateAHoldType val:
        :rtype: EventType
        """
        return cls('legal_holds_activate_a_hold', val)

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

        :param LegalHoldsAddMembersType val:
        :rtype: EventType
        """
        return cls('legal_holds_add_members', val)

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

        :param LegalHoldsChangeHoldDetailsType val:
        :rtype: EventType
        """
        return cls('legal_holds_change_hold_details', val)

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

        :param LegalHoldsChangeHoldNameType val:
        :rtype: EventType
        """
        return cls('legal_holds_change_hold_name', val)

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

        :param LegalHoldsExportAHoldType val:
        :rtype: EventType
        """
        return cls('legal_holds_export_a_hold', val)

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

        :param LegalHoldsExportCancelledType val:
        :rtype: EventType
        """
        return cls('legal_holds_export_cancelled', val)

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

        :param LegalHoldsExportDownloadedType val:
        :rtype: EventType
        """
        return cls('legal_holds_export_downloaded', val)

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

        :param LegalHoldsExportRemovedType val:
        :rtype: EventType
        """
        return cls('legal_holds_export_removed', val)

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

        :param LegalHoldsReleaseAHoldType val:
        :rtype: EventType
        """
        return cls('legal_holds_release_a_hold', val)

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

        :param LegalHoldsRemoveMembersType val:
        :rtype: EventType
        """
        return cls('legal_holds_remove_members', val)

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

        :param LegalHoldsReportAHoldType val:
        :rtype: EventType
        """
        return cls('legal_holds_report_a_hold', 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_sync_backup_status_changed(cls, val):
        """
        Create an instance of this class set to the
        ``device_sync_backup_status_changed`` tag with value ``val``.

        :param DeviceSyncBackupStatusChangedType val:
        :rtype: EventType
        """
        return cls('device_sync_backup_status_changed', 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_locking_lock_status_changed(cls, val):
        """
        Create an instance of this class set to the
        ``file_locking_lock_status_changed`` tag with value ``val``.

        :param FileLockingLockStatusChangedType val:
        :rtype: EventType
        """
        return cls('file_locking_lock_status_changed', 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 folder_overview_description_changed(cls, val):
        """
        Create an instance of this class set to the
        ``folder_overview_description_changed`` tag with value ``val``.

        :param FolderOverviewDescriptionChangedType val:
        :rtype: EventType
        """
        return cls('folder_overview_description_changed', val)

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

        :param FolderOverviewItemPinnedType val:
        :rtype: EventType
        """
        return cls('folder_overview_item_pinned', val)

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

        :param FolderOverviewItemUnpinnedType val:
        :rtype: EventType
        """
        return cls('folder_overview_item_unpinned', val)

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

        :param RewindFolderType val:
        :rtype: EventType
        """
        return cls('rewind_folder', 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 account_lock_or_unlocked(cls, val):
        """
        Create an instance of this class set to the ``account_lock_or_unlocked``
        tag with value ``val``.

        :param AccountLockOrUnlockedType val:
        :rtype: EventType
        """
        return cls('account_lock_or_unlocked', 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 create_team_invite_link(cls, val):
        """
        Create an instance of this class set to the ``create_team_invite_link``
        tag with value ``val``.

        :param CreateTeamInviteLinkType val:
        :rtype: EventType
        """
        return cls('create_team_invite_link', val)

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

        :param DeleteTeamInviteLinkType val:
        :rtype: EventType
        """
        return cls('delete_team_invite_link', 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_delete_profile_photo(cls, val):
        """
        Create an instance of this class set to the
        ``member_delete_profile_photo`` tag with value ``val``.

        :param MemberDeleteProfilePhotoType val:
        :rtype: EventType
        """
        return cls('member_delete_profile_photo', 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_set_profile_photo(cls, val):
        """
        Create an instance of this class set to the ``member_set_profile_photo``
        tag with value ``val``.

        :param MemberSetProfilePhotoType val:
        :rtype: EventType
        """
        return cls('member_set_profile_photo', 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 pending_secondary_email_added(cls, val):
        """
        Create an instance of this class set to the
        ``pending_secondary_email_added`` tag with value ``val``.

        :param PendingSecondaryEmailAddedType val:
        :rtype: EventType
        """
        return cls('pending_secondary_email_added', val)

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

        :param SecondaryEmailDeletedType val:
        :rtype: EventType
        """
        return cls('secondary_email_deleted', val)

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

        :param SecondaryEmailVerifiedType val:
        :rtype: EventType
        """
        return cls('secondary_email_verified', 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 binder_add_page(cls, val):
        """
        Create an instance of this class set to the ``binder_add_page`` tag with
        value ``val``.

        :param BinderAddPageType val:
        :rtype: EventType
        """
        return cls('binder_add_page', val)

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

        :param BinderAddSectionType val:
        :rtype: EventType
        """
        return cls('binder_add_section', val)

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

        :param BinderRemovePageType val:
        :rtype: EventType
        """
        return cls('binder_remove_page', val)

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

        :param BinderRemoveSectionType val:
        :rtype: EventType
        """
        return cls('binder_remove_section', val)

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

        :param BinderRenamePageType val:
        :rtype: EventType
        """
        return cls('binder_rename_page', val)

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

        :param BinderRenameSectionType val:
        :rtype: EventType
        """
        return cls('binder_rename_section', val)

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

        :param BinderReorderPageType val:
        :rtype: EventType
        """
        return cls('binder_reorder_page', val)

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

        :param BinderReorderSectionType val:
        :rtype: EventType
        """
        return cls('binder_reorder_section', 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_change_permission(cls, val):
        """
        Create an instance of this class set to the
        ``paper_published_link_change_permission`` tag with value ``val``.

        :param PaperPublishedLinkChangePermissionType val:
        :rtype: EventType
        """
        return cls('paper_published_link_change_permission', 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 export_members_report_fail(cls, val):
        """
        Create an instance of this class set to the
        ``export_members_report_fail`` tag with value ``val``.

        :param ExportMembersReportFailType val:
        :rtype: EventType
        """
        return cls('export_members_report_fail', val)

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

        :param ExternalSharingCreateReportType val:
        :rtype: EventType
        """
        return cls('external_sharing_create_report', val)

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

        :param ExternalSharingReportFailedType val:
        :rtype: EventType
        """
        return cls('external_sharing_report_failed', val)

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

        :param NoExpirationLinkGenCreateReportType val:
        :rtype: EventType
        """
        return cls('no_expiration_link_gen_create_report', val)

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

        :param NoExpirationLinkGenReportFailedType val:
        :rtype: EventType
        """
        return cls('no_expiration_link_gen_report_failed', val)

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

        :param NoPasswordLinkGenCreateReportType val:
        :rtype: EventType
        """
        return cls('no_password_link_gen_create_report', val)

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

        :param NoPasswordLinkGenReportFailedType val:
        :rtype: EventType
        """
        return cls('no_password_link_gen_report_failed', val)

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

        :param NoPasswordLinkViewCreateReportType val:
        :rtype: EventType
        """
        return cls('no_password_link_view_create_report', val)

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

        :param NoPasswordLinkViewReportFailedType val:
        :rtype: EventType
        """
        return cls('no_password_link_view_report_failed', val)

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

        :param OutdatedLinkViewCreateReportType val:
        :rtype: EventType
        """
        return cls('outdated_link_view_create_report', val)

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

        :param OutdatedLinkViewReportFailedType val:
        :rtype: EventType
        """
        return cls('outdated_link_view_report_failed', 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 file_transfers_file_add(cls, val):
        """
        Create an instance of this class set to the ``file_transfers_file_add``
        tag with value ``val``.

        :param FileTransfersFileAddType val:
        :rtype: EventType
        """
        return cls('file_transfers_file_add', val)

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

        :param FileTransfersTransferDeleteType val:
        :rtype: EventType
        """
        return cls('file_transfers_transfer_delete', val)

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

        :param FileTransfersTransferDownloadType val:
        :rtype: EventType
        """
        return cls('file_transfers_transfer_download', val)

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

        :param FileTransfersTransferSendType val:
        :rtype: EventType
        """
        return cls('file_transfers_transfer_send', val)

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

        :param FileTransfersTransferViewType val:
        :rtype: EventType
        """
        return cls('file_transfers_transfer_view', 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_restore_invitees(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_restore_invitees`` tag with value ``val``.

        :param SharedContentRestoreInviteesType val:
        :rtype: EventType
        """
        return cls('shared_content_restore_invitees', val)

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

        :param SharedContentRestoreMemberType val:
        :rtype: EventType
        """
        return cls('shared_content_restore_member', 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_settings_add_expiration(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_settings_add_expiration`` tag with value ``val``.

        :param SharedLinkSettingsAddExpirationType val:
        :rtype: EventType
        """
        return cls('shared_link_settings_add_expiration', val)

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

        :param SharedLinkSettingsAddPasswordType val:
        :rtype: EventType
        """
        return cls('shared_link_settings_add_password', val)

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

        :param SharedLinkSettingsAllowDownloadDisabledType val:
        :rtype: EventType
        """
        return cls('shared_link_settings_allow_download_disabled', val)

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

        :param SharedLinkSettingsAllowDownloadEnabledType val:
        :rtype: EventType
        """
        return cls('shared_link_settings_allow_download_enabled', val)

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

        :param SharedLinkSettingsChangeAudienceType val:
        :rtype: EventType
        """
        return cls('shared_link_settings_change_audience', val)

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

        :param SharedLinkSettingsChangeExpirationType val:
        :rtype: EventType
        """
        return cls('shared_link_settings_change_expiration', val)

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

        :param SharedLinkSettingsChangePasswordType val:
        :rtype: EventType
        """
        return cls('shared_link_settings_change_password', val)

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

        :param SharedLinkSettingsRemoveExpirationType val:
        :rtype: EventType
        """
        return cls('shared_link_settings_remove_expiration', val)

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

        :param SharedLinkSettingsRemovePasswordType val:
        :rtype: EventType
        """
        return cls('shared_link_settings_remove_password', 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_disable_downloads(cls, val):
        """
        Create an instance of this class set to the
        ``shmodel_disable_downloads`` tag with value ``val``.

        :param ShmodelDisableDownloadsType val:
        :rtype: EventType
        """
        return cls('shmodel_disable_downloads', val)

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

        :param ShmodelEnableDownloadsType val:
        :rtype: EventType
        """
        return cls('shmodel_enable_downloads', 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 computer_backup_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``computer_backup_policy_changed`` tag with value ``val``.

        :param ComputerBackupPolicyChangedType val:
        :rtype: EventType
        """
        return cls('computer_backup_policy_changed', val)

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

        :param ContentAdministrationPolicyChangedType val:
        :rtype: EventType
        """
        return cls('content_administration_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_add_exception(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_add_exception`` tag with value ``val``.

        :param DeviceApprovalsAddExceptionType val:
        :rtype: EventType
        """
        return cls('device_approvals_add_exception', 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 device_approvals_remove_exception(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_remove_exception`` tag with value ``val``.

        :param DeviceApprovalsRemoveExceptionType val:
        :rtype: EventType
        """
        return cls('device_approvals_remove_exception', 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_locking_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``file_locking_policy_changed`` tag with value ``val``.

        :param FileLockingPolicyChangedType val:
        :rtype: EventType
        """
        return cls('file_locking_policy_changed', 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 file_transfers_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``file_transfers_policy_changed`` tag with value ``val``.

        :param FileTransfersPolicyChangedType val:
        :rtype: EventType
        """
        return cls('file_transfers_policy_changed', 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_send_invite_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``member_send_invite_policy_changed`` tag with value ``val``.

        :param MemberSendInvitePolicyChangedType val:
        :rtype: EventType
        """
        return cls('member_send_invite_policy_changed', 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 password_strength_requirements_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``password_strength_requirements_change_policy`` tag with value ``val``.

        :param PasswordStrengthRequirementsChangePolicyType val:
        :rtype: EventType
        """
        return cls('password_strength_requirements_change_policy', 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 rewind_policy_changed(cls, val):
        """
        Create an instance of this class set to the ``rewind_policy_changed``
        tag with value ``val``.

        :param RewindPolicyChangedType val:
        :rtype: EventType
        """
        return cls('rewind_policy_changed', val)

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

        :param SendForSignaturePolicyChangedType val:
        :rtype: EventType
        """
        return cls('send_for_signature_policy_changed', 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 smarter_smart_sync_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``smarter_smart_sync_policy_changed`` tag with value ``val``.

        :param SmarterSmartSyncPolicyChangedType val:
        :rtype: EventType
        """
        return cls('smarter_smart_sync_policy_changed', 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 team_sharing_whitelist_subjects_changed(cls, val):
        """
        Create an instance of this class set to the
        ``team_sharing_whitelist_subjects_changed`` tag with value ``val``.

        :param TeamSharingWhitelistSubjectsChangedType val:
        :rtype: EventType
        """
        return cls('team_sharing_whitelist_subjects_changed', val)

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

        :param TfaAddExceptionType val:
        :rtype: EventType
        """
        return cls('tfa_add_exception', 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 tfa_remove_exception(cls, val):
        """
        Create an instance of this class set to the ``tfa_remove_exception`` tag
        with value ``val``.

        :param TfaRemoveExceptionType val:
        :rtype: EventType
        """
        return cls('tfa_remove_exception', 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 watermarking_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``watermarking_policy_changed`` tag with value ``val``.

        :param WatermarkingPolicyChangedType val:
        :rtype: EventType
        """
        return cls('watermarking_policy_changed', val)

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

        :param WebSessionsChangeActiveSessionLimitType val:
        :rtype: EventType
        """
        return cls('web_sessions_change_active_session_limit', 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 changed_enterprise_admin_role(cls, val):
        """
        Create an instance of this class set to the
        ``changed_enterprise_admin_role`` tag with value ``val``.

        :param ChangedEnterpriseAdminRoleType val:
        :rtype: EventType
        """
        return cls('changed_enterprise_admin_role', val)

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

        :param ChangedEnterpriseConnectedTeamStatusType val:
        :rtype: EventType
        """
        return cls('changed_enterprise_connected_team_status', val)

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

        :param EndedEnterpriseAdminSessionType val:
        :rtype: EventType
        """
        return cls('ended_enterprise_admin_session', val)

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

        :param EndedEnterpriseAdminSessionDeprecatedType val:
        :rtype: EventType
        """
        return cls('ended_enterprise_admin_session_deprecated', val)

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

        :param EnterpriseSettingsLockingType val:
        :rtype: EventType
        """
        return cls('enterprise_settings_locking', 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 started_enterprise_admin_session(cls, val):
        """
        Create an instance of this class set to the
        ``started_enterprise_admin_session`` tag with value ``val``.

        :param StartedEnterpriseAdminSessionType val:
        :rtype: EventType
        """
        return cls('started_enterprise_admin_session', 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_governance_policy_add_folders(self):
        """
        Check if the union tag is ``governance_policy_add_folders``.

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

    def is_governance_policy_create(self):
        """
        Check if the union tag is ``governance_policy_create``.

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

    def is_governance_policy_delete(self):
        """
        Check if the union tag is ``governance_policy_delete``.

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

    def is_governance_policy_edit_details(self):
        """
        Check if the union tag is ``governance_policy_edit_details``.

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

    def is_governance_policy_edit_duration(self):
        """
        Check if the union tag is ``governance_policy_edit_duration``.

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

    def is_governance_policy_remove_folders(self):
        """
        Check if the union tag is ``governance_policy_remove_folders``.

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

    def is_legal_holds_activate_a_hold(self):
        """
        Check if the union tag is ``legal_holds_activate_a_hold``.

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

    def is_legal_holds_add_members(self):
        """
        Check if the union tag is ``legal_holds_add_members``.

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

    def is_legal_holds_change_hold_details(self):
        """
        Check if the union tag is ``legal_holds_change_hold_details``.

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

    def is_legal_holds_change_hold_name(self):
        """
        Check if the union tag is ``legal_holds_change_hold_name``.

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

    def is_legal_holds_export_a_hold(self):
        """
        Check if the union tag is ``legal_holds_export_a_hold``.

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

    def is_legal_holds_export_cancelled(self):
        """
        Check if the union tag is ``legal_holds_export_cancelled``.

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

    def is_legal_holds_export_downloaded(self):
        """
        Check if the union tag is ``legal_holds_export_downloaded``.

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

    def is_legal_holds_export_removed(self):
        """
        Check if the union tag is ``legal_holds_export_removed``.

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

    def is_legal_holds_release_a_hold(self):
        """
        Check if the union tag is ``legal_holds_release_a_hold``.

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

    def is_legal_holds_remove_members(self):
        """
        Check if the union tag is ``legal_holds_remove_members``.

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

    def is_legal_holds_report_a_hold(self):
        """
        Check if the union tag is ``legal_holds_report_a_hold``.

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

    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_sync_backup_status_changed(self):
        """
        Check if the union tag is ``device_sync_backup_status_changed``.

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

    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_locking_lock_status_changed(self):
        """
        Check if the union tag is ``file_locking_lock_status_changed``.

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

    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_folder_overview_description_changed(self):
        """
        Check if the union tag is ``folder_overview_description_changed``.

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

    def is_folder_overview_item_pinned(self):
        """
        Check if the union tag is ``folder_overview_item_pinned``.

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

    def is_folder_overview_item_unpinned(self):
        """
        Check if the union tag is ``folder_overview_item_unpinned``.

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

    def is_rewind_folder(self):
        """
        Check if the union tag is ``rewind_folder``.

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

    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_account_lock_or_unlocked(self):
        """
        Check if the union tag is ``account_lock_or_unlocked``.

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

    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_create_team_invite_link(self):
        """
        Check if the union tag is ``create_team_invite_link``.

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

    def is_delete_team_invite_link(self):
        """
        Check if the union tag is ``delete_team_invite_link``.

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

    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_delete_profile_photo(self):
        """
        Check if the union tag is ``member_delete_profile_photo``.

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

    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_set_profile_photo(self):
        """
        Check if the union tag is ``member_set_profile_photo``.

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

    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_pending_secondary_email_added(self):
        """
        Check if the union tag is ``pending_secondary_email_added``.

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

    def is_secondary_email_deleted(self):
        """
        Check if the union tag is ``secondary_email_deleted``.

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

    def is_secondary_email_verified(self):
        """
        Check if the union tag is ``secondary_email_verified``.

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

    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_binder_add_page(self):
        """
        Check if the union tag is ``binder_add_page``.

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

    def is_binder_add_section(self):
        """
        Check if the union tag is ``binder_add_section``.

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

    def is_binder_remove_page(self):
        """
        Check if the union tag is ``binder_remove_page``.

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

    def is_binder_remove_section(self):
        """
        Check if the union tag is ``binder_remove_section``.

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

    def is_binder_rename_page(self):
        """
        Check if the union tag is ``binder_rename_page``.

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

    def is_binder_rename_section(self):
        """
        Check if the union tag is ``binder_rename_section``.

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

    def is_binder_reorder_page(self):
        """
        Check if the union tag is ``binder_reorder_page``.

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

    def is_binder_reorder_section(self):
        """
        Check if the union tag is ``binder_reorder_section``.

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

    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_change_permission(self):
        """
        Check if the union tag is ``paper_published_link_change_permission``.

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

    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_export_members_report_fail(self):
        """
        Check if the union tag is ``export_members_report_fail``.

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

    def is_external_sharing_create_report(self):
        """
        Check if the union tag is ``external_sharing_create_report``.

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

    def is_external_sharing_report_failed(self):
        """
        Check if the union tag is ``external_sharing_report_failed``.

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

    def is_no_expiration_link_gen_create_report(self):
        """
        Check if the union tag is ``no_expiration_link_gen_create_report``.

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

    def is_no_expiration_link_gen_report_failed(self):
        """
        Check if the union tag is ``no_expiration_link_gen_report_failed``.

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

    def is_no_password_link_gen_create_report(self):
        """
        Check if the union tag is ``no_password_link_gen_create_report``.

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

    def is_no_password_link_gen_report_failed(self):
        """
        Check if the union tag is ``no_password_link_gen_report_failed``.

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

    def is_no_password_link_view_create_report(self):
        """
        Check if the union tag is ``no_password_link_view_create_report``.

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

    def is_no_password_link_view_report_failed(self):
        """
        Check if the union tag is ``no_password_link_view_report_failed``.

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

    def is_outdated_link_view_create_report(self):
        """
        Check if the union tag is ``outdated_link_view_create_report``.

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

    def is_outdated_link_view_report_failed(self):
        """
        Check if the union tag is ``outdated_link_view_report_failed``.

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

    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_file_transfers_file_add(self):
        """
        Check if the union tag is ``file_transfers_file_add``.

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

    def is_file_transfers_transfer_delete(self):
        """
        Check if the union tag is ``file_transfers_transfer_delete``.

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

    def is_file_transfers_transfer_download(self):
        """
        Check if the union tag is ``file_transfers_transfer_download``.

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

    def is_file_transfers_transfer_send(self):
        """
        Check if the union tag is ``file_transfers_transfer_send``.

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

    def is_file_transfers_transfer_view(self):
        """
        Check if the union tag is ``file_transfers_transfer_view``.

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

    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_restore_invitees(self):
        """
        Check if the union tag is ``shared_content_restore_invitees``.

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

    def is_shared_content_restore_member(self):
        """
        Check if the union tag is ``shared_content_restore_member``.

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

    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_settings_add_expiration(self):
        """
        Check if the union tag is ``shared_link_settings_add_expiration``.

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

    def is_shared_link_settings_add_password(self):
        """
        Check if the union tag is ``shared_link_settings_add_password``.

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

    def is_shared_link_settings_allow_download_disabled(self):
        """
        Check if the union tag is ``shared_link_settings_allow_download_disabled``.

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

    def is_shared_link_settings_allow_download_enabled(self):
        """
        Check if the union tag is ``shared_link_settings_allow_download_enabled``.

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

    def is_shared_link_settings_change_audience(self):
        """
        Check if the union tag is ``shared_link_settings_change_audience``.

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

    def is_shared_link_settings_change_expiration(self):
        """
        Check if the union tag is ``shared_link_settings_change_expiration``.

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

    def is_shared_link_settings_change_password(self):
        """
        Check if the union tag is ``shared_link_settings_change_password``.

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

    def is_shared_link_settings_remove_expiration(self):
        """
        Check if the union tag is ``shared_link_settings_remove_expiration``.

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

    def is_shared_link_settings_remove_password(self):
        """
        Check if the union tag is ``shared_link_settings_remove_password``.

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

    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_disable_downloads(self):
        """
        Check if the union tag is ``shmodel_disable_downloads``.

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

    def is_shmodel_enable_downloads(self):
        """
        Check if the union tag is ``shmodel_enable_downloads``.

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

    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_computer_backup_policy_changed(self):
        """
        Check if the union tag is ``computer_backup_policy_changed``.

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

    def is_content_administration_policy_changed(self):
        """
        Check if the union tag is ``content_administration_policy_changed``.

        :rtype: bool
        """
        return self._tag == 'content_administration_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_add_exception(self):
        """
        Check if the union tag is ``device_approvals_add_exception``.

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

    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_device_approvals_remove_exception(self):
        """
        Check if the union tag is ``device_approvals_remove_exception``.

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

    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_locking_policy_changed(self):
        """
        Check if the union tag is ``file_locking_policy_changed``.

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

    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_file_transfers_policy_changed(self):
        """
        Check if the union tag is ``file_transfers_policy_changed``.

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

    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_send_invite_policy_changed(self):
        """
        Check if the union tag is ``member_send_invite_policy_changed``.

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

    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_password_strength_requirements_change_policy(self):
        """
        Check if the union tag is ``password_strength_requirements_change_policy``.

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

    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_rewind_policy_changed(self):
        """
        Check if the union tag is ``rewind_policy_changed``.

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

    def is_send_for_signature_policy_changed(self):
        """
        Check if the union tag is ``send_for_signature_policy_changed``.

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

    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_smarter_smart_sync_policy_changed(self):
        """
        Check if the union tag is ``smarter_smart_sync_policy_changed``.

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

    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_team_sharing_whitelist_subjects_changed(self):
        """
        Check if the union tag is ``team_sharing_whitelist_subjects_changed``.

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

    def is_tfa_add_exception(self):
        """
        Check if the union tag is ``tfa_add_exception``.

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

    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_tfa_remove_exception(self):
        """
        Check if the union tag is ``tfa_remove_exception``.

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

    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_watermarking_policy_changed(self):
        """
        Check if the union tag is ``watermarking_policy_changed``.

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

    def is_web_sessions_change_active_session_limit(self):
        """
        Check if the union tag is ``web_sessions_change_active_session_limit``.

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

    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_changed_enterprise_admin_role(self):
        """
        Check if the union tag is ``changed_enterprise_admin_role``.

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

    def is_changed_enterprise_connected_team_status(self):
        """
        Check if the union tag is ``changed_enterprise_connected_team_status``.

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

    def is_ended_enterprise_admin_session(self):
        """
        Check if the union tag is ``ended_enterprise_admin_session``.

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

    def is_ended_enterprise_admin_session_deprecated(self):
        """
        Check if the union tag is ``ended_enterprise_admin_session_deprecated``.

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

    def is_enterprise_settings_locking(self):
        """
        Check if the union tag is ``enterprise_settings_locking``.

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

    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_started_enterprise_admin_session(self):
        """
        Check if the union tag is ``started_enterprise_admin_session``.

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

    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_governance_policy_add_folders(self):
        """
        (data_governance) Added folders to policy

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

        :rtype: GovernancePolicyAddFoldersType
        """
        if not self.is_governance_policy_add_folders():
            raise AttributeError("tag 'governance_policy_add_folders' not set")
        return self._value

    def get_governance_policy_create(self):
        """
        (data_governance) Activated a new policy

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

        :rtype: GovernancePolicyCreateType
        """
        if not self.is_governance_policy_create():
            raise AttributeError("tag 'governance_policy_create' not set")
        return self._value

    def get_governance_policy_delete(self):
        """
        (data_governance) Deleted a policy

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

        :rtype: GovernancePolicyDeleteType
        """
        if not self.is_governance_policy_delete():
            raise AttributeError("tag 'governance_policy_delete' not set")
        return self._value

    def get_governance_policy_edit_details(self):
        """
        (data_governance) Edited policy

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

        :rtype: GovernancePolicyEditDetailsType
        """
        if not self.is_governance_policy_edit_details():
            raise AttributeError("tag 'governance_policy_edit_details' not set")
        return self._value

    def get_governance_policy_edit_duration(self):
        """
        (data_governance) Changed policy duration

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

        :rtype: GovernancePolicyEditDurationType
        """
        if not self.is_governance_policy_edit_duration():
            raise AttributeError("tag 'governance_policy_edit_duration' not set")
        return self._value

    def get_governance_policy_remove_folders(self):
        """
        (data_governance) Removed folders from policy

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

        :rtype: GovernancePolicyRemoveFoldersType
        """
        if not self.is_governance_policy_remove_folders():
            raise AttributeError("tag 'governance_policy_remove_folders' not set")
        return self._value

    def get_legal_holds_activate_a_hold(self):
        """
        (data_governance) Activated a hold

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

        :rtype: LegalHoldsActivateAHoldType
        """
        if not self.is_legal_holds_activate_a_hold():
            raise AttributeError("tag 'legal_holds_activate_a_hold' not set")
        return self._value

    def get_legal_holds_add_members(self):
        """
        (data_governance) Added members to a hold

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

        :rtype: LegalHoldsAddMembersType
        """
        if not self.is_legal_holds_add_members():
            raise AttributeError("tag 'legal_holds_add_members' not set")
        return self._value

    def get_legal_holds_change_hold_details(self):
        """
        (data_governance) Edited details for a hold

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

        :rtype: LegalHoldsChangeHoldDetailsType
        """
        if not self.is_legal_holds_change_hold_details():
            raise AttributeError("tag 'legal_holds_change_hold_details' not set")
        return self._value

    def get_legal_holds_change_hold_name(self):
        """
        (data_governance) Renamed a hold

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

        :rtype: LegalHoldsChangeHoldNameType
        """
        if not self.is_legal_holds_change_hold_name():
            raise AttributeError("tag 'legal_holds_change_hold_name' not set")
        return self._value

    def get_legal_holds_export_a_hold(self):
        """
        (data_governance) Exported hold

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

        :rtype: LegalHoldsExportAHoldType
        """
        if not self.is_legal_holds_export_a_hold():
            raise AttributeError("tag 'legal_holds_export_a_hold' not set")
        return self._value

    def get_legal_holds_export_cancelled(self):
        """
        (data_governance) Canceled export for a hold

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

        :rtype: LegalHoldsExportCancelledType
        """
        if not self.is_legal_holds_export_cancelled():
            raise AttributeError("tag 'legal_holds_export_cancelled' not set")
        return self._value

    def get_legal_holds_export_downloaded(self):
        """
        (data_governance) Downloaded export for a hold

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

        :rtype: LegalHoldsExportDownloadedType
        """
        if not self.is_legal_holds_export_downloaded():
            raise AttributeError("tag 'legal_holds_export_downloaded' not set")
        return self._value

    def get_legal_holds_export_removed(self):
        """
        (data_governance) Removed export for a hold

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

        :rtype: LegalHoldsExportRemovedType
        """
        if not self.is_legal_holds_export_removed():
            raise AttributeError("tag 'legal_holds_export_removed' not set")
        return self._value

    def get_legal_holds_release_a_hold(self):
        """
        (data_governance) Released a hold

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

        :rtype: LegalHoldsReleaseAHoldType
        """
        if not self.is_legal_holds_release_a_hold():
            raise AttributeError("tag 'legal_holds_release_a_hold' not set")
        return self._value

    def get_legal_holds_remove_members(self):
        """
        (data_governance) Removed members from a hold

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

        :rtype: LegalHoldsRemoveMembersType
        """
        if not self.is_legal_holds_remove_members():
            raise AttributeError("tag 'legal_holds_remove_members' not set")
        return self._value

    def get_legal_holds_report_a_hold(self):
        """
        (data_governance) Created a summary report for a hold

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

        :rtype: LegalHoldsReportAHoldType
        """
        if not self.is_legal_holds_report_a_hold():
            raise AttributeError("tag 'legal_holds_report_a_hold' 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_sync_backup_status_changed(self):
        """
        (devices) Enabled/disabled backup for computer

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

        :rtype: DeviceSyncBackupStatusChangedType
        """
        if not self.is_device_sync_backup_status_changed():
            raise AttributeError("tag 'device_sync_backup_status_changed' 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 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_locking_lock_status_changed(self):
        """
        (file_operations) Locked/unlocked editing for a file

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

        :rtype: FileLockingLockStatusChangedType
        """
        if not self.is_file_locking_lock_status_changed():
            raise AttributeError("tag 'file_locking_lock_status_changed' 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_folder_overview_description_changed(self):
        """
        (file_operations) Updated folder overview

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

        :rtype: FolderOverviewDescriptionChangedType
        """
        if not self.is_folder_overview_description_changed():
            raise AttributeError("tag 'folder_overview_description_changed' not set")
        return self._value

    def get_folder_overview_item_pinned(self):
        """
        (file_operations) Pinned item to folder overview

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

        :rtype: FolderOverviewItemPinnedType
        """
        if not self.is_folder_overview_item_pinned():
            raise AttributeError("tag 'folder_overview_item_pinned' not set")
        return self._value

    def get_folder_overview_item_unpinned(self):
        """
        (file_operations) Unpinned item from folder overview

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

        :rtype: FolderOverviewItemUnpinnedType
        """
        if not self.is_folder_overview_item_unpinned():
            raise AttributeError("tag 'folder_overview_item_unpinned' not set")
        return self._value

    def get_rewind_folder(self):
        """
        (file_operations) Rewound a folder

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

        :rtype: RewindFolderType
        """
        if not self.is_rewind_folder():
            raise AttributeError("tag 'rewind_folder' 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_account_lock_or_unlocked(self):
        """
        (logins) Unlocked/locked account after failed sign in attempts

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

        :rtype: AccountLockOrUnlockedType
        """
        if not self.is_account_lock_or_unlocked():
            raise AttributeError("tag 'account_lock_or_unlocked' 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_create_team_invite_link(self):
        """
        (members) Created team invite link

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

        :rtype: CreateTeamInviteLinkType
        """
        if not self.is_create_team_invite_link():
            raise AttributeError("tag 'create_team_invite_link' not set")
        return self._value

    def get_delete_team_invite_link(self):
        """
        (members) Deleted team invite link

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

        :rtype: DeleteTeamInviteLinkType
        """
        if not self.is_delete_team_invite_link():
            raise AttributeError("tag 'delete_team_invite_link' 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_delete_profile_photo(self):
        """
        (members) Deleted team member profile photo

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

        :rtype: MemberDeleteProfilePhotoType
        """
        if not self.is_member_delete_profile_photo():
            raise AttributeError("tag 'member_delete_profile_photo' 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_set_profile_photo(self):
        """
        (members) Set team member profile photo

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

        :rtype: MemberSetProfilePhotoType
        """
        if not self.is_member_set_profile_photo():
            raise AttributeError("tag 'member_set_profile_photo' 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_pending_secondary_email_added(self):
        """
        (members) Added pending secondary email

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

        :rtype: PendingSecondaryEmailAddedType
        """
        if not self.is_pending_secondary_email_added():
            raise AttributeError("tag 'pending_secondary_email_added' not set")
        return self._value

    def get_secondary_email_deleted(self):
        """
        (members) Deleted secondary email

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

        :rtype: SecondaryEmailDeletedType
        """
        if not self.is_secondary_email_deleted():
            raise AttributeError("tag 'secondary_email_deleted' not set")
        return self._value

    def get_secondary_email_verified(self):
        """
        (members) Verified secondary email

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

        :rtype: SecondaryEmailVerifiedType
        """
        if not self.is_secondary_email_verified():
            raise AttributeError("tag 'secondary_email_verified' 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_binder_add_page(self):
        """
        (paper) Added Binder page (deprecated, replaced by 'Edited files')

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

        :rtype: BinderAddPageType
        """
        if not self.is_binder_add_page():
            raise AttributeError("tag 'binder_add_page' not set")
        return self._value

    def get_binder_add_section(self):
        """
        (paper) Added Binder section (deprecated, replaced by 'Edited files')

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

        :rtype: BinderAddSectionType
        """
        if not self.is_binder_add_section():
            raise AttributeError("tag 'binder_add_section' not set")
        return self._value

    def get_binder_remove_page(self):
        """
        (paper) Removed Binder page (deprecated, replaced by 'Edited files')

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

        :rtype: BinderRemovePageType
        """
        if not self.is_binder_remove_page():
            raise AttributeError("tag 'binder_remove_page' not set")
        return self._value

    def get_binder_remove_section(self):
        """
        (paper) Removed Binder section (deprecated, replaced by 'Edited files')

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

        :rtype: BinderRemoveSectionType
        """
        if not self.is_binder_remove_section():
            raise AttributeError("tag 'binder_remove_section' not set")
        return self._value

    def get_binder_rename_page(self):
        """
        (paper) Renamed Binder page (deprecated, replaced by 'Edited files')

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

        :rtype: BinderRenamePageType
        """
        if not self.is_binder_rename_page():
            raise AttributeError("tag 'binder_rename_page' not set")
        return self._value

    def get_binder_rename_section(self):
        """
        (paper) Renamed Binder section (deprecated, replaced by 'Edited files')

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

        :rtype: BinderRenameSectionType
        """
        if not self.is_binder_rename_section():
            raise AttributeError("tag 'binder_rename_section' not set")
        return self._value

    def get_binder_reorder_page(self):
        """
        (paper) Reordered Binder page (deprecated, replaced by 'Edited files')

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

        :rtype: BinderReorderPageType
        """
        if not self.is_binder_reorder_page():
            raise AttributeError("tag 'binder_reorder_page' not set")
        return self._value

    def get_binder_reorder_section(self):
        """
        (paper) Reordered Binder section (deprecated, replaced by 'Edited
        files')

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

        :rtype: BinderReorderSectionType
        """
        if not self.is_binder_reorder_section():
            raise AttributeError("tag 'binder_reorder_section' not set")
        return self._value

    def get_paper_content_add_member(self):
        """
        (paper) Added users and/or groups 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 users and/or groups 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 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 user 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 users and/or groups (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 users and/or groups (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_change_permission(self):
        """
        (paper) Changed permissions for published doc

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

        :rtype: PaperPublishedLinkChangePermissionType
        """
        if not self.is_paper_published_link_change_permission():
            raise AttributeError("tag 'paper_published_link_change_permission' 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_export_members_report_fail(self):
        """
        (reports) Failed to create members data report

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

        :rtype: ExportMembersReportFailType
        """
        if not self.is_export_members_report_fail():
            raise AttributeError("tag 'export_members_report_fail' not set")
        return self._value

    def get_external_sharing_create_report(self):
        """
        (reports) Created External sharing report

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

        :rtype: ExternalSharingCreateReportType
        """
        if not self.is_external_sharing_create_report():
            raise AttributeError("tag 'external_sharing_create_report' not set")
        return self._value

    def get_external_sharing_report_failed(self):
        """
        (reports) Couldn't create External sharing report

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

        :rtype: ExternalSharingReportFailedType
        """
        if not self.is_external_sharing_report_failed():
            raise AttributeError("tag 'external_sharing_report_failed' not set")
        return self._value

    def get_no_expiration_link_gen_create_report(self):
        """
        (reports) Report created: Links created with no expiration

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

        :rtype: NoExpirationLinkGenCreateReportType
        """
        if not self.is_no_expiration_link_gen_create_report():
            raise AttributeError("tag 'no_expiration_link_gen_create_report' not set")
        return self._value

    def get_no_expiration_link_gen_report_failed(self):
        """
        (reports) Couldn't create report: Links created with no expiration

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

        :rtype: NoExpirationLinkGenReportFailedType
        """
        if not self.is_no_expiration_link_gen_report_failed():
            raise AttributeError("tag 'no_expiration_link_gen_report_failed' not set")
        return self._value

    def get_no_password_link_gen_create_report(self):
        """
        (reports) Report created: Links created without passwords

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

        :rtype: NoPasswordLinkGenCreateReportType
        """
        if not self.is_no_password_link_gen_create_report():
            raise AttributeError("tag 'no_password_link_gen_create_report' not set")
        return self._value

    def get_no_password_link_gen_report_failed(self):
        """
        (reports) Couldn't create report: Links created without passwords

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

        :rtype: NoPasswordLinkGenReportFailedType
        """
        if not self.is_no_password_link_gen_report_failed():
            raise AttributeError("tag 'no_password_link_gen_report_failed' not set")
        return self._value

    def get_no_password_link_view_create_report(self):
        """
        (reports) Report created: Views of links without passwords

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

        :rtype: NoPasswordLinkViewCreateReportType
        """
        if not self.is_no_password_link_view_create_report():
            raise AttributeError("tag 'no_password_link_view_create_report' not set")
        return self._value

    def get_no_password_link_view_report_failed(self):
        """
        (reports) Couldn't create report: Views of links without passwords

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

        :rtype: NoPasswordLinkViewReportFailedType
        """
        if not self.is_no_password_link_view_report_failed():
            raise AttributeError("tag 'no_password_link_view_report_failed' not set")
        return self._value

    def get_outdated_link_view_create_report(self):
        """
        (reports) Report created: Views of old links

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

        :rtype: OutdatedLinkViewCreateReportType
        """
        if not self.is_outdated_link_view_create_report():
            raise AttributeError("tag 'outdated_link_view_create_report' not set")
        return self._value

    def get_outdated_link_view_report_failed(self):
        """
        (reports) Couldn't create report: Views of old links

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

        :rtype: OutdatedLinkViewReportFailedType
        """
        if not self.is_outdated_link_view_report_failed():
            raise AttributeError("tag 'outdated_link_view_report_failed' 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_file_transfers_file_add(self):
        """
        (sharing) Transfer files added

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

        :rtype: FileTransfersFileAddType
        """
        if not self.is_file_transfers_file_add():
            raise AttributeError("tag 'file_transfers_file_add' not set")
        return self._value

    def get_file_transfers_transfer_delete(self):
        """
        (sharing) Deleted transfer

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

        :rtype: FileTransfersTransferDeleteType
        """
        if not self.is_file_transfers_transfer_delete():
            raise AttributeError("tag 'file_transfers_transfer_delete' not set")
        return self._value

    def get_file_transfers_transfer_download(self):
        """
        (sharing) Transfer downloaded

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

        :rtype: FileTransfersTransferDownloadType
        """
        if not self.is_file_transfers_transfer_download():
            raise AttributeError("tag 'file_transfers_transfer_download' not set")
        return self._value

    def get_file_transfers_transfer_send(self):
        """
        (sharing) Sent transfer

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

        :rtype: FileTransfersTransferSendType
        """
        if not self.is_file_transfers_transfer_send():
            raise AttributeError("tag 'file_transfers_transfer_send' not set")
        return self._value

    def get_file_transfers_transfer_view(self):
        """
        (sharing) Viewed transfer

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

        :rtype: FileTransfersTransferViewType
        """
        if not self.is_file_transfers_transfer_view():
            raise AttributeError("tag 'file_transfers_transfer_view' 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
        (deprecated, no longer logged)

        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 (deprecated, no
        longer logged)

        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
        (deprecated, no longer logged)

        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 (deprecated, no
        longer logged)

        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 (deprecated, no
        longer logged)

        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 (deprecated, no
        longer logged)

        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
        (deprecated, no longer logged)

        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 (deprecated, no
        longer logged)

        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_restore_invitees(self):
        """
        (sharing) Restored shared file/folder invitees

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

        :rtype: SharedContentRestoreInviteesType
        """
        if not self.is_shared_content_restore_invitees():
            raise AttributeError("tag 'shared_content_restore_invitees' not set")
        return self._value

    def get_shared_content_restore_member(self):
        """
        (sharing) Restored users and/or groups to membership of shared
        file/folder

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

        :rtype: SharedContentRestoreMemberType
        """
        if not self.is_shared_content_restore_member():
            raise AttributeError("tag 'shared_content_restore_member' not set")
        return self._value

    def get_shared_content_unshare(self):
        """
        (sharing) Unshared file/folder by clearing membership

        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_settings_add_expiration(self):
        """
        (sharing) Added an expiration date to the shared link

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

        :rtype: SharedLinkSettingsAddExpirationType
        """
        if not self.is_shared_link_settings_add_expiration():
            raise AttributeError("tag 'shared_link_settings_add_expiration' not set")
        return self._value

    def get_shared_link_settings_add_password(self):
        """
        (sharing) Added a password to the shared link

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

        :rtype: SharedLinkSettingsAddPasswordType
        """
        if not self.is_shared_link_settings_add_password():
            raise AttributeError("tag 'shared_link_settings_add_password' not set")
        return self._value

    def get_shared_link_settings_allow_download_disabled(self):
        """
        (sharing) Disabled downloads

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

        :rtype: SharedLinkSettingsAllowDownloadDisabledType
        """
        if not self.is_shared_link_settings_allow_download_disabled():
            raise AttributeError("tag 'shared_link_settings_allow_download_disabled' not set")
        return self._value

    def get_shared_link_settings_allow_download_enabled(self):
        """
        (sharing) Enabled downloads

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

        :rtype: SharedLinkSettingsAllowDownloadEnabledType
        """
        if not self.is_shared_link_settings_allow_download_enabled():
            raise AttributeError("tag 'shared_link_settings_allow_download_enabled' not set")
        return self._value

    def get_shared_link_settings_change_audience(self):
        """
        (sharing) Changed the audience of the shared link

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

        :rtype: SharedLinkSettingsChangeAudienceType
        """
        if not self.is_shared_link_settings_change_audience():
            raise AttributeError("tag 'shared_link_settings_change_audience' not set")
        return self._value

    def get_shared_link_settings_change_expiration(self):
        """
        (sharing) Changed the expiration date of the shared link

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

        :rtype: SharedLinkSettingsChangeExpirationType
        """
        if not self.is_shared_link_settings_change_expiration():
            raise AttributeError("tag 'shared_link_settings_change_expiration' not set")
        return self._value

    def get_shared_link_settings_change_password(self):
        """
        (sharing) Changed the password of the shared link

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

        :rtype: SharedLinkSettingsChangePasswordType
        """
        if not self.is_shared_link_settings_change_password():
            raise AttributeError("tag 'shared_link_settings_change_password' not set")
        return self._value

    def get_shared_link_settings_remove_expiration(self):
        """
        (sharing) Removed the expiration date from the shared link

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

        :rtype: SharedLinkSettingsRemoveExpirationType
        """
        if not self.is_shared_link_settings_remove_expiration():
            raise AttributeError("tag 'shared_link_settings_remove_expiration' not set")
        return self._value

    def get_shared_link_settings_remove_password(self):
        """
        (sharing) Removed the password from the shared link

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

        :rtype: SharedLinkSettingsRemovePasswordType
        """
        if not self.is_shared_link_settings_remove_password():
            raise AttributeError("tag 'shared_link_settings_remove_password' 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_disable_downloads(self):
        """
        (sharing) Disabled downloads for link (deprecated, no longer logged)

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

        :rtype: ShmodelDisableDownloadsType
        """
        if not self.is_shmodel_disable_downloads():
            raise AttributeError("tag 'shmodel_disable_downloads' not set")
        return self._value

    def get_shmodel_enable_downloads(self):
        """
        (sharing) Enabled downloads for link (deprecated, no longer logged)

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

        :rtype: ShmodelEnableDownloadsType
        """
        if not self.is_shmodel_enable_downloads():
            raise AttributeError("tag 'shmodel_enable_downloads' 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_computer_backup_policy_changed(self):
        """
        (team_policies) Changed computer backup policy for team

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

        :rtype: ComputerBackupPolicyChangedType
        """
        if not self.is_computer_backup_policy_changed():
            raise AttributeError("tag 'computer_backup_policy_changed' not set")
        return self._value

    def get_content_administration_policy_changed(self):
        """
        (team_policies) Changed content management setting

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

        :rtype: ContentAdministrationPolicyChangedType
        """
        if not self.is_content_administration_policy_changed():
            raise AttributeError("tag 'content_administration_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_add_exception(self):
        """
        (team_policies) Added members to device approvals exception list

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

        :rtype: DeviceApprovalsAddExceptionType
        """
        if not self.is_device_approvals_add_exception():
            raise AttributeError("tag 'device_approvals_add_exception' 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_device_approvals_remove_exception(self):
        """
        (team_policies) Removed members from device approvals exception list

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

        :rtype: DeviceApprovalsRemoveExceptionType
        """
        if not self.is_device_approvals_remove_exception():
            raise AttributeError("tag 'device_approvals_remove_exception' 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_locking_policy_changed(self):
        """
        (team_policies) Changed file locking policy for team

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

        :rtype: FileLockingPolicyChangedType
        """
        if not self.is_file_locking_policy_changed():
            raise AttributeError("tag 'file_locking_policy_changed' 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_file_transfers_policy_changed(self):
        """
        (team_policies) Changed file transfers policy for team

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

        :rtype: FileTransfersPolicyChangedType
        """
        if not self.is_file_transfers_policy_changed():
            raise AttributeError("tag 'file_transfers_policy_changed' 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_send_invite_policy_changed(self):
        """
        (team_policies) Changed member send invite policy for team

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

        :rtype: MemberSendInvitePolicyChangedType
        """
        if not self.is_member_send_invite_policy_changed():
            raise AttributeError("tag 'member_send_invite_policy_changed' 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_password_strength_requirements_change_policy(self):
        """
        (team_policies) Changed team password strength requirements

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

        :rtype: PasswordStrengthRequirementsChangePolicyType
        """
        if not self.is_password_strength_requirements_change_policy():
            raise AttributeError("tag 'password_strength_requirements_change_policy' 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_rewind_policy_changed(self):
        """
        (team_policies) Changed Rewind policy for team

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

        :rtype: RewindPolicyChangedType
        """
        if not self.is_rewind_policy_changed():
            raise AttributeError("tag 'rewind_policy_changed' not set")
        return self._value

    def get_send_for_signature_policy_changed(self):
        """
        (team_policies) Changed send for signature policy for team

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

        :rtype: SendForSignaturePolicyChangedType
        """
        if not self.is_send_for_signature_policy_changed():
            raise AttributeError("tag 'send_for_signature_policy_changed' 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_smarter_smart_sync_policy_changed(self):
        """
        (team_policies) Changed automatic Smart Sync setting for team

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

        :rtype: SmarterSmartSyncPolicyChangedType
        """
        if not self.is_smarter_smart_sync_policy_changed():
            raise AttributeError("tag 'smarter_smart_sync_policy_changed' 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_team_sharing_whitelist_subjects_changed(self):
        """
        (team_policies) Edited the approved list for sharing externally

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

        :rtype: TeamSharingWhitelistSubjectsChangedType
        """
        if not self.is_team_sharing_whitelist_subjects_changed():
            raise AttributeError("tag 'team_sharing_whitelist_subjects_changed' not set")
        return self._value

    def get_tfa_add_exception(self):
        """
        (team_policies) Added members to two factor authentication exception
        list

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

        :rtype: TfaAddExceptionType
        """
        if not self.is_tfa_add_exception():
            raise AttributeError("tag 'tfa_add_exception' 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_tfa_remove_exception(self):
        """
        (team_policies) Removed members from two factor authentication exception
        list

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

        :rtype: TfaRemoveExceptionType
        """
        if not self.is_tfa_remove_exception():
            raise AttributeError("tag 'tfa_remove_exception' 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_watermarking_policy_changed(self):
        """
        (team_policies) Changed watermarking policy for team

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

        :rtype: WatermarkingPolicyChangedType
        """
        if not self.is_watermarking_policy_changed():
            raise AttributeError("tag 'watermarking_policy_changed' not set")
        return self._value

    def get_web_sessions_change_active_session_limit(self):
        """
        (team_policies) Changed limit on active sessions per member

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

        :rtype: WebSessionsChangeActiveSessionLimitType
        """
        if not self.is_web_sessions_change_active_session_limit():
            raise AttributeError("tag 'web_sessions_change_active_session_limit' 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_changed_enterprise_admin_role(self):
        """
        (trusted_teams) Changed enterprise admin role

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

        :rtype: ChangedEnterpriseAdminRoleType
        """
        if not self.is_changed_enterprise_admin_role():
            raise AttributeError("tag 'changed_enterprise_admin_role' not set")
        return self._value

    def get_changed_enterprise_connected_team_status(self):
        """
        (trusted_teams) Changed enterprise-connected team status

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

        :rtype: ChangedEnterpriseConnectedTeamStatusType
        """
        if not self.is_changed_enterprise_connected_team_status():
            raise AttributeError("tag 'changed_enterprise_connected_team_status' not set")
        return self._value

    def get_ended_enterprise_admin_session(self):
        """
        (trusted_teams) Ended enterprise admin session

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

        :rtype: EndedEnterpriseAdminSessionType
        """
        if not self.is_ended_enterprise_admin_session():
            raise AttributeError("tag 'ended_enterprise_admin_session' not set")
        return self._value

    def get_ended_enterprise_admin_session_deprecated(self):
        """
        (trusted_teams) Ended enterprise admin session (deprecated, replaced by
        'Ended enterprise admin session')

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

        :rtype: EndedEnterpriseAdminSessionDeprecatedType
        """
        if not self.is_ended_enterprise_admin_session_deprecated():
            raise AttributeError("tag 'ended_enterprise_admin_session_deprecated' not set")
        return self._value

    def get_enterprise_settings_locking(self):
        """
        (trusted_teams) Changed who can update a setting

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

        :rtype: EnterpriseSettingsLockingType
        """
        if not self.is_enterprise_settings_locking():
            raise AttributeError("tag 'enterprise_settings_locking' 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_started_enterprise_admin_session(self):
        """
        (trusted_teams) Started enterprise admin session

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

        :rtype: StartedEnterpriseAdminSessionType
        """
        if not self.is_started_enterprise_admin_session():
            raise AttributeError("tag 'started_enterprise_admin_session' 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 EventTypeArg(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 team_log.EventTypeArg.app_link_team: (apps) Linked app for team
    :ivar team_log.EventTypeArg.app_link_user: (apps) Linked app for member
    :ivar team_log.EventTypeArg.app_unlink_team: (apps) Unlinked app for team
    :ivar team_log.EventTypeArg.app_unlink_user: (apps) Unlinked app for member
    :ivar team_log.EventTypeArg.integration_connected: (apps) Connected
        integration for member
    :ivar team_log.EventTypeArg.integration_disconnected: (apps) Disconnected
        integration for member
    :ivar team_log.EventTypeArg.file_add_comment: (comments) Added file comment
    :ivar team_log.EventTypeArg.file_change_comment_subscription: (comments)
        Subscribed to or unsubscribed from comment notifications for file
    :ivar team_log.EventTypeArg.file_delete_comment: (comments) Deleted file
        comment
    :ivar team_log.EventTypeArg.file_edit_comment: (comments) Edited file
        comment
    :ivar team_log.EventTypeArg.file_like_comment: (comments) Liked file comment
        (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.file_resolve_comment: (comments) Resolved file
        comment
    :ivar team_log.EventTypeArg.file_unlike_comment: (comments) Unliked file
        comment (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.file_unresolve_comment: (comments) Unresolved
        file comment
    :ivar team_log.EventTypeArg.governance_policy_add_folders: (data_governance)
        Added folders to policy
    :ivar team_log.EventTypeArg.governance_policy_create: (data_governance)
        Activated a new policy
    :ivar team_log.EventTypeArg.governance_policy_delete: (data_governance)
        Deleted a policy
    :ivar team_log.EventTypeArg.governance_policy_edit_details:
        (data_governance) Edited policy
    :ivar team_log.EventTypeArg.governance_policy_edit_duration:
        (data_governance) Changed policy duration
    :ivar team_log.EventTypeArg.governance_policy_remove_folders:
        (data_governance) Removed folders from policy
    :ivar team_log.EventTypeArg.legal_holds_activate_a_hold: (data_governance)
        Activated a hold
    :ivar team_log.EventTypeArg.legal_holds_add_members: (data_governance) Added
        members to a hold
    :ivar team_log.EventTypeArg.legal_holds_change_hold_details:
        (data_governance) Edited details for a hold
    :ivar team_log.EventTypeArg.legal_holds_change_hold_name: (data_governance)
        Renamed a hold
    :ivar team_log.EventTypeArg.legal_holds_export_a_hold: (data_governance)
        Exported hold
    :ivar team_log.EventTypeArg.legal_holds_export_cancelled: (data_governance)
        Canceled export for a hold
    :ivar team_log.EventTypeArg.legal_holds_export_downloaded: (data_governance)
        Downloaded export for a hold
    :ivar team_log.EventTypeArg.legal_holds_export_removed: (data_governance)
        Removed export for a hold
    :ivar team_log.EventTypeArg.legal_holds_release_a_hold: (data_governance)
        Released a hold
    :ivar team_log.EventTypeArg.legal_holds_remove_members: (data_governance)
        Removed members from a hold
    :ivar team_log.EventTypeArg.legal_holds_report_a_hold: (data_governance)
        Created a summary report for a hold
    :ivar team_log.EventTypeArg.device_change_ip_desktop: (devices) Changed IP
        address associated with active desktop session
    :ivar team_log.EventTypeArg.device_change_ip_mobile: (devices) Changed IP
        address associated with active mobile session
    :ivar team_log.EventTypeArg.device_change_ip_web: (devices) Changed IP
        address associated with active web session
    :ivar team_log.EventTypeArg.device_delete_on_unlink_fail: (devices) Failed
        to delete all files from unlinked device
    :ivar team_log.EventTypeArg.device_delete_on_unlink_success: (devices)
        Deleted all files from unlinked device
    :ivar team_log.EventTypeArg.device_link_fail: (devices) Failed to link
        device
    :ivar team_log.EventTypeArg.device_link_success: (devices) Linked device
    :ivar team_log.EventTypeArg.device_management_disabled: (devices) Disabled
        device management (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.device_management_enabled: (devices) Enabled
        device management (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.device_sync_backup_status_changed: (devices)
        Enabled/disabled backup for computer
    :ivar team_log.EventTypeArg.device_unlink: (devices) Disconnected device
    :ivar team_log.EventTypeArg.emm_refresh_auth_token: (devices) Refreshed auth
        token used for setting up EMM
    :ivar team_log.EventTypeArg.account_capture_change_availability: (domains)
        Granted/revoked option to enable account capture on team domains
    :ivar team_log.EventTypeArg.account_capture_migrate_account: (domains)
        Account-captured user migrated account to team
    :ivar team_log.EventTypeArg.account_capture_notification_emails_sent:
        (domains) Sent account capture email to all unmanaged members
    :ivar team_log.EventTypeArg.account_capture_relinquish_account: (domains)
        Account-captured user changed account email to personal email
    :ivar team_log.EventTypeArg.disabled_domain_invites: (domains) Disabled
        domain invites (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.domain_invites_approve_request_to_join_team:
        (domains) Approved user's request to join team
    :ivar team_log.EventTypeArg.domain_invites_decline_request_to_join_team:
        (domains) Declined user's request to join team
    :ivar team_log.EventTypeArg.domain_invites_email_existing_users: (domains)
        Sent domain invites to existing domain accounts (deprecated, no longer
        logged)
    :ivar team_log.EventTypeArg.domain_invites_request_to_join_team: (domains)
        Requested to join team
    :ivar team_log.EventTypeArg.domain_invites_set_invite_new_user_pref_to_no:
        (domains) Disabled "Automatically invite new users" (deprecated, no
        longer logged)
    :ivar team_log.EventTypeArg.domain_invites_set_invite_new_user_pref_to_yes:
        (domains) Enabled "Automatically invite new users" (deprecated, no
        longer logged)
    :ivar team_log.EventTypeArg.domain_verification_add_domain_fail: (domains)
        Failed to verify team domain
    :ivar team_log.EventTypeArg.domain_verification_add_domain_success:
        (domains) Verified team domain
    :ivar team_log.EventTypeArg.domain_verification_remove_domain: (domains)
        Removed domain from list of verified team domains
    :ivar team_log.EventTypeArg.enabled_domain_invites: (domains) Enabled domain
        invites (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.create_folder: (file_operations) Created folders
        (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.file_add: (file_operations) Added files and/or
        folders
    :ivar team_log.EventTypeArg.file_copy: (file_operations) Copied files and/or
        folders
    :ivar team_log.EventTypeArg.file_delete: (file_operations) Deleted files
        and/or folders
    :ivar team_log.EventTypeArg.file_download: (file_operations) Downloaded
        files and/or folders
    :ivar team_log.EventTypeArg.file_edit: (file_operations) Edited files
    :ivar team_log.EventTypeArg.file_get_copy_reference: (file_operations)
        Created copy reference to file/folder
    :ivar team_log.EventTypeArg.file_locking_lock_status_changed:
        (file_operations) Locked/unlocked editing for a file
    :ivar team_log.EventTypeArg.file_move: (file_operations) Moved files and/or
        folders
    :ivar team_log.EventTypeArg.file_permanently_delete: (file_operations)
        Permanently deleted files and/or folders
    :ivar team_log.EventTypeArg.file_preview: (file_operations) Previewed files
        and/or folders
    :ivar team_log.EventTypeArg.file_rename: (file_operations) Renamed files
        and/or folders
    :ivar team_log.EventTypeArg.file_restore: (file_operations) Restored deleted
        files and/or folders
    :ivar team_log.EventTypeArg.file_revert: (file_operations) Reverted files to
        previous version
    :ivar team_log.EventTypeArg.file_rollback_changes: (file_operations) Rolled
        back file actions
    :ivar team_log.EventTypeArg.file_save_copy_reference: (file_operations)
        Saved file/folder using copy reference
    :ivar team_log.EventTypeArg.folder_overview_description_changed:
        (file_operations) Updated folder overview
    :ivar team_log.EventTypeArg.folder_overview_item_pinned: (file_operations)
        Pinned item to folder overview
    :ivar team_log.EventTypeArg.folder_overview_item_unpinned: (file_operations)
        Unpinned item from folder overview
    :ivar team_log.EventTypeArg.rewind_folder: (file_operations) Rewound a
        folder
    :ivar team_log.EventTypeArg.file_request_change: (file_requests) Changed
        file request
    :ivar team_log.EventTypeArg.file_request_close: (file_requests) Closed file
        request
    :ivar team_log.EventTypeArg.file_request_create: (file_requests) Created
        file request
    :ivar team_log.EventTypeArg.file_request_delete: (file_requests) Delete file
        request
    :ivar team_log.EventTypeArg.file_request_receive_file: (file_requests)
        Received files for file request
    :ivar team_log.EventTypeArg.group_add_external_id: (groups) Added external
        ID for group
    :ivar team_log.EventTypeArg.group_add_member: (groups) Added team members to
        group
    :ivar team_log.EventTypeArg.group_change_external_id: (groups) Changed
        external ID for group
    :ivar team_log.EventTypeArg.group_change_management_type: (groups) Changed
        group management type
    :ivar team_log.EventTypeArg.group_change_member_role: (groups) Changed
        manager permissions of group member
    :ivar team_log.EventTypeArg.group_create: (groups) Created group
    :ivar team_log.EventTypeArg.group_delete: (groups) Deleted group
    :ivar team_log.EventTypeArg.group_description_updated: (groups) Updated
        group (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.group_join_policy_updated: (groups) Updated
        group join policy (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.group_moved: (groups) Moved group (deprecated,
        no longer logged)
    :ivar team_log.EventTypeArg.group_remove_external_id: (groups) Removed
        external ID for group
    :ivar team_log.EventTypeArg.group_remove_member: (groups) Removed team
        members from group
    :ivar team_log.EventTypeArg.group_rename: (groups) Renamed group
    :ivar team_log.EventTypeArg.account_lock_or_unlocked: (logins)
        Unlocked/locked account after failed sign in attempts
    :ivar team_log.EventTypeArg.emm_error: (logins) Failed to sign in via EMM
        (deprecated, replaced by 'Failed to sign in')
    :ivar team_log.EventTypeArg.guest_admin_signed_in_via_trusted_teams:
        (logins) Started trusted team admin session
    :ivar team_log.EventTypeArg.guest_admin_signed_out_via_trusted_teams:
        (logins) Ended trusted team admin session
    :ivar team_log.EventTypeArg.login_fail: (logins) Failed to sign in
    :ivar team_log.EventTypeArg.login_success: (logins) Signed in
    :ivar team_log.EventTypeArg.logout: (logins) Signed out
    :ivar team_log.EventTypeArg.reseller_support_session_end: (logins) Ended
        reseller support session
    :ivar team_log.EventTypeArg.reseller_support_session_start: (logins) Started
        reseller support session
    :ivar team_log.EventTypeArg.sign_in_as_session_end: (logins) Ended admin
        sign-in-as session
    :ivar team_log.EventTypeArg.sign_in_as_session_start: (logins) Started admin
        sign-in-as session
    :ivar team_log.EventTypeArg.sso_error: (logins) Failed to sign in via SSO
        (deprecated, replaced by 'Failed to sign in')
    :ivar team_log.EventTypeArg.create_team_invite_link: (members) Created team
        invite link
    :ivar team_log.EventTypeArg.delete_team_invite_link: (members) Deleted team
        invite link
    :ivar team_log.EventTypeArg.member_add_external_id: (members) Added an
        external ID for team member
    :ivar team_log.EventTypeArg.member_add_name: (members) Added team member
        name
    :ivar team_log.EventTypeArg.member_change_admin_role: (members) Changed team
        member admin role
    :ivar team_log.EventTypeArg.member_change_email: (members) Changed team
        member email
    :ivar team_log.EventTypeArg.member_change_external_id: (members) Changed the
        external ID for team member
    :ivar team_log.EventTypeArg.member_change_membership_type: (members) Changed
        membership type (limited/full) of member (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.member_change_name: (members) Changed team
        member name
    :ivar team_log.EventTypeArg.member_change_status: (members) Changed member
        status (invited, joined, suspended, etc.)
    :ivar team_log.EventTypeArg.member_delete_manual_contacts: (members) Cleared
        manually added contacts
    :ivar team_log.EventTypeArg.member_delete_profile_photo: (members) Deleted
        team member profile photo
    :ivar team_log.EventTypeArg.member_permanently_delete_account_contents:
        (members) Permanently deleted contents of deleted team member account
    :ivar team_log.EventTypeArg.member_remove_external_id: (members) Removed the
        external ID for team member
    :ivar team_log.EventTypeArg.member_set_profile_photo: (members) Set team
        member profile photo
    :ivar team_log.EventTypeArg.member_space_limits_add_custom_quota: (members)
        Set custom member space limit
    :ivar team_log.EventTypeArg.member_space_limits_change_custom_quota:
        (members) Changed custom member space limit
    :ivar team_log.EventTypeArg.member_space_limits_change_status: (members)
        Changed space limit status
    :ivar team_log.EventTypeArg.member_space_limits_remove_custom_quota:
        (members) Removed custom member space limit
    :ivar team_log.EventTypeArg.member_suggest: (members) Suggested person to
        add to team
    :ivar team_log.EventTypeArg.member_transfer_account_contents: (members)
        Transferred contents of deleted member account to another member
    :ivar team_log.EventTypeArg.pending_secondary_email_added: (members) Added
        pending secondary email
    :ivar team_log.EventTypeArg.secondary_email_deleted: (members) Deleted
        secondary email
    :ivar team_log.EventTypeArg.secondary_email_verified: (members) Verified
        secondary email
    :ivar team_log.EventTypeArg.secondary_mails_policy_changed: (members)
        Secondary mails policy changed
    :ivar team_log.EventTypeArg.binder_add_page: (paper) Added Binder page
        (deprecated, replaced by 'Edited files')
    :ivar team_log.EventTypeArg.binder_add_section: (paper) Added Binder section
        (deprecated, replaced by 'Edited files')
    :ivar team_log.EventTypeArg.binder_remove_page: (paper) Removed Binder page
        (deprecated, replaced by 'Edited files')
    :ivar team_log.EventTypeArg.binder_remove_section: (paper) Removed Binder
        section (deprecated, replaced by 'Edited files')
    :ivar team_log.EventTypeArg.binder_rename_page: (paper) Renamed Binder page
        (deprecated, replaced by 'Edited files')
    :ivar team_log.EventTypeArg.binder_rename_section: (paper) Renamed Binder
        section (deprecated, replaced by 'Edited files')
    :ivar team_log.EventTypeArg.binder_reorder_page: (paper) Reordered Binder
        page (deprecated, replaced by 'Edited files')
    :ivar team_log.EventTypeArg.binder_reorder_section: (paper) Reordered Binder
        section (deprecated, replaced by 'Edited files')
    :ivar team_log.EventTypeArg.paper_content_add_member: (paper) Added users
        and/or groups to Paper doc/folder
    :ivar team_log.EventTypeArg.paper_content_add_to_folder: (paper) Added Paper
        doc/folder to folder
    :ivar team_log.EventTypeArg.paper_content_archive: (paper) Archived Paper
        doc/folder
    :ivar team_log.EventTypeArg.paper_content_create: (paper) Created Paper
        doc/folder
    :ivar team_log.EventTypeArg.paper_content_permanently_delete: (paper)
        Permanently deleted Paper doc/folder
    :ivar team_log.EventTypeArg.paper_content_remove_from_folder: (paper)
        Removed Paper doc/folder from folder
    :ivar team_log.EventTypeArg.paper_content_remove_member: (paper) Removed
        users and/or groups from Paper doc/folder
    :ivar team_log.EventTypeArg.paper_content_rename: (paper) Renamed Paper
        doc/folder
    :ivar team_log.EventTypeArg.paper_content_restore: (paper) Restored archived
        Paper doc/folder
    :ivar team_log.EventTypeArg.paper_doc_add_comment: (paper) Added Paper doc
        comment
    :ivar team_log.EventTypeArg.paper_doc_change_member_role: (paper) Changed
        member permissions for Paper doc
    :ivar team_log.EventTypeArg.paper_doc_change_sharing_policy: (paper) Changed
        sharing setting for Paper doc
    :ivar team_log.EventTypeArg.paper_doc_change_subscription: (paper)
        Followed/unfollowed Paper doc
    :ivar team_log.EventTypeArg.paper_doc_deleted: (paper) Archived Paper doc
        (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.paper_doc_delete_comment: (paper) Deleted Paper
        doc comment
    :ivar team_log.EventTypeArg.paper_doc_download: (paper) Downloaded Paper doc
        in specific format
    :ivar team_log.EventTypeArg.paper_doc_edit: (paper) Edited Paper doc
    :ivar team_log.EventTypeArg.paper_doc_edit_comment: (paper) Edited Paper doc
        comment
    :ivar team_log.EventTypeArg.paper_doc_followed: (paper) Followed Paper doc
        (deprecated, replaced by 'Followed/unfollowed Paper doc')
    :ivar team_log.EventTypeArg.paper_doc_mention: (paper) Mentioned user in
        Paper doc
    :ivar team_log.EventTypeArg.paper_doc_ownership_changed: (paper) Transferred
        ownership of Paper doc
    :ivar team_log.EventTypeArg.paper_doc_request_access: (paper) Requested
        access to Paper doc
    :ivar team_log.EventTypeArg.paper_doc_resolve_comment: (paper) Resolved
        Paper doc comment
    :ivar team_log.EventTypeArg.paper_doc_revert: (paper) Restored Paper doc to
        previous version
    :ivar team_log.EventTypeArg.paper_doc_slack_share: (paper) Shared Paper doc
        via Slack
    :ivar team_log.EventTypeArg.paper_doc_team_invite: (paper) Shared Paper doc
        with users and/or groups (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.paper_doc_trashed: (paper) Deleted Paper doc
    :ivar team_log.EventTypeArg.paper_doc_unresolve_comment: (paper) Unresolved
        Paper doc comment
    :ivar team_log.EventTypeArg.paper_doc_untrashed: (paper) Restored Paper doc
    :ivar team_log.EventTypeArg.paper_doc_view: (paper) Viewed Paper doc
    :ivar team_log.EventTypeArg.paper_external_view_allow: (paper) Changed Paper
        external sharing setting to anyone (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.paper_external_view_default_team: (paper)
        Changed Paper external sharing setting to default team (deprecated, no
        longer logged)
    :ivar team_log.EventTypeArg.paper_external_view_forbid: (paper) Changed
        Paper external sharing setting to team-only (deprecated, no longer
        logged)
    :ivar team_log.EventTypeArg.paper_folder_change_subscription: (paper)
        Followed/unfollowed Paper folder
    :ivar team_log.EventTypeArg.paper_folder_deleted: (paper) Archived Paper
        folder (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.paper_folder_followed: (paper) Followed Paper
        folder (deprecated, replaced by 'Followed/unfollowed Paper folder')
    :ivar team_log.EventTypeArg.paper_folder_team_invite: (paper) Shared Paper
        folder with users and/or groups (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.paper_published_link_change_permission: (paper)
        Changed permissions for published doc
    :ivar team_log.EventTypeArg.paper_published_link_create: (paper) Published
        doc
    :ivar team_log.EventTypeArg.paper_published_link_disabled: (paper)
        Unpublished doc
    :ivar team_log.EventTypeArg.paper_published_link_view: (paper) Viewed
        published doc
    :ivar team_log.EventTypeArg.password_change: (passwords) Changed password
    :ivar team_log.EventTypeArg.password_reset: (passwords) Reset password
    :ivar team_log.EventTypeArg.password_reset_all: (passwords) Reset all team
        member passwords
    :ivar team_log.EventTypeArg.emm_create_exceptions_report: (reports) Created
        EMM-excluded users report
    :ivar team_log.EventTypeArg.emm_create_usage_report: (reports) Created EMM
        mobile app usage report
    :ivar team_log.EventTypeArg.export_members_report: (reports) Created member
        data report
    :ivar team_log.EventTypeArg.export_members_report_fail: (reports) Failed to
        create members data report
    :ivar team_log.EventTypeArg.external_sharing_create_report: (reports)
        Created External sharing report
    :ivar team_log.EventTypeArg.external_sharing_report_failed: (reports)
        Couldn't create External sharing report
    :ivar team_log.EventTypeArg.no_expiration_link_gen_create_report: (reports)
        Report created: Links created with no expiration
    :ivar team_log.EventTypeArg.no_expiration_link_gen_report_failed: (reports)
        Couldn't create report: Links created with no expiration
    :ivar team_log.EventTypeArg.no_password_link_gen_create_report: (reports)
        Report created: Links created without passwords
    :ivar team_log.EventTypeArg.no_password_link_gen_report_failed: (reports)
        Couldn't create report: Links created without passwords
    :ivar team_log.EventTypeArg.no_password_link_view_create_report: (reports)
        Report created: Views of links without passwords
    :ivar team_log.EventTypeArg.no_password_link_view_report_failed: (reports)
        Couldn't create report: Views of links without passwords
    :ivar team_log.EventTypeArg.outdated_link_view_create_report: (reports)
        Report created: Views of old links
    :ivar team_log.EventTypeArg.outdated_link_view_report_failed: (reports)
        Couldn't create report: Views of old links
    :ivar team_log.EventTypeArg.paper_admin_export_start: (reports) Exported all
        team Paper docs
    :ivar team_log.EventTypeArg.smart_sync_create_admin_privilege_report:
        (reports) Created Smart Sync non-admin devices report
    :ivar team_log.EventTypeArg.team_activity_create_report: (reports) Created
        team activity report
    :ivar team_log.EventTypeArg.team_activity_create_report_fail: (reports)
        Couldn't generate team activity report
    :ivar team_log.EventTypeArg.collection_share: (sharing) Shared album
    :ivar team_log.EventTypeArg.file_transfers_file_add: (sharing) Transfer
        files added
    :ivar team_log.EventTypeArg.file_transfers_transfer_delete: (sharing)
        Deleted transfer
    :ivar team_log.EventTypeArg.file_transfers_transfer_download: (sharing)
        Transfer downloaded
    :ivar team_log.EventTypeArg.file_transfers_transfer_send: (sharing) Sent
        transfer
    :ivar team_log.EventTypeArg.file_transfers_transfer_view: (sharing) Viewed
        transfer
    :ivar team_log.EventTypeArg.note_acl_invite_only: (sharing) Changed Paper
        doc to invite-only (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.note_acl_link: (sharing) Changed Paper doc to
        link-accessible (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.note_acl_team_link: (sharing) Changed Paper doc
        to link-accessible for team (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.note_shared: (sharing) Shared Paper doc
        (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.note_share_receive: (sharing) Shared received
        Paper doc (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.open_note_shared: (sharing) Opened shared Paper
        doc (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.sf_add_group: (sharing) Added team to shared
        folder (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.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 team_log.EventTypeArg.sf_external_invite_warn: (sharing) Set team
        members to see warning before sharing folders outside team (deprecated,
        no longer logged)
    :ivar team_log.EventTypeArg.sf_fb_invite: (sharing) Invited Facebook users
        to shared folder (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.sf_fb_invite_change_role: (sharing) Changed
        Facebook user's role in shared folder (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.sf_fb_uninvite: (sharing) Uninvited Facebook
        user from shared folder (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.sf_invite_group: (sharing) Invited group to
        shared folder (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.sf_team_grant_access: (sharing) Granted access
        to shared folder (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.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 team_log.EventTypeArg.sf_team_invite_change_role: (sharing) Changed
        team member's role in shared folder (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.sf_team_join: (sharing) Joined team member's
        shared folder (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.sf_team_join_from_oob_link: (sharing) Joined
        team member's shared folder from link (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.sf_team_uninvite: (sharing) Unshared folder with
        team member (deprecated, replaced by 'Removed invitee from shared
        file/folder before invite was accepted')
    :ivar team_log.EventTypeArg.shared_content_add_invitees: (sharing) Invited
        user to Dropbox and added them to shared file/folder
    :ivar team_log.EventTypeArg.shared_content_add_link_expiry: (sharing) Added
        expiration date to link for shared file/folder (deprecated, no longer
        logged)
    :ivar team_log.EventTypeArg.shared_content_add_link_password: (sharing)
        Added password to link for shared file/folder (deprecated, no longer
        logged)
    :ivar team_log.EventTypeArg.shared_content_add_member: (sharing) Added users
        and/or groups to shared file/folder
    :ivar team_log.EventTypeArg.shared_content_change_downloads_policy:
        (sharing) Changed whether members can download shared file/folder
        (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.shared_content_change_invitee_role: (sharing)
        Changed access type of invitee to shared file/folder before invite was
        accepted
    :ivar team_log.EventTypeArg.shared_content_change_link_audience: (sharing)
        Changed link audience of shared file/folder (deprecated, no longer
        logged)
    :ivar team_log.EventTypeArg.shared_content_change_link_expiry: (sharing)
        Changed link expiration of shared file/folder (deprecated, no longer
        logged)
    :ivar team_log.EventTypeArg.shared_content_change_link_password: (sharing)
        Changed link password of shared file/folder (deprecated, no longer
        logged)
    :ivar team_log.EventTypeArg.shared_content_change_member_role: (sharing)
        Changed access type of shared file/folder member
    :ivar team_log.EventTypeArg.shared_content_change_viewer_info_policy:
        (sharing) Changed whether members can see who viewed shared file/folder
    :ivar team_log.EventTypeArg.shared_content_claim_invitation: (sharing)
        Acquired membership of shared file/folder by accepting invite
    :ivar team_log.EventTypeArg.shared_content_copy: (sharing) Copied shared
        file/folder to own Dropbox
    :ivar team_log.EventTypeArg.shared_content_download: (sharing) Downloaded
        shared file/folder
    :ivar team_log.EventTypeArg.shared_content_relinquish_membership: (sharing)
        Left shared file/folder
    :ivar team_log.EventTypeArg.shared_content_remove_invitees: (sharing)
        Removed invitee from shared file/folder before invite was accepted
    :ivar team_log.EventTypeArg.shared_content_remove_link_expiry: (sharing)
        Removed link expiration date of shared file/folder (deprecated, no
        longer logged)
    :ivar team_log.EventTypeArg.shared_content_remove_link_password: (sharing)
        Removed link password of shared file/folder (deprecated, no longer
        logged)
    :ivar team_log.EventTypeArg.shared_content_remove_member: (sharing) Removed
        user/group from shared file/folder
    :ivar team_log.EventTypeArg.shared_content_request_access: (sharing)
        Requested access to shared file/folder
    :ivar team_log.EventTypeArg.shared_content_restore_invitees: (sharing)
        Restored shared file/folder invitees
    :ivar team_log.EventTypeArg.shared_content_restore_member: (sharing)
        Restored users and/or groups to membership of shared file/folder
    :ivar team_log.EventTypeArg.shared_content_unshare: (sharing) Unshared
        file/folder by clearing membership
    :ivar team_log.EventTypeArg.shared_content_view: (sharing) Previewed shared
        file/folder
    :ivar team_log.EventTypeArg.shared_folder_change_link_policy: (sharing)
        Changed who can access shared folder via link
    :ivar team_log.EventTypeArg.shared_folder_change_members_inheritance_policy:
        (sharing) Changed whether shared folder inherits members from parent
        folder
    :ivar team_log.EventTypeArg.shared_folder_change_members_management_policy:
        (sharing) Changed who can add/remove members of shared folder
    :ivar team_log.EventTypeArg.shared_folder_change_members_policy: (sharing)
        Changed who can become member of shared folder
    :ivar team_log.EventTypeArg.shared_folder_create: (sharing) Created shared
        folder
    :ivar team_log.EventTypeArg.shared_folder_decline_invitation: (sharing)
        Declined team member's invite to shared folder
    :ivar team_log.EventTypeArg.shared_folder_mount: (sharing) Added shared
        folder to own Dropbox
    :ivar team_log.EventTypeArg.shared_folder_nest: (sharing) Changed parent of
        shared folder
    :ivar team_log.EventTypeArg.shared_folder_transfer_ownership: (sharing)
        Transferred ownership of shared folder to another member
    :ivar team_log.EventTypeArg.shared_folder_unmount: (sharing) Deleted shared
        folder from Dropbox
    :ivar team_log.EventTypeArg.shared_link_add_expiry: (sharing) Added shared
        link expiration date
    :ivar team_log.EventTypeArg.shared_link_change_expiry: (sharing) Changed
        shared link expiration date
    :ivar team_log.EventTypeArg.shared_link_change_visibility: (sharing) Changed
        visibility of shared link
    :ivar team_log.EventTypeArg.shared_link_copy: (sharing) Added file/folder to
        Dropbox from shared link
    :ivar team_log.EventTypeArg.shared_link_create: (sharing) Created shared
        link
    :ivar team_log.EventTypeArg.shared_link_disable: (sharing) Removed shared
        link
    :ivar team_log.EventTypeArg.shared_link_download: (sharing) Downloaded
        file/folder from shared link
    :ivar team_log.EventTypeArg.shared_link_remove_expiry: (sharing) Removed
        shared link expiration date
    :ivar team_log.EventTypeArg.shared_link_settings_add_expiration: (sharing)
        Added an expiration date to the shared link
    :ivar team_log.EventTypeArg.shared_link_settings_add_password: (sharing)
        Added a password to the shared link
    :ivar team_log.EventTypeArg.shared_link_settings_allow_download_disabled:
        (sharing) Disabled downloads
    :ivar team_log.EventTypeArg.shared_link_settings_allow_download_enabled:
        (sharing) Enabled downloads
    :ivar team_log.EventTypeArg.shared_link_settings_change_audience: (sharing)
        Changed the audience of the shared link
    :ivar team_log.EventTypeArg.shared_link_settings_change_expiration:
        (sharing) Changed the expiration date of the shared link
    :ivar team_log.EventTypeArg.shared_link_settings_change_password: (sharing)
        Changed the password of the shared link
    :ivar team_log.EventTypeArg.shared_link_settings_remove_expiration:
        (sharing) Removed the expiration date from the shared link
    :ivar team_log.EventTypeArg.shared_link_settings_remove_password: (sharing)
        Removed the password from the shared link
    :ivar team_log.EventTypeArg.shared_link_share: (sharing) Added members as
        audience of shared link
    :ivar team_log.EventTypeArg.shared_link_view: (sharing) Opened shared link
    :ivar team_log.EventTypeArg.shared_note_opened: (sharing) Opened shared
        Paper doc (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.shmodel_disable_downloads: (sharing) Disabled
        downloads for link (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.shmodel_enable_downloads: (sharing) Enabled
        downloads for link (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.shmodel_group_share: (sharing) Shared link with
        group (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.showcase_access_granted: (showcase) Granted
        access to showcase
    :ivar team_log.EventTypeArg.showcase_add_member: (showcase) Added member to
        showcase
    :ivar team_log.EventTypeArg.showcase_archived: (showcase) Archived showcase
    :ivar team_log.EventTypeArg.showcase_created: (showcase) Created showcase
    :ivar team_log.EventTypeArg.showcase_delete_comment: (showcase) Deleted
        showcase comment
    :ivar team_log.EventTypeArg.showcase_edited: (showcase) Edited showcase
    :ivar team_log.EventTypeArg.showcase_edit_comment: (showcase) Edited
        showcase comment
    :ivar team_log.EventTypeArg.showcase_file_added: (showcase) Added file to
        showcase
    :ivar team_log.EventTypeArg.showcase_file_download: (showcase) Downloaded
        file from showcase
    :ivar team_log.EventTypeArg.showcase_file_removed: (showcase) Removed file
        from showcase
    :ivar team_log.EventTypeArg.showcase_file_view: (showcase) Viewed file in
        showcase
    :ivar team_log.EventTypeArg.showcase_permanently_deleted: (showcase)
        Permanently deleted showcase
    :ivar team_log.EventTypeArg.showcase_post_comment: (showcase) Added showcase
        comment
    :ivar team_log.EventTypeArg.showcase_remove_member: (showcase) Removed
        member from showcase
    :ivar team_log.EventTypeArg.showcase_renamed: (showcase) Renamed showcase
    :ivar team_log.EventTypeArg.showcase_request_access: (showcase) Requested
        access to showcase
    :ivar team_log.EventTypeArg.showcase_resolve_comment: (showcase) Resolved
        showcase comment
    :ivar team_log.EventTypeArg.showcase_restored: (showcase) Unarchived
        showcase
    :ivar team_log.EventTypeArg.showcase_trashed: (showcase) Deleted showcase
    :ivar team_log.EventTypeArg.showcase_trashed_deprecated: (showcase) Deleted
        showcase (old version) (deprecated, replaced by 'Deleted showcase')
    :ivar team_log.EventTypeArg.showcase_unresolve_comment: (showcase)
        Unresolved showcase comment
    :ivar team_log.EventTypeArg.showcase_untrashed: (showcase) Restored showcase
    :ivar team_log.EventTypeArg.showcase_untrashed_deprecated: (showcase)
        Restored showcase (old version) (deprecated, replaced by 'Restored
        showcase')
    :ivar team_log.EventTypeArg.showcase_view: (showcase) Viewed showcase
    :ivar team_log.EventTypeArg.sso_add_cert: (sso) Added X.509 certificate for
        SSO
    :ivar team_log.EventTypeArg.sso_add_login_url: (sso) Added sign-in URL for
        SSO
    :ivar team_log.EventTypeArg.sso_add_logout_url: (sso) Added sign-out URL for
        SSO
    :ivar team_log.EventTypeArg.sso_change_cert: (sso) Changed X.509 certificate
        for SSO
    :ivar team_log.EventTypeArg.sso_change_login_url: (sso) Changed sign-in URL
        for SSO
    :ivar team_log.EventTypeArg.sso_change_logout_url: (sso) Changed sign-out
        URL for SSO
    :ivar team_log.EventTypeArg.sso_change_saml_identity_mode: (sso) Changed
        SAML identity mode for SSO
    :ivar team_log.EventTypeArg.sso_remove_cert: (sso) Removed X.509 certificate
        for SSO
    :ivar team_log.EventTypeArg.sso_remove_login_url: (sso) Removed sign-in URL
        for SSO
    :ivar team_log.EventTypeArg.sso_remove_logout_url: (sso) Removed sign-out
        URL for SSO
    :ivar team_log.EventTypeArg.team_folder_change_status: (team_folders)
        Changed archival status of team folder
    :ivar team_log.EventTypeArg.team_folder_create: (team_folders) Created team
        folder in active status
    :ivar team_log.EventTypeArg.team_folder_downgrade: (team_folders) Downgraded
        team folder to regular shared folder
    :ivar team_log.EventTypeArg.team_folder_permanently_delete: (team_folders)
        Permanently deleted archived team folder
    :ivar team_log.EventTypeArg.team_folder_rename: (team_folders) Renamed
        active/archived team folder
    :ivar team_log.EventTypeArg.team_selective_sync_settings_changed:
        (team_folders) Changed sync default
    :ivar team_log.EventTypeArg.account_capture_change_policy: (team_policies)
        Changed account capture setting on team domain
    :ivar team_log.EventTypeArg.allow_download_disabled: (team_policies)
        Disabled downloads (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.allow_download_enabled: (team_policies) Enabled
        downloads (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.camera_uploads_policy_changed: (team_policies)
        Changed camera uploads setting for team
    :ivar team_log.EventTypeArg.computer_backup_policy_changed: (team_policies)
        Changed computer backup policy for team
    :ivar team_log.EventTypeArg.content_administration_policy_changed:
        (team_policies) Changed content management setting
    :ivar team_log.EventTypeArg.data_placement_restriction_change_policy:
        (team_policies) Set restrictions on data center locations where team
        data resides
    :ivar team_log.EventTypeArg.data_placement_restriction_satisfy_policy:
        (team_policies) Completed restrictions on data center locations where
        team data resides
    :ivar team_log.EventTypeArg.device_approvals_add_exception: (team_policies)
        Added members to device approvals exception list
    :ivar team_log.EventTypeArg.device_approvals_change_desktop_policy:
        (team_policies) Set/removed limit on number of computers member can link
        to team Dropbox account
    :ivar team_log.EventTypeArg.device_approvals_change_mobile_policy:
        (team_policies) Set/removed limit on number of mobile devices member can
        link to team Dropbox account
    :ivar team_log.EventTypeArg.device_approvals_change_overage_action:
        (team_policies) Changed device approvals setting when member is over
        limit
    :ivar team_log.EventTypeArg.device_approvals_change_unlink_action:
        (team_policies) Changed device approvals setting when member unlinks
        approved device
    :ivar team_log.EventTypeArg.device_approvals_remove_exception:
        (team_policies) Removed members from device approvals exception list
    :ivar team_log.EventTypeArg.directory_restrictions_add_members:
        (team_policies) Added members to directory restrictions list
    :ivar team_log.EventTypeArg.directory_restrictions_remove_members:
        (team_policies) Removed members from directory restrictions list
    :ivar team_log.EventTypeArg.emm_add_exception: (team_policies) Added members
        to EMM exception list
    :ivar team_log.EventTypeArg.emm_change_policy: (team_policies)
        Enabled/disabled enterprise mobility management for members
    :ivar team_log.EventTypeArg.emm_remove_exception: (team_policies) Removed
        members from EMM exception list
    :ivar team_log.EventTypeArg.extended_version_history_change_policy:
        (team_policies) Accepted/opted out of extended version history
    :ivar team_log.EventTypeArg.file_comments_change_policy: (team_policies)
        Enabled/disabled commenting on team files
    :ivar team_log.EventTypeArg.file_locking_policy_changed: (team_policies)
        Changed file locking policy for team
    :ivar team_log.EventTypeArg.file_requests_change_policy: (team_policies)
        Enabled/disabled file requests
    :ivar team_log.EventTypeArg.file_requests_emails_enabled: (team_policies)
        Enabled file request emails for everyone (deprecated, no longer logged)
    :ivar team_log.EventTypeArg.file_requests_emails_restricted_to_team_only:
        (team_policies) Enabled file request emails for team (deprecated, no
        longer logged)
    :ivar team_log.EventTypeArg.file_transfers_policy_changed: (team_policies)
        Changed file transfers policy for team
    :ivar team_log.EventTypeArg.google_sso_change_policy: (team_policies)
        Enabled/disabled Google single sign-on for team
    :ivar team_log.EventTypeArg.group_user_management_change_policy:
        (team_policies) Changed who can create groups
    :ivar team_log.EventTypeArg.integration_policy_changed: (team_policies)
        Changed integration policy for team
    :ivar team_log.EventTypeArg.member_requests_change_policy: (team_policies)
        Changed whether users can find team when not invited
    :ivar team_log.EventTypeArg.member_send_invite_policy_changed:
        (team_policies) Changed member send invite policy for team
    :ivar team_log.EventTypeArg.member_space_limits_add_exception:
        (team_policies) Added members to member space limit exception list
    :ivar team_log.EventTypeArg.member_space_limits_change_caps_type_policy:
        (team_policies) Changed member space limit type for team
    :ivar team_log.EventTypeArg.member_space_limits_change_policy:
        (team_policies) Changed team default member space limit
    :ivar team_log.EventTypeArg.member_space_limits_remove_exception:
        (team_policies) Removed members from member space limit exception list
    :ivar team_log.EventTypeArg.member_suggestions_change_policy:
        (team_policies) Enabled/disabled option for team members to suggest
        people to add to team
    :ivar team_log.EventTypeArg.microsoft_office_addin_change_policy:
        (team_policies) Enabled/disabled Microsoft Office add-in
    :ivar team_log.EventTypeArg.network_control_change_policy: (team_policies)
        Enabled/disabled network control
    :ivar team_log.EventTypeArg.paper_change_deployment_policy: (team_policies)
        Changed whether Dropbox Paper, when enabled, is deployed to all members
        or to specific members
    :ivar team_log.EventTypeArg.paper_change_member_link_policy: (team_policies)
        Changed whether non-members can view Paper docs with link (deprecated,
        no longer logged)
    :ivar team_log.EventTypeArg.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 team_log.EventTypeArg.paper_change_policy: (team_policies)
        Enabled/disabled Dropbox Paper for team
    :ivar team_log.EventTypeArg.paper_default_folder_policy_changed:
        (team_policies) Changed Paper Default Folder Policy setting for team
    :ivar team_log.EventTypeArg.paper_desktop_policy_changed: (team_policies)
        Enabled/disabled Paper Desktop for team
    :ivar team_log.EventTypeArg.paper_enabled_users_group_addition:
        (team_policies) Added users to Paper-enabled users list
    :ivar team_log.EventTypeArg.paper_enabled_users_group_removal:
        (team_policies) Removed users from Paper-enabled users list
    :ivar team_log.EventTypeArg.password_strength_requirements_change_policy:
        (team_policies) Changed team password strength requirements
    :ivar team_log.EventTypeArg.permanent_delete_change_policy: (team_policies)
        Enabled/disabled ability of team members to permanently delete content
    :ivar team_log.EventTypeArg.reseller_support_change_policy: (team_policies)
        Enabled/disabled reseller support
    :ivar team_log.EventTypeArg.rewind_policy_changed: (team_policies) Changed
        Rewind policy for team
    :ivar team_log.EventTypeArg.send_for_signature_policy_changed:
        (team_policies) Changed send for signature policy for team
    :ivar team_log.EventTypeArg.sharing_change_folder_join_policy:
        (team_policies) Changed whether team members can join shared folders
        owned outside team
    :ivar team_log.EventTypeArg.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 team_log.EventTypeArg.sharing_change_member_policy: (team_policies)
        Changed whether members can share files/folders outside team
    :ivar team_log.EventTypeArg.showcase_change_download_policy: (team_policies)
        Enabled/disabled downloading files from Dropbox Showcase for team
    :ivar team_log.EventTypeArg.showcase_change_enabled_policy: (team_policies)
        Enabled/disabled Dropbox Showcase for team
    :ivar team_log.EventTypeArg.showcase_change_external_sharing_policy:
        (team_policies) Enabled/disabled sharing Dropbox Showcase externally for
        team
    :ivar team_log.EventTypeArg.smarter_smart_sync_policy_changed:
        (team_policies) Changed automatic Smart Sync setting for team
    :ivar team_log.EventTypeArg.smart_sync_change_policy: (team_policies)
        Changed default Smart Sync setting for team members
    :ivar team_log.EventTypeArg.smart_sync_not_opt_out: (team_policies) Opted
        team into Smart Sync
    :ivar team_log.EventTypeArg.smart_sync_opt_out: (team_policies) Opted team
        out of Smart Sync
    :ivar team_log.EventTypeArg.sso_change_policy: (team_policies) Changed
        single sign-on setting for team
    :ivar team_log.EventTypeArg.team_extensions_policy_changed: (team_policies)
        Changed App Integrations setting for team
    :ivar team_log.EventTypeArg.team_selective_sync_policy_changed:
        (team_policies) Enabled/disabled Team Selective Sync for team
    :ivar team_log.EventTypeArg.team_sharing_whitelist_subjects_changed:
        (team_policies) Edited the approved list for sharing externally
    :ivar team_log.EventTypeArg.tfa_add_exception: (team_policies) Added members
        to two factor authentication exception list
    :ivar team_log.EventTypeArg.tfa_change_policy: (team_policies) Changed
        two-step verification setting for team
    :ivar team_log.EventTypeArg.tfa_remove_exception: (team_policies) Removed
        members from two factor authentication exception list
    :ivar team_log.EventTypeArg.two_account_change_policy: (team_policies)
        Enabled/disabled option for members to link personal Dropbox account and
        team account to same computer
    :ivar team_log.EventTypeArg.viewer_info_policy_changed: (team_policies)
        Changed team policy for viewer info
    :ivar team_log.EventTypeArg.watermarking_policy_changed: (team_policies)
        Changed watermarking policy for team
    :ivar team_log.EventTypeArg.web_sessions_change_active_session_limit:
        (team_policies) Changed limit on active sessions per member
    :ivar team_log.EventTypeArg.web_sessions_change_fixed_length_policy:
        (team_policies) Changed how long members can stay signed in to
        Dropbox.com
    :ivar team_log.EventTypeArg.web_sessions_change_idle_length_policy:
        (team_policies) Changed how long team members can be idle while signed
        in to Dropbox.com
    :ivar team_log.EventTypeArg.team_merge_from: (team_profile) Merged another
        team into this team
    :ivar team_log.EventTypeArg.team_merge_to: (team_profile) Merged this team
        into another team
    :ivar team_log.EventTypeArg.team_profile_add_logo: (team_profile) Added team
        logo to display on shared link headers
    :ivar team_log.EventTypeArg.team_profile_change_default_language:
        (team_profile) Changed default language for team
    :ivar team_log.EventTypeArg.team_profile_change_logo: (team_profile) Changed
        team logo displayed on shared link headers
    :ivar team_log.EventTypeArg.team_profile_change_name: (team_profile) Changed
        team name
    :ivar team_log.EventTypeArg.team_profile_remove_logo: (team_profile) Removed
        team logo displayed on shared link headers
    :ivar team_log.EventTypeArg.tfa_add_backup_phone: (tfa) Added backup phone
        for two-step verification
    :ivar team_log.EventTypeArg.tfa_add_security_key: (tfa) Added security key
        for two-step verification
    :ivar team_log.EventTypeArg.tfa_change_backup_phone: (tfa) Changed backup
        phone for two-step verification
    :ivar team_log.EventTypeArg.tfa_change_status: (tfa)
        Enabled/disabled/changed two-step verification setting
    :ivar team_log.EventTypeArg.tfa_remove_backup_phone: (tfa) Removed backup
        phone for two-step verification
    :ivar team_log.EventTypeArg.tfa_remove_security_key: (tfa) Removed security
        key for two-step verification
    :ivar team_log.EventTypeArg.tfa_reset: (tfa) Reset two-step verification for
        team member
    :ivar team_log.EventTypeArg.changed_enterprise_admin_role: (trusted_teams)
        Changed enterprise admin role
    :ivar team_log.EventTypeArg.changed_enterprise_connected_team_status:
        (trusted_teams) Changed enterprise-connected team status
    :ivar team_log.EventTypeArg.ended_enterprise_admin_session: (trusted_teams)
        Ended enterprise admin session
    :ivar team_log.EventTypeArg.ended_enterprise_admin_session_deprecated:
        (trusted_teams) Ended enterprise admin session (deprecated, replaced by
        'Ended enterprise admin session')
    :ivar team_log.EventTypeArg.enterprise_settings_locking: (trusted_teams)
        Changed who can update a setting
    :ivar team_log.EventTypeArg.guest_admin_change_status: (trusted_teams)
        Changed guest team admin status
    :ivar team_log.EventTypeArg.started_enterprise_admin_session:
        (trusted_teams) Started enterprise admin session
    :ivar team_log.EventTypeArg.team_merge_request_accepted: (trusted_teams)
        Accepted a team merge request
    :ivar
        team_log.EventTypeArg.team_merge_request_accepted_shown_to_primary_team:
        (trusted_teams) Accepted a team merge request (deprecated, replaced by
        'Accepted a team merge request')
    :ivar
        team_log.EventTypeArg.team_merge_request_accepted_shown_to_secondary_team:
        (trusted_teams) Accepted a team merge request (deprecated, replaced by
        'Accepted a team merge request')
    :ivar team_log.EventTypeArg.team_merge_request_auto_canceled:
        (trusted_teams) Automatically canceled team merge request
    :ivar team_log.EventTypeArg.team_merge_request_canceled: (trusted_teams)
        Canceled a team merge request
    :ivar
        team_log.EventTypeArg.team_merge_request_canceled_shown_to_primary_team:
        (trusted_teams) Canceled a team merge request (deprecated, replaced by
        'Canceled a team merge request')
    :ivar
        team_log.EventTypeArg.team_merge_request_canceled_shown_to_secondary_team:
        (trusted_teams) Canceled a team merge request (deprecated, replaced by
        'Canceled a team merge request')
    :ivar team_log.EventTypeArg.team_merge_request_expired: (trusted_teams) Team
        merge request expired
    :ivar
        team_log.EventTypeArg.team_merge_request_expired_shown_to_primary_team:
        (trusted_teams) Team merge request expired (deprecated, replaced by
        'Team merge request expired')
    :ivar
        team_log.EventTypeArg.team_merge_request_expired_shown_to_secondary_team:
        (trusted_teams) Team merge request expired (deprecated, replaced by
        'Team merge request expired')
    :ivar
        team_log.EventTypeArg.team_merge_request_rejected_shown_to_primary_team:
        (trusted_teams) Rejected a team merge request (deprecated, no longer
        logged)
    :ivar
        team_log.EventTypeArg.team_merge_request_rejected_shown_to_secondary_team:
        (trusted_teams) Rejected a team merge request (deprecated, no longer
        logged)
    :ivar team_log.EventTypeArg.team_merge_request_reminder: (trusted_teams)
        Sent a team merge request reminder
    :ivar
        team_log.EventTypeArg.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
        team_log.EventTypeArg.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 team_log.EventTypeArg.team_merge_request_revoked: (trusted_teams)
        Canceled the team merge
    :ivar team_log.EventTypeArg.team_merge_request_sent_shown_to_primary_team:
        (trusted_teams) Requested to merge their Dropbox team into yours
    :ivar team_log.EventTypeArg.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
    app_link_team = None
    # Attribute is overwritten below the class definition
    app_link_user = None
    # Attribute is overwritten below the class definition
    app_unlink_team = None
    # Attribute is overwritten below the class definition
    app_unlink_user = None
    # Attribute is overwritten below the class definition
    integration_connected = None
    # Attribute is overwritten below the class definition
    integration_disconnected = None
    # Attribute is overwritten below the class definition
    file_add_comment = None
    # Attribute is overwritten below the class definition
    file_change_comment_subscription = None
    # Attribute is overwritten below the class definition
    file_delete_comment = None
    # Attribute is overwritten below the class definition
    file_edit_comment = None
    # Attribute is overwritten below the class definition
    file_like_comment = None
    # Attribute is overwritten below the class definition
    file_resolve_comment = None
    # Attribute is overwritten below the class definition
    file_unlike_comment = None
    # Attribute is overwritten below the class definition
    file_unresolve_comment = None
    # Attribute is overwritten below the class definition
    governance_policy_add_folders = None
    # Attribute is overwritten below the class definition
    governance_policy_create = None
    # Attribute is overwritten below the class definition
    governance_policy_delete = None
    # Attribute is overwritten below the class definition
    governance_policy_edit_details = None
    # Attribute is overwritten below the class definition
    governance_policy_edit_duration = None
    # Attribute is overwritten below the class definition
    governance_policy_remove_folders = None
    # Attribute is overwritten below the class definition
    legal_holds_activate_a_hold = None
    # Attribute is overwritten below the class definition
    legal_holds_add_members = None
    # Attribute is overwritten below the class definition
    legal_holds_change_hold_details = None
    # Attribute is overwritten below the class definition
    legal_holds_change_hold_name = None
    # Attribute is overwritten below the class definition
    legal_holds_export_a_hold = None
    # Attribute is overwritten below the class definition
    legal_holds_export_cancelled = None
    # Attribute is overwritten below the class definition
    legal_holds_export_downloaded = None
    # Attribute is overwritten below the class definition
    legal_holds_export_removed = None
    # Attribute is overwritten below the class definition
    legal_holds_release_a_hold = None
    # Attribute is overwritten below the class definition
    legal_holds_remove_members = None
    # Attribute is overwritten below the class definition
    legal_holds_report_a_hold = None
    # Attribute is overwritten below the class definition
    device_change_ip_desktop = None
    # Attribute is overwritten below the class definition
    device_change_ip_mobile = None
    # Attribute is overwritten below the class definition
    device_change_ip_web = None
    # Attribute is overwritten below the class definition
    device_delete_on_unlink_fail = None
    # Attribute is overwritten below the class definition
    device_delete_on_unlink_success = None
    # Attribute is overwritten below the class definition
    device_link_fail = None
    # Attribute is overwritten below the class definition
    device_link_success = None
    # Attribute is overwritten below the class definition
    device_management_disabled = None
    # Attribute is overwritten below the class definition
    device_management_enabled = None
    # Attribute is overwritten below the class definition
    device_sync_backup_status_changed = None
    # Attribute is overwritten below the class definition
    device_unlink = None
    # Attribute is overwritten below the class definition
    emm_refresh_auth_token = None
    # Attribute is overwritten below the class definition
    account_capture_change_availability = None
    # Attribute is overwritten below the class definition
    account_capture_migrate_account = None
    # Attribute is overwritten below the class definition
    account_capture_notification_emails_sent = None
    # Attribute is overwritten below the class definition
    account_capture_relinquish_account = None
    # Attribute is overwritten below the class definition
    disabled_domain_invites = None
    # Attribute is overwritten below the class definition
    domain_invites_approve_request_to_join_team = None
    # Attribute is overwritten below the class definition
    domain_invites_decline_request_to_join_team = None
    # Attribute is overwritten below the class definition
    domain_invites_email_existing_users = None
    # Attribute is overwritten below the class definition
    domain_invites_request_to_join_team = None
    # Attribute is overwritten below the class definition
    domain_invites_set_invite_new_user_pref_to_no = None
    # Attribute is overwritten below the class definition
    domain_invites_set_invite_new_user_pref_to_yes = None
    # Attribute is overwritten below the class definition
    domain_verification_add_domain_fail = None
    # Attribute is overwritten below the class definition
    domain_verification_add_domain_success = None
    # Attribute is overwritten below the class definition
    domain_verification_remove_domain = None
    # Attribute is overwritten below the class definition
    enabled_domain_invites = None
    # Attribute is overwritten below the class definition
    create_folder = None
    # Attribute is overwritten below the class definition
    file_add = None
    # Attribute is overwritten below the class definition
    file_copy = None
    # Attribute is overwritten below the class definition
    file_delete = None
    # Attribute is overwritten below the class definition
    file_download = None
    # Attribute is overwritten below the class definition
    file_edit = None
    # Attribute is overwritten below the class definition
    file_get_copy_reference = None
    # Attribute is overwritten below the class definition
    file_locking_lock_status_changed = None
    # Attribute is overwritten below the class definition
    file_move = None
    # Attribute is overwritten below the class definition
    file_permanently_delete = None
    # Attribute is overwritten below the class definition
    file_preview = None
    # Attribute is overwritten below the class definition
    file_rename = None
    # Attribute is overwritten below the class definition
    file_restore = None
    # Attribute is overwritten below the class definition
    file_revert = None
    # Attribute is overwritten below the class definition
    file_rollback_changes = None
    # Attribute is overwritten below the class definition
    file_save_copy_reference = None
    # Attribute is overwritten below the class definition
    folder_overview_description_changed = None
    # Attribute is overwritten below the class definition
    folder_overview_item_pinned = None
    # Attribute is overwritten below the class definition
    folder_overview_item_unpinned = None
    # Attribute is overwritten below the class definition
    rewind_folder = None
    # Attribute is overwritten below the class definition
    file_request_change = None
    # Attribute is overwritten below the class definition
    file_request_close = None
    # Attribute is overwritten below the class definition
    file_request_create = None
    # Attribute is overwritten below the class definition
    file_request_delete = None
    # Attribute is overwritten below the class definition
    file_request_receive_file = None
    # Attribute is overwritten below the class definition
    group_add_external_id = None
    # Attribute is overwritten below the class definition
    group_add_member = None
    # Attribute is overwritten below the class definition
    group_change_external_id = None
    # Attribute is overwritten below the class definition
    group_change_management_type = None
    # Attribute is overwritten below the class definition
    group_change_member_role = None
    # Attribute is overwritten below the class definition
    group_create = None
    # Attribute is overwritten below the class definition
    group_delete = None
    # Attribute is overwritten below the class definition
    group_description_updated = None
    # Attribute is overwritten below the class definition
    group_join_policy_updated = None
    # Attribute is overwritten below the class definition
    group_moved = None
    # Attribute is overwritten below the class definition
    group_remove_external_id = None
    # Attribute is overwritten below the class definition
    group_remove_member = None
    # Attribute is overwritten below the class definition
    group_rename = None
    # Attribute is overwritten below the class definition
    account_lock_or_unlocked = None
    # Attribute is overwritten below the class definition
    emm_error = None
    # Attribute is overwritten below the class definition
    guest_admin_signed_in_via_trusted_teams = None
    # Attribute is overwritten below the class definition
    guest_admin_signed_out_via_trusted_teams = None
    # Attribute is overwritten below the class definition
    login_fail = None
    # Attribute is overwritten below the class definition
    login_success = None
    # Attribute is overwritten below the class definition
    logout = None
    # Attribute is overwritten below the class definition
    reseller_support_session_end = None
    # Attribute is overwritten below the class definition
    reseller_support_session_start = None
    # Attribute is overwritten below the class definition
    sign_in_as_session_end = None
    # Attribute is overwritten below the class definition
    sign_in_as_session_start = None
    # Attribute is overwritten below the class definition
    sso_error = None
    # Attribute is overwritten below the class definition
    create_team_invite_link = None
    # Attribute is overwritten below the class definition
    delete_team_invite_link = None
    # Attribute is overwritten below the class definition
    member_add_external_id = None
    # Attribute is overwritten below the class definition
    member_add_name = None
    # Attribute is overwritten below the class definition
    member_change_admin_role = None
    # Attribute is overwritten below the class definition
    member_change_email = None
    # Attribute is overwritten below the class definition
    member_change_external_id = None
    # Attribute is overwritten below the class definition
    member_change_membership_type = None
    # Attribute is overwritten below the class definition
    member_change_name = None
    # Attribute is overwritten below the class definition
    member_change_status = None
    # Attribute is overwritten below the class definition
    member_delete_manual_contacts = None
    # Attribute is overwritten below the class definition
    member_delete_profile_photo = None
    # Attribute is overwritten below the class definition
    member_permanently_delete_account_contents = None
    # Attribute is overwritten below the class definition
    member_remove_external_id = None
    # Attribute is overwritten below the class definition
    member_set_profile_photo = None
    # Attribute is overwritten below the class definition
    member_space_limits_add_custom_quota = None
    # Attribute is overwritten below the class definition
    member_space_limits_change_custom_quota = None
    # Attribute is overwritten below the class definition
    member_space_limits_change_status = None
    # Attribute is overwritten below the class definition
    member_space_limits_remove_custom_quota = None
    # Attribute is overwritten below the class definition
    member_suggest = None
    # Attribute is overwritten below the class definition
    member_transfer_account_contents = None
    # Attribute is overwritten below the class definition
    pending_secondary_email_added = None
    # Attribute is overwritten below the class definition
    secondary_email_deleted = None
    # Attribute is overwritten below the class definition
    secondary_email_verified = None
    # Attribute is overwritten below the class definition
    secondary_mails_policy_changed = None
    # Attribute is overwritten below the class definition
    binder_add_page = None
    # Attribute is overwritten below the class definition
    binder_add_section = None
    # Attribute is overwritten below the class definition
    binder_remove_page = None
    # Attribute is overwritten below the class definition
    binder_remove_section = None
    # Attribute is overwritten below the class definition
    binder_rename_page = None
    # Attribute is overwritten below the class definition
    binder_rename_section = None
    # Attribute is overwritten below the class definition
    binder_reorder_page = None
    # Attribute is overwritten below the class definition
    binder_reorder_section = None
    # Attribute is overwritten below the class definition
    paper_content_add_member = None
    # Attribute is overwritten below the class definition
    paper_content_add_to_folder = None
    # Attribute is overwritten below the class definition
    paper_content_archive = None
    # Attribute is overwritten below the class definition
    paper_content_create = None
    # Attribute is overwritten below the class definition
    paper_content_permanently_delete = None
    # Attribute is overwritten below the class definition
    paper_content_remove_from_folder = None
    # Attribute is overwritten below the class definition
    paper_content_remove_member = None
    # Attribute is overwritten below the class definition
    paper_content_rename = None
    # Attribute is overwritten below the class definition
    paper_content_restore = None
    # Attribute is overwritten below the class definition
    paper_doc_add_comment = None
    # Attribute is overwritten below the class definition
    paper_doc_change_member_role = None
    # Attribute is overwritten below the class definition
    paper_doc_change_sharing_policy = None
    # Attribute is overwritten below the class definition
    paper_doc_change_subscription = None
    # Attribute is overwritten below the class definition
    paper_doc_deleted = None
    # Attribute is overwritten below the class definition
    paper_doc_delete_comment = None
    # Attribute is overwritten below the class definition
    paper_doc_download = None
    # Attribute is overwritten below the class definition
    paper_doc_edit = None
    # Attribute is overwritten below the class definition
    paper_doc_edit_comment = None
    # Attribute is overwritten below the class definition
    paper_doc_followed = None
    # Attribute is overwritten below the class definition
    paper_doc_mention = None
    # Attribute is overwritten below the class definition
    paper_doc_ownership_changed = None
    # Attribute is overwritten below the class definition
    paper_doc_request_access = None
    # Attribute is overwritten below the class definition
    paper_doc_resolve_comment = None
    # Attribute is overwritten below the class definition
    paper_doc_revert = None
    # Attribute is overwritten below the class definition
    paper_doc_slack_share = None
    # Attribute is overwritten below the class definition
    paper_doc_team_invite = None
    # Attribute is overwritten below the class definition
    paper_doc_trashed = None
    # Attribute is overwritten below the class definition
    paper_doc_unresolve_comment = None
    # Attribute is overwritten below the class definition
    paper_doc_untrashed = None
    # Attribute is overwritten below the class definition
    paper_doc_view = None
    # Attribute is overwritten below the class definition
    paper_external_view_allow = None
    # Attribute is overwritten below the class definition
    paper_external_view_default_team = None
    # Attribute is overwritten below the class definition
    paper_external_view_forbid = None
    # Attribute is overwritten below the class definition
    paper_folder_change_subscription = None
    # Attribute is overwritten below the class definition
    paper_folder_deleted = None
    # Attribute is overwritten below the class definition
    paper_folder_followed = None
    # Attribute is overwritten below the class definition
    paper_folder_team_invite = None
    # Attribute is overwritten below the class definition
    paper_published_link_change_permission = None
    # Attribute is overwritten below the class definition
    paper_published_link_create = None
    # Attribute is overwritten below the class definition
    paper_published_link_disabled = None
    # Attribute is overwritten below the class definition
    paper_published_link_view = None
    # Attribute is overwritten below the class definition
    password_change = None
    # Attribute is overwritten below the class definition
    password_reset = None
    # Attribute is overwritten below the class definition
    password_reset_all = None
    # Attribute is overwritten below the class definition
    emm_create_exceptions_report = None
    # Attribute is overwritten below the class definition
    emm_create_usage_report = None
    # Attribute is overwritten below the class definition
    export_members_report = None
    # Attribute is overwritten below the class definition
    export_members_report_fail = None
    # Attribute is overwritten below the class definition
    external_sharing_create_report = None
    # Attribute is overwritten below the class definition
    external_sharing_report_failed = None
    # Attribute is overwritten below the class definition
    no_expiration_link_gen_create_report = None
    # Attribute is overwritten below the class definition
    no_expiration_link_gen_report_failed = None
    # Attribute is overwritten below the class definition
    no_password_link_gen_create_report = None
    # Attribute is overwritten below the class definition
    no_password_link_gen_report_failed = None
    # Attribute is overwritten below the class definition
    no_password_link_view_create_report = None
    # Attribute is overwritten below the class definition
    no_password_link_view_report_failed = None
    # Attribute is overwritten below the class definition
    outdated_link_view_create_report = None
    # Attribute is overwritten below the class definition
    outdated_link_view_report_failed = None
    # Attribute is overwritten below the class definition
    paper_admin_export_start = None
    # Attribute is overwritten below the class definition
    smart_sync_create_admin_privilege_report = None
    # Attribute is overwritten below the class definition
    team_activity_create_report = None
    # Attribute is overwritten below the class definition
    team_activity_create_report_fail = None
    # Attribute is overwritten below the class definition
    collection_share = None
    # Attribute is overwritten below the class definition
    file_transfers_file_add = None
    # Attribute is overwritten below the class definition
    file_transfers_transfer_delete = None
    # Attribute is overwritten below the class definition
    file_transfers_transfer_download = None
    # Attribute is overwritten below the class definition
    file_transfers_transfer_send = None
    # Attribute is overwritten below the class definition
    file_transfers_transfer_view = None
    # Attribute is overwritten below the class definition
    note_acl_invite_only = None
    # Attribute is overwritten below the class definition
    note_acl_link = None
    # Attribute is overwritten below the class definition
    note_acl_team_link = None
    # Attribute is overwritten below the class definition
    note_shared = None
    # Attribute is overwritten below the class definition
    note_share_receive = None
    # Attribute is overwritten below the class definition
    open_note_shared = None
    # Attribute is overwritten below the class definition
    sf_add_group = None
    # Attribute is overwritten below the class definition
    sf_allow_non_members_to_view_shared_links = None
    # Attribute is overwritten below the class definition
    sf_external_invite_warn = None
    # Attribute is overwritten below the class definition
    sf_fb_invite = None
    # Attribute is overwritten below the class definition
    sf_fb_invite_change_role = None
    # Attribute is overwritten below the class definition
    sf_fb_uninvite = None
    # Attribute is overwritten below the class definition
    sf_invite_group = None
    # Attribute is overwritten below the class definition
    sf_team_grant_access = None
    # Attribute is overwritten below the class definition
    sf_team_invite = None
    # Attribute is overwritten below the class definition
    sf_team_invite_change_role = None
    # Attribute is overwritten below the class definition
    sf_team_join = None
    # Attribute is overwritten below the class definition
    sf_team_join_from_oob_link = None
    # Attribute is overwritten below the class definition
    sf_team_uninvite = None
    # Attribute is overwritten below the class definition
    shared_content_add_invitees = None
    # Attribute is overwritten below the class definition
    shared_content_add_link_expiry = None
    # Attribute is overwritten below the class definition
    shared_content_add_link_password = None
    # Attribute is overwritten below the class definition
    shared_content_add_member = None
    # Attribute is overwritten below the class definition
    shared_content_change_downloads_policy = None
    # Attribute is overwritten below the class definition
    shared_content_change_invitee_role = None
    # Attribute is overwritten below the class definition
    shared_content_change_link_audience = None
    # Attribute is overwritten below the class definition
    shared_content_change_link_expiry = None
    # Attribute is overwritten below the class definition
    shared_content_change_link_password = None
    # Attribute is overwritten below the class definition
    shared_content_change_member_role = None
    # Attribute is overwritten below the class definition
    shared_content_change_viewer_info_policy = None
    # Attribute is overwritten below the class definition
    shared_content_claim_invitation = None
    # Attribute is overwritten below the class definition
    shared_content_copy = None
    # Attribute is overwritten below the class definition
    shared_content_download = None
    # Attribute is overwritten below the class definition
    shared_content_relinquish_membership = None
    # Attribute is overwritten below the class definition
    shared_content_remove_invitees = None
    # Attribute is overwritten below the class definition
    shared_content_remove_link_expiry = None
    # Attribute is overwritten below the class definition
    shared_content_remove_link_password = None
    # Attribute is overwritten below the class definition
    shared_content_remove_member = None
    # Attribute is overwritten below the class definition
    shared_content_request_access = None
    # Attribute is overwritten below the class definition
    shared_content_restore_invitees = None
    # Attribute is overwritten below the class definition
    shared_content_restore_member = None
    # Attribute is overwritten below the class definition
    shared_content_unshare = None
    # Attribute is overwritten below the class definition
    shared_content_view = None
    # Attribute is overwritten below the class definition
    shared_folder_change_link_policy = None
    # Attribute is overwritten below the class definition
    shared_folder_change_members_inheritance_policy = None
    # Attribute is overwritten below the class definition
    shared_folder_change_members_management_policy = None
    # Attribute is overwritten below the class definition
    shared_folder_change_members_policy = None
    # Attribute is overwritten below the class definition
    shared_folder_create = None
    # Attribute is overwritten below the class definition
    shared_folder_decline_invitation = None
    # Attribute is overwritten below the class definition
    shared_folder_mount = None
    # Attribute is overwritten below the class definition
    shared_folder_nest = None
    # Attribute is overwritten below the class definition
    shared_folder_transfer_ownership = None
    # Attribute is overwritten below the class definition
    shared_folder_unmount = None
    # Attribute is overwritten below the class definition
    shared_link_add_expiry = None
    # Attribute is overwritten below the class definition
    shared_link_change_expiry = None
    # Attribute is overwritten below the class definition
    shared_link_change_visibility = None
    # Attribute is overwritten below the class definition
    shared_link_copy = None
    # Attribute is overwritten below the class definition
    shared_link_create = None
    # Attribute is overwritten below the class definition
    shared_link_disable = None
    # Attribute is overwritten below the class definition
    shared_link_download = None
    # Attribute is overwritten below the class definition
    shared_link_remove_expiry = None
    # Attribute is overwritten below the class definition
    shared_link_settings_add_expiration = None
    # Attribute is overwritten below the class definition
    shared_link_settings_add_password = None
    # Attribute is overwritten below the class definition
    shared_link_settings_allow_download_disabled = None
    # Attribute is overwritten below the class definition
    shared_link_settings_allow_download_enabled = None
    # Attribute is overwritten below the class definition
    shared_link_settings_change_audience = None
    # Attribute is overwritten below the class definition
    shared_link_settings_change_expiration = None
    # Attribute is overwritten below the class definition
    shared_link_settings_change_password = None
    # Attribute is overwritten below the class definition
    shared_link_settings_remove_expiration = None
    # Attribute is overwritten below the class definition
    shared_link_settings_remove_password = None
    # Attribute is overwritten below the class definition
    shared_link_share = None
    # Attribute is overwritten below the class definition
    shared_link_view = None
    # Attribute is overwritten below the class definition
    shared_note_opened = None
    # Attribute is overwritten below the class definition
    shmodel_disable_downloads = None
    # Attribute is overwritten below the class definition
    shmodel_enable_downloads = None
    # Attribute is overwritten below the class definition
    shmodel_group_share = None
    # Attribute is overwritten below the class definition
    showcase_access_granted = None
    # Attribute is overwritten below the class definition
    showcase_add_member = None
    # Attribute is overwritten below the class definition
    showcase_archived = None
    # Attribute is overwritten below the class definition
    showcase_created = None
    # Attribute is overwritten below the class definition
    showcase_delete_comment = None
    # Attribute is overwritten below the class definition
    showcase_edited = None
    # Attribute is overwritten below the class definition
    showcase_edit_comment = None
    # Attribute is overwritten below the class definition
    showcase_file_added = None
    # Attribute is overwritten below the class definition
    showcase_file_download = None
    # Attribute is overwritten below the class definition
    showcase_file_removed = None
    # Attribute is overwritten below the class definition
    showcase_file_view = None
    # Attribute is overwritten below the class definition
    showcase_permanently_deleted = None
    # Attribute is overwritten below the class definition
    showcase_post_comment = None
    # Attribute is overwritten below the class definition
    showcase_remove_member = None
    # Attribute is overwritten below the class definition
    showcase_renamed = None
    # Attribute is overwritten below the class definition
    showcase_request_access = None
    # Attribute is overwritten below the class definition
    showcase_resolve_comment = None
    # Attribute is overwritten below the class definition
    showcase_restored = None
    # Attribute is overwritten below the class definition
    showcase_trashed = None
    # Attribute is overwritten below the class definition
    showcase_trashed_deprecated = None
    # Attribute is overwritten below the class definition
    showcase_unresolve_comment = None
    # Attribute is overwritten below the class definition
    showcase_untrashed = None
    # Attribute is overwritten below the class definition
    showcase_untrashed_deprecated = None
    # Attribute is overwritten below the class definition
    showcase_view = None
    # Attribute is overwritten below the class definition
    sso_add_cert = None
    # Attribute is overwritten below the class definition
    sso_add_login_url = None
    # Attribute is overwritten below the class definition
    sso_add_logout_url = None
    # Attribute is overwritten below the class definition
    sso_change_cert = None
    # Attribute is overwritten below the class definition
    sso_change_login_url = None
    # Attribute is overwritten below the class definition
    sso_change_logout_url = None
    # Attribute is overwritten below the class definition
    sso_change_saml_identity_mode = None
    # Attribute is overwritten below the class definition
    sso_remove_cert = None
    # Attribute is overwritten below the class definition
    sso_remove_login_url = None
    # Attribute is overwritten below the class definition
    sso_remove_logout_url = None
    # Attribute is overwritten below the class definition
    team_folder_change_status = None
    # Attribute is overwritten below the class definition
    team_folder_create = None
    # Attribute is overwritten below the class definition
    team_folder_downgrade = None
    # Attribute is overwritten below the class definition
    team_folder_permanently_delete = None
    # Attribute is overwritten below the class definition
    team_folder_rename = None
    # Attribute is overwritten below the class definition
    team_selective_sync_settings_changed = None
    # Attribute is overwritten below the class definition
    account_capture_change_policy = None
    # Attribute is overwritten below the class definition
    allow_download_disabled = None
    # Attribute is overwritten below the class definition
    allow_download_enabled = None
    # Attribute is overwritten below the class definition
    camera_uploads_policy_changed = None
    # Attribute is overwritten below the class definition
    computer_backup_policy_changed = None
    # Attribute is overwritten below the class definition
    content_administration_policy_changed = None
    # Attribute is overwritten below the class definition
    data_placement_restriction_change_policy = None
    # Attribute is overwritten below the class definition
    data_placement_restriction_satisfy_policy = None
    # Attribute is overwritten below the class definition
    device_approvals_add_exception = None
    # Attribute is overwritten below the class definition
    device_approvals_change_desktop_policy = None
    # Attribute is overwritten below the class definition
    device_approvals_change_mobile_policy = None
    # Attribute is overwritten below the class definition
    device_approvals_change_overage_action = None
    # Attribute is overwritten below the class definition
    device_approvals_change_unlink_action = None
    # Attribute is overwritten below the class definition
    device_approvals_remove_exception = None
    # Attribute is overwritten below the class definition
    directory_restrictions_add_members = None
    # Attribute is overwritten below the class definition
    directory_restrictions_remove_members = None
    # Attribute is overwritten below the class definition
    emm_add_exception = None
    # Attribute is overwritten below the class definition
    emm_change_policy = None
    # Attribute is overwritten below the class definition
    emm_remove_exception = None
    # Attribute is overwritten below the class definition
    extended_version_history_change_policy = None
    # Attribute is overwritten below the class definition
    file_comments_change_policy = None
    # Attribute is overwritten below the class definition
    file_locking_policy_changed = None
    # Attribute is overwritten below the class definition
    file_requests_change_policy = None
    # Attribute is overwritten below the class definition
    file_requests_emails_enabled = None
    # Attribute is overwritten below the class definition
    file_requests_emails_restricted_to_team_only = None
    # Attribute is overwritten below the class definition
    file_transfers_policy_changed = None
    # Attribute is overwritten below the class definition
    google_sso_change_policy = None
    # Attribute is overwritten below the class definition
    group_user_management_change_policy = None
    # Attribute is overwritten below the class definition
    integration_policy_changed = None
    # Attribute is overwritten below the class definition
    member_requests_change_policy = None
    # Attribute is overwritten below the class definition
    member_send_invite_policy_changed = None
    # Attribute is overwritten below the class definition
    member_space_limits_add_exception = None
    # Attribute is overwritten below the class definition
    member_space_limits_change_caps_type_policy = None
    # Attribute is overwritten below the class definition
    member_space_limits_change_policy = None
    # Attribute is overwritten below the class definition
    member_space_limits_remove_exception = None
    # Attribute is overwritten below the class definition
    member_suggestions_change_policy = None
    # Attribute is overwritten below the class definition
    microsoft_office_addin_change_policy = None
    # Attribute is overwritten below the class definition
    network_control_change_policy = None
    # Attribute is overwritten below the class definition
    paper_change_deployment_policy = None
    # Attribute is overwritten below the class definition
    paper_change_member_link_policy = None
    # Attribute is overwritten below the class definition
    paper_change_member_policy = None
    # Attribute is overwritten below the class definition
    paper_change_policy = None
    # Attribute is overwritten below the class definition
    paper_default_folder_policy_changed = None
    # Attribute is overwritten below the class definition
    paper_desktop_policy_changed = None
    # Attribute is overwritten below the class definition
    paper_enabled_users_group_addition = None
    # Attribute is overwritten below the class definition
    paper_enabled_users_group_removal = None
    # Attribute is overwritten below the class definition
    password_strength_requirements_change_policy = None
    # Attribute is overwritten below the class definition
    permanent_delete_change_policy = None
    # Attribute is overwritten below the class definition
    reseller_support_change_policy = None
    # Attribute is overwritten below the class definition
    rewind_policy_changed = None
    # Attribute is overwritten below the class definition
    send_for_signature_policy_changed = None
    # Attribute is overwritten below the class definition
    sharing_change_folder_join_policy = None
    # Attribute is overwritten below the class definition
    sharing_change_link_policy = None
    # Attribute is overwritten below the class definition
    sharing_change_member_policy = None
    # Attribute is overwritten below the class definition
    showcase_change_download_policy = None
    # Attribute is overwritten below the class definition
    showcase_change_enabled_policy = None
    # Attribute is overwritten below the class definition
    showcase_change_external_sharing_policy = None
    # Attribute is overwritten below the class definition
    smarter_smart_sync_policy_changed = None
    # Attribute is overwritten below the class definition
    smart_sync_change_policy = None
    # Attribute is overwritten below the class definition
    smart_sync_not_opt_out = None
    # Attribute is overwritten below the class definition
    smart_sync_opt_out = None
    # Attribute is overwritten below the class definition
    sso_change_policy = None
    # Attribute is overwritten below the class definition
    team_extensions_policy_changed = None
    # Attribute is overwritten below the class definition
    team_selective_sync_policy_changed = None
    # Attribute is overwritten below the class definition
    team_sharing_whitelist_subjects_changed = None
    # Attribute is overwritten below the class definition
    tfa_add_exception = None
    # Attribute is overwritten below the class definition
    tfa_change_policy = None
    # Attribute is overwritten below the class definition
    tfa_remove_exception = None
    # Attribute is overwritten below the class definition
    two_account_change_policy = None
    # Attribute is overwritten below the class definition
    viewer_info_policy_changed = None
    # Attribute is overwritten below the class definition
    watermarking_policy_changed = None
    # Attribute is overwritten below the class definition
    web_sessions_change_active_session_limit = None
    # Attribute is overwritten below the class definition
    web_sessions_change_fixed_length_policy = None
    # Attribute is overwritten below the class definition
    web_sessions_change_idle_length_policy = None
    # Attribute is overwritten below the class definition
    team_merge_from = None
    # Attribute is overwritten below the class definition
    team_merge_to = None
    # Attribute is overwritten below the class definition
    team_profile_add_logo = None
    # Attribute is overwritten below the class definition
    team_profile_change_default_language = None
    # Attribute is overwritten below the class definition
    team_profile_change_logo = None
    # Attribute is overwritten below the class definition
    team_profile_change_name = None
    # Attribute is overwritten below the class definition
    team_profile_remove_logo = None
    # Attribute is overwritten below the class definition
    tfa_add_backup_phone = None
    # Attribute is overwritten below the class definition
    tfa_add_security_key = None
    # Attribute is overwritten below the class definition
    tfa_change_backup_phone = None
    # Attribute is overwritten below the class definition
    tfa_change_status = None
    # Attribute is overwritten below the class definition
    tfa_remove_backup_phone = None
    # Attribute is overwritten below the class definition
    tfa_remove_security_key = None
    # Attribute is overwritten below the class definition
    tfa_reset = None
    # Attribute is overwritten below the class definition
    changed_enterprise_admin_role = None
    # Attribute is overwritten below the class definition
    changed_enterprise_connected_team_status = None
    # Attribute is overwritten below the class definition
    ended_enterprise_admin_session = None
    # Attribute is overwritten below the class definition
    ended_enterprise_admin_session_deprecated = None
    # Attribute is overwritten below the class definition
    enterprise_settings_locking = None
    # Attribute is overwritten below the class definition
    guest_admin_change_status = None
    # Attribute is overwritten below the class definition
    started_enterprise_admin_session = None
    # Attribute is overwritten below the class definition
    team_merge_request_accepted = None
    # Attribute is overwritten below the class definition
    team_merge_request_accepted_shown_to_primary_team = None
    # Attribute is overwritten below the class definition
    team_merge_request_accepted_shown_to_secondary_team = None
    # Attribute is overwritten below the class definition
    team_merge_request_auto_canceled = None
    # Attribute is overwritten below the class definition
    team_merge_request_canceled = None
    # Attribute is overwritten below the class definition
    team_merge_request_canceled_shown_to_primary_team = None
    # Attribute is overwritten below the class definition
    team_merge_request_canceled_shown_to_secondary_team = None
    # Attribute is overwritten below the class definition
    team_merge_request_expired = None
    # Attribute is overwritten below the class definition
    team_merge_request_expired_shown_to_primary_team = None
    # Attribute is overwritten below the class definition
    team_merge_request_expired_shown_to_secondary_team = None
    # Attribute is overwritten below the class definition
    team_merge_request_rejected_shown_to_primary_team = None
    # Attribute is overwritten below the class definition
    team_merge_request_rejected_shown_to_secondary_team = None
    # Attribute is overwritten below the class definition
    team_merge_request_reminder = None
    # Attribute is overwritten below the class definition
    team_merge_request_reminder_shown_to_primary_team = None
    # Attribute is overwritten below the class definition
    team_merge_request_reminder_shown_to_secondary_team = None
    # Attribute is overwritten below the class definition
    team_merge_request_revoked = None
    # Attribute is overwritten below the class definition
    team_merge_request_sent_shown_to_primary_team = None
    # Attribute is overwritten below the class definition
    team_merge_request_sent_shown_to_secondary_team = None
    # Attribute is overwritten below the class definition
    other = None

    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_governance_policy_add_folders(self):
        """
        Check if the union tag is ``governance_policy_add_folders``.

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

    def is_governance_policy_create(self):
        """
        Check if the union tag is ``governance_policy_create``.

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

    def is_governance_policy_delete(self):
        """
        Check if the union tag is ``governance_policy_delete``.

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

    def is_governance_policy_edit_details(self):
        """
        Check if the union tag is ``governance_policy_edit_details``.

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

    def is_governance_policy_edit_duration(self):
        """
        Check if the union tag is ``governance_policy_edit_duration``.

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

    def is_governance_policy_remove_folders(self):
        """
        Check if the union tag is ``governance_policy_remove_folders``.

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

    def is_legal_holds_activate_a_hold(self):
        """
        Check if the union tag is ``legal_holds_activate_a_hold``.

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

    def is_legal_holds_add_members(self):
        """
        Check if the union tag is ``legal_holds_add_members``.

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

    def is_legal_holds_change_hold_details(self):
        """
        Check if the union tag is ``legal_holds_change_hold_details``.

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

    def is_legal_holds_change_hold_name(self):
        """
        Check if the union tag is ``legal_holds_change_hold_name``.

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

    def is_legal_holds_export_a_hold(self):
        """
        Check if the union tag is ``legal_holds_export_a_hold``.

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

    def is_legal_holds_export_cancelled(self):
        """
        Check if the union tag is ``legal_holds_export_cancelled``.

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

    def is_legal_holds_export_downloaded(self):
        """
        Check if the union tag is ``legal_holds_export_downloaded``.

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

    def is_legal_holds_export_removed(self):
        """
        Check if the union tag is ``legal_holds_export_removed``.

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

    def is_legal_holds_release_a_hold(self):
        """
        Check if the union tag is ``legal_holds_release_a_hold``.

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

    def is_legal_holds_remove_members(self):
        """
        Check if the union tag is ``legal_holds_remove_members``.

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

    def is_legal_holds_report_a_hold(self):
        """
        Check if the union tag is ``legal_holds_report_a_hold``.

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

    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_sync_backup_status_changed(self):
        """
        Check if the union tag is ``device_sync_backup_status_changed``.

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

    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_locking_lock_status_changed(self):
        """
        Check if the union tag is ``file_locking_lock_status_changed``.

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

    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_folder_overview_description_changed(self):
        """
        Check if the union tag is ``folder_overview_description_changed``.

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

    def is_folder_overview_item_pinned(self):
        """
        Check if the union tag is ``folder_overview_item_pinned``.

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

    def is_folder_overview_item_unpinned(self):
        """
        Check if the union tag is ``folder_overview_item_unpinned``.

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

    def is_rewind_folder(self):
        """
        Check if the union tag is ``rewind_folder``.

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

    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_account_lock_or_unlocked(self):
        """
        Check if the union tag is ``account_lock_or_unlocked``.

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

    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_create_team_invite_link(self):
        """
        Check if the union tag is ``create_team_invite_link``.

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

    def is_delete_team_invite_link(self):
        """
        Check if the union tag is ``delete_team_invite_link``.

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

    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_delete_profile_photo(self):
        """
        Check if the union tag is ``member_delete_profile_photo``.

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

    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_set_profile_photo(self):
        """
        Check if the union tag is ``member_set_profile_photo``.

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

    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_pending_secondary_email_added(self):
        """
        Check if the union tag is ``pending_secondary_email_added``.

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

    def is_secondary_email_deleted(self):
        """
        Check if the union tag is ``secondary_email_deleted``.

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

    def is_secondary_email_verified(self):
        """
        Check if the union tag is ``secondary_email_verified``.

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

    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_binder_add_page(self):
        """
        Check if the union tag is ``binder_add_page``.

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

    def is_binder_add_section(self):
        """
        Check if the union tag is ``binder_add_section``.

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

    def is_binder_remove_page(self):
        """
        Check if the union tag is ``binder_remove_page``.

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

    def is_binder_remove_section(self):
        """
        Check if the union tag is ``binder_remove_section``.

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

    def is_binder_rename_page(self):
        """
        Check if the union tag is ``binder_rename_page``.

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

    def is_binder_rename_section(self):
        """
        Check if the union tag is ``binder_rename_section``.

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

    def is_binder_reorder_page(self):
        """
        Check if the union tag is ``binder_reorder_page``.

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

    def is_binder_reorder_section(self):
        """
        Check if the union tag is ``binder_reorder_section``.

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

    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_change_permission(self):
        """
        Check if the union tag is ``paper_published_link_change_permission``.

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

    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_export_members_report_fail(self):
        """
        Check if the union tag is ``export_members_report_fail``.

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

    def is_external_sharing_create_report(self):
        """
        Check if the union tag is ``external_sharing_create_report``.

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

    def is_external_sharing_report_failed(self):
        """
        Check if the union tag is ``external_sharing_report_failed``.

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

    def is_no_expiration_link_gen_create_report(self):
        """
        Check if the union tag is ``no_expiration_link_gen_create_report``.

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

    def is_no_expiration_link_gen_report_failed(self):
        """
        Check if the union tag is ``no_expiration_link_gen_report_failed``.

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

    def is_no_password_link_gen_create_report(self):
        """
        Check if the union tag is ``no_password_link_gen_create_report``.

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

    def is_no_password_link_gen_report_failed(self):
        """
        Check if the union tag is ``no_password_link_gen_report_failed``.

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

    def is_no_password_link_view_create_report(self):
        """
        Check if the union tag is ``no_password_link_view_create_report``.

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

    def is_no_password_link_view_report_failed(self):
        """
        Check if the union tag is ``no_password_link_view_report_failed``.

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

    def is_outdated_link_view_create_report(self):
        """
        Check if the union tag is ``outdated_link_view_create_report``.

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

    def is_outdated_link_view_report_failed(self):
        """
        Check if the union tag is ``outdated_link_view_report_failed``.

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

    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_file_transfers_file_add(self):
        """
        Check if the union tag is ``file_transfers_file_add``.

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

    def is_file_transfers_transfer_delete(self):
        """
        Check if the union tag is ``file_transfers_transfer_delete``.

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

    def is_file_transfers_transfer_download(self):
        """
        Check if the union tag is ``file_transfers_transfer_download``.

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

    def is_file_transfers_transfer_send(self):
        """
        Check if the union tag is ``file_transfers_transfer_send``.

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

    def is_file_transfers_transfer_view(self):
        """
        Check if the union tag is ``file_transfers_transfer_view``.

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

    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_restore_invitees(self):
        """
        Check if the union tag is ``shared_content_restore_invitees``.

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

    def is_shared_content_restore_member(self):
        """
        Check if the union tag is ``shared_content_restore_member``.

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

    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_settings_add_expiration(self):
        """
        Check if the union tag is ``shared_link_settings_add_expiration``.

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

    def is_shared_link_settings_add_password(self):
        """
        Check if the union tag is ``shared_link_settings_add_password``.

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

    def is_shared_link_settings_allow_download_disabled(self):
        """
        Check if the union tag is ``shared_link_settings_allow_download_disabled``.

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

    def is_shared_link_settings_allow_download_enabled(self):
        """
        Check if the union tag is ``shared_link_settings_allow_download_enabled``.

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

    def is_shared_link_settings_change_audience(self):
        """
        Check if the union tag is ``shared_link_settings_change_audience``.

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

    def is_shared_link_settings_change_expiration(self):
        """
        Check if the union tag is ``shared_link_settings_change_expiration``.

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

    def is_shared_link_settings_change_password(self):
        """
        Check if the union tag is ``shared_link_settings_change_password``.

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

    def is_shared_link_settings_remove_expiration(self):
        """
        Check if the union tag is ``shared_link_settings_remove_expiration``.

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

    def is_shared_link_settings_remove_password(self):
        """
        Check if the union tag is ``shared_link_settings_remove_password``.

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

    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_disable_downloads(self):
        """
        Check if the union tag is ``shmodel_disable_downloads``.

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

    def is_shmodel_enable_downloads(self):
        """
        Check if the union tag is ``shmodel_enable_downloads``.

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

    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_computer_backup_policy_changed(self):
        """
        Check if the union tag is ``computer_backup_policy_changed``.

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

    def is_content_administration_policy_changed(self):
        """
        Check if the union tag is ``content_administration_policy_changed``.

        :rtype: bool
        """
        return self._tag == 'content_administration_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_add_exception(self):
        """
        Check if the union tag is ``device_approvals_add_exception``.

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

    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_device_approvals_remove_exception(self):
        """
        Check if the union tag is ``device_approvals_remove_exception``.

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

    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_locking_policy_changed(self):
        """
        Check if the union tag is ``file_locking_policy_changed``.

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

    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_file_transfers_policy_changed(self):
        """
        Check if the union tag is ``file_transfers_policy_changed``.

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

    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_send_invite_policy_changed(self):
        """
        Check if the union tag is ``member_send_invite_policy_changed``.

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

    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_password_strength_requirements_change_policy(self):
        """
        Check if the union tag is ``password_strength_requirements_change_policy``.

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

    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_rewind_policy_changed(self):
        """
        Check if the union tag is ``rewind_policy_changed``.

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

    def is_send_for_signature_policy_changed(self):
        """
        Check if the union tag is ``send_for_signature_policy_changed``.

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

    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_smarter_smart_sync_policy_changed(self):
        """
        Check if the union tag is ``smarter_smart_sync_policy_changed``.

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

    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_team_sharing_whitelist_subjects_changed(self):
        """
        Check if the union tag is ``team_sharing_whitelist_subjects_changed``.

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

    def is_tfa_add_exception(self):
        """
        Check if the union tag is ``tfa_add_exception``.

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

    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_tfa_remove_exception(self):
        """
        Check if the union tag is ``tfa_remove_exception``.

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

    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_watermarking_policy_changed(self):
        """
        Check if the union tag is ``watermarking_policy_changed``.

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

    def is_web_sessions_change_active_session_limit(self):
        """
        Check if the union tag is ``web_sessions_change_active_session_limit``.

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

    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_changed_enterprise_admin_role(self):
        """
        Check if the union tag is ``changed_enterprise_admin_role``.

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

    def is_changed_enterprise_connected_team_status(self):
        """
        Check if the union tag is ``changed_enterprise_connected_team_status``.

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

    def is_ended_enterprise_admin_session(self):
        """
        Check if the union tag is ``ended_enterprise_admin_session``.

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

    def is_ended_enterprise_admin_session_deprecated(self):
        """
        Check if the union tag is ``ended_enterprise_admin_session_deprecated``.

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

    def is_enterprise_settings_locking(self):
        """
        Check if the union tag is ``enterprise_settings_locking``.

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

    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_started_enterprise_admin_session(self):
        """
        Check if the union tag is ``started_enterprise_admin_session``.

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

    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 _process_custom_annotations(self, annotation_type, field_path, processor):
        super(EventTypeArg, self)._process_custom_annotations(annotation_type, field_path, processor)

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

EventTypeArg_validator = bv.Union(EventTypeArg)

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 ExportMembersReportFailDetails(bb.Struct):
    """
    Failed to create members data report.

    :ivar team_log.ExportMembersReportFailDetails.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(ExportMembersReportFailDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ExportMembersReportFailDetails(failure_reason={!r})'.format(
            self._failure_reason_value,
        )

ExportMembersReportFailDetails_validator = bv.Struct(ExportMembersReportFailDetails)

class ExportMembersReportFailType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

ExportMembersReportFailType_validator = bv.Struct(ExportMembersReportFailType)

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 ExternalSharingCreateReportDetails(bb.Struct):
    """
    Created External sharing report.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

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

ExternalSharingCreateReportDetails_validator = bv.Struct(ExternalSharingCreateReportDetails)

class ExternalSharingCreateReportType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

ExternalSharingCreateReportType_validator = bv.Struct(ExternalSharingCreateReportType)

class ExternalSharingReportFailedDetails(bb.Struct):
    """
    Couldn't create External sharing report.

    :ivar team_log.ExternalSharingReportFailedDetails.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(ExternalSharingReportFailedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ExternalSharingReportFailedDetails(failure_reason={!r})'.format(
            self._failure_reason_value,
        )

ExternalSharingReportFailedDetails_validator = bv.Struct(ExternalSharingReportFailedDetails)

class ExternalSharingReportFailedType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

ExternalSharingReportFailedType_validator = bv.Struct(ExternalSharingReportFailedType)

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 FedAdminRole(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
    enterprise_admin = None
    # Attribute is overwritten below the class definition
    not_enterprise_admin = None
    # Attribute is overwritten below the class definition
    other = None

    def is_enterprise_admin(self):
        """
        Check if the union tag is ``enterprise_admin``.

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

    def is_not_enterprise_admin(self):
        """
        Check if the union tag is ``not_enterprise_admin``.

        :rtype: bool
        """
        return self._tag == 'not_enterprise_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(FedAdminRole, self)._process_custom_annotations(annotation_type, field_path, processor)

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

FedAdminRole_validator = bv.Union(FedAdminRole)

class FedExtraDetails(bb.Union):
    """
    More details about the organization or 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.

    :ivar OrganizationDetails FedExtraDetails.organization: More details about
        the organization.
    :ivar TeamDetails FedExtraDetails.team: More details about the team.
    """

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

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

        :param OrganizationDetails val:
        :rtype: FedExtraDetails
        """
        return cls('organization', val)

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

        :param TeamDetails val:
        :rtype: FedExtraDetails
        """
        return cls('team', val)

    def is_organization(self):
        """
        Check if the union tag is ``organization``.

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

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

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

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

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

    def get_organization(self):
        """
        More details about the organization.

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

        :rtype: OrganizationDetails
        """
        if not self.is_organization():
            raise AttributeError("tag 'organization' not set")
        return self._value

    def get_team(self):
        """
        More details about the team.

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

        :rtype: TeamDetails
        """
        if not self.is_team():
            raise AttributeError("tag 'team' not set")
        return self._value

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

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

FedExtraDetails_validator = bv.Union(FedExtraDetails)

class FedHandshakeAction(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
    accepted_invite = None
    # Attribute is overwritten below the class definition
    canceled_invite = None
    # Attribute is overwritten below the class definition
    invite_expired = None
    # Attribute is overwritten below the class definition
    invited = None
    # Attribute is overwritten below the class definition
    rejected_invite = None
    # Attribute is overwritten below the class definition
    removed_team = None
    # Attribute is overwritten below the class definition
    other = None

    def is_accepted_invite(self):
        """
        Check if the union tag is ``accepted_invite``.

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

    def is_canceled_invite(self):
        """
        Check if the union tag is ``canceled_invite``.

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

    def is_invite_expired(self):
        """
        Check if the union tag is ``invite_expired``.

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

    def is_invited(self):
        """
        Check if the union tag is ``invited``.

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

    def is_rejected_invite(self):
        """
        Check if the union tag is ``rejected_invite``.

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

    def is_removed_team(self):
        """
        Check if the union tag is ``removed_team``.

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

    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(FedHandshakeAction, self)._process_custom_annotations(annotation_type, field_path, processor)

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

FedHandshakeAction_validator = bv.Union(FedHandshakeAction)

class FederationStatusChangeAdditionalInfo(bb.Union):
    """
    Additional information about the organization or connected 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.

    :ivar ConnectedTeamName
        FederationStatusChangeAdditionalInfo.connected_team_name: The name of
        the team.
    :ivar NonTrustedTeamDetails
        FederationStatusChangeAdditionalInfo.non_trusted_team_details: The email
        to which the request was sent.
    :ivar OrganizationName
        FederationStatusChangeAdditionalInfo.organization_name: The name of the
        organization.
    """

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

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

        :param ConnectedTeamName val:
        :rtype: FederationStatusChangeAdditionalInfo
        """
        return cls('connected_team_name', val)

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

        :param NonTrustedTeamDetails val:
        :rtype: FederationStatusChangeAdditionalInfo
        """
        return cls('non_trusted_team_details', val)

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

        :param OrganizationName val:
        :rtype: FederationStatusChangeAdditionalInfo
        """
        return cls('organization_name', val)

    def is_connected_team_name(self):
        """
        Check if the union tag is ``connected_team_name``.

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

    def is_non_trusted_team_details(self):
        """
        Check if the union tag is ``non_trusted_team_details``.

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

    def is_organization_name(self):
        """
        Check if the union tag is ``organization_name``.

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

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

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

    def get_connected_team_name(self):
        """
        The name of the team.

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

        :rtype: ConnectedTeamName
        """
        if not self.is_connected_team_name():
            raise AttributeError("tag 'connected_team_name' not set")
        return self._value

    def get_non_trusted_team_details(self):
        """
        The email to which the request was sent.

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

        :rtype: NonTrustedTeamDetails
        """
        if not self.is_non_trusted_team_details():
            raise AttributeError("tag 'non_trusted_team_details' not set")
        return self._value

    def get_organization_name(self):
        """
        The name of the organization.

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

        :rtype: OrganizationName
        """
        if not self.is_organization_name():
            raise AttributeError("tag 'organization_name' not set")
        return self._value

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

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

FederationStatusChangeAdditionalInfo_validator = bv.Union(FederationStatusChangeAdditionalInfo)

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 FileLockingLockStatusChangedDetails(bb.Struct):
    """
    Locked/unlocked editing for a file.

    :ivar team_log.FileLockingLockStatusChangedDetails.previous_value: Previous
        lock status of the file.
    :ivar team_log.FileLockingLockStatusChangedDetails.new_value: New lock
        status of the file.
    """

    __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 lock status of the file.

        :rtype: LockStatus
        """
        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 lock status of the file.

        :rtype: LockStatus
        """
        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(FileLockingLockStatusChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

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

FileLockingLockStatusChangedDetails_validator = bv.Struct(FileLockingLockStatusChangedDetails)

class FileLockingLockStatusChangedType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

FileLockingLockStatusChangedType_validator = bv.Struct(FileLockingLockStatusChangedType)

class FileLockingPolicyChangedDetails(bb.Struct):
    """
    Changed file locking policy for team.

    :ivar team_log.FileLockingPolicyChangedDetails.new_value: New file locking
        policy.
    :ivar team_log.FileLockingPolicyChangedDetails.previous_value: Previous file
        locking 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 file locking policy.

        :rtype: team_policies.FileLockingPolicyState
        """
        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 locking policy.

        :rtype: team_policies.FileLockingPolicyState
        """
        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(FileLockingPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

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

FileLockingPolicyChangedDetails_validator = bv.Struct(FileLockingPolicyChangedDetails)

class FileLockingPolicyChangedType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

FileLockingPolicyChangedType_validator = bv.Struct(FileLockingPolicyChangedType)

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.
    :ivar team_log.FileOrFolderLogInfo.file_size: File or folder size in bytes.
    """

    __slots__ = [
        '_path_value',
        '_path_present',
        '_display_name_value',
        '_display_name_present',
        '_file_id_value',
        '_file_id_present',
        '_file_size_value',
        '_file_size_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 path=None,
                 display_name=None,
                 file_id=None,
                 file_size=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
        self._file_size_value = None
        self._file_size_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
        if file_size is not None:
            self.file_size = file_size

    @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

    @property
    def file_size(self):
        """
        File or folder size in bytes.

        :rtype: int
        """
        if self._file_size_present:
            return self._file_size_value
        else:
            return None

    @file_size.setter
    def file_size(self, val):
        if val is None:
            del self.file_size
            return
        val = self._file_size_validator.validate(val)
        self._file_size_value = val
        self._file_size_present = True

    @file_size.deleter
    def file_size(self):
        self._file_size_value = None
        self._file_size_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}, file_size={!r})'.format(
            self._path_value,
            self._display_name_value,
            self._file_id_value,
            self._file_size_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,
                 file_size=None):
        super(FileLogInfo, self).__init__(path,
                                          display_name,
                                          file_id,
                                          file_size)

    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}, file_size={!r})'.format(
            self._path_value,
            self._display_name_value,
            self._file_id_value,
            self._file_size_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 FileTransfersFileAddDetails(bb.Struct):
    """
    Transfer files added.

    :ivar team_log.FileTransfersFileAddDetails.file_transfer_id: Transfer id.
    """

    __slots__ = [
        '_file_transfer_id_value',
        '_file_transfer_id_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 file_transfer_id=None):
        self._file_transfer_id_value = None
        self._file_transfer_id_present = False
        if file_transfer_id is not None:
            self.file_transfer_id = file_transfer_id

    @property
    def file_transfer_id(self):
        """
        Transfer id.

        :rtype: str
        """
        if self._file_transfer_id_present:
            return self._file_transfer_id_value
        else:
            raise AttributeError("missing required field 'file_transfer_id'")

    @file_transfer_id.setter
    def file_transfer_id(self, val):
        val = self._file_transfer_id_validator.validate(val)
        self._file_transfer_id_value = val
        self._file_transfer_id_present = True

    @file_transfer_id.deleter
    def file_transfer_id(self):
        self._file_transfer_id_value = None
        self._file_transfer_id_present = False

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

    def __repr__(self):
        return 'FileTransfersFileAddDetails(file_transfer_id={!r})'.format(
            self._file_transfer_id_value,
        )

FileTransfersFileAddDetails_validator = bv.Struct(FileTransfersFileAddDetails)

class FileTransfersFileAddType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

FileTransfersFileAddType_validator = bv.Struct(FileTransfersFileAddType)

class FileTransfersPolicy(bb.Union):
    """
    File transfers 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(FileTransfersPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

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

FileTransfersPolicy_validator = bv.Union(FileTransfersPolicy)

class FileTransfersPolicyChangedDetails(bb.Struct):
    """
    Changed file transfers policy for team.

    :ivar team_log.FileTransfersPolicyChangedDetails.new_value: New file
        transfers policy.
    :ivar team_log.FileTransfersPolicyChangedDetails.previous_value: Previous
        file transfers 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 file transfers policy.

        :rtype: FileTransfersPolicy
        """
        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 transfers policy.

        :rtype: FileTransfersPolicy
        """
        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(FileTransfersPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

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

FileTransfersPolicyChangedDetails_validator = bv.Struct(FileTransfersPolicyChangedDetails)

class FileTransfersPolicyChangedType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

FileTransfersPolicyChangedType_validator = bv.Struct(FileTransfersPolicyChangedType)

class FileTransfersTransferDeleteDetails(bb.Struct):
    """
    Deleted transfer.

    :ivar team_log.FileTransfersTransferDeleteDetails.file_transfer_id: Transfer
        id.
    """

    __slots__ = [
        '_file_transfer_id_value',
        '_file_transfer_id_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 file_transfer_id=None):
        self._file_transfer_id_value = None
        self._file_transfer_id_present = False
        if file_transfer_id is not None:
            self.file_transfer_id = file_transfer_id

    @property
    def file_transfer_id(self):
        """
        Transfer id.

        :rtype: str
        """
        if self._file_transfer_id_present:
            return self._file_transfer_id_value
        else:
            raise AttributeError("missing required field 'file_transfer_id'")

    @file_transfer_id.setter
    def file_transfer_id(self, val):
        val = self._file_transfer_id_validator.validate(val)
        self._file_transfer_id_value = val
        self._file_transfer_id_present = True

    @file_transfer_id.deleter
    def file_transfer_id(self):
        self._file_transfer_id_value = None
        self._file_transfer_id_present = False

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

    def __repr__(self):
        return 'FileTransfersTransferDeleteDetails(file_transfer_id={!r})'.format(
            self._file_transfer_id_value,
        )

FileTransfersTransferDeleteDetails_validator = bv.Struct(FileTransfersTransferDeleteDetails)

class FileTransfersTransferDeleteType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

FileTransfersTransferDeleteType_validator = bv.Struct(FileTransfersTransferDeleteType)

class FileTransfersTransferDownloadDetails(bb.Struct):
    """
    Transfer downloaded.

    :ivar team_log.FileTransfersTransferDownloadDetails.file_transfer_id:
        Transfer id.
    """

    __slots__ = [
        '_file_transfer_id_value',
        '_file_transfer_id_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 file_transfer_id=None):
        self._file_transfer_id_value = None
        self._file_transfer_id_present = False
        if file_transfer_id is not None:
            self.file_transfer_id = file_transfer_id

    @property
    def file_transfer_id(self):
        """
        Transfer id.

        :rtype: str
        """
        if self._file_transfer_id_present:
            return self._file_transfer_id_value
        else:
            raise AttributeError("missing required field 'file_transfer_id'")

    @file_transfer_id.setter
    def file_transfer_id(self, val):
        val = self._file_transfer_id_validator.validate(val)
        self._file_transfer_id_value = val
        self._file_transfer_id_present = True

    @file_transfer_id.deleter
    def file_transfer_id(self):
        self._file_transfer_id_value = None
        self._file_transfer_id_present = False

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

    def __repr__(self):
        return 'FileTransfersTransferDownloadDetails(file_transfer_id={!r})'.format(
            self._file_transfer_id_value,
        )

FileTransfersTransferDownloadDetails_validator = bv.Struct(FileTransfersTransferDownloadDetails)

class FileTransfersTransferDownloadType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

FileTransfersTransferDownloadType_validator = bv.Struct(FileTransfersTransferDownloadType)

class FileTransfersTransferSendDetails(bb.Struct):
    """
    Sent transfer.

    :ivar team_log.FileTransfersTransferSendDetails.file_transfer_id: Transfer
        id.
    """

    __slots__ = [
        '_file_transfer_id_value',
        '_file_transfer_id_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 file_transfer_id=None):
        self._file_transfer_id_value = None
        self._file_transfer_id_present = False
        if file_transfer_id is not None:
            self.file_transfer_id = file_transfer_id

    @property
    def file_transfer_id(self):
        """
        Transfer id.

        :rtype: str
        """
        if self._file_transfer_id_present:
            return self._file_transfer_id_value
        else:
            raise AttributeError("missing required field 'file_transfer_id'")

    @file_transfer_id.setter
    def file_transfer_id(self, val):
        val = self._file_transfer_id_validator.validate(val)
        self._file_transfer_id_value = val
        self._file_transfer_id_present = True

    @file_transfer_id.deleter
    def file_transfer_id(self):
        self._file_transfer_id_value = None
        self._file_transfer_id_present = False

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

    def __repr__(self):
        return 'FileTransfersTransferSendDetails(file_transfer_id={!r})'.format(
            self._file_transfer_id_value,
        )

FileTransfersTransferSendDetails_validator = bv.Struct(FileTransfersTransferSendDetails)

class FileTransfersTransferSendType(bb.Struct):

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

    _has_required_fields = True

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

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

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileTransfersTransferSendType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileTransfersTransferSendType(description={!r})'.format(
            self._description_value,
        )

FileTransfersTransferSendType_validator = bv.Struct(FileTransfersTransferSendType)

class FileTransfersTransferViewDetails(bb.Struct):
    """
    Viewed transfer.

    :ivar team_log.FileTransfersTransferViewDetails.file_transfer_id: Transfer
        id.
    """

    __slots__ = [
        '_file_transfer_id_value',
        '_file_transfer_id_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 file_transfer_id=None):
        self._file_transfer_id_value = None
        self._file_transfer_id_present = False
        if file_transfer_id is not None:
            self.file_transfer_id = file_transfer_id

    @property
    def file_transfer_id(self):
        """
        Transfer id.

        :rtype: str
        """
        if self._file_transfer_id_present:
            return self._file_transfer_id_value
        else:
            raise AttributeError("missing required field 'file_transfer_id'")

    @file_transfer_id.setter
    def file_transfer_id(self, val):
        val = self._file_transfer_id_validator.validate(val)
        self._file_transfer_id_value = val
        self._file_transfer_id_present = True

    @file_transfer_id.deleter
    def file_transfer_id(self):
        self._file_transfer_id_value = None
        self._file_transfer_id_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileTransfersTransferViewDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileTransfersTransferViewDetails(file_transfer_id={!r})'.format(
            self._file_transfer_id_value,
        )

FileTransfersTransferViewDetails_validator = bv.Struct(FileTransfersTransferViewDetails)

class FileTransfersTransferViewType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FileTransfersTransferViewType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FileTransfersTransferViewType(description={!r})'.format(
            self._description_value,
        )

FileTransfersTransferViewType_validator = bv.Struct(FileTransfersTransferViewType)

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.

    :ivar team_log.FolderLogInfo.file_count: Number of files within the folder.
    """

    __slots__ = [
        '_file_count_value',
        '_file_count_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 path=None,
                 display_name=None,
                 file_id=None,
                 file_size=None,
                 file_count=None):
        super(FolderLogInfo, self).__init__(path,
                                            display_name,
                                            file_id,
                                            file_size)
        self._file_count_value = None
        self._file_count_present = False
        if file_count is not None:
            self.file_count = file_count

    @property
    def file_count(self):
        """
        Number of files within the folder.

        :rtype: int
        """
        if self._file_count_present:
            return self._file_count_value
        else:
            return None

    @file_count.setter
    def file_count(self, val):
        if val is None:
            del self.file_count
            return
        val = self._file_count_validator.validate(val)
        self._file_count_value = val
        self._file_count_present = True

    @file_count.deleter
    def file_count(self):
        self._file_count_value = None
        self._file_count_present = False

    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}, file_size={!r}, file_count={!r})'.format(
            self._path_value,
            self._display_name_value,
            self._file_id_value,
            self._file_size_value,
            self._file_count_value,
        )

FolderLogInfo_validator = bv.Struct(FolderLogInfo)

class FolderOverviewDescriptionChangedDetails(bb.Struct):
    """
    Updated folder overview.

    :ivar
        team_log.FolderOverviewDescriptionChangedDetails.folder_overview_location_asset:
        Folder Overview location position in the Assets list.
    """

    __slots__ = [
        '_folder_overview_location_asset_value',
        '_folder_overview_location_asset_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 folder_overview_location_asset=None):
        self._folder_overview_location_asset_value = None
        self._folder_overview_location_asset_present = False
        if folder_overview_location_asset is not None:
            self.folder_overview_location_asset = folder_overview_location_asset

    @property
    def folder_overview_location_asset(self):
        """
        Folder Overview location position in the Assets list.

        :rtype: int
        """
        if self._folder_overview_location_asset_present:
            return self._folder_overview_location_asset_value
        else:
            raise AttributeError("missing required field 'folder_overview_location_asset'")

    @folder_overview_location_asset.setter
    def folder_overview_location_asset(self, val):
        val = self._folder_overview_location_asset_validator.validate(val)
        self._folder_overview_location_asset_value = val
        self._folder_overview_location_asset_present = True

    @folder_overview_location_asset.deleter
    def folder_overview_location_asset(self):
        self._folder_overview_location_asset_value = None
        self._folder_overview_location_asset_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FolderOverviewDescriptionChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FolderOverviewDescriptionChangedDetails(folder_overview_location_asset={!r})'.format(
            self._folder_overview_location_asset_value,
        )

FolderOverviewDescriptionChangedDetails_validator = bv.Struct(FolderOverviewDescriptionChangedDetails)

class FolderOverviewDescriptionChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FolderOverviewDescriptionChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FolderOverviewDescriptionChangedType(description={!r})'.format(
            self._description_value,
        )

FolderOverviewDescriptionChangedType_validator = bv.Struct(FolderOverviewDescriptionChangedType)

class FolderOverviewItemPinnedDetails(bb.Struct):
    """
    Pinned item to folder overview.

    :ivar
        team_log.FolderOverviewItemPinnedDetails.folder_overview_location_asset:
        Folder Overview location position in the Assets list.
    :ivar team_log.FolderOverviewItemPinnedDetails.pinned_items_asset_indices:
        Pinned items positions in the Assets list.
    """

    __slots__ = [
        '_folder_overview_location_asset_value',
        '_folder_overview_location_asset_present',
        '_pinned_items_asset_indices_value',
        '_pinned_items_asset_indices_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 folder_overview_location_asset=None,
                 pinned_items_asset_indices=None):
        self._folder_overview_location_asset_value = None
        self._folder_overview_location_asset_present = False
        self._pinned_items_asset_indices_value = None
        self._pinned_items_asset_indices_present = False
        if folder_overview_location_asset is not None:
            self.folder_overview_location_asset = folder_overview_location_asset
        if pinned_items_asset_indices is not None:
            self.pinned_items_asset_indices = pinned_items_asset_indices

    @property
    def folder_overview_location_asset(self):
        """
        Folder Overview location position in the Assets list.

        :rtype: int
        """
        if self._folder_overview_location_asset_present:
            return self._folder_overview_location_asset_value
        else:
            raise AttributeError("missing required field 'folder_overview_location_asset'")

    @folder_overview_location_asset.setter
    def folder_overview_location_asset(self, val):
        val = self._folder_overview_location_asset_validator.validate(val)
        self._folder_overview_location_asset_value = val
        self._folder_overview_location_asset_present = True

    @folder_overview_location_asset.deleter
    def folder_overview_location_asset(self):
        self._folder_overview_location_asset_value = None
        self._folder_overview_location_asset_present = False

    @property
    def pinned_items_asset_indices(self):
        """
        Pinned items positions in the Assets list.

        :rtype: list of [int]
        """
        if self._pinned_items_asset_indices_present:
            return self._pinned_items_asset_indices_value
        else:
            raise AttributeError("missing required field 'pinned_items_asset_indices'")

    @pinned_items_asset_indices.setter
    def pinned_items_asset_indices(self, val):
        val = self._pinned_items_asset_indices_validator.validate(val)
        self._pinned_items_asset_indices_value = val
        self._pinned_items_asset_indices_present = True

    @pinned_items_asset_indices.deleter
    def pinned_items_asset_indices(self):
        self._pinned_items_asset_indices_value = None
        self._pinned_items_asset_indices_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FolderOverviewItemPinnedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FolderOverviewItemPinnedDetails(folder_overview_location_asset={!r}, pinned_items_asset_indices={!r})'.format(
            self._folder_overview_location_asset_value,
            self._pinned_items_asset_indices_value,
        )

FolderOverviewItemPinnedDetails_validator = bv.Struct(FolderOverviewItemPinnedDetails)

class FolderOverviewItemPinnedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FolderOverviewItemPinnedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FolderOverviewItemPinnedType(description={!r})'.format(
            self._description_value,
        )

FolderOverviewItemPinnedType_validator = bv.Struct(FolderOverviewItemPinnedType)

class FolderOverviewItemUnpinnedDetails(bb.Struct):
    """
    Unpinned item from folder overview.

    :ivar
        team_log.FolderOverviewItemUnpinnedDetails.folder_overview_location_asset:
        Folder Overview location position in the Assets list.
    :ivar team_log.FolderOverviewItemUnpinnedDetails.pinned_items_asset_indices:
        Pinned items positions in the Assets list.
    """

    __slots__ = [
        '_folder_overview_location_asset_value',
        '_folder_overview_location_asset_present',
        '_pinned_items_asset_indices_value',
        '_pinned_items_asset_indices_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 folder_overview_location_asset=None,
                 pinned_items_asset_indices=None):
        self._folder_overview_location_asset_value = None
        self._folder_overview_location_asset_present = False
        self._pinned_items_asset_indices_value = None
        self._pinned_items_asset_indices_present = False
        if folder_overview_location_asset is not None:
            self.folder_overview_location_asset = folder_overview_location_asset
        if pinned_items_asset_indices is not None:
            self.pinned_items_asset_indices = pinned_items_asset_indices

    @property
    def folder_overview_location_asset(self):
        """
        Folder Overview location position in the Assets list.

        :rtype: int
        """
        if self._folder_overview_location_asset_present:
            return self._folder_overview_location_asset_value
        else:
            raise AttributeError("missing required field 'folder_overview_location_asset'")

    @folder_overview_location_asset.setter
    def folder_overview_location_asset(self, val):
        val = self._folder_overview_location_asset_validator.validate(val)
        self._folder_overview_location_asset_value = val
        self._folder_overview_location_asset_present = True

    @folder_overview_location_asset.deleter
    def folder_overview_location_asset(self):
        self._folder_overview_location_asset_value = None
        self._folder_overview_location_asset_present = False

    @property
    def pinned_items_asset_indices(self):
        """
        Pinned items positions in the Assets list.

        :rtype: list of [int]
        """
        if self._pinned_items_asset_indices_present:
            return self._pinned_items_asset_indices_value
        else:
            raise AttributeError("missing required field 'pinned_items_asset_indices'")

    @pinned_items_asset_indices.setter
    def pinned_items_asset_indices(self, val):
        val = self._pinned_items_asset_indices_validator.validate(val)
        self._pinned_items_asset_indices_value = val
        self._pinned_items_asset_indices_present = True

    @pinned_items_asset_indices.deleter
    def pinned_items_asset_indices(self):
        self._pinned_items_asset_indices_value = None
        self._pinned_items_asset_indices_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FolderOverviewItemUnpinnedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FolderOverviewItemUnpinnedDetails(folder_overview_location_asset={!r}, pinned_items_asset_indices={!r})'.format(
            self._folder_overview_location_asset_value,
            self._pinned_items_asset_indices_value,
        )

FolderOverviewItemUnpinnedDetails_validator = bv.Struct(FolderOverviewItemUnpinnedDetails)

class FolderOverviewItemUnpinnedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(FolderOverviewItemUnpinnedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'FolderOverviewItemUnpinnedType(description={!r})'.format(
            self._description_value,
        )

FolderOverviewItemUnpinnedType_validator = bv.Struct(FolderOverviewItemUnpinnedType)

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 only 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. Note that category shouldn't be provided together with
        event_type.
    :ivar team_log.GetTeamEventsArg.event_type: Filter the returned events to a
        single event type. Note that event_type shouldn't be provided together
        with category.
    """

    __slots__ = [
        '_limit_value',
        '_limit_present',
        '_account_id_value',
        '_account_id_present',
        '_time_value',
        '_time_present',
        '_category_value',
        '_category_present',
        '_event_type_value',
        '_event_type_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 limit=None,
                 account_id=None,
                 time=None,
                 category=None,
                 event_type=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
        self._event_type_value = None
        self._event_type_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
        if event_type is not None:
            self.event_type = event_type

    @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 only 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. Note that category
        shouldn't be provided together with event_type.

        :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

    @property
    def event_type(self):
        """
        Filter the returned events to a single event type. Note that event_type
        shouldn't be provided together with category.

        :rtype: EventTypeArg
        """
        if self._event_type_present:
            return self._event_type_value
        else:
            return None

    @event_type.setter
    def event_type(self, val):
        if val is None:
            del self.event_type
            return
        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

    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}, event_type={!r})'.format(
            self._limit_value,
            self._account_id_value,
            self._time_value,
            self._category_value,
            self._event_type_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.
    :ivar team_log.GetTeamEventsError.invalid_filters: Invalid filters. Do not
        specify both event_type and category parameters for the same call.
    """

    _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
    invalid_filters = 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_invalid_filters(self):
        """
        Check if the union tag is ``invalid_filters``.

        :rtype: bool
        """
        return self._tag == 'invalid_filters'

    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 GovernancePolicyAddFoldersDetails(bb.Struct):
    """
    Added folders to policy.

    :ivar team_log.GovernancePolicyAddFoldersDetails.governance_policy_id:
        Policy ID.
    :ivar team_log.GovernancePolicyAddFoldersDetails.name: Policy name.
    :ivar team_log.GovernancePolicyAddFoldersDetails.policy_type: Policy type.
    :ivar team_log.GovernancePolicyAddFoldersDetails.folders: Folders.
    """

    __slots__ = [
        '_governance_policy_id_value',
        '_governance_policy_id_present',
        '_name_value',
        '_name_present',
        '_policy_type_value',
        '_policy_type_present',
        '_folders_value',
        '_folders_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 governance_policy_id=None,
                 name=None,
                 policy_type=None,
                 folders=None):
        self._governance_policy_id_value = None
        self._governance_policy_id_present = False
        self._name_value = None
        self._name_present = False
        self._policy_type_value = None
        self._policy_type_present = False
        self._folders_value = None
        self._folders_present = False
        if governance_policy_id is not None:
            self.governance_policy_id = governance_policy_id
        if name is not None:
            self.name = name
        if policy_type is not None:
            self.policy_type = policy_type
        if folders is not None:
            self.folders = folders

    @property
    def governance_policy_id(self):
        """
        Policy ID.

        :rtype: str
        """
        if self._governance_policy_id_present:
            return self._governance_policy_id_value
        else:
            raise AttributeError("missing required field 'governance_policy_id'")

    @governance_policy_id.setter
    def governance_policy_id(self, val):
        val = self._governance_policy_id_validator.validate(val)
        self._governance_policy_id_value = val
        self._governance_policy_id_present = True

    @governance_policy_id.deleter
    def governance_policy_id(self):
        self._governance_policy_id_value = None
        self._governance_policy_id_present = False

    @property
    def name(self):
        """
        Policy name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    @property
    def policy_type(self):
        """
        Policy type.

        :rtype: PolicyType
        """
        if self._policy_type_present:
            return self._policy_type_value
        else:
            return None

    @policy_type.setter
    def policy_type(self, val):
        if val is None:
            del self.policy_type
            return
        self._policy_type_validator.validate_type_only(val)
        self._policy_type_value = val
        self._policy_type_present = True

    @policy_type.deleter
    def policy_type(self):
        self._policy_type_value = None
        self._policy_type_present = False

    @property
    def folders(self):
        """
        Folders.

        :rtype: list of [str]
        """
        if self._folders_present:
            return self._folders_value
        else:
            return None

    @folders.setter
    def folders(self, val):
        if val is None:
            del self.folders
            return
        val = self._folders_validator.validate(val)
        self._folders_value = val
        self._folders_present = True

    @folders.deleter
    def folders(self):
        self._folders_value = None
        self._folders_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GovernancePolicyAddFoldersDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GovernancePolicyAddFoldersDetails(governance_policy_id={!r}, name={!r}, policy_type={!r}, folders={!r})'.format(
            self._governance_policy_id_value,
            self._name_value,
            self._policy_type_value,
            self._folders_value,
        )

GovernancePolicyAddFoldersDetails_validator = bv.Struct(GovernancePolicyAddFoldersDetails)

class GovernancePolicyAddFoldersType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GovernancePolicyAddFoldersType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GovernancePolicyAddFoldersType(description={!r})'.format(
            self._description_value,
        )

GovernancePolicyAddFoldersType_validator = bv.Struct(GovernancePolicyAddFoldersType)

class GovernancePolicyCreateDetails(bb.Struct):
    """
    Activated a new policy.

    :ivar team_log.GovernancePolicyCreateDetails.governance_policy_id: Policy
        ID.
    :ivar team_log.GovernancePolicyCreateDetails.name: Policy name.
    :ivar team_log.GovernancePolicyCreateDetails.policy_type: Policy type.
    :ivar team_log.GovernancePolicyCreateDetails.duration: Duration in days.
    :ivar team_log.GovernancePolicyCreateDetails.folders: Folders.
    """

    __slots__ = [
        '_governance_policy_id_value',
        '_governance_policy_id_present',
        '_name_value',
        '_name_present',
        '_policy_type_value',
        '_policy_type_present',
        '_duration_value',
        '_duration_present',
        '_folders_value',
        '_folders_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 governance_policy_id=None,
                 name=None,
                 duration=None,
                 policy_type=None,
                 folders=None):
        self._governance_policy_id_value = None
        self._governance_policy_id_present = False
        self._name_value = None
        self._name_present = False
        self._policy_type_value = None
        self._policy_type_present = False
        self._duration_value = None
        self._duration_present = False
        self._folders_value = None
        self._folders_present = False
        if governance_policy_id is not None:
            self.governance_policy_id = governance_policy_id
        if name is not None:
            self.name = name
        if policy_type is not None:
            self.policy_type = policy_type
        if duration is not None:
            self.duration = duration
        if folders is not None:
            self.folders = folders

    @property
    def governance_policy_id(self):
        """
        Policy ID.

        :rtype: str
        """
        if self._governance_policy_id_present:
            return self._governance_policy_id_value
        else:
            raise AttributeError("missing required field 'governance_policy_id'")

    @governance_policy_id.setter
    def governance_policy_id(self, val):
        val = self._governance_policy_id_validator.validate(val)
        self._governance_policy_id_value = val
        self._governance_policy_id_present = True

    @governance_policy_id.deleter
    def governance_policy_id(self):
        self._governance_policy_id_value = None
        self._governance_policy_id_present = False

    @property
    def name(self):
        """
        Policy name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    @property
    def policy_type(self):
        """
        Policy type.

        :rtype: PolicyType
        """
        if self._policy_type_present:
            return self._policy_type_value
        else:
            return None

    @policy_type.setter
    def policy_type(self, val):
        if val is None:
            del self.policy_type
            return
        self._policy_type_validator.validate_type_only(val)
        self._policy_type_value = val
        self._policy_type_present = True

    @policy_type.deleter
    def policy_type(self):
        self._policy_type_value = None
        self._policy_type_present = False

    @property
    def duration(self):
        """
        Duration in days.

        :rtype: DurationLogInfo
        """
        if self._duration_present:
            return self._duration_value
        else:
            raise AttributeError("missing required field 'duration'")

    @duration.setter
    def duration(self, val):
        self._duration_validator.validate_type_only(val)
        self._duration_value = val
        self._duration_present = True

    @duration.deleter
    def duration(self):
        self._duration_value = None
        self._duration_present = False

    @property
    def folders(self):
        """
        Folders.

        :rtype: list of [str]
        """
        if self._folders_present:
            return self._folders_value
        else:
            return None

    @folders.setter
    def folders(self, val):
        if val is None:
            del self.folders
            return
        val = self._folders_validator.validate(val)
        self._folders_value = val
        self._folders_present = True

    @folders.deleter
    def folders(self):
        self._folders_value = None
        self._folders_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GovernancePolicyCreateDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GovernancePolicyCreateDetails(governance_policy_id={!r}, name={!r}, duration={!r}, policy_type={!r}, folders={!r})'.format(
            self._governance_policy_id_value,
            self._name_value,
            self._duration_value,
            self._policy_type_value,
            self._folders_value,
        )

GovernancePolicyCreateDetails_validator = bv.Struct(GovernancePolicyCreateDetails)

class GovernancePolicyCreateType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GovernancePolicyCreateType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GovernancePolicyCreateType(description={!r})'.format(
            self._description_value,
        )

GovernancePolicyCreateType_validator = bv.Struct(GovernancePolicyCreateType)

class GovernancePolicyDeleteDetails(bb.Struct):
    """
    Deleted a policy.

    :ivar team_log.GovernancePolicyDeleteDetails.governance_policy_id: Policy
        ID.
    :ivar team_log.GovernancePolicyDeleteDetails.name: Policy name.
    :ivar team_log.GovernancePolicyDeleteDetails.policy_type: Policy type.
    """

    __slots__ = [
        '_governance_policy_id_value',
        '_governance_policy_id_present',
        '_name_value',
        '_name_present',
        '_policy_type_value',
        '_policy_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 governance_policy_id=None,
                 name=None,
                 policy_type=None):
        self._governance_policy_id_value = None
        self._governance_policy_id_present = False
        self._name_value = None
        self._name_present = False
        self._policy_type_value = None
        self._policy_type_present = False
        if governance_policy_id is not None:
            self.governance_policy_id = governance_policy_id
        if name is not None:
            self.name = name
        if policy_type is not None:
            self.policy_type = policy_type

    @property
    def governance_policy_id(self):
        """
        Policy ID.

        :rtype: str
        """
        if self._governance_policy_id_present:
            return self._governance_policy_id_value
        else:
            raise AttributeError("missing required field 'governance_policy_id'")

    @governance_policy_id.setter
    def governance_policy_id(self, val):
        val = self._governance_policy_id_validator.validate(val)
        self._governance_policy_id_value = val
        self._governance_policy_id_present = True

    @governance_policy_id.deleter
    def governance_policy_id(self):
        self._governance_policy_id_value = None
        self._governance_policy_id_present = False

    @property
    def name(self):
        """
        Policy name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    @property
    def policy_type(self):
        """
        Policy type.

        :rtype: PolicyType
        """
        if self._policy_type_present:
            return self._policy_type_value
        else:
            return None

    @policy_type.setter
    def policy_type(self, val):
        if val is None:
            del self.policy_type
            return
        self._policy_type_validator.validate_type_only(val)
        self._policy_type_value = val
        self._policy_type_present = True

    @policy_type.deleter
    def policy_type(self):
        self._policy_type_value = None
        self._policy_type_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GovernancePolicyDeleteDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GovernancePolicyDeleteDetails(governance_policy_id={!r}, name={!r}, policy_type={!r})'.format(
            self._governance_policy_id_value,
            self._name_value,
            self._policy_type_value,
        )

GovernancePolicyDeleteDetails_validator = bv.Struct(GovernancePolicyDeleteDetails)

class GovernancePolicyDeleteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GovernancePolicyDeleteType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GovernancePolicyDeleteType(description={!r})'.format(
            self._description_value,
        )

GovernancePolicyDeleteType_validator = bv.Struct(GovernancePolicyDeleteType)

class GovernancePolicyEditDetailsDetails(bb.Struct):
    """
    Edited policy.

    :ivar team_log.GovernancePolicyEditDetailsDetails.governance_policy_id:
        Policy ID.
    :ivar team_log.GovernancePolicyEditDetailsDetails.name: Policy name.
    :ivar team_log.GovernancePolicyEditDetailsDetails.policy_type: Policy type.
    :ivar team_log.GovernancePolicyEditDetailsDetails.attribute: Attribute.
    :ivar team_log.GovernancePolicyEditDetailsDetails.previous_value: From.
    :ivar team_log.GovernancePolicyEditDetailsDetails.new_value: To.
    """

    __slots__ = [
        '_governance_policy_id_value',
        '_governance_policy_id_present',
        '_name_value',
        '_name_present',
        '_policy_type_value',
        '_policy_type_present',
        '_attribute_value',
        '_attribute_present',
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 governance_policy_id=None,
                 name=None,
                 attribute=None,
                 previous_value=None,
                 new_value=None,
                 policy_type=None):
        self._governance_policy_id_value = None
        self._governance_policy_id_present = False
        self._name_value = None
        self._name_present = False
        self._policy_type_value = None
        self._policy_type_present = False
        self._attribute_value = None
        self._attribute_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if governance_policy_id is not None:
            self.governance_policy_id = governance_policy_id
        if name is not None:
            self.name = name
        if policy_type is not None:
            self.policy_type = policy_type
        if attribute is not None:
            self.attribute = attribute
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def governance_policy_id(self):
        """
        Policy ID.

        :rtype: str
        """
        if self._governance_policy_id_present:
            return self._governance_policy_id_value
        else:
            raise AttributeError("missing required field 'governance_policy_id'")

    @governance_policy_id.setter
    def governance_policy_id(self, val):
        val = self._governance_policy_id_validator.validate(val)
        self._governance_policy_id_value = val
        self._governance_policy_id_present = True

    @governance_policy_id.deleter
    def governance_policy_id(self):
        self._governance_policy_id_value = None
        self._governance_policy_id_present = False

    @property
    def name(self):
        """
        Policy name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    @property
    def policy_type(self):
        """
        Policy type.

        :rtype: PolicyType
        """
        if self._policy_type_present:
            return self._policy_type_value
        else:
            return None

    @policy_type.setter
    def policy_type(self, val):
        if val is None:
            del self.policy_type
            return
        self._policy_type_validator.validate_type_only(val)
        self._policy_type_value = val
        self._policy_type_present = True

    @policy_type.deleter
    def policy_type(self):
        self._policy_type_value = None
        self._policy_type_present = False

    @property
    def attribute(self):
        """
        Attribute.

        :rtype: str
        """
        if self._attribute_present:
            return self._attribute_value
        else:
            raise AttributeError("missing required field 'attribute'")

    @attribute.setter
    def attribute(self, val):
        val = self._attribute_validator.validate(val)
        self._attribute_value = val
        self._attribute_present = True

    @attribute.deleter
    def attribute(self):
        self._attribute_value = None
        self._attribute_present = False

    @property
    def previous_value(self):
        """
        From.

        :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):
        """
        To.

        :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(GovernancePolicyEditDetailsDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GovernancePolicyEditDetailsDetails(governance_policy_id={!r}, name={!r}, attribute={!r}, previous_value={!r}, new_value={!r}, policy_type={!r})'.format(
            self._governance_policy_id_value,
            self._name_value,
            self._attribute_value,
            self._previous_value_value,
            self._new_value_value,
            self._policy_type_value,
        )

GovernancePolicyEditDetailsDetails_validator = bv.Struct(GovernancePolicyEditDetailsDetails)

class GovernancePolicyEditDetailsType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GovernancePolicyEditDetailsType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GovernancePolicyEditDetailsType(description={!r})'.format(
            self._description_value,
        )

GovernancePolicyEditDetailsType_validator = bv.Struct(GovernancePolicyEditDetailsType)

class GovernancePolicyEditDurationDetails(bb.Struct):
    """
    Changed policy duration.

    :ivar team_log.GovernancePolicyEditDurationDetails.governance_policy_id:
        Policy ID.
    :ivar team_log.GovernancePolicyEditDurationDetails.name: Policy name.
    :ivar team_log.GovernancePolicyEditDurationDetails.policy_type: Policy type.
    :ivar team_log.GovernancePolicyEditDurationDetails.previous_value: From.
    :ivar team_log.GovernancePolicyEditDurationDetails.new_value: To.
    """

    __slots__ = [
        '_governance_policy_id_value',
        '_governance_policy_id_present',
        '_name_value',
        '_name_present',
        '_policy_type_value',
        '_policy_type_present',
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 governance_policy_id=None,
                 name=None,
                 previous_value=None,
                 new_value=None,
                 policy_type=None):
        self._governance_policy_id_value = None
        self._governance_policy_id_present = False
        self._name_value = None
        self._name_present = False
        self._policy_type_value = None
        self._policy_type_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if governance_policy_id is not None:
            self.governance_policy_id = governance_policy_id
        if name is not None:
            self.name = name
        if policy_type is not None:
            self.policy_type = policy_type
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def governance_policy_id(self):
        """
        Policy ID.

        :rtype: str
        """
        if self._governance_policy_id_present:
            return self._governance_policy_id_value
        else:
            raise AttributeError("missing required field 'governance_policy_id'")

    @governance_policy_id.setter
    def governance_policy_id(self, val):
        val = self._governance_policy_id_validator.validate(val)
        self._governance_policy_id_value = val
        self._governance_policy_id_present = True

    @governance_policy_id.deleter
    def governance_policy_id(self):
        self._governance_policy_id_value = None
        self._governance_policy_id_present = False

    @property
    def name(self):
        """
        Policy name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    @property
    def policy_type(self):
        """
        Policy type.

        :rtype: PolicyType
        """
        if self._policy_type_present:
            return self._policy_type_value
        else:
            return None

    @policy_type.setter
    def policy_type(self, val):
        if val is None:
            del self.policy_type
            return
        self._policy_type_validator.validate_type_only(val)
        self._policy_type_value = val
        self._policy_type_present = True

    @policy_type.deleter
    def policy_type(self):
        self._policy_type_value = None
        self._policy_type_present = False

    @property
    def previous_value(self):
        """
        From.

        :rtype: DurationLogInfo
        """
        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):
        """
        To.

        :rtype: DurationLogInfo
        """
        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(GovernancePolicyEditDurationDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GovernancePolicyEditDurationDetails(governance_policy_id={!r}, name={!r}, previous_value={!r}, new_value={!r}, policy_type={!r})'.format(
            self._governance_policy_id_value,
            self._name_value,
            self._previous_value_value,
            self._new_value_value,
            self._policy_type_value,
        )

GovernancePolicyEditDurationDetails_validator = bv.Struct(GovernancePolicyEditDurationDetails)

class GovernancePolicyEditDurationType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GovernancePolicyEditDurationType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GovernancePolicyEditDurationType(description={!r})'.format(
            self._description_value,
        )

GovernancePolicyEditDurationType_validator = bv.Struct(GovernancePolicyEditDurationType)

class GovernancePolicyRemoveFoldersDetails(bb.Struct):
    """
    Removed folders from policy.

    :ivar team_log.GovernancePolicyRemoveFoldersDetails.governance_policy_id:
        Policy ID.
    :ivar team_log.GovernancePolicyRemoveFoldersDetails.name: Policy name.
    :ivar team_log.GovernancePolicyRemoveFoldersDetails.policy_type: Policy
        type.
    :ivar team_log.GovernancePolicyRemoveFoldersDetails.folders: Folders.
    """

    __slots__ = [
        '_governance_policy_id_value',
        '_governance_policy_id_present',
        '_name_value',
        '_name_present',
        '_policy_type_value',
        '_policy_type_present',
        '_folders_value',
        '_folders_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 governance_policy_id=None,
                 name=None,
                 policy_type=None,
                 folders=None):
        self._governance_policy_id_value = None
        self._governance_policy_id_present = False
        self._name_value = None
        self._name_present = False
        self._policy_type_value = None
        self._policy_type_present = False
        self._folders_value = None
        self._folders_present = False
        if governance_policy_id is not None:
            self.governance_policy_id = governance_policy_id
        if name is not None:
            self.name = name
        if policy_type is not None:
            self.policy_type = policy_type
        if folders is not None:
            self.folders = folders

    @property
    def governance_policy_id(self):
        """
        Policy ID.

        :rtype: str
        """
        if self._governance_policy_id_present:
            return self._governance_policy_id_value
        else:
            raise AttributeError("missing required field 'governance_policy_id'")

    @governance_policy_id.setter
    def governance_policy_id(self, val):
        val = self._governance_policy_id_validator.validate(val)
        self._governance_policy_id_value = val
        self._governance_policy_id_present = True

    @governance_policy_id.deleter
    def governance_policy_id(self):
        self._governance_policy_id_value = None
        self._governance_policy_id_present = False

    @property
    def name(self):
        """
        Policy name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    @property
    def policy_type(self):
        """
        Policy type.

        :rtype: PolicyType
        """
        if self._policy_type_present:
            return self._policy_type_value
        else:
            return None

    @policy_type.setter
    def policy_type(self, val):
        if val is None:
            del self.policy_type
            return
        self._policy_type_validator.validate_type_only(val)
        self._policy_type_value = val
        self._policy_type_present = True

    @policy_type.deleter
    def policy_type(self):
        self._policy_type_value = None
        self._policy_type_present = False

    @property
    def folders(self):
        """
        Folders.

        :rtype: list of [str]
        """
        if self._folders_present:
            return self._folders_value
        else:
            return None

    @folders.setter
    def folders(self, val):
        if val is None:
            del self.folders
            return
        val = self._folders_validator.validate(val)
        self._folders_value = val
        self._folders_present = True

    @folders.deleter
    def folders(self):
        self._folders_value = None
        self._folders_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GovernancePolicyRemoveFoldersDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GovernancePolicyRemoveFoldersDetails(governance_policy_id={!r}, name={!r}, policy_type={!r}, folders={!r})'.format(
            self._governance_policy_id_value,
            self._name_value,
            self._policy_type_value,
            self._folders_value,
        )

GovernancePolicyRemoveFoldersDetails_validator = bv.Struct(GovernancePolicyRemoveFoldersDetails)

class GovernancePolicyRemoveFoldersType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(GovernancePolicyRemoveFoldersType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'GovernancePolicyRemoveFoldersType(description={!r})'.format(
            self._description_value,
        )

GovernancePolicyRemoveFoldersType_validator = bv.Struct(GovernancePolicyRemoveFoldersType)

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 InviteMethod(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_approve = None
    # Attribute is overwritten below the class definition
    invite_link = None
    # Attribute is overwritten below the class definition
    member_invite = None
    # Attribute is overwritten below the class definition
    moved_from_another_team = None
    # Attribute is overwritten below the class definition
    other = None

    def is_auto_approve(self):
        """
        Check if the union tag is ``auto_approve``.

        :rtype: bool
        """
        return self._tag == 'auto_approve'

    def is_invite_link(self):
        """
        Check if the union tag is ``invite_link``.

        :rtype: bool
        """
        return self._tag == 'invite_link'

    def is_member_invite(self):
        """
        Check if the union tag is ``member_invite``.

        :rtype: bool
        """
        return self._tag == 'member_invite'

    def is_moved_from_another_team(self):
        """
        Check if the union tag is ``moved_from_another_team``.

        :rtype: bool
        """
        return self._tag == 'moved_from_another_team'

    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(InviteMethod, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'InviteMethod(%r, %r)' % (self._tag, self._value)

InviteMethod_validator = bv.Union(InviteMethod)

class JoinTeamDetails(bb.Struct):
    """
    Additional information relevant when a new member joins the team.

    :ivar team_log.JoinTeamDetails.linked_apps: Linked applications.
        (Deprecated) Please use has_linked_apps boolean field instead.
    :ivar team_log.JoinTeamDetails.linked_devices: Linked devices. (Deprecated)
        Please use has_linked_devices boolean field instead.
    :ivar team_log.JoinTeamDetails.linked_shared_folders: Linked shared folders.
        (Deprecated) Please use has_linked_shared_folders boolean field instead.
    :ivar team_log.JoinTeamDetails.was_linked_apps_truncated: (Deprecated) True
        if the linked_apps list was truncated to the maximum supported length
        (50).
    :ivar team_log.JoinTeamDetails.was_linked_devices_truncated: (Deprecated)
        True if the linked_devices list was truncated to the maximum supported
        length (50).
    :ivar team_log.JoinTeamDetails.was_linked_shared_folders_truncated:
        (Deprecated) True if the linked_shared_folders list was truncated to the
        maximum supported length (50).
    :ivar team_log.JoinTeamDetails.has_linked_apps: True if the user had linked
        apps at event time.
    :ivar team_log.JoinTeamDetails.has_linked_devices: True if the user had
        linked apps at event time.
    :ivar team_log.JoinTeamDetails.has_linked_shared_folders: True if the user
        had linked shared folders at event time.
    """

    __slots__ = [
        '_linked_apps_value',
        '_linked_apps_present',
        '_linked_devices_value',
        '_linked_devices_present',
        '_linked_shared_folders_value',
        '_linked_shared_folders_present',
        '_was_linked_apps_truncated_value',
        '_was_linked_apps_truncated_present',
        '_was_linked_devices_truncated_value',
        '_was_linked_devices_truncated_present',
        '_was_linked_shared_folders_truncated_value',
        '_was_linked_shared_folders_truncated_present',
        '_has_linked_apps_value',
        '_has_linked_apps_present',
        '_has_linked_devices_value',
        '_has_linked_devices_present',
        '_has_linked_shared_folders_value',
        '_has_linked_shared_folders_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 linked_apps=None,
                 linked_devices=None,
                 linked_shared_folders=None,
                 was_linked_apps_truncated=None,
                 was_linked_devices_truncated=None,
                 was_linked_shared_folders_truncated=None,
                 has_linked_apps=None,
                 has_linked_devices=None,
                 has_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
        self._was_linked_apps_truncated_value = None
        self._was_linked_apps_truncated_present = False
        self._was_linked_devices_truncated_value = None
        self._was_linked_devices_truncated_present = False
        self._was_linked_shared_folders_truncated_value = None
        self._was_linked_shared_folders_truncated_present = False
        self._has_linked_apps_value = None
        self._has_linked_apps_present = False
        self._has_linked_devices_value = None
        self._has_linked_devices_present = False
        self._has_linked_shared_folders_value = None
        self._has_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
        if was_linked_apps_truncated is not None:
            self.was_linked_apps_truncated = was_linked_apps_truncated
        if was_linked_devices_truncated is not None:
            self.was_linked_devices_truncated = was_linked_devices_truncated
        if was_linked_shared_folders_truncated is not None:
            self.was_linked_shared_folders_truncated = was_linked_shared_folders_truncated
        if has_linked_apps is not None:
            self.has_linked_apps = has_linked_apps
        if has_linked_devices is not None:
            self.has_linked_devices = has_linked_devices
        if has_linked_shared_folders is not None:
            self.has_linked_shared_folders = has_linked_shared_folders

    @property
    def linked_apps(self):
        """
        Linked applications. (Deprecated) Please use has_linked_apps boolean
        field instead.

        :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. (Deprecated) Please use has_linked_devices boolean field
        instead.

        :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. (Deprecated) Please use has_linked_shared_folders
        boolean field instead.

        :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

    @property
    def was_linked_apps_truncated(self):
        """
        (Deprecated) True if the linked_apps list was truncated to the maximum
        supported length (50).

        :rtype: bool
        """
        if self._was_linked_apps_truncated_present:
            return self._was_linked_apps_truncated_value
        else:
            return None

    @was_linked_apps_truncated.setter
    def was_linked_apps_truncated(self, val):
        if val is None:
            del self.was_linked_apps_truncated
            return
        val = self._was_linked_apps_truncated_validator.validate(val)
        self._was_linked_apps_truncated_value = val
        self._was_linked_apps_truncated_present = True

    @was_linked_apps_truncated.deleter
    def was_linked_apps_truncated(self):
        self._was_linked_apps_truncated_value = None
        self._was_linked_apps_truncated_present = False

    @property
    def was_linked_devices_truncated(self):
        """
        (Deprecated) True if the linked_devices list was truncated to the
        maximum supported length (50).

        :rtype: bool
        """
        if self._was_linked_devices_truncated_present:
            return self._was_linked_devices_truncated_value
        else:
            return None

    @was_linked_devices_truncated.setter
    def was_linked_devices_truncated(self, val):
        if val is None:
            del self.was_linked_devices_truncated
            return
        val = self._was_linked_devices_truncated_validator.validate(val)
        self._was_linked_devices_truncated_value = val
        self._was_linked_devices_truncated_present = True

    @was_linked_devices_truncated.deleter
    def was_linked_devices_truncated(self):
        self._was_linked_devices_truncated_value = None
        self._was_linked_devices_truncated_present = False

    @property
    def was_linked_shared_folders_truncated(self):
        """
        (Deprecated) True if the linked_shared_folders list was truncated to the
        maximum supported length (50).

        :rtype: bool
        """
        if self._was_linked_shared_folders_truncated_present:
            return self._was_linked_shared_folders_truncated_value
        else:
            return None

    @was_linked_shared_folders_truncated.setter
    def was_linked_shared_folders_truncated(self, val):
        if val is None:
            del self.was_linked_shared_folders_truncated
            return
        val = self._was_linked_shared_folders_truncated_validator.validate(val)
        self._was_linked_shared_folders_truncated_value = val
        self._was_linked_shared_folders_truncated_present = True

    @was_linked_shared_folders_truncated.deleter
    def was_linked_shared_folders_truncated(self):
        self._was_linked_shared_folders_truncated_value = None
        self._was_linked_shared_folders_truncated_present = False

    @property
    def has_linked_apps(self):
        """
        True if the user had linked apps at event time.

        :rtype: bool
        """
        if self._has_linked_apps_present:
            return self._has_linked_apps_value
        else:
            return None

    @has_linked_apps.setter
    def has_linked_apps(self, val):
        if val is None:
            del self.has_linked_apps
            return
        val = self._has_linked_apps_validator.validate(val)
        self._has_linked_apps_value = val
        self._has_linked_apps_present = True

    @has_linked_apps.deleter
    def has_linked_apps(self):
        self._has_linked_apps_value = None
        self._has_linked_apps_present = False

    @property
    def has_linked_devices(self):
        """
        True if the user had linked apps at event time.

        :rtype: bool
        """
        if self._has_linked_devices_present:
            return self._has_linked_devices_value
        else:
            return None

    @has_linked_devices.setter
    def has_linked_devices(self, val):
        if val is None:
            del self.has_linked_devices
            return
        val = self._has_linked_devices_validator.validate(val)
        self._has_linked_devices_value = val
        self._has_linked_devices_present = True

    @has_linked_devices.deleter
    def has_linked_devices(self):
        self._has_linked_devices_value = None
        self._has_linked_devices_present = False

    @property
    def has_linked_shared_folders(self):
        """
        True if the user had linked shared folders at event time.

        :rtype: bool
        """
        if self._has_linked_shared_folders_present:
            return self._has_linked_shared_folders_value
        else:
            return None

    @has_linked_shared_folders.setter
    def has_linked_shared_folders(self, val):
        if val is None:
            del self.has_linked_shared_folders
            return
        val = self._has_linked_shared_folders_validator.validate(val)
        self._has_linked_shared_folders_value = val
        self._has_linked_shared_folders_present = True

    @has_linked_shared_folders.deleter
    def has_linked_shared_folders(self):
        self._has_linked_shared_folders_value = None
        self._has_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}, was_linked_apps_truncated={!r}, was_linked_devices_truncated={!r}, was_linked_shared_folders_truncated={!r}, has_linked_apps={!r}, has_linked_devices={!r}, has_linked_shared_folders={!r})'.format(
            self._linked_apps_value,
            self._linked_devices_value,
            self._linked_shared_folders_value,
            self._was_linked_apps_truncated_value,
            self._was_linked_devices_truncated_value,
            self._was_linked_shared_folders_truncated_value,
            self._has_linked_apps_value,
            self._has_linked_devices_value,
            self._has_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 LegalHoldsActivateAHoldDetails(bb.Struct):
    """
    Activated a hold.

    :ivar team_log.LegalHoldsActivateAHoldDetails.legal_hold_id: Hold ID.
    :ivar team_log.LegalHoldsActivateAHoldDetails.name: Hold name.
    :ivar team_log.LegalHoldsActivateAHoldDetails.start_date: Hold start date.
    :ivar team_log.LegalHoldsActivateAHoldDetails.end_date: Hold end date.
    """

    __slots__ = [
        '_legal_hold_id_value',
        '_legal_hold_id_present',
        '_name_value',
        '_name_present',
        '_start_date_value',
        '_start_date_present',
        '_end_date_value',
        '_end_date_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 legal_hold_id=None,
                 name=None,
                 start_date=None,
                 end_date=None):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False
        self._name_value = None
        self._name_present = False
        self._start_date_value = None
        self._start_date_present = False
        self._end_date_value = None
        self._end_date_present = False
        if legal_hold_id is not None:
            self.legal_hold_id = legal_hold_id
        if name is not None:
            self.name = name
        if start_date is not None:
            self.start_date = start_date
        if end_date is not None:
            self.end_date = end_date

    @property
    def legal_hold_id(self):
        """
        Hold ID.

        :rtype: str
        """
        if self._legal_hold_id_present:
            return self._legal_hold_id_value
        else:
            raise AttributeError("missing required field 'legal_hold_id'")

    @legal_hold_id.setter
    def legal_hold_id(self, val):
        val = self._legal_hold_id_validator.validate(val)
        self._legal_hold_id_value = val
        self._legal_hold_id_present = True

    @legal_hold_id.deleter
    def legal_hold_id(self):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False

    @property
    def name(self):
        """
        Hold name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    @property
    def start_date(self):
        """
        Hold 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):
        """
        Hold end date.

        :rtype: datetime.datetime
        """
        if self._end_date_present:
            return self._end_date_value
        else:
            return None

    @end_date.setter
    def end_date(self, val):
        if val is None:
            del self.end_date
            return
        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(LegalHoldsActivateAHoldDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsActivateAHoldDetails(legal_hold_id={!r}, name={!r}, start_date={!r}, end_date={!r})'.format(
            self._legal_hold_id_value,
            self._name_value,
            self._start_date_value,
            self._end_date_value,
        )

LegalHoldsActivateAHoldDetails_validator = bv.Struct(LegalHoldsActivateAHoldDetails)

class LegalHoldsActivateAHoldType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsActivateAHoldType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsActivateAHoldType(description={!r})'.format(
            self._description_value,
        )

LegalHoldsActivateAHoldType_validator = bv.Struct(LegalHoldsActivateAHoldType)

class LegalHoldsAddMembersDetails(bb.Struct):
    """
    Added members to a hold.

    :ivar team_log.LegalHoldsAddMembersDetails.legal_hold_id: Hold ID.
    :ivar team_log.LegalHoldsAddMembersDetails.name: Hold name.
    """

    __slots__ = [
        '_legal_hold_id_value',
        '_legal_hold_id_present',
        '_name_value',
        '_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 legal_hold_id=None,
                 name=None):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False
        self._name_value = None
        self._name_present = False
        if legal_hold_id is not None:
            self.legal_hold_id = legal_hold_id
        if name is not None:
            self.name = name

    @property
    def legal_hold_id(self):
        """
        Hold ID.

        :rtype: str
        """
        if self._legal_hold_id_present:
            return self._legal_hold_id_value
        else:
            raise AttributeError("missing required field 'legal_hold_id'")

    @legal_hold_id.setter
    def legal_hold_id(self, val):
        val = self._legal_hold_id_validator.validate(val)
        self._legal_hold_id_value = val
        self._legal_hold_id_present = True

    @legal_hold_id.deleter
    def legal_hold_id(self):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False

    @property
    def name(self):
        """
        Hold name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsAddMembersDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsAddMembersDetails(legal_hold_id={!r}, name={!r})'.format(
            self._legal_hold_id_value,
            self._name_value,
        )

LegalHoldsAddMembersDetails_validator = bv.Struct(LegalHoldsAddMembersDetails)

class LegalHoldsAddMembersType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsAddMembersType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsAddMembersType(description={!r})'.format(
            self._description_value,
        )

LegalHoldsAddMembersType_validator = bv.Struct(LegalHoldsAddMembersType)

class LegalHoldsChangeHoldDetailsDetails(bb.Struct):
    """
    Edited details for a hold.

    :ivar team_log.LegalHoldsChangeHoldDetailsDetails.legal_hold_id: Hold ID.
    :ivar team_log.LegalHoldsChangeHoldDetailsDetails.name: Hold name.
    :ivar team_log.LegalHoldsChangeHoldDetailsDetails.previous_value: Previous
        details.
    :ivar team_log.LegalHoldsChangeHoldDetailsDetails.new_value: New details.
    """

    __slots__ = [
        '_legal_hold_id_value',
        '_legal_hold_id_present',
        '_name_value',
        '_name_present',
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 legal_hold_id=None,
                 name=None,
                 previous_value=None,
                 new_value=None):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False
        self._name_value = None
        self._name_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if legal_hold_id is not None:
            self.legal_hold_id = legal_hold_id
        if name is not None:
            self.name = name
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def legal_hold_id(self):
        """
        Hold ID.

        :rtype: str
        """
        if self._legal_hold_id_present:
            return self._legal_hold_id_value
        else:
            raise AttributeError("missing required field 'legal_hold_id'")

    @legal_hold_id.setter
    def legal_hold_id(self, val):
        val = self._legal_hold_id_validator.validate(val)
        self._legal_hold_id_value = val
        self._legal_hold_id_present = True

    @legal_hold_id.deleter
    def legal_hold_id(self):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False

    @property
    def name(self):
        """
        Hold name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    @property
    def previous_value(self):
        """
        Previous details.

        :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 details.

        :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(LegalHoldsChangeHoldDetailsDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsChangeHoldDetailsDetails(legal_hold_id={!r}, name={!r}, previous_value={!r}, new_value={!r})'.format(
            self._legal_hold_id_value,
            self._name_value,
            self._previous_value_value,
            self._new_value_value,
        )

LegalHoldsChangeHoldDetailsDetails_validator = bv.Struct(LegalHoldsChangeHoldDetailsDetails)

class LegalHoldsChangeHoldDetailsType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsChangeHoldDetailsType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsChangeHoldDetailsType(description={!r})'.format(
            self._description_value,
        )

LegalHoldsChangeHoldDetailsType_validator = bv.Struct(LegalHoldsChangeHoldDetailsType)

class LegalHoldsChangeHoldNameDetails(bb.Struct):
    """
    Renamed a hold.

    :ivar team_log.LegalHoldsChangeHoldNameDetails.legal_hold_id: Hold ID.
    :ivar team_log.LegalHoldsChangeHoldNameDetails.previous_value: Previous
        Name.
    :ivar team_log.LegalHoldsChangeHoldNameDetails.new_value: New Name.
    """

    __slots__ = [
        '_legal_hold_id_value',
        '_legal_hold_id_present',
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 legal_hold_id=None,
                 previous_value=None,
                 new_value=None):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if legal_hold_id is not None:
            self.legal_hold_id = legal_hold_id
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def legal_hold_id(self):
        """
        Hold ID.

        :rtype: str
        """
        if self._legal_hold_id_present:
            return self._legal_hold_id_value
        else:
            raise AttributeError("missing required field 'legal_hold_id'")

    @legal_hold_id.setter
    def legal_hold_id(self, val):
        val = self._legal_hold_id_validator.validate(val)
        self._legal_hold_id_value = val
        self._legal_hold_id_present = True

    @legal_hold_id.deleter
    def legal_hold_id(self):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False

    @property
    def previous_value(self):
        """
        Previous 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 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(LegalHoldsChangeHoldNameDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsChangeHoldNameDetails(legal_hold_id={!r}, previous_value={!r}, new_value={!r})'.format(
            self._legal_hold_id_value,
            self._previous_value_value,
            self._new_value_value,
        )

LegalHoldsChangeHoldNameDetails_validator = bv.Struct(LegalHoldsChangeHoldNameDetails)

class LegalHoldsChangeHoldNameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsChangeHoldNameType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsChangeHoldNameType(description={!r})'.format(
            self._description_value,
        )

LegalHoldsChangeHoldNameType_validator = bv.Struct(LegalHoldsChangeHoldNameType)

class LegalHoldsExportAHoldDetails(bb.Struct):
    """
    Exported hold.

    :ivar team_log.LegalHoldsExportAHoldDetails.legal_hold_id: Hold ID.
    :ivar team_log.LegalHoldsExportAHoldDetails.name: Hold name.
    :ivar team_log.LegalHoldsExportAHoldDetails.export_name: Export name.
    """

    __slots__ = [
        '_legal_hold_id_value',
        '_legal_hold_id_present',
        '_name_value',
        '_name_present',
        '_export_name_value',
        '_export_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 legal_hold_id=None,
                 name=None,
                 export_name=None):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False
        self._name_value = None
        self._name_present = False
        self._export_name_value = None
        self._export_name_present = False
        if legal_hold_id is not None:
            self.legal_hold_id = legal_hold_id
        if name is not None:
            self.name = name
        if export_name is not None:
            self.export_name = export_name

    @property
    def legal_hold_id(self):
        """
        Hold ID.

        :rtype: str
        """
        if self._legal_hold_id_present:
            return self._legal_hold_id_value
        else:
            raise AttributeError("missing required field 'legal_hold_id'")

    @legal_hold_id.setter
    def legal_hold_id(self, val):
        val = self._legal_hold_id_validator.validate(val)
        self._legal_hold_id_value = val
        self._legal_hold_id_present = True

    @legal_hold_id.deleter
    def legal_hold_id(self):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False

    @property
    def name(self):
        """
        Hold name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    @property
    def export_name(self):
        """
        Export name.

        :rtype: str
        """
        if self._export_name_present:
            return self._export_name_value
        else:
            return None

    @export_name.setter
    def export_name(self, val):
        if val is None:
            del self.export_name
            return
        val = self._export_name_validator.validate(val)
        self._export_name_value = val
        self._export_name_present = True

    @export_name.deleter
    def export_name(self):
        self._export_name_value = None
        self._export_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsExportAHoldDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsExportAHoldDetails(legal_hold_id={!r}, name={!r}, export_name={!r})'.format(
            self._legal_hold_id_value,
            self._name_value,
            self._export_name_value,
        )

LegalHoldsExportAHoldDetails_validator = bv.Struct(LegalHoldsExportAHoldDetails)

class LegalHoldsExportAHoldType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsExportAHoldType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsExportAHoldType(description={!r})'.format(
            self._description_value,
        )

LegalHoldsExportAHoldType_validator = bv.Struct(LegalHoldsExportAHoldType)

class LegalHoldsExportCancelledDetails(bb.Struct):
    """
    Canceled export for a hold.

    :ivar team_log.LegalHoldsExportCancelledDetails.legal_hold_id: Hold ID.
    :ivar team_log.LegalHoldsExportCancelledDetails.name: Hold name.
    :ivar team_log.LegalHoldsExportCancelledDetails.export_name: Export name.
    """

    __slots__ = [
        '_legal_hold_id_value',
        '_legal_hold_id_present',
        '_name_value',
        '_name_present',
        '_export_name_value',
        '_export_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 legal_hold_id=None,
                 name=None,
                 export_name=None):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False
        self._name_value = None
        self._name_present = False
        self._export_name_value = None
        self._export_name_present = False
        if legal_hold_id is not None:
            self.legal_hold_id = legal_hold_id
        if name is not None:
            self.name = name
        if export_name is not None:
            self.export_name = export_name

    @property
    def legal_hold_id(self):
        """
        Hold ID.

        :rtype: str
        """
        if self._legal_hold_id_present:
            return self._legal_hold_id_value
        else:
            raise AttributeError("missing required field 'legal_hold_id'")

    @legal_hold_id.setter
    def legal_hold_id(self, val):
        val = self._legal_hold_id_validator.validate(val)
        self._legal_hold_id_value = val
        self._legal_hold_id_present = True

    @legal_hold_id.deleter
    def legal_hold_id(self):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False

    @property
    def name(self):
        """
        Hold name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    @property
    def export_name(self):
        """
        Export name.

        :rtype: str
        """
        if self._export_name_present:
            return self._export_name_value
        else:
            raise AttributeError("missing required field 'export_name'")

    @export_name.setter
    def export_name(self, val):
        val = self._export_name_validator.validate(val)
        self._export_name_value = val
        self._export_name_present = True

    @export_name.deleter
    def export_name(self):
        self._export_name_value = None
        self._export_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsExportCancelledDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsExportCancelledDetails(legal_hold_id={!r}, name={!r}, export_name={!r})'.format(
            self._legal_hold_id_value,
            self._name_value,
            self._export_name_value,
        )

LegalHoldsExportCancelledDetails_validator = bv.Struct(LegalHoldsExportCancelledDetails)

class LegalHoldsExportCancelledType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsExportCancelledType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsExportCancelledType(description={!r})'.format(
            self._description_value,
        )

LegalHoldsExportCancelledType_validator = bv.Struct(LegalHoldsExportCancelledType)

class LegalHoldsExportDownloadedDetails(bb.Struct):
    """
    Downloaded export for a hold.

    :ivar team_log.LegalHoldsExportDownloadedDetails.legal_hold_id: Hold ID.
    :ivar team_log.LegalHoldsExportDownloadedDetails.name: Hold name.
    :ivar team_log.LegalHoldsExportDownloadedDetails.export_name: Export name.
    :ivar team_log.LegalHoldsExportDownloadedDetails.part: Part.
    :ivar team_log.LegalHoldsExportDownloadedDetails.file_name: Filename.
    """

    __slots__ = [
        '_legal_hold_id_value',
        '_legal_hold_id_present',
        '_name_value',
        '_name_present',
        '_export_name_value',
        '_export_name_present',
        '_part_value',
        '_part_present',
        '_file_name_value',
        '_file_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 legal_hold_id=None,
                 name=None,
                 export_name=None,
                 part=None,
                 file_name=None):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False
        self._name_value = None
        self._name_present = False
        self._export_name_value = None
        self._export_name_present = False
        self._part_value = None
        self._part_present = False
        self._file_name_value = None
        self._file_name_present = False
        if legal_hold_id is not None:
            self.legal_hold_id = legal_hold_id
        if name is not None:
            self.name = name
        if export_name is not None:
            self.export_name = export_name
        if part is not None:
            self.part = part
        if file_name is not None:
            self.file_name = file_name

    @property
    def legal_hold_id(self):
        """
        Hold ID.

        :rtype: str
        """
        if self._legal_hold_id_present:
            return self._legal_hold_id_value
        else:
            raise AttributeError("missing required field 'legal_hold_id'")

    @legal_hold_id.setter
    def legal_hold_id(self, val):
        val = self._legal_hold_id_validator.validate(val)
        self._legal_hold_id_value = val
        self._legal_hold_id_present = True

    @legal_hold_id.deleter
    def legal_hold_id(self):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False

    @property
    def name(self):
        """
        Hold name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    @property
    def export_name(self):
        """
        Export name.

        :rtype: str
        """
        if self._export_name_present:
            return self._export_name_value
        else:
            raise AttributeError("missing required field 'export_name'")

    @export_name.setter
    def export_name(self, val):
        val = self._export_name_validator.validate(val)
        self._export_name_value = val
        self._export_name_present = True

    @export_name.deleter
    def export_name(self):
        self._export_name_value = None
        self._export_name_present = False

    @property
    def part(self):
        """
        Part.

        :rtype: str
        """
        if self._part_present:
            return self._part_value
        else:
            return None

    @part.setter
    def part(self, val):
        if val is None:
            del self.part
            return
        val = self._part_validator.validate(val)
        self._part_value = val
        self._part_present = True

    @part.deleter
    def part(self):
        self._part_value = None
        self._part_present = False

    @property
    def file_name(self):
        """
        Filename.

        :rtype: str
        """
        if self._file_name_present:
            return self._file_name_value
        else:
            return None

    @file_name.setter
    def file_name(self, val):
        if val is None:
            del self.file_name
            return
        val = self._file_name_validator.validate(val)
        self._file_name_value = val
        self._file_name_present = True

    @file_name.deleter
    def file_name(self):
        self._file_name_value = None
        self._file_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsExportDownloadedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsExportDownloadedDetails(legal_hold_id={!r}, name={!r}, export_name={!r}, part={!r}, file_name={!r})'.format(
            self._legal_hold_id_value,
            self._name_value,
            self._export_name_value,
            self._part_value,
            self._file_name_value,
        )

LegalHoldsExportDownloadedDetails_validator = bv.Struct(LegalHoldsExportDownloadedDetails)

class LegalHoldsExportDownloadedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsExportDownloadedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsExportDownloadedType(description={!r})'.format(
            self._description_value,
        )

LegalHoldsExportDownloadedType_validator = bv.Struct(LegalHoldsExportDownloadedType)

class LegalHoldsExportRemovedDetails(bb.Struct):
    """
    Removed export for a hold.

    :ivar team_log.LegalHoldsExportRemovedDetails.legal_hold_id: Hold ID.
    :ivar team_log.LegalHoldsExportRemovedDetails.name: Hold name.
    :ivar team_log.LegalHoldsExportRemovedDetails.export_name: Export name.
    """

    __slots__ = [
        '_legal_hold_id_value',
        '_legal_hold_id_present',
        '_name_value',
        '_name_present',
        '_export_name_value',
        '_export_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 legal_hold_id=None,
                 name=None,
                 export_name=None):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False
        self._name_value = None
        self._name_present = False
        self._export_name_value = None
        self._export_name_present = False
        if legal_hold_id is not None:
            self.legal_hold_id = legal_hold_id
        if name is not None:
            self.name = name
        if export_name is not None:
            self.export_name = export_name

    @property
    def legal_hold_id(self):
        """
        Hold ID.

        :rtype: str
        """
        if self._legal_hold_id_present:
            return self._legal_hold_id_value
        else:
            raise AttributeError("missing required field 'legal_hold_id'")

    @legal_hold_id.setter
    def legal_hold_id(self, val):
        val = self._legal_hold_id_validator.validate(val)
        self._legal_hold_id_value = val
        self._legal_hold_id_present = True

    @legal_hold_id.deleter
    def legal_hold_id(self):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False

    @property
    def name(self):
        """
        Hold name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    @property
    def export_name(self):
        """
        Export name.

        :rtype: str
        """
        if self._export_name_present:
            return self._export_name_value
        else:
            raise AttributeError("missing required field 'export_name'")

    @export_name.setter
    def export_name(self, val):
        val = self._export_name_validator.validate(val)
        self._export_name_value = val
        self._export_name_present = True

    @export_name.deleter
    def export_name(self):
        self._export_name_value = None
        self._export_name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsExportRemovedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsExportRemovedDetails(legal_hold_id={!r}, name={!r}, export_name={!r})'.format(
            self._legal_hold_id_value,
            self._name_value,
            self._export_name_value,
        )

LegalHoldsExportRemovedDetails_validator = bv.Struct(LegalHoldsExportRemovedDetails)

class LegalHoldsExportRemovedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsExportRemovedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsExportRemovedType(description={!r})'.format(
            self._description_value,
        )

LegalHoldsExportRemovedType_validator = bv.Struct(LegalHoldsExportRemovedType)

class LegalHoldsReleaseAHoldDetails(bb.Struct):
    """
    Released a hold.

    :ivar team_log.LegalHoldsReleaseAHoldDetails.legal_hold_id: Hold ID.
    :ivar team_log.LegalHoldsReleaseAHoldDetails.name: Hold name.
    """

    __slots__ = [
        '_legal_hold_id_value',
        '_legal_hold_id_present',
        '_name_value',
        '_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 legal_hold_id=None,
                 name=None):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False
        self._name_value = None
        self._name_present = False
        if legal_hold_id is not None:
            self.legal_hold_id = legal_hold_id
        if name is not None:
            self.name = name

    @property
    def legal_hold_id(self):
        """
        Hold ID.

        :rtype: str
        """
        if self._legal_hold_id_present:
            return self._legal_hold_id_value
        else:
            raise AttributeError("missing required field 'legal_hold_id'")

    @legal_hold_id.setter
    def legal_hold_id(self, val):
        val = self._legal_hold_id_validator.validate(val)
        self._legal_hold_id_value = val
        self._legal_hold_id_present = True

    @legal_hold_id.deleter
    def legal_hold_id(self):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False

    @property
    def name(self):
        """
        Hold name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsReleaseAHoldDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsReleaseAHoldDetails(legal_hold_id={!r}, name={!r})'.format(
            self._legal_hold_id_value,
            self._name_value,
        )

LegalHoldsReleaseAHoldDetails_validator = bv.Struct(LegalHoldsReleaseAHoldDetails)

class LegalHoldsReleaseAHoldType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsReleaseAHoldType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsReleaseAHoldType(description={!r})'.format(
            self._description_value,
        )

LegalHoldsReleaseAHoldType_validator = bv.Struct(LegalHoldsReleaseAHoldType)

class LegalHoldsRemoveMembersDetails(bb.Struct):
    """
    Removed members from a hold.

    :ivar team_log.LegalHoldsRemoveMembersDetails.legal_hold_id: Hold ID.
    :ivar team_log.LegalHoldsRemoveMembersDetails.name: Hold name.
    """

    __slots__ = [
        '_legal_hold_id_value',
        '_legal_hold_id_present',
        '_name_value',
        '_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 legal_hold_id=None,
                 name=None):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False
        self._name_value = None
        self._name_present = False
        if legal_hold_id is not None:
            self.legal_hold_id = legal_hold_id
        if name is not None:
            self.name = name

    @property
    def legal_hold_id(self):
        """
        Hold ID.

        :rtype: str
        """
        if self._legal_hold_id_present:
            return self._legal_hold_id_value
        else:
            raise AttributeError("missing required field 'legal_hold_id'")

    @legal_hold_id.setter
    def legal_hold_id(self, val):
        val = self._legal_hold_id_validator.validate(val)
        self._legal_hold_id_value = val
        self._legal_hold_id_present = True

    @legal_hold_id.deleter
    def legal_hold_id(self):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False

    @property
    def name(self):
        """
        Hold name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsRemoveMembersDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsRemoveMembersDetails(legal_hold_id={!r}, name={!r})'.format(
            self._legal_hold_id_value,
            self._name_value,
        )

LegalHoldsRemoveMembersDetails_validator = bv.Struct(LegalHoldsRemoveMembersDetails)

class LegalHoldsRemoveMembersType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsRemoveMembersType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsRemoveMembersType(description={!r})'.format(
            self._description_value,
        )

LegalHoldsRemoveMembersType_validator = bv.Struct(LegalHoldsRemoveMembersType)

class LegalHoldsReportAHoldDetails(bb.Struct):
    """
    Created a summary report for a hold.

    :ivar team_log.LegalHoldsReportAHoldDetails.legal_hold_id: Hold ID.
    :ivar team_log.LegalHoldsReportAHoldDetails.name: Hold name.
    """

    __slots__ = [
        '_legal_hold_id_value',
        '_legal_hold_id_present',
        '_name_value',
        '_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 legal_hold_id=None,
                 name=None):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False
        self._name_value = None
        self._name_present = False
        if legal_hold_id is not None:
            self.legal_hold_id = legal_hold_id
        if name is not None:
            self.name = name

    @property
    def legal_hold_id(self):
        """
        Hold ID.

        :rtype: str
        """
        if self._legal_hold_id_present:
            return self._legal_hold_id_value
        else:
            raise AttributeError("missing required field 'legal_hold_id'")

    @legal_hold_id.setter
    def legal_hold_id(self, val):
        val = self._legal_hold_id_validator.validate(val)
        self._legal_hold_id_value = val
        self._legal_hold_id_present = True

    @legal_hold_id.deleter
    def legal_hold_id(self):
        self._legal_hold_id_value = None
        self._legal_hold_id_present = False

    @property
    def name(self):
        """
        Hold name.

        :rtype: str
        """
        if self._name_present:
            return self._name_value
        else:
            raise AttributeError("missing required field 'name'")

    @name.setter
    def name(self, val):
        val = self._name_validator.validate(val)
        self._name_value = val
        self._name_present = True

    @name.deleter
    def name(self):
        self._name_value = None
        self._name_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsReportAHoldDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsReportAHoldDetails(legal_hold_id={!r}, name={!r})'.format(
            self._legal_hold_id_value,
            self._name_value,
        )

LegalHoldsReportAHoldDetails_validator = bv.Struct(LegalHoldsReportAHoldDetails)

class LegalHoldsReportAHoldType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(LegalHoldsReportAHoldType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LegalHoldsReportAHoldType(description={!r})'.format(
            self._description_value,
        )

LegalHoldsReportAHoldType_validator = bv.Struct(LegalHoldsReportAHoldType)

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 DesktopDeviceSessionLogInfo
        LinkedDeviceLogInfo.desktop_device_session: desktop device session's
        details.
    :ivar LegacyDeviceSessionLogInfo LinkedDeviceLogInfo.legacy_device_session:
        legacy device session's details.
    :ivar MobileDeviceSessionLogInfo LinkedDeviceLogInfo.mobile_device_session:
        mobile device session's details.
    :ivar WebDeviceSessionLogInfo LinkedDeviceLogInfo.web_device_session: web
        device session's details.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @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 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)

    @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 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)

    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_legacy_device_session(self):
        """
        Check if the union tag is ``legacy_device_session``.

        :rtype: bool
        """
        return self._tag == 'legacy_device_session'

    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_web_device_session(self):
        """
        Check if the union tag is ``web_device_session``.

        :rtype: bool
        """
        return self._tag == 'web_device_session'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    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_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 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_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 _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 LockStatus(bb.Union):
    """
    File lock status

    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
    locked = None
    # Attribute is overwritten below the class definition
    unlocked = None
    # Attribute is overwritten below the class definition
    other = None

    def is_locked(self):
        """
        Check if the union tag is ``locked``.

        :rtype: bool
        """
        return self._tag == 'locked'

    def is_unlocked(self):
        """
        Check if the union tag is ``unlocked``.

        :rtype: bool
        """
        return self._tag == 'unlocked'

    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(LockStatus, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'LockStatus(%r, %r)' % (self._tag, self._value)

LockStatus_validator = bv.Union(LockStatus)

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
    apple_oauth = None
    # Attribute is overwritten below the class definition
    first_party_token_exchange = None
    # Attribute is overwritten below the class definition
    google_oauth = None
    # Attribute is overwritten below the class definition
    password = None
    # Attribute is overwritten below the class definition
    qr_code = None
    # Attribute is overwritten below the class definition
    saml = None
    # Attribute is overwritten below the class definition
    two_factor_authentication = None
    # Attribute is overwritten below the class definition
    web_session = None
    # Attribute is overwritten below the class definition
    other = None

    def is_apple_oauth(self):
        """
        Check if the union tag is ``apple_oauth``.

        :rtype: bool
        """
        return self._tag == 'apple_oauth'

    def is_first_party_token_exchange(self):
        """
        Check if the union tag is ``first_party_token_exchange``.

        :rtype: bool
        """
        return self._tag == 'first_party_token_exchange'

    def is_google_oauth(self):
        """
        Check if the union tag is ``google_oauth``.

        :rtype: bool
        """
        return self._tag == 'google_oauth'

    def is_password(self):
        """
        Check if the union tag is ``password``.

        :rtype: bool
        """
        return self._tag == 'password'

    def is_qr_code(self):
        """
        Check if the union tag is ``qr_code``.

        :rtype: bool
        """
        return self._tag == 'qr_code'

    def is_saml(self):
        """
        Check if the union tag is ``saml``.

        :rtype: bool
        """
        return self._tag == 'saml'

    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_web_session(self):
        """
        Check if the union tag is ``web_session``.

        :rtype: bool
        """
        return self._tag == 'web_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(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.

    :ivar team_log.LogoutDetails.login_id: Login session id.
    """

    __slots__ = [
        '_login_id_value',
        '_login_id_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 login_id=None):
        self._login_id_value = None
        self._login_id_present = False
        if login_id is not None:
            self.login_id = login_id

    @property
    def login_id(self):
        """
        Login session id.

        :rtype: str
        """
        if self._login_id_present:
            return self._login_id_value
        else:
            return None

    @login_id.setter
    def login_id(self, val):
        if val is None:
            del self.login_id
            return
        val = self._login_id_validator.validate(val)
        self._login_id_value = val
        self._login_id_present = True

    @login_id.deleter
    def login_id(self):
        self._login_id_value = None
        self._login_id_present = False

    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(login_id={!r})'.format(
            self._login_id_value,
        )

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.
    :ivar team_log.MemberChangeStatusDetails.new_team: The user's new team name.
        This field is relevant when the user is transferred off the team.
    :ivar team_log.MemberChangeStatusDetails.previous_team: The user's previous
        team name. This field is relevant when the user is transferred onto the
        team.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
        '_action_value',
        '_action_present',
        '_new_team_value',
        '_new_team_present',
        '_previous_team_value',
        '_previous_team_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None,
                 action=None,
                 new_team=None,
                 previous_team=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
        self._new_team_value = None
        self._new_team_present = False
        self._previous_team_value = None
        self._previous_team_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
        if new_team is not None:
            self.new_team = new_team
        if previous_team is not None:
            self.previous_team = previous_team

    @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

    @property
    def new_team(self):
        """
        The user's new team name. This field is relevant when the user is
        transferred off the team.

        :rtype: str
        """
        if self._new_team_present:
            return self._new_team_value
        else:
            return None

    @new_team.setter
    def new_team(self, val):
        if val is None:
            del self.new_team
            return
        val = self._new_team_validator.validate(val)
        self._new_team_value = val
        self._new_team_present = True

    @new_team.deleter
    def new_team(self):
        self._new_team_value = None
        self._new_team_present = False

    @property
    def previous_team(self):
        """
        The user's previous team name. This field is relevant when the user is
        transferred onto the team.

        :rtype: str
        """
        if self._previous_team_present:
            return self._previous_team_value
        else:
            return None

    @previous_team.setter
    def previous_team(self, val):
        if val is None:
            del self.previous_team
            return
        val = self._previous_team_validator.validate(val)
        self._previous_team_value = val
        self._previous_team_present = True

    @previous_team.deleter
    def previous_team(self):
        self._previous_team_value = None
        self._previous_team_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}, new_team={!r}, previous_team={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
            self._action_value,
            self._new_team_value,
            self._previous_team_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 MemberDeleteProfilePhotoDetails(bb.Struct):
    """
    Deleted team member profile photo.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberDeleteProfilePhotoDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberDeleteProfilePhotoDetails()'

MemberDeleteProfilePhotoDetails_validator = bv.Struct(MemberDeleteProfilePhotoDetails)

class MemberDeleteProfilePhotoType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberDeleteProfilePhotoType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberDeleteProfilePhotoType(description={!r})'.format(
            self._description_value,
        )

MemberDeleteProfilePhotoType_validator = bv.Struct(MemberDeleteProfilePhotoType)

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
    leave = None
    # Attribute is overwritten below the class definition
    offboard = 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_leave(self):
        """
        Check if the union tag is ``leave``.

        :rtype: bool
        """
        return self._tag == 'leave'

    def is_offboard(self):
        """
        Check if the union tag is ``offboard``.

        :rtype: bool
        """
        return self._tag == 'offboard'

    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 MemberSendInvitePolicy(bb.Union):
    """
    Policy for controlling whether team members can send team invites

    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
    everyone = None
    # Attribute is overwritten below the class definition
    specific_members = 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_everyone(self):
        """
        Check if the union tag is ``everyone``.

        :rtype: bool
        """
        return self._tag == 'everyone'

    def is_specific_members(self):
        """
        Check if the union tag is ``specific_members``.

        :rtype: bool
        """
        return self._tag == 'specific_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(MemberSendInvitePolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSendInvitePolicy(%r, %r)' % (self._tag, self._value)

MemberSendInvitePolicy_validator = bv.Union(MemberSendInvitePolicy)

class MemberSendInvitePolicyChangedDetails(bb.Struct):
    """
    Changed member send invite policy for team.

    :ivar team_log.MemberSendInvitePolicyChangedDetails.new_value: New team
        member send invite policy.
    :ivar team_log.MemberSendInvitePolicyChangedDetails.previous_value: Previous
        team member send invite 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 member send invite policy.

        :rtype: MemberSendInvitePolicy
        """
        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 send invite policy.

        :rtype: MemberSendInvitePolicy
        """
        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(MemberSendInvitePolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSendInvitePolicyChangedDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

MemberSendInvitePolicyChangedDetails_validator = bv.Struct(MemberSendInvitePolicyChangedDetails)

class MemberSendInvitePolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSendInvitePolicyChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSendInvitePolicyChangedType(description={!r})'.format(
            self._description_value,
        )

MemberSendInvitePolicyChangedType_validator = bv.Struct(MemberSendInvitePolicyChangedType)

class MemberSetProfilePhotoDetails(bb.Struct):
    """
    Set team member profile photo.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSetProfilePhotoDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSetProfilePhotoDetails()'

MemberSetProfilePhotoDetails_validator = bv.Struct(MemberSetProfilePhotoDetails)

class MemberSetProfilePhotoType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(MemberSetProfilePhotoType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'MemberSetProfilePhotoType(description={!r})'.format(
            self._description_value,
        )

MemberSetProfilePhotoType_validator = bv.Struct(MemberSetProfilePhotoType)

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
    active = None
    # Attribute is overwritten below the class definition
    invited = None
    # Attribute is overwritten below the class definition
    moved_to_another_team = None
    # Attribute is overwritten below the class definition
    not_joined = None
    # Attribute is overwritten below the class definition
    removed = None
    # Attribute is overwritten below the class definition
    suspended = None
    # Attribute is overwritten below the class definition
    other = None

    def is_active(self):
        """
        Check if the union tag is ``active``.

        :rtype: bool
        """
        return self._tag == 'active'

    def is_invited(self):
        """
        Check if the union tag is ``invited``.

        :rtype: bool
        """
        return self._tag == 'invited'

    def is_moved_to_another_team(self):
        """
        Check if the union tag is ``moved_to_another_team``.

        :rtype: bool
        """
        return self._tag == 'moved_to_another_team'

    def is_not_joined(self):
        """
        Check if the union tag is ``not_joined``.

        :rtype: bool
        """
        return self._tag == 'not_joined'

    def is_removed(self):
        """
        Check if the union tag is ``removed``.

        :rtype: bool
        """
        return self._tag == 'removed'

    def is_suspended(self):
        """
        Check if the union tag is ``suspended``.

        :rtype: bool
        """
        return self._tag == 'suspended'

    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.
    :ivar team_log.NamespaceRelativePathLogInfo.is_shared_namespace: True if the
        namespace is shared. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_ns_id_value',
        '_ns_id_present',
        '_relative_path_value',
        '_relative_path_present',
        '_is_shared_namespace_value',
        '_is_shared_namespace_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 ns_id=None,
                 relative_path=None,
                 is_shared_namespace=None):
        self._ns_id_value = None
        self._ns_id_present = False
        self._relative_path_value = None
        self._relative_path_present = False
        self._is_shared_namespace_value = None
        self._is_shared_namespace_present = False
        if ns_id is not None:
            self.ns_id = ns_id
        if relative_path is not None:
            self.relative_path = relative_path
        if is_shared_namespace is not None:
            self.is_shared_namespace = is_shared_namespace

    @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

    @property
    def is_shared_namespace(self):
        """
        True if the namespace is shared. Might be missing due to historical data
        gap.

        :rtype: bool
        """
        if self._is_shared_namespace_present:
            return self._is_shared_namespace_value
        else:
            return None

    @is_shared_namespace.setter
    def is_shared_namespace(self, val):
        if val is None:
            del self.is_shared_namespace
            return
        val = self._is_shared_namespace_validator.validate(val)
        self._is_shared_namespace_value = val
        self._is_shared_namespace_present = True

    @is_shared_namespace.deleter
    def is_shared_namespace(self):
        self._is_shared_namespace_value = None
        self._is_shared_namespace_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}, is_shared_namespace={!r})'.format(
            self._ns_id_value,
            self._relative_path_value,
            self._is_shared_namespace_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 NoExpirationLinkGenCreateReportDetails(bb.Struct):
    """
    Report created: Links created with no expiration.

    :ivar team_log.NoExpirationLinkGenCreateReportDetails.start_date: Report
        start date.
    :ivar team_log.NoExpirationLinkGenCreateReportDetails.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(NoExpirationLinkGenCreateReportDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoExpirationLinkGenCreateReportDetails(start_date={!r}, end_date={!r})'.format(
            self._start_date_value,
            self._end_date_value,
        )

NoExpirationLinkGenCreateReportDetails_validator = bv.Struct(NoExpirationLinkGenCreateReportDetails)

class NoExpirationLinkGenCreateReportType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoExpirationLinkGenCreateReportType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoExpirationLinkGenCreateReportType(description={!r})'.format(
            self._description_value,
        )

NoExpirationLinkGenCreateReportType_validator = bv.Struct(NoExpirationLinkGenCreateReportType)

class NoExpirationLinkGenReportFailedDetails(bb.Struct):
    """
    Couldn't create report: Links created with no expiration.

    :ivar team_log.NoExpirationLinkGenReportFailedDetails.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(NoExpirationLinkGenReportFailedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoExpirationLinkGenReportFailedDetails(failure_reason={!r})'.format(
            self._failure_reason_value,
        )

NoExpirationLinkGenReportFailedDetails_validator = bv.Struct(NoExpirationLinkGenReportFailedDetails)

class NoExpirationLinkGenReportFailedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoExpirationLinkGenReportFailedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoExpirationLinkGenReportFailedType(description={!r})'.format(
            self._description_value,
        )

NoExpirationLinkGenReportFailedType_validator = bv.Struct(NoExpirationLinkGenReportFailedType)

class NoPasswordLinkGenCreateReportDetails(bb.Struct):
    """
    Report created: Links created without passwords.

    :ivar team_log.NoPasswordLinkGenCreateReportDetails.start_date: Report start
        date.
    :ivar team_log.NoPasswordLinkGenCreateReportDetails.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(NoPasswordLinkGenCreateReportDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoPasswordLinkGenCreateReportDetails(start_date={!r}, end_date={!r})'.format(
            self._start_date_value,
            self._end_date_value,
        )

NoPasswordLinkGenCreateReportDetails_validator = bv.Struct(NoPasswordLinkGenCreateReportDetails)

class NoPasswordLinkGenCreateReportType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoPasswordLinkGenCreateReportType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoPasswordLinkGenCreateReportType(description={!r})'.format(
            self._description_value,
        )

NoPasswordLinkGenCreateReportType_validator = bv.Struct(NoPasswordLinkGenCreateReportType)

class NoPasswordLinkGenReportFailedDetails(bb.Struct):
    """
    Couldn't create report: Links created without passwords.

    :ivar team_log.NoPasswordLinkGenReportFailedDetails.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(NoPasswordLinkGenReportFailedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoPasswordLinkGenReportFailedDetails(failure_reason={!r})'.format(
            self._failure_reason_value,
        )

NoPasswordLinkGenReportFailedDetails_validator = bv.Struct(NoPasswordLinkGenReportFailedDetails)

class NoPasswordLinkGenReportFailedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoPasswordLinkGenReportFailedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoPasswordLinkGenReportFailedType(description={!r})'.format(
            self._description_value,
        )

NoPasswordLinkGenReportFailedType_validator = bv.Struct(NoPasswordLinkGenReportFailedType)

class NoPasswordLinkViewCreateReportDetails(bb.Struct):
    """
    Report created: Views of links without passwords.

    :ivar team_log.NoPasswordLinkViewCreateReportDetails.start_date: Report
        start date.
    :ivar team_log.NoPasswordLinkViewCreateReportDetails.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(NoPasswordLinkViewCreateReportDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoPasswordLinkViewCreateReportDetails(start_date={!r}, end_date={!r})'.format(
            self._start_date_value,
            self._end_date_value,
        )

NoPasswordLinkViewCreateReportDetails_validator = bv.Struct(NoPasswordLinkViewCreateReportDetails)

class NoPasswordLinkViewCreateReportType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoPasswordLinkViewCreateReportType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoPasswordLinkViewCreateReportType(description={!r})'.format(
            self._description_value,
        )

NoPasswordLinkViewCreateReportType_validator = bv.Struct(NoPasswordLinkViewCreateReportType)

class NoPasswordLinkViewReportFailedDetails(bb.Struct):
    """
    Couldn't create report: Views of links without passwords.

    :ivar team_log.NoPasswordLinkViewReportFailedDetails.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(NoPasswordLinkViewReportFailedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoPasswordLinkViewReportFailedDetails(failure_reason={!r})'.format(
            self._failure_reason_value,
        )

NoPasswordLinkViewReportFailedDetails_validator = bv.Struct(NoPasswordLinkViewReportFailedDetails)

class NoPasswordLinkViewReportFailedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(NoPasswordLinkViewReportFailedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NoPasswordLinkViewReportFailedType(description={!r})'.format(
            self._description_value,
        )

NoPasswordLinkViewReportFailedType_validator = bv.Struct(NoPasswordLinkViewReportFailedType)

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 NonTrustedTeamDetails(bb.Struct):
    """
    The email to which the request was sent

    :ivar team_log.NonTrustedTeamDetails.team: The email to which the request
        was sent.
    """

    __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 email to which the request was sent.

        :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(NonTrustedTeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'NonTrustedTeamDetails(team={!r})'.format(
            self._team_value,
        )

NonTrustedTeamDetails_validator = bv.Struct(NonTrustedTeamDetails)

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 OrganizationDetails(bb.Struct):
    """
    More details about the organization.

    :ivar team_log.OrganizationDetails.organization: The name of the
        organization.
    """

    __slots__ = [
        '_organization_value',
        '_organization_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 organization=None):
        self._organization_value = None
        self._organization_present = False
        if organization is not None:
            self.organization = organization

    @property
    def organization(self):
        """
        The name of the organization.

        :rtype: str
        """
        if self._organization_present:
            return self._organization_value
        else:
            raise AttributeError("missing required field 'organization'")

    @organization.setter
    def organization(self, val):
        val = self._organization_validator.validate(val)
        self._organization_value = val
        self._organization_present = True

    @organization.deleter
    def organization(self):
        self._organization_value = None
        self._organization_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(OrganizationDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'OrganizationDetails(organization={!r})'.format(
            self._organization_value,
        )

OrganizationDetails_validator = bv.Struct(OrganizationDetails)

class OrganizationName(bb.Struct):
    """
    The name of the organization

    :ivar team_log.OrganizationName.organization: The name of the organization.
    """

    __slots__ = [
        '_organization_value',
        '_organization_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 organization=None):
        self._organization_value = None
        self._organization_present = False
        if organization is not None:
            self.organization = organization

    @property
    def organization(self):
        """
        The name of the organization.

        :rtype: str
        """
        if self._organization_present:
            return self._organization_value
        else:
            raise AttributeError("missing required field 'organization'")

    @organization.setter
    def organization(self, val):
        val = self._organization_validator.validate(val)
        self._organization_value = val
        self._organization_present = True

    @organization.deleter
    def organization(self):
        self._organization_value = None
        self._organization_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(OrganizationName, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'OrganizationName(organization={!r})'.format(
            self._organization_value,
        )

OrganizationName_validator = bv.Struct(OrganizationName)

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 OutdatedLinkViewCreateReportDetails(bb.Struct):
    """
    Report created: Views of old links.

    :ivar team_log.OutdatedLinkViewCreateReportDetails.start_date: Report start
        date.
    :ivar team_log.OutdatedLinkViewCreateReportDetails.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(OutdatedLinkViewCreateReportDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'OutdatedLinkViewCreateReportDetails(start_date={!r}, end_date={!r})'.format(
            self._start_date_value,
            self._end_date_value,
        )

OutdatedLinkViewCreateReportDetails_validator = bv.Struct(OutdatedLinkViewCreateReportDetails)

class OutdatedLinkViewCreateReportType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(OutdatedLinkViewCreateReportType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'OutdatedLinkViewCreateReportType(description={!r})'.format(
            self._description_value,
        )

OutdatedLinkViewCreateReportType_validator = bv.Struct(OutdatedLinkViewCreateReportType)

class OutdatedLinkViewReportFailedDetails(bb.Struct):
    """
    Couldn't create report: Views of old links.

    :ivar team_log.OutdatedLinkViewReportFailedDetails.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(OutdatedLinkViewReportFailedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'OutdatedLinkViewReportFailedDetails(failure_reason={!r})'.format(
            self._failure_reason_value,
        )

OutdatedLinkViewReportFailedDetails_validator = bv.Struct(OutdatedLinkViewReportFailedDetails)

class OutdatedLinkViewReportFailedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(OutdatedLinkViewReportFailedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'OutdatedLinkViewReportFailedType(description={!r})'.format(
            self._description_value,
        )

OutdatedLinkViewReportFailedType_validator = bv.Struct(OutdatedLinkViewReportFailedType)

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
    commenter = None
    # Attribute is overwritten below the class definition
    editor = None
    # Attribute is overwritten below the class definition
    viewer = None
    # Attribute is overwritten below the class definition
    other = None

    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_viewer(self):
        """
        Check if the union tag is ``viewer``.

        :rtype: bool
        """
        return self._tag == 'viewer'

    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 users and/or groups 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:
            return None

    @target_asset_index.setter
    def target_asset_index(self, val):
        if val is None:
            del self.target_asset_index
            return
        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:
            return None

    @parent_asset_index.setter
    def parent_asset_index(self, val):
        if val is None:
            del self.parent_asset_index
            return
        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 users and/or groups 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 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 user 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 users and/or groups.

    :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 users and/or groups.

    :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 PaperPublishedLinkChangePermissionDetails(bb.Struct):
    """
    Changed permissions for published doc.

    :ivar team_log.PaperPublishedLinkChangePermissionDetails.event_uuid: Event
        unique identifier.
    :ivar
        team_log.PaperPublishedLinkChangePermissionDetails.new_permission_level:
        New permission level.
    :ivar
        team_log.PaperPublishedLinkChangePermissionDetails.previous_permission_level:
        Previous permission level.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_new_permission_level_value',
        '_new_permission_level_present',
        '_previous_permission_level_value',
        '_previous_permission_level_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 new_permission_level=None,
                 previous_permission_level=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._new_permission_level_value = None
        self._new_permission_level_present = False
        self._previous_permission_level_value = None
        self._previous_permission_level_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if new_permission_level is not None:
            self.new_permission_level = new_permission_level
        if previous_permission_level is not None:
            self.previous_permission_level = previous_permission_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_permission_level(self):
        """
        New permission level.

        :rtype: str
        """
        if self._new_permission_level_present:
            return self._new_permission_level_value
        else:
            raise AttributeError("missing required field 'new_permission_level'")

    @new_permission_level.setter
    def new_permission_level(self, val):
        val = self._new_permission_level_validator.validate(val)
        self._new_permission_level_value = val
        self._new_permission_level_present = True

    @new_permission_level.deleter
    def new_permission_level(self):
        self._new_permission_level_value = None
        self._new_permission_level_present = False

    @property
    def previous_permission_level(self):
        """
        Previous permission level.

        :rtype: str
        """
        if self._previous_permission_level_present:
            return self._previous_permission_level_value
        else:
            raise AttributeError("missing required field 'previous_permission_level'")

    @previous_permission_level.setter
    def previous_permission_level(self, val):
        val = self._previous_permission_level_validator.validate(val)
        self._previous_permission_level_value = val
        self._previous_permission_level_present = True

    @previous_permission_level.deleter
    def previous_permission_level(self):
        self._previous_permission_level_value = None
        self._previous_permission_level_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperPublishedLinkChangePermissionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperPublishedLinkChangePermissionDetails(event_uuid={!r}, new_permission_level={!r}, previous_permission_level={!r})'.format(
            self._event_uuid_value,
            self._new_permission_level_value,
            self._previous_permission_level_value,
        )

PaperPublishedLinkChangePermissionDetails_validator = bv.Struct(PaperPublishedLinkChangePermissionDetails)

class PaperPublishedLinkChangePermissionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PaperPublishedLinkChangePermissionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PaperPublishedLinkChangePermissionType(description={!r})'.format(
            self._description_value,
        )

PaperPublishedLinkChangePermissionType_validator = bv.Struct(PaperPublishedLinkChangePermissionType)

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 GroupLogInfo ParticipantLogInfo.group: Group details.
    :ivar UserLogInfo ParticipantLogInfo.user: A user with a Dropbox account.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @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)

    @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)

    def is_group(self):
        """
        Check if the union tag is ``group``.

        :rtype: bool
        """
        return self._tag == 'group'

    def is_user(self):
        """
        Check if the union tag is ``user``.

        :rtype: bool
        """
        return self._tag == 'user'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    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 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 _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
    allow = None
    # 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_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_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(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 PasswordStrengthRequirementsChangePolicyDetails(bb.Struct):
    """
    Changed team password strength requirements.

    :ivar
        team_log.PasswordStrengthRequirementsChangePolicyDetails.previous_value:
        Old password strength policy.
    :ivar team_log.PasswordStrengthRequirementsChangePolicyDetails.new_value:
        New password strength 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):
        """
        Old password strength policy.

        :rtype: team_policies.PasswordStrengthPolicy
        """
        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 password strength policy.

        :rtype: team_policies.PasswordStrengthPolicy
        """
        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(PasswordStrengthRequirementsChangePolicyDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PasswordStrengthRequirementsChangePolicyDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

PasswordStrengthRequirementsChangePolicyDetails_validator = bv.Struct(PasswordStrengthRequirementsChangePolicyDetails)

class PasswordStrengthRequirementsChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PasswordStrengthRequirementsChangePolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PasswordStrengthRequirementsChangePolicyType(description={!r})'.format(
            self._description_value,
        )

PasswordStrengthRequirementsChangePolicyType_validator = bv.Struct(PasswordStrengthRequirementsChangePolicyType)

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 PendingSecondaryEmailAddedDetails(bb.Struct):
    """
    Added pending secondary email.

    :ivar team_log.PendingSecondaryEmailAddedDetails.secondary_email: New
        pending secondary email.
    """

    __slots__ = [
        '_secondary_email_value',
        '_secondary_email_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 secondary_email=None):
        self._secondary_email_value = None
        self._secondary_email_present = False
        if secondary_email is not None:
            self.secondary_email = secondary_email

    @property
    def secondary_email(self):
        """
        New pending secondary email.

        :rtype: str
        """
        if self._secondary_email_present:
            return self._secondary_email_value
        else:
            raise AttributeError("missing required field 'secondary_email'")

    @secondary_email.setter
    def secondary_email(self, val):
        val = self._secondary_email_validator.validate(val)
        self._secondary_email_value = val
        self._secondary_email_present = True

    @secondary_email.deleter
    def secondary_email(self):
        self._secondary_email_value = None
        self._secondary_email_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PendingSecondaryEmailAddedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PendingSecondaryEmailAddedDetails(secondary_email={!r})'.format(
            self._secondary_email_value,
        )

PendingSecondaryEmailAddedDetails_validator = bv.Struct(PendingSecondaryEmailAddedDetails)

class PendingSecondaryEmailAddedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(PendingSecondaryEmailAddedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PendingSecondaryEmailAddedType(description={!r})'.format(
            self._description_value,
        )

PendingSecondaryEmailAddedType_validator = bv.Struct(PendingSecondaryEmailAddedType)

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 PolicyType(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
    retention = None
    # Attribute is overwritten below the class definition
    other = None

    def is_retention(self):
        """
        Check if the union tag is ``retention``.

        :rtype: bool
        """
        return self._tag == 'retention'

    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(PolicyType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'PolicyType(%r, %r)' % (self._tag, self._value)

PolicyType_validator = bv.Union(PolicyType)

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_device = 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_device(self):
        """
        Check if the union tag is ``unlink_device``.

        :rtype: bool
        """
        return self._tag == 'unlink_device'

    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 RewindFolderDetails(bb.Struct):
    """
    Rewound a folder.

    :ivar team_log.RewindFolderDetails.rewind_folder_target_ts_ms: Folder was
        Rewound to this date.
    """

    __slots__ = [
        '_rewind_folder_target_ts_ms_value',
        '_rewind_folder_target_ts_ms_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 rewind_folder_target_ts_ms=None):
        self._rewind_folder_target_ts_ms_value = None
        self._rewind_folder_target_ts_ms_present = False
        if rewind_folder_target_ts_ms is not None:
            self.rewind_folder_target_ts_ms = rewind_folder_target_ts_ms

    @property
    def rewind_folder_target_ts_ms(self):
        """
        Folder was Rewound to this date.

        :rtype: datetime.datetime
        """
        if self._rewind_folder_target_ts_ms_present:
            return self._rewind_folder_target_ts_ms_value
        else:
            raise AttributeError("missing required field 'rewind_folder_target_ts_ms'")

    @rewind_folder_target_ts_ms.setter
    def rewind_folder_target_ts_ms(self, val):
        val = self._rewind_folder_target_ts_ms_validator.validate(val)
        self._rewind_folder_target_ts_ms_value = val
        self._rewind_folder_target_ts_ms_present = True

    @rewind_folder_target_ts_ms.deleter
    def rewind_folder_target_ts_ms(self):
        self._rewind_folder_target_ts_ms_value = None
        self._rewind_folder_target_ts_ms_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(RewindFolderDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'RewindFolderDetails(rewind_folder_target_ts_ms={!r})'.format(
            self._rewind_folder_target_ts_ms_value,
        )

RewindFolderDetails_validator = bv.Struct(RewindFolderDetails)

class RewindFolderType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(RewindFolderType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'RewindFolderType(description={!r})'.format(
            self._description_value,
        )

RewindFolderType_validator = bv.Struct(RewindFolderType)

class RewindPolicy(bb.Union):
    """
    Policy for controlling whether team members can rewind

    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
    admins_only = None
    # Attribute is overwritten below the class definition
    everyone = None
    # Attribute is overwritten below the class definition
    other = None

    def is_admins_only(self):
        """
        Check if the union tag is ``admins_only``.

        :rtype: bool
        """
        return self._tag == 'admins_only'

    def is_everyone(self):
        """
        Check if the union tag is ``everyone``.

        :rtype: bool
        """
        return self._tag == 'everyone'

    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(RewindPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'RewindPolicy(%r, %r)' % (self._tag, self._value)

RewindPolicy_validator = bv.Union(RewindPolicy)

class RewindPolicyChangedDetails(bb.Struct):
    """
    Changed Rewind policy for team.

    :ivar team_log.RewindPolicyChangedDetails.new_value: New Dropbox Rewind
        policy.
    :ivar team_log.RewindPolicyChangedDetails.previous_value: Previous Dropbox
        Rewind 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 Rewind policy.

        :rtype: RewindPolicy
        """
        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 Rewind policy.

        :rtype: RewindPolicy
        """
        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(RewindPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'RewindPolicyChangedDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

RewindPolicyChangedDetails_validator = bv.Struct(RewindPolicyChangedDetails)

class RewindPolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(RewindPolicyChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'RewindPolicyChangedType(description={!r})'.format(
            self._description_value,
        )

RewindPolicyChangedType_validator = bv.Struct(RewindPolicyChangedType)

class SecondaryEmailDeletedDetails(bb.Struct):
    """
    Deleted secondary email.

    :ivar team_log.SecondaryEmailDeletedDetails.secondary_email: Deleted
        secondary email.
    """

    __slots__ = [
        '_secondary_email_value',
        '_secondary_email_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 secondary_email=None):
        self._secondary_email_value = None
        self._secondary_email_present = False
        if secondary_email is not None:
            self.secondary_email = secondary_email

    @property
    def secondary_email(self):
        """
        Deleted secondary email.

        :rtype: str
        """
        if self._secondary_email_present:
            return self._secondary_email_value
        else:
            raise AttributeError("missing required field 'secondary_email'")

    @secondary_email.setter
    def secondary_email(self, val):
        val = self._secondary_email_validator.validate(val)
        self._secondary_email_value = val
        self._secondary_email_present = True

    @secondary_email.deleter
    def secondary_email(self):
        self._secondary_email_value = None
        self._secondary_email_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SecondaryEmailDeletedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SecondaryEmailDeletedDetails(secondary_email={!r})'.format(
            self._secondary_email_value,
        )

SecondaryEmailDeletedDetails_validator = bv.Struct(SecondaryEmailDeletedDetails)

class SecondaryEmailDeletedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SecondaryEmailDeletedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SecondaryEmailDeletedType(description={!r})'.format(
            self._description_value,
        )

SecondaryEmailDeletedType_validator = bv.Struct(SecondaryEmailDeletedType)

class SecondaryEmailVerifiedDetails(bb.Struct):
    """
    Verified secondary email.

    :ivar team_log.SecondaryEmailVerifiedDetails.secondary_email: Verified
        secondary email.
    """

    __slots__ = [
        '_secondary_email_value',
        '_secondary_email_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 secondary_email=None):
        self._secondary_email_value = None
        self._secondary_email_present = False
        if secondary_email is not None:
            self.secondary_email = secondary_email

    @property
    def secondary_email(self):
        """
        Verified secondary email.

        :rtype: str
        """
        if self._secondary_email_present:
            return self._secondary_email_value
        else:
            raise AttributeError("missing required field 'secondary_email'")

    @secondary_email.setter
    def secondary_email(self, val):
        val = self._secondary_email_validator.validate(val)
        self._secondary_email_value = val
        self._secondary_email_present = True

    @secondary_email.deleter
    def secondary_email(self):
        self._secondary_email_value = None
        self._secondary_email_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SecondaryEmailVerifiedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SecondaryEmailVerifiedDetails(secondary_email={!r})'.format(
            self._secondary_email_value,
        )

SecondaryEmailVerifiedDetails_validator = bv.Struct(SecondaryEmailVerifiedDetails)

class SecondaryEmailVerifiedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SecondaryEmailVerifiedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SecondaryEmailVerifiedType(description={!r})'.format(
            self._description_value,
        )

SecondaryEmailVerifiedType_validator = bv.Struct(SecondaryEmailVerifiedType)

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 SendForSignaturePolicy(bb.Union):
    """
    Policy for controlling team access to send for signature feature

    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(SendForSignaturePolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SendForSignaturePolicy(%r, %r)' % (self._tag, self._value)

SendForSignaturePolicy_validator = bv.Union(SendForSignaturePolicy)

class SendForSignaturePolicyChangedDetails(bb.Struct):
    """
    Changed send for signature policy for team.

    :ivar team_log.SendForSignaturePolicyChangedDetails.new_value: New send for
        signature policy.
    :ivar team_log.SendForSignaturePolicyChangedDetails.previous_value: Previous
        send for signature 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 send for signature policy.

        :rtype: SendForSignaturePolicy
        """
        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 send for signature policy.

        :rtype: SendForSignaturePolicy
        """
        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(SendForSignaturePolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SendForSignaturePolicyChangedDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SendForSignaturePolicyChangedDetails_validator = bv.Struct(SendForSignaturePolicyChangedDetails)

class SendForSignaturePolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SendForSignaturePolicyChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SendForSignaturePolicyChangedType(description={!r})'.format(
            self._description_value,
        )

SendForSignaturePolicyChangedType_validator = bv.Struct(SendForSignaturePolicyChangedType)

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 SharedContentRestoreInviteesDetails(bb.Struct):
    """
    Restored shared file/folder invitees.

    :ivar
        team_log.SharedContentRestoreInviteesDetails.shared_content_access_level:
        Shared content access level.
    :ivar team_log.SharedContentRestoreInviteesDetails.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(SharedContentRestoreInviteesDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRestoreInviteesDetails(shared_content_access_level={!r}, invitees={!r})'.format(
            self._shared_content_access_level_value,
            self._invitees_value,
        )

SharedContentRestoreInviteesDetails_validator = bv.Struct(SharedContentRestoreInviteesDetails)

class SharedContentRestoreInviteesType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentRestoreInviteesType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRestoreInviteesType(description={!r})'.format(
            self._description_value,
        )

SharedContentRestoreInviteesType_validator = bv.Struct(SharedContentRestoreInviteesType)

class SharedContentRestoreMemberDetails(bb.Struct):
    """
    Restored users and/or groups to membership of shared file/folder.

    :ivar
        team_log.SharedContentRestoreMemberDetails.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(SharedContentRestoreMemberDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRestoreMemberDetails(shared_content_access_level={!r})'.format(
            self._shared_content_access_level_value,
        )

SharedContentRestoreMemberDetails_validator = bv.Struct(SharedContentRestoreMemberDetails)

class SharedContentRestoreMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedContentRestoreMemberType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedContentRestoreMemberType(description={!r})'.format(
            self._description_value,
        )

SharedContentRestoreMemberType_validator = bv.Struct(SharedContentRestoreMemberType)

class SharedContentUnshareDetails(bb.Struct):
    """
    Unshared file/folder by clearing membership.
    """

    __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
    dont_inherit_members = None
    # Attribute is overwritten below the class definition
    inherit_members = None
    # Attribute is overwritten below the class definition
    other = None

    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_inherit_members(self):
        """
        Check if the union tag is ``inherit_members``.

        :rtype: bool
        """
        return self._tag == '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 SharedLinkSettingsAddExpirationDetails(bb.Struct):
    """
    Added an expiration date to the shared link.

    :ivar
        team_log.SharedLinkSettingsAddExpirationDetails.shared_content_access_level:
        Shared content access level.
    :ivar team_log.SharedLinkSettingsAddExpirationDetails.shared_content_link:
        Shared content link.
    :ivar team_log.SharedLinkSettingsAddExpirationDetails.new_value: New shared
        content link expiration date. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
        '_shared_content_link_value',
        '_shared_content_link_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_access_level=None,
                 shared_content_link=None,
                 new_value=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        self._new_value_value = None
        self._new_value_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link
        if new_value is not None:
            self.new_value = new_value

    @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 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

    @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(SharedLinkSettingsAddExpirationDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsAddExpirationDetails(shared_content_access_level={!r}, shared_content_link={!r}, new_value={!r})'.format(
            self._shared_content_access_level_value,
            self._shared_content_link_value,
            self._new_value_value,
        )

SharedLinkSettingsAddExpirationDetails_validator = bv.Struct(SharedLinkSettingsAddExpirationDetails)

class SharedLinkSettingsAddExpirationType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkSettingsAddExpirationType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsAddExpirationType(description={!r})'.format(
            self._description_value,
        )

SharedLinkSettingsAddExpirationType_validator = bv.Struct(SharedLinkSettingsAddExpirationType)

class SharedLinkSettingsAddPasswordDetails(bb.Struct):
    """
    Added a password to the shared link.

    :ivar
        team_log.SharedLinkSettingsAddPasswordDetails.shared_content_access_level:
        Shared content access level.
    :ivar team_log.SharedLinkSettingsAddPasswordDetails.shared_content_link:
        Shared content link.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
        '_shared_content_link_value',
        '_shared_content_link_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_access_level=None,
                 shared_content_link=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link

    @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 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(SharedLinkSettingsAddPasswordDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsAddPasswordDetails(shared_content_access_level={!r}, shared_content_link={!r})'.format(
            self._shared_content_access_level_value,
            self._shared_content_link_value,
        )

SharedLinkSettingsAddPasswordDetails_validator = bv.Struct(SharedLinkSettingsAddPasswordDetails)

class SharedLinkSettingsAddPasswordType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkSettingsAddPasswordType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsAddPasswordType(description={!r})'.format(
            self._description_value,
        )

SharedLinkSettingsAddPasswordType_validator = bv.Struct(SharedLinkSettingsAddPasswordType)

class SharedLinkSettingsAllowDownloadDisabledDetails(bb.Struct):
    """
    Disabled downloads.

    :ivar
        team_log.SharedLinkSettingsAllowDownloadDisabledDetails.shared_content_access_level:
        Shared content access level.
    :ivar
        team_log.SharedLinkSettingsAllowDownloadDisabledDetails.shared_content_link:
        Shared content link.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
        '_shared_content_link_value',
        '_shared_content_link_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_access_level=None,
                 shared_content_link=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link

    @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 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(SharedLinkSettingsAllowDownloadDisabledDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsAllowDownloadDisabledDetails(shared_content_access_level={!r}, shared_content_link={!r})'.format(
            self._shared_content_access_level_value,
            self._shared_content_link_value,
        )

SharedLinkSettingsAllowDownloadDisabledDetails_validator = bv.Struct(SharedLinkSettingsAllowDownloadDisabledDetails)

class SharedLinkSettingsAllowDownloadDisabledType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkSettingsAllowDownloadDisabledType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsAllowDownloadDisabledType(description={!r})'.format(
            self._description_value,
        )

SharedLinkSettingsAllowDownloadDisabledType_validator = bv.Struct(SharedLinkSettingsAllowDownloadDisabledType)

class SharedLinkSettingsAllowDownloadEnabledDetails(bb.Struct):
    """
    Enabled downloads.

    :ivar
        team_log.SharedLinkSettingsAllowDownloadEnabledDetails.shared_content_access_level:
        Shared content access level.
    :ivar
        team_log.SharedLinkSettingsAllowDownloadEnabledDetails.shared_content_link:
        Shared content link.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
        '_shared_content_link_value',
        '_shared_content_link_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_access_level=None,
                 shared_content_link=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link

    @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 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(SharedLinkSettingsAllowDownloadEnabledDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsAllowDownloadEnabledDetails(shared_content_access_level={!r}, shared_content_link={!r})'.format(
            self._shared_content_access_level_value,
            self._shared_content_link_value,
        )

SharedLinkSettingsAllowDownloadEnabledDetails_validator = bv.Struct(SharedLinkSettingsAllowDownloadEnabledDetails)

class SharedLinkSettingsAllowDownloadEnabledType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkSettingsAllowDownloadEnabledType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsAllowDownloadEnabledType(description={!r})'.format(
            self._description_value,
        )

SharedLinkSettingsAllowDownloadEnabledType_validator = bv.Struct(SharedLinkSettingsAllowDownloadEnabledType)

class SharedLinkSettingsChangeAudienceDetails(bb.Struct):
    """
    Changed the audience of the shared link.

    :ivar
        team_log.SharedLinkSettingsChangeAudienceDetails.shared_content_access_level:
        Shared content access level.
    :ivar team_log.SharedLinkSettingsChangeAudienceDetails.shared_content_link:
        Shared content link.
    :ivar team_log.SharedLinkSettingsChangeAudienceDetails.new_value: New link
        audience value.
    :ivar team_log.SharedLinkSettingsChangeAudienceDetails.previous_value:
        Previous link audience value.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
        '_shared_content_link_value',
        '_shared_content_link_present',
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_access_level=None,
                 new_value=None,
                 shared_content_link=None,
                 previous_value=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @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 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

    @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(SharedLinkSettingsChangeAudienceDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsChangeAudienceDetails(shared_content_access_level={!r}, new_value={!r}, shared_content_link={!r}, previous_value={!r})'.format(
            self._shared_content_access_level_value,
            self._new_value_value,
            self._shared_content_link_value,
            self._previous_value_value,
        )

SharedLinkSettingsChangeAudienceDetails_validator = bv.Struct(SharedLinkSettingsChangeAudienceDetails)

class SharedLinkSettingsChangeAudienceType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkSettingsChangeAudienceType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsChangeAudienceType(description={!r})'.format(
            self._description_value,
        )

SharedLinkSettingsChangeAudienceType_validator = bv.Struct(SharedLinkSettingsChangeAudienceType)

class SharedLinkSettingsChangeExpirationDetails(bb.Struct):
    """
    Changed the expiration date of the shared link.

    :ivar
        team_log.SharedLinkSettingsChangeExpirationDetails.shared_content_access_level:
        Shared content access level.
    :ivar
        team_log.SharedLinkSettingsChangeExpirationDetails.shared_content_link:
        Shared content link.
    :ivar team_log.SharedLinkSettingsChangeExpirationDetails.new_value: New
        shared content link expiration date. Might be missing due to historical
        data gap.
    :ivar team_log.SharedLinkSettingsChangeExpirationDetails.previous_value:
        Previous shared content link expiration date. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
        '_shared_content_link_value',
        '_shared_content_link_present',
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_access_level=None,
                 shared_content_link=None,
                 new_value=None,
                 previous_value=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @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 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

    @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(SharedLinkSettingsChangeExpirationDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsChangeExpirationDetails(shared_content_access_level={!r}, shared_content_link={!r}, new_value={!r}, previous_value={!r})'.format(
            self._shared_content_access_level_value,
            self._shared_content_link_value,
            self._new_value_value,
            self._previous_value_value,
        )

SharedLinkSettingsChangeExpirationDetails_validator = bv.Struct(SharedLinkSettingsChangeExpirationDetails)

class SharedLinkSettingsChangeExpirationType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkSettingsChangeExpirationType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsChangeExpirationType(description={!r})'.format(
            self._description_value,
        )

SharedLinkSettingsChangeExpirationType_validator = bv.Struct(SharedLinkSettingsChangeExpirationType)

class SharedLinkSettingsChangePasswordDetails(bb.Struct):
    """
    Changed the password of the shared link.

    :ivar
        team_log.SharedLinkSettingsChangePasswordDetails.shared_content_access_level:
        Shared content access level.
    :ivar team_log.SharedLinkSettingsChangePasswordDetails.shared_content_link:
        Shared content link.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
        '_shared_content_link_value',
        '_shared_content_link_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_access_level=None,
                 shared_content_link=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link

    @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 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(SharedLinkSettingsChangePasswordDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsChangePasswordDetails(shared_content_access_level={!r}, shared_content_link={!r})'.format(
            self._shared_content_access_level_value,
            self._shared_content_link_value,
        )

SharedLinkSettingsChangePasswordDetails_validator = bv.Struct(SharedLinkSettingsChangePasswordDetails)

class SharedLinkSettingsChangePasswordType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkSettingsChangePasswordType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsChangePasswordType(description={!r})'.format(
            self._description_value,
        )

SharedLinkSettingsChangePasswordType_validator = bv.Struct(SharedLinkSettingsChangePasswordType)

class SharedLinkSettingsRemoveExpirationDetails(bb.Struct):
    """
    Removed the expiration date from the shared link.

    :ivar
        team_log.SharedLinkSettingsRemoveExpirationDetails.shared_content_access_level:
        Shared content access level.
    :ivar
        team_log.SharedLinkSettingsRemoveExpirationDetails.shared_content_link:
        Shared content link.
    :ivar team_log.SharedLinkSettingsRemoveExpirationDetails.previous_value:
        Previous shared link expiration date. Might be missing due to historical
        data gap.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
        '_shared_content_link_value',
        '_shared_content_link_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_access_level=None,
                 shared_content_link=None,
                 previous_value=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link
        if previous_value is not None:
            self.previous_value = previous_value

    @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 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

    @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(SharedLinkSettingsRemoveExpirationDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsRemoveExpirationDetails(shared_content_access_level={!r}, shared_content_link={!r}, previous_value={!r})'.format(
            self._shared_content_access_level_value,
            self._shared_content_link_value,
            self._previous_value_value,
        )

SharedLinkSettingsRemoveExpirationDetails_validator = bv.Struct(SharedLinkSettingsRemoveExpirationDetails)

class SharedLinkSettingsRemoveExpirationType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkSettingsRemoveExpirationType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsRemoveExpirationType(description={!r})'.format(
            self._description_value,
        )

SharedLinkSettingsRemoveExpirationType_validator = bv.Struct(SharedLinkSettingsRemoveExpirationType)

class SharedLinkSettingsRemovePasswordDetails(bb.Struct):
    """
    Removed the password from the shared link.

    :ivar
        team_log.SharedLinkSettingsRemovePasswordDetails.shared_content_access_level:
        Shared content access level.
    :ivar team_log.SharedLinkSettingsRemovePasswordDetails.shared_content_link:
        Shared content link.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
        '_shared_content_link_value',
        '_shared_content_link_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_access_level=None,
                 shared_content_link=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link

    @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 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(SharedLinkSettingsRemovePasswordDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsRemovePasswordDetails(shared_content_access_level={!r}, shared_content_link={!r})'.format(
            self._shared_content_access_level_value,
            self._shared_content_link_value,
        )

SharedLinkSettingsRemovePasswordDetails_validator = bv.Struct(SharedLinkSettingsRemovePasswordDetails)

class SharedLinkSettingsRemovePasswordType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SharedLinkSettingsRemovePasswordType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SharedLinkSettingsRemovePasswordType(description={!r})'.format(
            self._description_value,
        )

SharedLinkSettingsRemovePasswordType_validator = bv.Struct(SharedLinkSettingsRemovePasswordType)

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
    no_one = None
    # 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_no_one(self):
        """
        Check if the union tag is ``no_one``.

        :rtype: bool
        """
        return self._tag == 'no_one'

    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
    forbid_with_exclusions = 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_forbid_with_exclusions(self):
        """
        Check if the union tag is ``forbid_with_exclusions``.

        :rtype: bool
        """
        return self._tag == 'forbid_with_exclusions'

    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 ShmodelDisableDownloadsDetails(bb.Struct):
    """
    Disabled downloads for link.

    :ivar team_log.ShmodelDisableDownloadsDetails.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(ShmodelDisableDownloadsDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShmodelDisableDownloadsDetails(shared_link_owner={!r})'.format(
            self._shared_link_owner_value,
        )

ShmodelDisableDownloadsDetails_validator = bv.Struct(ShmodelDisableDownloadsDetails)

class ShmodelDisableDownloadsType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShmodelDisableDownloadsType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShmodelDisableDownloadsType(description={!r})'.format(
            self._description_value,
        )

ShmodelDisableDownloadsType_validator = bv.Struct(ShmodelDisableDownloadsType)

class ShmodelEnableDownloadsDetails(bb.Struct):
    """
    Enabled downloads for link.

    :ivar team_log.ShmodelEnableDownloadsDetails.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(ShmodelEnableDownloadsDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShmodelEnableDownloadsDetails(shared_link_owner={!r})'.format(
            self._shared_link_owner_value,
        )

ShmodelEnableDownloadsDetails_validator = bv.Struct(ShmodelEnableDownloadsDetails)

class ShmodelEnableDownloadsType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(ShmodelEnableDownloadsType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'ShmodelEnableDownloadsType(description={!r})'.format(
            self._description_value,
        )

ShmodelEnableDownloadsType_validator = bv.Struct(ShmodelEnableDownloadsType)

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 SmarterSmartSyncPolicyChangedDetails(bb.Struct):
    """
    Changed automatic Smart Sync setting for team.

    :ivar team_log.SmarterSmartSyncPolicyChangedDetails.previous_value: Previous
        automatic Smart Sync setting.
    :ivar team_log.SmarterSmartSyncPolicyChangedDetails.new_value: New automatic
        Smart Sync setting.
    """

    __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 automatic Smart Sync setting.

        :rtype: team_policies.SmarterSmartSyncPolicyState
        """
        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 automatic Smart Sync setting.

        :rtype: team_policies.SmarterSmartSyncPolicyState
        """
        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(SmarterSmartSyncPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SmarterSmartSyncPolicyChangedDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

SmarterSmartSyncPolicyChangedDetails_validator = bv.Struct(SmarterSmartSyncPolicyChangedDetails)

class SmarterSmartSyncPolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(SmarterSmartSyncPolicyChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'SmarterSmartSyncPolicyChangedType(description={!r})'.format(
            self._description_value,
        )

SmarterSmartSyncPolicyChangedType_validator = bv.Struct(SmarterSmartSyncPolicyChangedType)

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
    near_quota = None
    # Attribute is overwritten below the class definition
    over_quota = None
    # Attribute is overwritten below the class definition
    within_quota = None
    # Attribute is overwritten below the class definition
    other = None

    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_within_quota(self):
        """
        Check if the union tag is ``within_quota``.

        :rtype: bool
        """
        return self._tag == 'within_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 StartedEnterpriseAdminSessionDetails(bb.Struct):
    """
    Started enterprise admin session.

    :ivar
        team_log.StartedEnterpriseAdminSessionDetails.federation_extra_details:
        More information about the organization or team.
    """

    __slots__ = [
        '_federation_extra_details_value',
        '_federation_extra_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 federation_extra_details=None):
        self._federation_extra_details_value = None
        self._federation_extra_details_present = False
        if federation_extra_details is not None:
            self.federation_extra_details = federation_extra_details

    @property
    def federation_extra_details(self):
        """
        More information about the organization or team.

        :rtype: FedExtraDetails
        """
        if self._federation_extra_details_present:
            return self._federation_extra_details_value
        else:
            raise AttributeError("missing required field 'federation_extra_details'")

    @federation_extra_details.setter
    def federation_extra_details(self, val):
        self._federation_extra_details_validator.validate_type_only(val)
        self._federation_extra_details_value = val
        self._federation_extra_details_present = True

    @federation_extra_details.deleter
    def federation_extra_details(self):
        self._federation_extra_details_value = None
        self._federation_extra_details_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(StartedEnterpriseAdminSessionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'StartedEnterpriseAdminSessionDetails(federation_extra_details={!r})'.format(
            self._federation_extra_details_value,
        )

StartedEnterpriseAdminSessionDetails_validator = bv.Struct(StartedEnterpriseAdminSessionDetails)

class StartedEnterpriseAdminSessionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(StartedEnterpriseAdminSessionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'StartedEnterpriseAdminSessionType(description={!r})'.format(
            self._description_value,
        )

StartedEnterpriseAdminSessionType_validator = bv.Struct(StartedEnterpriseAdminSessionType)

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 TeamDetails(bb.Struct):
    """
    More details about the team.

    :ivar team_log.TeamDetails.team: The name of the 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 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(TeamDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamDetails(team={!r})'.format(
            self._team_value,
        )

TeamDetails_validator = bv.Struct(TeamDetails)

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 TeamInviteDetails(bb.Struct):
    """
    Details about team invites

    :ivar team_log.TeamInviteDetails.invite_method: How the user was invited to
        the team.
    :ivar team_log.TeamInviteDetails.additional_license_purchase: True if the
        invitation incurred an additional license purchase.
    """

    __slots__ = [
        '_invite_method_value',
        '_invite_method_present',
        '_additional_license_purchase_value',
        '_additional_license_purchase_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 invite_method=None,
                 additional_license_purchase=None):
        self._invite_method_value = None
        self._invite_method_present = False
        self._additional_license_purchase_value = None
        self._additional_license_purchase_present = False
        if invite_method is not None:
            self.invite_method = invite_method
        if additional_license_purchase is not None:
            self.additional_license_purchase = additional_license_purchase

    @property
    def invite_method(self):
        """
        How the user was invited to the team.

        :rtype: InviteMethod
        """
        if self._invite_method_present:
            return self._invite_method_value
        else:
            raise AttributeError("missing required field 'invite_method'")

    @invite_method.setter
    def invite_method(self, val):
        self._invite_method_validator.validate_type_only(val)
        self._invite_method_value = val
        self._invite_method_present = True

    @invite_method.deleter
    def invite_method(self):
        self._invite_method_value = None
        self._invite_method_present = False

    @property
    def additional_license_purchase(self):
        """
        True if the invitation incurred an additional license purchase.

        :rtype: bool
        """
        if self._additional_license_purchase_present:
            return self._additional_license_purchase_value
        else:
            return None

    @additional_license_purchase.setter
    def additional_license_purchase(self, val):
        if val is None:
            del self.additional_license_purchase
            return
        val = self._additional_license_purchase_validator.validate(val)
        self._additional_license_purchase_value = val
        self._additional_license_purchase_present = True

    @additional_license_purchase.deleter
    def additional_license_purchase(self):
        self._additional_license_purchase_value = None
        self._additional_license_purchase_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamInviteDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamInviteDetails(invite_method={!r}, additional_license_purchase={!r})'.format(
            self._invite_method_value,
            self._additional_license_purchase_value,
        )

TeamInviteDetails_validator = bv.Struct(TeamInviteDetails)

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 TeamLogInfo(bb.Struct):
    """
    Team's logged information.

    :ivar team_log.TeamLogInfo.display_name: Team display name.
    """

    __slots__ = [
        '_display_name_value',
        '_display_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 display_name=None):
        self._display_name_value = None
        self._display_name_present = False
        if display_name is not None:
            self.display_name = display_name

    @property
    def display_name(self):
        """
        Team display name.

        :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

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamLogInfo, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamLogInfo(display_name={!r})'.format(
            self._display_name_value,
        )

TeamLogInfo_validator = bv.Struct(TeamLogInfo)

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.
    :ivar team_log.TeamMemberLogInfo.team: Details about this user&#x2019s team
        for enterprise event.
    """

    __slots__ = [
        '_team_member_id_value',
        '_team_member_id_present',
        '_member_external_id_value',
        '_member_external_id_present',
        '_team_value',
        '_team_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 account_id=None,
                 display_name=None,
                 email=None,
                 team_member_id=None,
                 member_external_id=None,
                 team=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
        self._team_value = None
        self._team_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
        if team is not None:
            self.team = team

    @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

    @property
    def team(self):
        """
        Details about this user&#x2019s team for enterprise event.

        :rtype: TeamLogInfo
        """
        if self._team_present:
            return self._team_value
        else:
            return None

    @team.setter
    def team(self, val):
        if val is None:
            del self.team
            return
        self._team_validator.validate_type_only(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(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}, team={!r})'.format(
            self._account_id_value,
            self._display_name_value,
            self._email_value,
            self._team_member_id_value,
            self._member_external_id_value,
            self._team_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 TeamSharingWhitelistSubjectsChangedDetails(bb.Struct):
    """
    Edited the approved list for sharing externally.

    :ivar
        team_log.TeamSharingWhitelistSubjectsChangedDetails.added_whitelist_subjects:
        Domains or emails added to the approved list for sharing externally.
    :ivar
        team_log.TeamSharingWhitelistSubjectsChangedDetails.removed_whitelist_subjects:
        Domains or emails removed from the approved list for sharing externally.
    """

    __slots__ = [
        '_added_whitelist_subjects_value',
        '_added_whitelist_subjects_present',
        '_removed_whitelist_subjects_value',
        '_removed_whitelist_subjects_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 added_whitelist_subjects=None,
                 removed_whitelist_subjects=None):
        self._added_whitelist_subjects_value = None
        self._added_whitelist_subjects_present = False
        self._removed_whitelist_subjects_value = None
        self._removed_whitelist_subjects_present = False
        if added_whitelist_subjects is not None:
            self.added_whitelist_subjects = added_whitelist_subjects
        if removed_whitelist_subjects is not None:
            self.removed_whitelist_subjects = removed_whitelist_subjects

    @property
    def added_whitelist_subjects(self):
        """
        Domains or emails added to the approved list for sharing externally.

        :rtype: list of [str]
        """
        if self._added_whitelist_subjects_present:
            return self._added_whitelist_subjects_value
        else:
            raise AttributeError("missing required field 'added_whitelist_subjects'")

    @added_whitelist_subjects.setter
    def added_whitelist_subjects(self, val):
        val = self._added_whitelist_subjects_validator.validate(val)
        self._added_whitelist_subjects_value = val
        self._added_whitelist_subjects_present = True

    @added_whitelist_subjects.deleter
    def added_whitelist_subjects(self):
        self._added_whitelist_subjects_value = None
        self._added_whitelist_subjects_present = False

    @property
    def removed_whitelist_subjects(self):
        """
        Domains or emails removed from the approved list for sharing externally.

        :rtype: list of [str]
        """
        if self._removed_whitelist_subjects_present:
            return self._removed_whitelist_subjects_value
        else:
            raise AttributeError("missing required field 'removed_whitelist_subjects'")

    @removed_whitelist_subjects.setter
    def removed_whitelist_subjects(self, val):
        val = self._removed_whitelist_subjects_validator.validate(val)
        self._removed_whitelist_subjects_value = val
        self._removed_whitelist_subjects_present = True

    @removed_whitelist_subjects.deleter
    def removed_whitelist_subjects(self):
        self._removed_whitelist_subjects_value = None
        self._removed_whitelist_subjects_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamSharingWhitelistSubjectsChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamSharingWhitelistSubjectsChangedDetails(added_whitelist_subjects={!r}, removed_whitelist_subjects={!r})'.format(
            self._added_whitelist_subjects_value,
            self._removed_whitelist_subjects_value,
        )

TeamSharingWhitelistSubjectsChangedDetails_validator = bv.Struct(TeamSharingWhitelistSubjectsChangedDetails)

class TeamSharingWhitelistSubjectsChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TeamSharingWhitelistSubjectsChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TeamSharingWhitelistSubjectsChangedType(description={!r})'.format(
            self._description_value,
        )

TeamSharingWhitelistSubjectsChangedType_validator = bv.Struct(TeamSharingWhitelistSubjectsChangedType)

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 TfaAddExceptionDetails(bb.Struct):
    """
    Added members to two factor authentication exception list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaAddExceptionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaAddExceptionDetails()'

TfaAddExceptionDetails_validator = bv.Struct(TfaAddExceptionDetails)

class TfaAddExceptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaAddExceptionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaAddExceptionType(description={!r})'.format(
            self._description_value,
        )

TfaAddExceptionType_validator = bv.Struct(TfaAddExceptionType)

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
    authenticator = None
    # 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
    other = None

    def is_authenticator(self):
        """
        Check if the union tag is ``authenticator``.

        :rtype: bool
        """
        return self._tag == 'authenticator'

    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_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 TfaRemoveExceptionDetails(bb.Struct):
    """
    Removed members from two factor authentication exception list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaRemoveExceptionDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaRemoveExceptionDetails()'

TfaRemoveExceptionDetails_validator = bv.Struct(TfaRemoveExceptionDetails)

class TfaRemoveExceptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(TfaRemoveExceptionType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'TfaRemoveExceptionType(description={!r})'.format(
            self._description_value,
        )

TfaRemoveExceptionType_validator = bv.Struct(TfaRemoveExceptionType)

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
    days = None
    # Attribute is overwritten below the class definition
    hours = None
    # Attribute is overwritten below the class definition
    milliseconds = None
    # Attribute is overwritten below the class definition
    minutes = None
    # Attribute is overwritten below the class definition
    months = None
    # Attribute is overwritten below the class definition
    seconds = None
    # Attribute is overwritten below the class definition
    weeks = None
    # Attribute is overwritten below the class definition
    years = None
    # Attribute is overwritten below the class definition
    other = None

    def is_days(self):
        """
        Check if the union tag is ``days``.

        :rtype: bool
        """
        return self._tag == 'days'

    def is_hours(self):
        """
        Check if the union tag is ``hours``.

        :rtype: bool
        """
        return self._tag == 'hours'

    def is_milliseconds(self):
        """
        Check if the union tag is ``milliseconds``.

        :rtype: bool
        """
        return self._tag == 'milliseconds'

    def is_minutes(self):
        """
        Check if the union tag is ``minutes``.

        :rtype: bool
        """
        return self._tag == 'minutes'

    def is_months(self):
        """
        Check if the union tag is ``months``.

        :rtype: bool
        """
        return self._tag == 'months'

    def is_seconds(self):
        """
        Check if the union tag is ``seconds``.

        :rtype: bool
        """
        return self._tag == 'seconds'

    def is_weeks(self):
        """
        Check if the union tag is ``weeks``.

        :rtype: bool
        """
        return self._tag == 'weeks'

    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 member of a trusted team.
    :ivar team_log.TrustedNonTeamMemberLogInfo.team: Details about this user's
        trusted team.
    """

    __slots__ = [
        '_trusted_non_team_member_type_value',
        '_trusted_non_team_member_type_present',
        '_team_value',
        '_team_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 trusted_non_team_member_type=None,
                 account_id=None,
                 display_name=None,
                 email=None,
                 team=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
        self._team_value = None
        self._team_present = False
        if trusted_non_team_member_type is not None:
            self.trusted_non_team_member_type = trusted_non_team_member_type
        if team is not None:
            self.team = team

    @property
    def trusted_non_team_member_type(self):
        """
        Indicates the type of the member of a trusted team.

        :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

    @property
    def team(self):
        """
        Details about this user's trusted team.

        :rtype: TeamLogInfo
        """
        if self._team_present:
            return self._team_value
        else:
            return None

    @team.setter
    def team(self, val):
        if val is None:
            del self.team
            return
        self._team_validator.validate_type_only(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(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}, team={!r})'.format(
            self._trusted_non_team_member_type_value,
            self._account_id_value,
            self._display_name_value,
            self._email_value,
            self._team_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
    enterprise_admin = None
    # Attribute is overwritten below the class definition
    multi_instance_admin = None
    # Attribute is overwritten below the class definition
    other = None

    def is_enterprise_admin(self):
        """
        Check if the union tag is ``enterprise_admin``.

        :rtype: bool
        """
        return self._tag == 'enterprise_admin'

    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
    accepted = None
    # Attribute is overwritten below the class definition
    declined = None
    # Attribute is overwritten below the class definition
    expired = None
    # Attribute is overwritten below the class definition
    invited = None
    # Attribute is overwritten below the class definition
    revoked = None
    # Attribute is overwritten below the class definition
    other = None

    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_expired(self):
        """
        Check if the union tag is ``expired``.

        :rtype: bool
        """
        return self._tag == 'expired'

    def is_invited(self):
        """
        Check if the union tag is ``invited``.

        :rtype: bool
        """
        return self._tag == 'invited'

    def is_revoked(self):
        """
        Check if the union tag is ``revoked``.

        :rtype: bool
        """
        return self._tag == 'revoked'

    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 WatermarkingPolicy(bb.Union):
    """
    Policy for controlling team access to watermarking feature

    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(WatermarkingPolicy, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'WatermarkingPolicy(%r, %r)' % (self._tag, self._value)

WatermarkingPolicy_validator = bv.Union(WatermarkingPolicy)

class WatermarkingPolicyChangedDetails(bb.Struct):
    """
    Changed watermarking policy for team.

    :ivar team_log.WatermarkingPolicyChangedDetails.new_value: New watermarking
        policy.
    :ivar team_log.WatermarkingPolicyChangedDetails.previous_value: Previous
        watermarking 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 watermarking policy.

        :rtype: WatermarkingPolicy
        """
        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 watermarking policy.

        :rtype: WatermarkingPolicy
        """
        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(WatermarkingPolicyChangedDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'WatermarkingPolicyChangedDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

WatermarkingPolicyChangedDetails_validator = bv.Struct(WatermarkingPolicyChangedDetails)

class WatermarkingPolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(WatermarkingPolicyChangedType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'WatermarkingPolicyChangedType(description={!r})'.format(
            self._description_value,
        )

WatermarkingPolicyChangedType_validator = bv.Struct(WatermarkingPolicyChangedType)

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 WebSessionsChangeActiveSessionLimitDetails(bb.Struct):
    """
    Changed limit on active sessions per member.

    :ivar team_log.WebSessionsChangeActiveSessionLimitDetails.previous_value:
        Previous max number of concurrent active sessions policy.
    :ivar team_log.WebSessionsChangeActiveSessionLimitDetails.new_value: New max
        number of concurrent active sessions 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 max number of concurrent active sessions policy.

        :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 max number of concurrent active sessions policy.

        :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(WebSessionsChangeActiveSessionLimitDetails, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'WebSessionsChangeActiveSessionLimitDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

WebSessionsChangeActiveSessionLimitDetails_validator = bv.Struct(WebSessionsChangeActiveSessionLimitDetails)

class WebSessionsChangeActiveSessionLimitType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, field_path, processor):
        super(WebSessionsChangeActiveSessionLimitType, self)._process_custom_annotations(annotation_type, field_path, processor)

    def __repr__(self):
        return 'WebSessionsChangeActiveSessionLimitType(description={!r})'.format(
            self._description_value,
        )

WebSessionsChangeActiveSessionLimitType_validator = bv.Struct(WebSessionsChangeActiveSessionLimitType)

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._admin_console_validator = WebSessionLogInfo_validator
AccessMethodLogInfo._api_validator = ApiSessionLogInfo_validator
AccessMethodLogInfo._content_manager_validator = WebSessionLogInfo_validator
AccessMethodLogInfo._end_user_validator = SessionLogInfo_validator
AccessMethodLogInfo._enterprise_console_validator = WebSessionLogInfo_validator
AccessMethodLogInfo._sign_in_as_validator = WebSessionLogInfo_validator
AccessMethodLogInfo._other_validator = bv.Void()
AccessMethodLogInfo._tagmap = {
    'admin_console': AccessMethodLogInfo._admin_console_validator,
    'api': AccessMethodLogInfo._api_validator,
    'content_manager': AccessMethodLogInfo._content_manager_validator,
    'end_user': AccessMethodLogInfo._end_user_validator,
    'enterprise_console': AccessMethodLogInfo._enterprise_console_validator,
    'sign_in_as': AccessMethodLogInfo._sign_in_as_validator,
    'other': AccessMethodLogInfo._other_validator,
}

AccessMethodLogInfo.other = AccessMethodLogInfo('other')

AccountCaptureAvailability._available_validator = bv.Void()
AccountCaptureAvailability._unavailable_validator = bv.Void()
AccountCaptureAvailability._other_validator = bv.Void()
AccountCaptureAvailability._tagmap = {
    'available': AccountCaptureAvailability._available_validator,
    'unavailable': AccountCaptureAvailability._unavailable_validator,
    'other': AccountCaptureAvailability._other_validator,
}

AccountCaptureAvailability.available = AccountCaptureAvailability('available')
AccountCaptureAvailability.unavailable = AccountCaptureAvailability('unavailable')
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._notification_type_validator = bv.Nullable(AccountCaptureNotificationType_validator)
AccountCaptureNotificationEmailsSentDetails._all_field_names_ = set([
    'domain_name',
    'notification_type',
])
AccountCaptureNotificationEmailsSentDetails._all_fields_ = [
    ('domain_name', AccountCaptureNotificationEmailsSentDetails._domain_name_validator),
    ('notification_type', AccountCaptureNotificationEmailsSentDetails._notification_type_validator),
]

AccountCaptureNotificationEmailsSentType._description_validator = bv.String()
AccountCaptureNotificationEmailsSentType._all_field_names_ = set(['description'])
AccountCaptureNotificationEmailsSentType._all_fields_ = [('description', AccountCaptureNotificationEmailsSentType._description_validator)]

AccountCaptureNotificationType._actionable_notification_validator = bv.Void()
AccountCaptureNotificationType._proactive_warning_notification_validator = bv.Void()
AccountCaptureNotificationType._other_validator = bv.Void()
AccountCaptureNotificationType._tagmap = {
    'actionable_notification': AccountCaptureNotificationType._actionable_notification_validator,
    'proactive_warning_notification': AccountCaptureNotificationType._proactive_warning_notification_validator,
    'other': AccountCaptureNotificationType._other_validator,
}

AccountCaptureNotificationType.actionable_notification = AccountCaptureNotificationType('actionable_notification')
AccountCaptureNotificationType.proactive_warning_notification = AccountCaptureNotificationType('proactive_warning_notification')
AccountCaptureNotificationType.other = AccountCaptureNotificationType('other')

AccountCapturePolicy._all_users_validator = bv.Void()
AccountCapturePolicy._disabled_validator = bv.Void()
AccountCapturePolicy._invited_users_validator = bv.Void()
AccountCapturePolicy._other_validator = bv.Void()
AccountCapturePolicy._tagmap = {
    'all_users': AccountCapturePolicy._all_users_validator,
    'disabled': AccountCapturePolicy._disabled_validator,
    'invited_users': AccountCapturePolicy._invited_users_validator,
    'other': AccountCapturePolicy._other_validator,
}

AccountCapturePolicy.all_users = AccountCapturePolicy('all_users')
AccountCapturePolicy.disabled = AccountCapturePolicy('disabled')
AccountCapturePolicy.invited_users = AccountCapturePolicy('invited_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)]

AccountLockOrUnlockedDetails._previous_value_validator = AccountState_validator
AccountLockOrUnlockedDetails._new_value_validator = AccountState_validator
AccountLockOrUnlockedDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
AccountLockOrUnlockedDetails._all_fields_ = [
    ('previous_value', AccountLockOrUnlockedDetails._previous_value_validator),
    ('new_value', AccountLockOrUnlockedDetails._new_value_validator),
]

AccountLockOrUnlockedType._description_validator = bv.String()
AccountLockOrUnlockedType._all_field_names_ = set(['description'])
AccountLockOrUnlockedType._all_fields_ = [('description', AccountLockOrUnlockedType._description_validator)]

AccountState._locked_validator = bv.Void()
AccountState._unlocked_validator = bv.Void()
AccountState._other_validator = bv.Void()
AccountState._tagmap = {
    'locked': AccountState._locked_validator,
    'unlocked': AccountState._unlocked_validator,
    'other': AccountState._other_validator,
}

AccountState.locked = AccountState('locked')
AccountState.unlocked = AccountState('unlocked')
AccountState.other = AccountState('other')

ActionDetails._remove_action_validator = MemberRemoveActionType_validator
ActionDetails._team_invite_details_validator = TeamInviteDetails_validator
ActionDetails._team_join_details_validator = JoinTeamDetails_validator
ActionDetails._other_validator = bv.Void()
ActionDetails._tagmap = {
    'remove_action': ActionDetails._remove_action_validator,
    'team_invite_details': ActionDetails._team_invite_details_validator,
    'team_join_details': ActionDetails._team_join_details_validator,
    'other': ActionDetails._other_validator,
}

ActionDetails.other = ActionDetails('other')

ActorLogInfo._admin_validator = UserLogInfo_validator
ActorLogInfo._anonymous_validator = bv.Void()
ActorLogInfo._app_validator = AppLogInfo_validator
ActorLogInfo._dropbox_validator = bv.Void()
ActorLogInfo._reseller_validator = ResellerLogInfo_validator
ActorLogInfo._user_validator = UserLogInfo_validator
ActorLogInfo._other_validator = bv.Void()
ActorLogInfo._tagmap = {
    'admin': ActorLogInfo._admin_validator,
    'anonymous': ActorLogInfo._anonymous_validator,
    'app': ActorLogInfo._app_validator,
    'dropbox': ActorLogInfo._dropbox_validator,
    'reseller': ActorLogInfo._reseller_validator,
    'user': ActorLogInfo._user_validator,
    'other': ActorLogInfo._other_validator,
}

ActorLogInfo.anonymous = ActorLogInfo('anonymous')
ActorLogInfo.dropbox = ActorLogInfo('dropbox')
ActorLogInfo.other = ActorLogInfo('other')

AdminRole._limited_admin_validator = bv.Void()
AdminRole._member_only_validator = bv.Void()
AdminRole._support_admin_validator = bv.Void()
AdminRole._team_admin_validator = bv.Void()
AdminRole._user_management_admin_validator = bv.Void()
AdminRole._other_validator = bv.Void()
AdminRole._tagmap = {
    'limited_admin': AdminRole._limited_admin_validator,
    'member_only': AdminRole._member_only_validator,
    'support_admin': AdminRole._support_admin_validator,
    'team_admin': AdminRole._team_admin_validator,
    'user_management_admin': AdminRole._user_management_admin_validator,
    'other': AdminRole._other_validator,
}

AdminRole.limited_admin = AdminRole('limited_admin')
AdminRole.member_only = AdminRole('member_only')
AdminRole.support_admin = AdminRole('support_admin')
AdminRole.team_admin = AdminRole('team_admin')
AdminRole.user_management_admin = AdminRole('user_management_admin')
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')

BackupStatus._disabled_validator = bv.Void()
BackupStatus._enabled_validator = bv.Void()
BackupStatus._other_validator = bv.Void()
BackupStatus._tagmap = {
    'disabled': BackupStatus._disabled_validator,
    'enabled': BackupStatus._enabled_validator,
    'other': BackupStatus._other_validator,
}

BackupStatus.disabled = BackupStatus('disabled')
BackupStatus.enabled = BackupStatus('enabled')
BackupStatus.other = BackupStatus('other')

BinderAddPageDetails._event_uuid_validator = bv.String()
BinderAddPageDetails._doc_title_validator = bv.String()
BinderAddPageDetails._binder_item_name_validator = bv.String()
BinderAddPageDetails._all_field_names_ = set([
    'event_uuid',
    'doc_title',
    'binder_item_name',
])
BinderAddPageDetails._all_fields_ = [
    ('event_uuid', BinderAddPageDetails._event_uuid_validator),
    ('doc_title', BinderAddPageDetails._doc_title_validator),
    ('binder_item_name', BinderAddPageDetails._binder_item_name_validator),
]

BinderAddPageType._description_validator = bv.String()
BinderAddPageType._all_field_names_ = set(['description'])
BinderAddPageType._all_fields_ = [('description', BinderAddPageType._description_validator)]

BinderAddSectionDetails._event_uuid_validator = bv.String()
BinderAddSectionDetails._doc_title_validator = bv.String()
BinderAddSectionDetails._binder_item_name_validator = bv.String()
BinderAddSectionDetails._all_field_names_ = set([
    'event_uuid',
    'doc_title',
    'binder_item_name',
])
BinderAddSectionDetails._all_fields_ = [
    ('event_uuid', BinderAddSectionDetails._event_uuid_validator),
    ('doc_title', BinderAddSectionDetails._doc_title_validator),
    ('binder_item_name', BinderAddSectionDetails._binder_item_name_validator),
]

BinderAddSectionType._description_validator = bv.String()
BinderAddSectionType._all_field_names_ = set(['description'])
BinderAddSectionType._all_fields_ = [('description', BinderAddSectionType._description_validator)]

BinderRemovePageDetails._event_uuid_validator = bv.String()
BinderRemovePageDetails._doc_title_validator = bv.String()
BinderRemovePageDetails._binder_item_name_validator = bv.String()
BinderRemovePageDetails._all_field_names_ = set([
    'event_uuid',
    'doc_title',
    'binder_item_name',
])
BinderRemovePageDetails._all_fields_ = [
    ('event_uuid', BinderRemovePageDetails._event_uuid_validator),
    ('doc_title', BinderRemovePageDetails._doc_title_validator),
    ('binder_item_name', BinderRemovePageDetails._binder_item_name_validator),
]

BinderRemovePageType._description_validator = bv.String()
BinderRemovePageType._all_field_names_ = set(['description'])
BinderRemovePageType._all_fields_ = [('description', BinderRemovePageType._description_validator)]

BinderRemoveSectionDetails._event_uuid_validator = bv.String()
BinderRemoveSectionDetails._doc_title_validator = bv.String()
BinderRemoveSectionDetails._binder_item_name_validator = bv.String()
BinderRemoveSectionDetails._all_field_names_ = set([
    'event_uuid',
    'doc_title',
    'binder_item_name',
])
BinderRemoveSectionDetails._all_fields_ = [
    ('event_uuid', BinderRemoveSectionDetails._event_uuid_validator),
    ('doc_title', BinderRemoveSectionDetails._doc_title_validator),
    ('binder_item_name', BinderRemoveSectionDetails._binder_item_name_validator),
]

BinderRemoveSectionType._description_validator = bv.String()
BinderRemoveSectionType._all_field_names_ = set(['description'])
BinderRemoveSectionType._all_fields_ = [('description', BinderRemoveSectionType._description_validator)]

BinderRenamePageDetails._event_uuid_validator = bv.String()
BinderRenamePageDetails._doc_title_validator = bv.String()
BinderRenamePageDetails._binder_item_name_validator = bv.String()
BinderRenamePageDetails._previous_binder_item_name_validator = bv.Nullable(bv.String())
BinderRenamePageDetails._all_field_names_ = set([
    'event_uuid',
    'doc_title',
    'binder_item_name',
    'previous_binder_item_name',
])
BinderRenamePageDetails._all_fields_ = [
    ('event_uuid', BinderRenamePageDetails._event_uuid_validator),
    ('doc_title', BinderRenamePageDetails._doc_title_validator),
    ('binder_item_name', BinderRenamePageDetails._binder_item_name_validator),
    ('previous_binder_item_name', BinderRenamePageDetails._previous_binder_item_name_validator),
]

BinderRenamePageType._description_validator = bv.String()
BinderRenamePageType._all_field_names_ = set(['description'])
BinderRenamePageType._all_fields_ = [('description', BinderRenamePageType._description_validator)]

BinderRenameSectionDetails._event_uuid_validator = bv.String()
BinderRenameSectionDetails._doc_title_validator = bv.String()
BinderRenameSectionDetails._binder_item_name_validator = bv.String()
BinderRenameSectionDetails._previous_binder_item_name_validator = bv.Nullable(bv.String())
BinderRenameSectionDetails._all_field_names_ = set([
    'event_uuid',
    'doc_title',
    'binder_item_name',
    'previous_binder_item_name',
])
BinderRenameSectionDetails._all_fields_ = [
    ('event_uuid', BinderRenameSectionDetails._event_uuid_validator),
    ('doc_title', BinderRenameSectionDetails._doc_title_validator),
    ('binder_item_name', BinderRenameSectionDetails._binder_item_name_validator),
    ('previous_binder_item_name', BinderRenameSectionDetails._previous_binder_item_name_validator),
]

BinderRenameSectionType._description_validator = bv.String()
BinderRenameSectionType._all_field_names_ = set(['description'])
BinderRenameSectionType._all_fields_ = [('description', BinderRenameSectionType._description_validator)]

BinderReorderPageDetails._event_uuid_validator = bv.String()
BinderReorderPageDetails._doc_title_validator = bv.String()
BinderReorderPageDetails._binder_item_name_validator = bv.String()
BinderReorderPageDetails._all_field_names_ = set([
    'event_uuid',
    'doc_title',
    'binder_item_name',
])
BinderReorderPageDetails._all_fields_ = [
    ('event_uuid', BinderReorderPageDetails._event_uuid_validator),
    ('doc_title', BinderReorderPageDetails._doc_title_validator),
    ('binder_item_name', BinderReorderPageDetails._binder_item_name_validator),
]

BinderReorderPageType._description_validator = bv.String()
BinderReorderPageType._all_field_names_ = set(['description'])
BinderReorderPageType._all_fields_ = [('description', BinderReorderPageType._description_validator)]

BinderReorderSectionDetails._event_uuid_validator = bv.String()
BinderReorderSectionDetails._doc_title_validator = bv.String()
BinderReorderSectionDetails._binder_item_name_validator = bv.String()
BinderReorderSectionDetails._all_field_names_ = set([
    'event_uuid',
    'doc_title',
    'binder_item_name',
])
BinderReorderSectionDetails._all_fields_ = [
    ('event_uuid', BinderReorderSectionDetails._event_uuid_validator),
    ('doc_title', BinderReorderSectionDetails._doc_title_validator),
    ('binder_item_name', BinderReorderSectionDetails._binder_item_name_validator),
]

BinderReorderSectionType._description_validator = bv.String()
BinderReorderSectionType._all_field_names_ = set(['description'])
BinderReorderSectionType._all_fields_ = [('description', BinderReorderSectionType._description_validator)]

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),
]

ChangedEnterpriseAdminRoleDetails._previous_value_validator = FedAdminRole_validator
ChangedEnterpriseAdminRoleDetails._new_value_validator = FedAdminRole_validator
ChangedEnterpriseAdminRoleDetails._team_name_validator = bv.String()
ChangedEnterpriseAdminRoleDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
    'team_name',
])
ChangedEnterpriseAdminRoleDetails._all_fields_ = [
    ('previous_value', ChangedEnterpriseAdminRoleDetails._previous_value_validator),
    ('new_value', ChangedEnterpriseAdminRoleDetails._new_value_validator),
    ('team_name', ChangedEnterpriseAdminRoleDetails._team_name_validator),
]

ChangedEnterpriseAdminRoleType._description_validator = bv.String()
ChangedEnterpriseAdminRoleType._all_field_names_ = set(['description'])
ChangedEnterpriseAdminRoleType._all_fields_ = [('description', ChangedEnterpriseAdminRoleType._description_validator)]

ChangedEnterpriseConnectedTeamStatusDetails._action_validator = FedHandshakeAction_validator
ChangedEnterpriseConnectedTeamStatusDetails._additional_info_validator = FederationStatusChangeAdditionalInfo_validator
ChangedEnterpriseConnectedTeamStatusDetails._previous_value_validator = TrustedTeamsRequestState_validator
ChangedEnterpriseConnectedTeamStatusDetails._new_value_validator = TrustedTeamsRequestState_validator
ChangedEnterpriseConnectedTeamStatusDetails._all_field_names_ = set([
    'action',
    'additional_info',
    'previous_value',
    'new_value',
])
ChangedEnterpriseConnectedTeamStatusDetails._all_fields_ = [
    ('action', ChangedEnterpriseConnectedTeamStatusDetails._action_validator),
    ('additional_info', ChangedEnterpriseConnectedTeamStatusDetails._additional_info_validator),
    ('previous_value', ChangedEnterpriseConnectedTeamStatusDetails._previous_value_validator),
    ('new_value', ChangedEnterpriseConnectedTeamStatusDetails._new_value_validator),
]

ChangedEnterpriseConnectedTeamStatusType._description_validator = bv.String()
ChangedEnterpriseConnectedTeamStatusType._all_field_names_ = set(['description'])
ChangedEnterpriseConnectedTeamStatusType._all_fields_ = [('description', ChangedEnterpriseConnectedTeamStatusType._description_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)]

ComputerBackupPolicy._default_validator = bv.Void()
ComputerBackupPolicy._disabled_validator = bv.Void()
ComputerBackupPolicy._enabled_validator = bv.Void()
ComputerBackupPolicy._other_validator = bv.Void()
ComputerBackupPolicy._tagmap = {
    'default': ComputerBackupPolicy._default_validator,
    'disabled': ComputerBackupPolicy._disabled_validator,
    'enabled': ComputerBackupPolicy._enabled_validator,
    'other': ComputerBackupPolicy._other_validator,
}

ComputerBackupPolicy.default = ComputerBackupPolicy('default')
ComputerBackupPolicy.disabled = ComputerBackupPolicy('disabled')
ComputerBackupPolicy.enabled = ComputerBackupPolicy('enabled')
ComputerBackupPolicy.other = ComputerBackupPolicy('other')

ComputerBackupPolicyChangedDetails._new_value_validator = ComputerBackupPolicy_validator
ComputerBackupPolicyChangedDetails._previous_value_validator = ComputerBackupPolicy_validator
ComputerBackupPolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
ComputerBackupPolicyChangedDetails._all_fields_ = [
    ('new_value', ComputerBackupPolicyChangedDetails._new_value_validator),
    ('previous_value', ComputerBackupPolicyChangedDetails._previous_value_validator),
]

ComputerBackupPolicyChangedType._description_validator = bv.String()
ComputerBackupPolicyChangedType._all_field_names_ = set(['description'])
ComputerBackupPolicyChangedType._all_fields_ = [('description', ComputerBackupPolicyChangedType._description_validator)]

ConnectedTeamName._team_validator = bv.String()
ConnectedTeamName._all_field_names_ = set(['team'])
ConnectedTeamName._all_fields_ = [('team', ConnectedTeamName._team_validator)]

ContentAdministrationPolicyChangedDetails._new_value_validator = bv.String()
ContentAdministrationPolicyChangedDetails._previous_value_validator = bv.String()
ContentAdministrationPolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
ContentAdministrationPolicyChangedDetails._all_fields_ = [
    ('new_value', ContentAdministrationPolicyChangedDetails._new_value_validator),
    ('previous_value', ContentAdministrationPolicyChangedDetails._previous_value_validator),
]

ContentAdministrationPolicyChangedType._description_validator = bv.String()
ContentAdministrationPolicyChangedType._all_field_names_ = set(['description'])
ContentAdministrationPolicyChangedType._all_fields_ = [('description', ContentAdministrationPolicyChangedType._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._anonymous_validator = bv.Void()
ContextLogInfo._non_team_member_validator = NonTeamMemberLogInfo_validator
ContextLogInfo._organization_team_validator = TeamLogInfo_validator
ContextLogInfo._team_validator = bv.Void()
ContextLogInfo._team_member_validator = TeamMemberLogInfo_validator
ContextLogInfo._trusted_non_team_member_validator = TrustedNonTeamMemberLogInfo_validator
ContextLogInfo._other_validator = bv.Void()
ContextLogInfo._tagmap = {
    'anonymous': ContextLogInfo._anonymous_validator,
    'non_team_member': ContextLogInfo._non_team_member_validator,
    'organization_team': ContextLogInfo._organization_team_validator,
    'team': ContextLogInfo._team_validator,
    'team_member': ContextLogInfo._team_member_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)]

CreateTeamInviteLinkDetails._link_url_validator = bv.String()
CreateTeamInviteLinkDetails._expiry_date_validator = bv.String()
CreateTeamInviteLinkDetails._all_field_names_ = set([
    'link_url',
    'expiry_date',
])
CreateTeamInviteLinkDetails._all_fields_ = [
    ('link_url', CreateTeamInviteLinkDetails._link_url_validator),
    ('expiry_date', CreateTeamInviteLinkDetails._expiry_date_validator),
]

CreateTeamInviteLinkType._description_validator = bv.String()
CreateTeamInviteLinkType._all_field_names_ = set(['description'])
CreateTeamInviteLinkType._all_fields_ = [('description', CreateTeamInviteLinkType._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)]

DeleteTeamInviteLinkDetails._link_url_validator = bv.String()
DeleteTeamInviteLinkDetails._all_field_names_ = set(['link_url'])
DeleteTeamInviteLinkDetails._all_fields_ = [('link_url', DeleteTeamInviteLinkDetails._link_url_validator)]

DeleteTeamInviteLinkType._description_validator = bv.String()
DeleteTeamInviteLinkType._all_field_names_ = set(['description'])
DeleteTeamInviteLinkType._all_fields_ = [('description', DeleteTeamInviteLinkType._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_

DeviceApprovalsAddExceptionDetails._all_field_names_ = set([])
DeviceApprovalsAddExceptionDetails._all_fields_ = []

DeviceApprovalsAddExceptionType._description_validator = bv.String()
DeviceApprovalsAddExceptionType._all_field_names_ = set(['description'])
DeviceApprovalsAddExceptionType._all_fields_ = [('description', DeviceApprovalsAddExceptionType._description_validator)]

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._limited_validator = bv.Void()
DeviceApprovalsPolicy._unlimited_validator = bv.Void()
DeviceApprovalsPolicy._other_validator = bv.Void()
DeviceApprovalsPolicy._tagmap = {
    'limited': DeviceApprovalsPolicy._limited_validator,
    'unlimited': DeviceApprovalsPolicy._unlimited_validator,
    'other': DeviceApprovalsPolicy._other_validator,
}

DeviceApprovalsPolicy.limited = DeviceApprovalsPolicy('limited')
DeviceApprovalsPolicy.unlimited = DeviceApprovalsPolicy('unlimited')
DeviceApprovalsPolicy.other = DeviceApprovalsPolicy('other')

DeviceApprovalsRemoveExceptionDetails._all_field_names_ = set([])
DeviceApprovalsRemoveExceptionDetails._all_fields_ = []

DeviceApprovalsRemoveExceptionType._description_validator = bv.String()
DeviceApprovalsRemoveExceptionType._all_field_names_ = set(['description'])
DeviceApprovalsRemoveExceptionType._all_fields_ = [('description', DeviceApprovalsRemoveExceptionType._description_validator)]

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)]

DeviceSyncBackupStatusChangedDetails._desktop_device_session_info_validator = DesktopDeviceSessionLogInfo_validator
DeviceSyncBackupStatusChangedDetails._previous_value_validator = BackupStatus_validator
DeviceSyncBackupStatusChangedDetails._new_value_validator = BackupStatus_validator
DeviceSyncBackupStatusChangedDetails._all_field_names_ = set([
    'desktop_device_session_info',
    'previous_value',
    'new_value',
])
DeviceSyncBackupStatusChangedDetails._all_fields_ = [
    ('desktop_device_session_info', DeviceSyncBackupStatusChangedDetails._desktop_device_session_info_validator),
    ('previous_value', DeviceSyncBackupStatusChangedDetails._previous_value_validator),
    ('new_value', DeviceSyncBackupStatusChangedDetails._new_value_validator),
]

DeviceSyncBackupStatusChangedType._description_validator = bv.String()
DeviceSyncBackupStatusChangedType._all_field_names_ = set(['description'])
DeviceSyncBackupStatusChangedType._all_fields_ = [('description', DeviceSyncBackupStatusChangedType._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._keep_validator = bv.Void()
DeviceUnlinkPolicy._remove_validator = bv.Void()
DeviceUnlinkPolicy._other_validator = bv.Void()
DeviceUnlinkPolicy._tagmap = {
    'keep': DeviceUnlinkPolicy._keep_validator,
    'remove': DeviceUnlinkPolicy._remove_validator,
    'other': DeviceUnlinkPolicy._other_validator,
}

DeviceUnlinkPolicy.keep = DeviceUnlinkPolicy('keep')
DeviceUnlinkPolicy.remove = DeviceUnlinkPolicy('remove')
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)]

EndedEnterpriseAdminSessionDeprecatedDetails._federation_extra_details_validator = FedExtraDetails_validator
EndedEnterpriseAdminSessionDeprecatedDetails._all_field_names_ = set(['federation_extra_details'])
EndedEnterpriseAdminSessionDeprecatedDetails._all_fields_ = [('federation_extra_details', EndedEnterpriseAdminSessionDeprecatedDetails._federation_extra_details_validator)]

EndedEnterpriseAdminSessionDeprecatedType._description_validator = bv.String()
EndedEnterpriseAdminSessionDeprecatedType._all_field_names_ = set(['description'])
EndedEnterpriseAdminSessionDeprecatedType._all_fields_ = [('description', EndedEnterpriseAdminSessionDeprecatedType._description_validator)]

EndedEnterpriseAdminSessionDetails._all_field_names_ = set([])
EndedEnterpriseAdminSessionDetails._all_fields_ = []

EndedEnterpriseAdminSessionType._description_validator = bv.String()
EndedEnterpriseAdminSessionType._all_field_names_ = set(['description'])
EndedEnterpriseAdminSessionType._all_fields_ = [('description', EndedEnterpriseAdminSessionType._description_validator)]

EnterpriseSettingsLockingDetails._team_name_validator = bv.String()
EnterpriseSettingsLockingDetails._settings_page_name_validator = bv.String()
EnterpriseSettingsLockingDetails._previous_settings_page_locking_state_validator = bv.String()
EnterpriseSettingsLockingDetails._new_settings_page_locking_state_validator = bv.String()
EnterpriseSettingsLockingDetails._all_field_names_ = set([
    'team_name',
    'settings_page_name',
    'previous_settings_page_locking_state',
    'new_settings_page_locking_state',
])
EnterpriseSettingsLockingDetails._all_fields_ = [
    ('team_name', EnterpriseSettingsLockingDetails._team_name_validator),
    ('settings_page_name', EnterpriseSettingsLockingDetails._settings_page_name_validator),
    ('previous_settings_page_locking_state', EnterpriseSettingsLockingDetails._previous_settings_page_locking_state_validator),
    ('new_settings_page_locking_state', EnterpriseSettingsLockingDetails._new_settings_page_locking_state_validator),
]

EnterpriseSettingsLockingType._description_validator = bv.String()
EnterpriseSettingsLockingType._all_field_names_ = set(['description'])
EnterpriseSettingsLockingType._all_fields_ = [('description', EnterpriseSettingsLockingType._description_validator)]

EventCategory._apps_validator = bv.Void()
EventCategory._comments_validator = bv.Void()
EventCategory._data_governance_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,
    'data_governance': EventCategory._data_governance_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.data_governance = EventCategory('data_governance')
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._governance_policy_add_folders_details_validator = GovernancePolicyAddFoldersDetails_validator
EventDetails._governance_policy_create_details_validator = GovernancePolicyCreateDetails_validator
EventDetails._governance_policy_delete_details_validator = GovernancePolicyDeleteDetails_validator
EventDetails._governance_policy_edit_details_details_validator = GovernancePolicyEditDetailsDetails_validator
EventDetails._governance_policy_edit_duration_details_validator = GovernancePolicyEditDurationDetails_validator
EventDetails._governance_policy_remove_folders_details_validator = GovernancePolicyRemoveFoldersDetails_validator
EventDetails._legal_holds_activate_a_hold_details_validator = LegalHoldsActivateAHoldDetails_validator
EventDetails._legal_holds_add_members_details_validator = LegalHoldsAddMembersDetails_validator
EventDetails._legal_holds_change_hold_details_details_validator = LegalHoldsChangeHoldDetailsDetails_validator
EventDetails._legal_holds_change_hold_name_details_validator = LegalHoldsChangeHoldNameDetails_validator
EventDetails._legal_holds_export_a_hold_details_validator = LegalHoldsExportAHoldDetails_validator
EventDetails._legal_holds_export_cancelled_details_validator = LegalHoldsExportCancelledDetails_validator
EventDetails._legal_holds_export_downloaded_details_validator = LegalHoldsExportDownloadedDetails_validator
EventDetails._legal_holds_export_removed_details_validator = LegalHoldsExportRemovedDetails_validator
EventDetails._legal_holds_release_a_hold_details_validator = LegalHoldsReleaseAHoldDetails_validator
EventDetails._legal_holds_remove_members_details_validator = LegalHoldsRemoveMembersDetails_validator
EventDetails._legal_holds_report_a_hold_details_validator = LegalHoldsReportAHoldDetails_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_sync_backup_status_changed_details_validator = DeviceSyncBackupStatusChangedDetails_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_locking_lock_status_changed_details_validator = FileLockingLockStatusChangedDetails_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._folder_overview_description_changed_details_validator = FolderOverviewDescriptionChangedDetails_validator
EventDetails._folder_overview_item_pinned_details_validator = FolderOverviewItemPinnedDetails_validator
EventDetails._folder_overview_item_unpinned_details_validator = FolderOverviewItemUnpinnedDetails_validator
EventDetails._rewind_folder_details_validator = RewindFolderDetails_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._account_lock_or_unlocked_details_validator = AccountLockOrUnlockedDetails_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._create_team_invite_link_details_validator = CreateTeamInviteLinkDetails_validator
EventDetails._delete_team_invite_link_details_validator = DeleteTeamInviteLinkDetails_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_delete_profile_photo_details_validator = MemberDeleteProfilePhotoDetails_validator
EventDetails._member_permanently_delete_account_contents_details_validator = MemberPermanentlyDeleteAccountContentsDetails_validator
EventDetails._member_remove_external_id_details_validator = MemberRemoveExternalIdDetails_validator
EventDetails._member_set_profile_photo_details_validator = MemberSetProfilePhotoDetails_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._pending_secondary_email_added_details_validator = PendingSecondaryEmailAddedDetails_validator
EventDetails._secondary_email_deleted_details_validator = SecondaryEmailDeletedDetails_validator
EventDetails._secondary_email_verified_details_validator = SecondaryEmailVerifiedDetails_validator
EventDetails._secondary_mails_policy_changed_details_validator = SecondaryMailsPolicyChangedDetails_validator
EventDetails._binder_add_page_details_validator = BinderAddPageDetails_validator
EventDetails._binder_add_section_details_validator = BinderAddSectionDetails_validator
EventDetails._binder_remove_page_details_validator = BinderRemovePageDetails_validator
EventDetails._binder_remove_section_details_validator = BinderRemoveSectionDetails_validator
EventDetails._binder_rename_page_details_validator = BinderRenamePageDetails_validator
EventDetails._binder_rename_section_details_validator = BinderRenameSectionDetails_validator
EventDetails._binder_reorder_page_details_validator = BinderReorderPageDetails_validator
EventDetails._binder_reorder_section_details_validator = BinderReorderSectionDetails_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_change_permission_details_validator = PaperPublishedLinkChangePermissionDetails_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._export_members_report_fail_details_validator = ExportMembersReportFailDetails_validator
EventDetails._external_sharing_create_report_details_validator = ExternalSharingCreateReportDetails_validator
EventDetails._external_sharing_report_failed_details_validator = ExternalSharingReportFailedDetails_validator
EventDetails._no_expiration_link_gen_create_report_details_validator = NoExpirationLinkGenCreateReportDetails_validator
EventDetails._no_expiration_link_gen_report_failed_details_validator = NoExpirationLinkGenReportFailedDetails_validator
EventDetails._no_password_link_gen_create_report_details_validator = NoPasswordLinkGenCreateReportDetails_validator
EventDetails._no_password_link_gen_report_failed_details_validator = NoPasswordLinkGenReportFailedDetails_validator
EventDetails._no_password_link_view_create_report_details_validator = NoPasswordLinkViewCreateReportDetails_validator
EventDetails._no_password_link_view_report_failed_details_validator = NoPasswordLinkViewReportFailedDetails_validator
EventDetails._outdated_link_view_create_report_details_validator = OutdatedLinkViewCreateReportDetails_validator
EventDetails._outdated_link_view_report_failed_details_validator = OutdatedLinkViewReportFailedDetails_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._file_transfers_file_add_details_validator = FileTransfersFileAddDetails_validator
EventDetails._file_transfers_transfer_delete_details_validator = FileTransfersTransferDeleteDetails_validator
EventDetails._file_transfers_transfer_download_details_validator = FileTransfersTransferDownloadDetails_validator
EventDetails._file_transfers_transfer_send_details_validator = FileTransfersTransferSendDetails_validator
EventDetails._file_transfers_transfer_view_details_validator = FileTransfersTransferViewDetails_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_restore_invitees_details_validator = SharedContentRestoreInviteesDetails_validator
EventDetails._shared_content_restore_member_details_validator = SharedContentRestoreMemberDetails_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_settings_add_expiration_details_validator = SharedLinkSettingsAddExpirationDetails_validator
EventDetails._shared_link_settings_add_password_details_validator = SharedLinkSettingsAddPasswordDetails_validator
EventDetails._shared_link_settings_allow_download_disabled_details_validator = SharedLinkSettingsAllowDownloadDisabledDetails_validator
EventDetails._shared_link_settings_allow_download_enabled_details_validator = SharedLinkSettingsAllowDownloadEnabledDetails_validator
EventDetails._shared_link_settings_change_audience_details_validator = SharedLinkSettingsChangeAudienceDetails_validator
EventDetails._shared_link_settings_change_expiration_details_validator = SharedLinkSettingsChangeExpirationDetails_validator
EventDetails._shared_link_settings_change_password_details_validator = SharedLinkSettingsChangePasswordDetails_validator
EventDetails._shared_link_settings_remove_expiration_details_validator = SharedLinkSettingsRemoveExpirationDetails_validator
EventDetails._shared_link_settings_remove_password_details_validator = SharedLinkSettingsRemovePasswordDetails_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_disable_downloads_details_validator = ShmodelDisableDownloadsDetails_validator
EventDetails._shmodel_enable_downloads_details_validator = ShmodelEnableDownloadsDetails_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._computer_backup_policy_changed_details_validator = ComputerBackupPolicyChangedDetails_validator
EventDetails._content_administration_policy_changed_details_validator = ContentAdministrationPolicyChangedDetails_validator
EventDetails._data_placement_restriction_change_policy_details_validator = DataPlacementRestrictionChangePolicyDetails_validator
EventDetails._data_placement_restriction_satisfy_policy_details_validator = DataPlacementRestrictionSatisfyPolicyDetails_validator
EventDetails._device_approvals_add_exception_details_validator = DeviceApprovalsAddExceptionDetails_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._device_approvals_remove_exception_details_validator = DeviceApprovalsRemoveExceptionDetails_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_locking_policy_changed_details_validator = FileLockingPolicyChangedDetails_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._file_transfers_policy_changed_details_validator = FileTransfersPolicyChangedDetails_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_send_invite_policy_changed_details_validator = MemberSendInvitePolicyChangedDetails_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._password_strength_requirements_change_policy_details_validator = PasswordStrengthRequirementsChangePolicyDetails_validator
EventDetails._permanent_delete_change_policy_details_validator = PermanentDeleteChangePolicyDetails_validator
EventDetails._reseller_support_change_policy_details_validator = ResellerSupportChangePolicyDetails_validator
EventDetails._rewind_policy_changed_details_validator = RewindPolicyChangedDetails_validator
EventDetails._send_for_signature_policy_changed_details_validator = SendForSignaturePolicyChangedDetails_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._smarter_smart_sync_policy_changed_details_validator = SmarterSmartSyncPolicyChangedDetails_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._team_sharing_whitelist_subjects_changed_details_validator = TeamSharingWhitelistSubjectsChangedDetails_validator
EventDetails._tfa_add_exception_details_validator = TfaAddExceptionDetails_validator
EventDetails._tfa_change_policy_details_validator = TfaChangePolicyDetails_validator
EventDetails._tfa_remove_exception_details_validator = TfaRemoveExceptionDetails_validator
EventDetails._two_account_change_policy_details_validator = TwoAccountChangePolicyDetails_validator
EventDetails._viewer_info_policy_changed_details_validator = ViewerInfoPolicyChangedDetails_validator
EventDetails._watermarking_policy_changed_details_validator = WatermarkingPolicyChangedDetails_validator
EventDetails._web_sessions_change_active_session_limit_details_validator = WebSessionsChangeActiveSessionLimitDetails_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._changed_enterprise_admin_role_details_validator = ChangedEnterpriseAdminRoleDetails_validator
EventDetails._changed_enterprise_connected_team_status_details_validator = ChangedEnterpriseConnectedTeamStatusDetails_validator
EventDetails._ended_enterprise_admin_session_details_validator = EndedEnterpriseAdminSessionDetails_validator
EventDetails._ended_enterprise_admin_session_deprecated_details_validator = EndedEnterpriseAdminSessionDeprecatedDetails_validator
EventDetails._enterprise_settings_locking_details_validator = EnterpriseSettingsLockingDetails_validator
EventDetails._guest_admin_change_status_details_validator = GuestAdminChangeStatusDetails_validator
EventDetails._started_enterprise_admin_session_details_validator = StartedEnterpriseAdminSessionDetails_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,
    'governance_policy_add_folders_details': EventDetails._governance_policy_add_folders_details_validator,
    'governance_policy_create_details': EventDetails._governance_policy_create_details_validator,
    'governance_policy_delete_details': EventDetails._governance_policy_delete_details_validator,
    'governance_policy_edit_details_details': EventDetails._governance_policy_edit_details_details_validator,
    'governance_policy_edit_duration_details': EventDetails._governance_policy_edit_duration_details_validator,
    'governance_policy_remove_folders_details': EventDetails._governance_policy_remove_folders_details_validator,
    'legal_holds_activate_a_hold_details': EventDetails._legal_holds_activate_a_hold_details_validator,
    'legal_holds_add_members_details': EventDetails._legal_holds_add_members_details_validator,
    'legal_holds_change_hold_details_details': EventDetails._legal_holds_change_hold_details_details_validator,
    'legal_holds_change_hold_name_details': EventDetails._legal_holds_change_hold_name_details_validator,
    'legal_holds_export_a_hold_details': EventDetails._legal_holds_export_a_hold_details_validator,
    'legal_holds_export_cancelled_details': EventDetails._legal_holds_export_cancelled_details_validator,
    'legal_holds_export_downloaded_details': EventDetails._legal_holds_export_downloaded_details_validator,
    'legal_holds_export_removed_details': EventDetails._legal_holds_export_removed_details_validator,
    'legal_holds_release_a_hold_details': EventDetails._legal_holds_release_a_hold_details_validator,
    'legal_holds_remove_members_details': EventDetails._legal_holds_remove_members_details_validator,
    'legal_holds_report_a_hold_details': EventDetails._legal_holds_report_a_hold_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_sync_backup_status_changed_details': EventDetails._device_sync_backup_status_changed_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_locking_lock_status_changed_details': EventDetails._file_locking_lock_status_changed_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,
    'folder_overview_description_changed_details': EventDetails._folder_overview_description_changed_details_validator,
    'folder_overview_item_pinned_details': EventDetails._folder_overview_item_pinned_details_validator,
    'folder_overview_item_unpinned_details': EventDetails._folder_overview_item_unpinned_details_validator,
    'rewind_folder_details': EventDetails._rewind_folder_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,
    'account_lock_or_unlocked_details': EventDetails._account_lock_or_unlocked_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,
    'create_team_invite_link_details': EventDetails._create_team_invite_link_details_validator,
    'delete_team_invite_link_details': EventDetails._delete_team_invite_link_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_delete_profile_photo_details': EventDetails._member_delete_profile_photo_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_set_profile_photo_details': EventDetails._member_set_profile_photo_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,
    'pending_secondary_email_added_details': EventDetails._pending_secondary_email_added_details_validator,
    'secondary_email_deleted_details': EventDetails._secondary_email_deleted_details_validator,
    'secondary_email_verified_details': EventDetails._secondary_email_verified_details_validator,
    'secondary_mails_policy_changed_details': EventDetails._secondary_mails_policy_changed_details_validator,
    'binder_add_page_details': EventDetails._binder_add_page_details_validator,
    'binder_add_section_details': EventDetails._binder_add_section_details_validator,
    'binder_remove_page_details': EventDetails._binder_remove_page_details_validator,
    'binder_remove_section_details': EventDetails._binder_remove_section_details_validator,
    'binder_rename_page_details': EventDetails._binder_rename_page_details_validator,
    'binder_rename_section_details': EventDetails._binder_rename_section_details_validator,
    'binder_reorder_page_details': EventDetails._binder_reorder_page_details_validator,
    'binder_reorder_section_details': EventDetails._binder_reorder_section_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_change_permission_details': EventDetails._paper_published_link_change_permission_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,
    'export_members_report_fail_details': EventDetails._export_members_report_fail_details_validator,
    'external_sharing_create_report_details': EventDetails._external_sharing_create_report_details_validator,
    'external_sharing_report_failed_details': EventDetails._external_sharing_report_failed_details_validator,
    'no_expiration_link_gen_create_report_details': EventDetails._no_expiration_link_gen_create_report_details_validator,
    'no_expiration_link_gen_report_failed_details': EventDetails._no_expiration_link_gen_report_failed_details_validator,
    'no_password_link_gen_create_report_details': EventDetails._no_password_link_gen_create_report_details_validator,
    'no_password_link_gen_report_failed_details': EventDetails._no_password_link_gen_report_failed_details_validator,
    'no_password_link_view_create_report_details': EventDetails._no_password_link_view_create_report_details_validator,
    'no_password_link_view_report_failed_details': EventDetails._no_password_link_view_report_failed_details_validator,
    'outdated_link_view_create_report_details': EventDetails._outdated_link_view_create_report_details_validator,
    'outdated_link_view_report_failed_details': EventDetails._outdated_link_view_report_failed_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,
    'file_transfers_file_add_details': EventDetails._file_transfers_file_add_details_validator,
    'file_transfers_transfer_delete_details': EventDetails._file_transfers_transfer_delete_details_validator,
    'file_transfers_transfer_download_details': EventDetails._file_transfers_transfer_download_details_validator,
    'file_transfers_transfer_send_details': EventDetails._file_transfers_transfer_send_details_validator,
    'file_transfers_transfer_view_details': EventDetails._file_transfers_transfer_view_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_restore_invitees_details': EventDetails._shared_content_restore_invitees_details_validator,
    'shared_content_restore_member_details': EventDetails._shared_content_restore_member_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_settings_add_expiration_details': EventDetails._shared_link_settings_add_expiration_details_validator,
    'shared_link_settings_add_password_details': EventDetails._shared_link_settings_add_password_details_validator,
    'shared_link_settings_allow_download_disabled_details': EventDetails._shared_link_settings_allow_download_disabled_details_validator,
    'shared_link_settings_allow_download_enabled_details': EventDetails._shared_link_settings_allow_download_enabled_details_validator,
    'shared_link_settings_change_audience_details': EventDetails._shared_link_settings_change_audience_details_validator,
    'shared_link_settings_change_expiration_details': EventDetails._shared_link_settings_change_expiration_details_validator,
    'shared_link_settings_change_password_details': EventDetails._shared_link_settings_change_password_details_validator,
    'shared_link_settings_remove_expiration_details': EventDetails._shared_link_settings_remove_expiration_details_validator,
    'shared_link_settings_remove_password_details': EventDetails._shared_link_settings_remove_password_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_disable_downloads_details': EventDetails._shmodel_disable_downloads_details_validator,
    'shmodel_enable_downloads_details': EventDetails._shmodel_enable_downloads_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,
    'computer_backup_policy_changed_details': EventDetails._computer_backup_policy_changed_details_validator,
    'content_administration_policy_changed_details': EventDetails._content_administration_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_add_exception_details': EventDetails._device_approvals_add_exception_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,
    'device_approvals_remove_exception_details': EventDetails._device_approvals_remove_exception_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_locking_policy_changed_details': EventDetails._file_locking_policy_changed_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,
    'file_transfers_policy_changed_details': EventDetails._file_transfers_policy_changed_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_send_invite_policy_changed_details': EventDetails._member_send_invite_policy_changed_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,
    'password_strength_requirements_change_policy_details': EventDetails._password_strength_requirements_change_policy_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,
    'rewind_policy_changed_details': EventDetails._rewind_policy_changed_details_validator,
    'send_for_signature_policy_changed_details': EventDetails._send_for_signature_policy_changed_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,
    'smarter_smart_sync_policy_changed_details': EventDetails._smarter_smart_sync_policy_changed_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,
    'team_sharing_whitelist_subjects_changed_details': EventDetails._team_sharing_whitelist_subjects_changed_details_validator,
    'tfa_add_exception_details': EventDetails._tfa_add_exception_details_validator,
    'tfa_change_policy_details': EventDetails._tfa_change_policy_details_validator,
    'tfa_remove_exception_details': EventDetails._tfa_remove_exception_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,
    'watermarking_policy_changed_details': EventDetails._watermarking_policy_changed_details_validator,
    'web_sessions_change_active_session_limit_details': EventDetails._web_sessions_change_active_session_limit_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,
    'changed_enterprise_admin_role_details': EventDetails._changed_enterprise_admin_role_details_validator,
    'changed_enterprise_connected_team_status_details': EventDetails._changed_enterprise_connected_team_status_details_validator,
    'ended_enterprise_admin_session_details': EventDetails._ended_enterprise_admin_session_details_validator,
    'ended_enterprise_admin_session_deprecated_details': EventDetails._ended_enterprise_admin_session_deprecated_details_validator,
    'enterprise_settings_locking_details': EventDetails._enterprise_settings_locking_details_validator,
    'guest_admin_change_status_details': EventDetails._guest_admin_change_status_details_validator,
    'started_enterprise_admin_session_details': EventDetails._started_enterprise_admin_session_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._governance_policy_add_folders_validator = GovernancePolicyAddFoldersType_validator
EventType._governance_policy_create_validator = GovernancePolicyCreateType_validator
EventType._governance_policy_delete_validator = GovernancePolicyDeleteType_validator
EventType._governance_policy_edit_details_validator = GovernancePolicyEditDetailsType_validator
EventType._governance_policy_edit_duration_validator = GovernancePolicyEditDurationType_validator
EventType._governance_policy_remove_folders_validator = GovernancePolicyRemoveFoldersType_validator
EventType._legal_holds_activate_a_hold_validator = LegalHoldsActivateAHoldType_validator
EventType._legal_holds_add_members_validator = LegalHoldsAddMembersType_validator
EventType._legal_holds_change_hold_details_validator = LegalHoldsChangeHoldDetailsType_validator
EventType._legal_holds_change_hold_name_validator = LegalHoldsChangeHoldNameType_validator
EventType._legal_holds_export_a_hold_validator = LegalHoldsExportAHoldType_validator
EventType._legal_holds_export_cancelled_validator = LegalHoldsExportCancelledType_validator
EventType._legal_holds_export_downloaded_validator = LegalHoldsExportDownloadedType_validator
EventType._legal_holds_export_removed_validator = LegalHoldsExportRemovedType_validator
EventType._legal_holds_release_a_hold_validator = LegalHoldsReleaseAHoldType_validator
EventType._legal_holds_remove_members_validator = LegalHoldsRemoveMembersType_validator
EventType._legal_holds_report_a_hold_validator = LegalHoldsReportAHoldType_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_sync_backup_status_changed_validator = DeviceSyncBackupStatusChangedType_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_locking_lock_status_changed_validator = FileLockingLockStatusChangedType_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._folder_overview_description_changed_validator = FolderOverviewDescriptionChangedType_validator
EventType._folder_overview_item_pinned_validator = FolderOverviewItemPinnedType_validator
EventType._folder_overview_item_unpinned_validator = FolderOverviewItemUnpinnedType_validator
EventType._rewind_folder_validator = RewindFolderType_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._account_lock_or_unlocked_validator = AccountLockOrUnlockedType_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._create_team_invite_link_validator = CreateTeamInviteLinkType_validator
EventType._delete_team_invite_link_validator = DeleteTeamInviteLinkType_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_delete_profile_photo_validator = MemberDeleteProfilePhotoType_validator
EventType._member_permanently_delete_account_contents_validator = MemberPermanentlyDeleteAccountContentsType_validator
EventType._member_remove_external_id_validator = MemberRemoveExternalIdType_validator
EventType._member_set_profile_photo_validator = MemberSetProfilePhotoType_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._pending_secondary_email_added_validator = PendingSecondaryEmailAddedType_validator
EventType._secondary_email_deleted_validator = SecondaryEmailDeletedType_validator
EventType._secondary_email_verified_validator = SecondaryEmailVerifiedType_validator
EventType._secondary_mails_policy_changed_validator = SecondaryMailsPolicyChangedType_validator
EventType._binder_add_page_validator = BinderAddPageType_validator
EventType._binder_add_section_validator = BinderAddSectionType_validator
EventType._binder_remove_page_validator = BinderRemovePageType_validator
EventType._binder_remove_section_validator = BinderRemoveSectionType_validator
EventType._binder_rename_page_validator = BinderRenamePageType_validator
EventType._binder_rename_section_validator = BinderRenameSectionType_validator
EventType._binder_reorder_page_validator = BinderReorderPageType_validator
EventType._binder_reorder_section_validator = BinderReorderSectionType_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_change_permission_validator = PaperPublishedLinkChangePermissionType_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._export_members_report_fail_validator = ExportMembersReportFailType_validator
EventType._external_sharing_create_report_validator = ExternalSharingCreateReportType_validator
EventType._external_sharing_report_failed_validator = ExternalSharingReportFailedType_validator
EventType._no_expiration_link_gen_create_report_validator = NoExpirationLinkGenCreateReportType_validator
EventType._no_expiration_link_gen_report_failed_validator = NoExpirationLinkGenReportFailedType_validator
EventType._no_password_link_gen_create_report_validator = NoPasswordLinkGenCreateReportType_validator
EventType._no_password_link_gen_report_failed_validator = NoPasswordLinkGenReportFailedType_validator
EventType._no_password_link_view_create_report_validator = NoPasswordLinkViewCreateReportType_validator
EventType._no_password_link_view_report_failed_validator = NoPasswordLinkViewReportFailedType_validator
EventType._outdated_link_view_create_report_validator = OutdatedLinkViewCreateReportType_validator
EventType._outdated_link_view_report_failed_validator = OutdatedLinkViewReportFailedType_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._file_transfers_file_add_validator = FileTransfersFileAddType_validator
EventType._file_transfers_transfer_delete_validator = FileTransfersTransferDeleteType_validator
EventType._file_transfers_transfer_download_validator = FileTransfersTransferDownloadType_validator
EventType._file_transfers_transfer_send_validator = FileTransfersTransferSendType_validator
EventType._file_transfers_transfer_view_validator = FileTransfersTransferViewType_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_restore_invitees_validator = SharedContentRestoreInviteesType_validator
EventType._shared_content_restore_member_validator = SharedContentRestoreMemberType_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_settings_add_expiration_validator = SharedLinkSettingsAddExpirationType_validator
EventType._shared_link_settings_add_password_validator = SharedLinkSettingsAddPasswordType_validator
EventType._shared_link_settings_allow_download_disabled_validator = SharedLinkSettingsAllowDownloadDisabledType_validator
EventType._shared_link_settings_allow_download_enabled_validator = SharedLinkSettingsAllowDownloadEnabledType_validator
EventType._shared_link_settings_change_audience_validator = SharedLinkSettingsChangeAudienceType_validator
EventType._shared_link_settings_change_expiration_validator = SharedLinkSettingsChangeExpirationType_validator
EventType._shared_link_settings_change_password_validator = SharedLinkSettingsChangePasswordType_validator
EventType._shared_link_settings_remove_expiration_validator = SharedLinkSettingsRemoveExpirationType_validator
EventType._shared_link_settings_remove_password_validator = SharedLinkSettingsRemovePasswordType_validator
EventType._shared_link_share_validator = SharedLinkShareType_validator
EventType._shared_link_view_validator = SharedLinkViewType_validator
EventType._shared_note_opened_validator = SharedNoteOpenedType_validator
EventType._shmodel_disable_downloads_validator = ShmodelDisableDownloadsType_validator
EventType._shmodel_enable_downloads_validator = ShmodelEnableDownloadsType_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._computer_backup_policy_changed_validator = ComputerBackupPolicyChangedType_validator
EventType._content_administration_policy_changed_validator = ContentAdministrationPolicyChangedType_validator
EventType._data_placement_restriction_change_policy_validator = DataPlacementRestrictionChangePolicyType_validator
EventType._data_placement_restriction_satisfy_policy_validator = DataPlacementRestrictionSatisfyPolicyType_validator
EventType._device_approvals_add_exception_validator = DeviceApprovalsAddExceptionType_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._device_approvals_remove_exception_validator = DeviceApprovalsRemoveExceptionType_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_locking_policy_changed_validator = FileLockingPolicyChangedType_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._file_transfers_policy_changed_validator = FileTransfersPolicyChangedType_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_send_invite_policy_changed_validator = MemberSendInvitePolicyChangedType_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._password_strength_requirements_change_policy_validator = PasswordStrengthRequirementsChangePolicyType_validator
EventType._permanent_delete_change_policy_validator = PermanentDeleteChangePolicyType_validator
EventType._reseller_support_change_policy_validator = ResellerSupportChangePolicyType_validator
EventType._rewind_policy_changed_validator = RewindPolicyChangedType_validator
EventType._send_for_signature_policy_changed_validator = SendForSignaturePolicyChangedType_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._smarter_smart_sync_policy_changed_validator = SmarterSmartSyncPolicyChangedType_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._team_sharing_whitelist_subjects_changed_validator = TeamSharingWhitelistSubjectsChangedType_validator
EventType._tfa_add_exception_validator = TfaAddExceptionType_validator
EventType._tfa_change_policy_validator = TfaChangePolicyType_validator
EventType._tfa_remove_exception_validator = TfaRemoveExceptionType_validator
EventType._two_account_change_policy_validator = TwoAccountChangePolicyType_validator
EventType._viewer_info_policy_changed_validator = ViewerInfoPolicyChangedType_validator
EventType._watermarking_policy_changed_validator = WatermarkingPolicyChangedType_validator
EventType._web_sessions_change_active_session_limit_validator = WebSessionsChangeActiveSessionLimitType_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._changed_enterprise_admin_role_validator = ChangedEnterpriseAdminRoleType_validator
EventType._changed_enterprise_connected_team_status_validator = ChangedEnterpriseConnectedTeamStatusType_validator
EventType._ended_enterprise_admin_session_validator = EndedEnterpriseAdminSessionType_validator
EventType._ended_enterprise_admin_session_deprecated_validator = EndedEnterpriseAdminSessionDeprecatedType_validator
EventType._enterprise_settings_locking_validator = EnterpriseSettingsLockingType_validator
EventType._guest_admin_change_status_validator = GuestAdminChangeStatusType_validator
EventType._started_enterprise_admin_session_validator = StartedEnterpriseAdminSessionType_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,
    'governance_policy_add_folders': EventType._governance_policy_add_folders_validator,
    'governance_policy_create': EventType._governance_policy_create_validator,
    'governance_policy_delete': EventType._governance_policy_delete_validator,
    'governance_policy_edit_details': EventType._governance_policy_edit_details_validator,
    'governance_policy_edit_duration': EventType._governance_policy_edit_duration_validator,
    'governance_policy_remove_folders': EventType._governance_policy_remove_folders_validator,
    'legal_holds_activate_a_hold': EventType._legal_holds_activate_a_hold_validator,
    'legal_holds_add_members': EventType._legal_holds_add_members_validator,
    'legal_holds_change_hold_details': EventType._legal_holds_change_hold_details_validator,
    'legal_holds_change_hold_name': EventType._legal_holds_change_hold_name_validator,
    'legal_holds_export_a_hold': EventType._legal_holds_export_a_hold_validator,
    'legal_holds_export_cancelled': EventType._legal_holds_export_cancelled_validator,
    'legal_holds_export_downloaded': EventType._legal_holds_export_downloaded_validator,
    'legal_holds_export_removed': EventType._legal_holds_export_removed_validator,
    'legal_holds_release_a_hold': EventType._legal_holds_release_a_hold_validator,
    'legal_holds_remove_members': EventType._legal_holds_remove_members_validator,
    'legal_holds_report_a_hold': EventType._legal_holds_report_a_hold_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_sync_backup_status_changed': EventType._device_sync_backup_status_changed_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_locking_lock_status_changed': EventType._file_locking_lock_status_changed_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,
    'folder_overview_description_changed': EventType._folder_overview_description_changed_validator,
    'folder_overview_item_pinned': EventType._folder_overview_item_pinned_validator,
    'folder_overview_item_unpinned': EventType._folder_overview_item_unpinned_validator,
    'rewind_folder': EventType._rewind_folder_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,
    'account_lock_or_unlocked': EventType._account_lock_or_unlocked_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,
    'create_team_invite_link': EventType._create_team_invite_link_validator,
    'delete_team_invite_link': EventType._delete_team_invite_link_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_delete_profile_photo': EventType._member_delete_profile_photo_validator,
    'member_permanently_delete_account_contents': EventType._member_permanently_delete_account_contents_validator,
    'member_remove_external_id': EventType._member_remove_external_id_validator,
    'member_set_profile_photo': EventType._member_set_profile_photo_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,
    'pending_secondary_email_added': EventType._pending_secondary_email_added_validator,
    'secondary_email_deleted': EventType._secondary_email_deleted_validator,
    'secondary_email_verified': EventType._secondary_email_verified_validator,
    'secondary_mails_policy_changed': EventType._secondary_mails_policy_changed_validator,
    'binder_add_page': EventType._binder_add_page_validator,
    'binder_add_section': EventType._binder_add_section_validator,
    'binder_remove_page': EventType._binder_remove_page_validator,
    'binder_remove_section': EventType._binder_remove_section_validator,
    'binder_rename_page': EventType._binder_rename_page_validator,
    'binder_rename_section': EventType._binder_rename_section_validator,
    'binder_reorder_page': EventType._binder_reorder_page_validator,
    'binder_reorder_section': EventType._binder_reorder_section_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_change_permission': EventType._paper_published_link_change_permission_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,
    'export_members_report_fail': EventType._export_members_report_fail_validator,
    'external_sharing_create_report': EventType._external_sharing_create_report_validator,
    'external_sharing_report_failed': EventType._external_sharing_report_failed_validator,
    'no_expiration_link_gen_create_report': EventType._no_expiration_link_gen_create_report_validator,
    'no_expiration_link_gen_report_failed': EventType._no_expiration_link_gen_report_failed_validator,
    'no_password_link_gen_create_report': EventType._no_password_link_gen_create_report_validator,
    'no_password_link_gen_report_failed': EventType._no_password_link_gen_report_failed_validator,
    'no_password_link_view_create_report': EventType._no_password_link_view_create_report_validator,
    'no_password_link_view_report_failed': EventType._no_password_link_view_report_failed_validator,
    'outdated_link_view_create_report': EventType._outdated_link_view_create_report_validator,
    'outdated_link_view_report_failed': EventType._outdated_link_view_report_failed_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,
    'file_transfers_file_add': EventType._file_transfers_file_add_validator,
    'file_transfers_transfer_delete': EventType._file_transfers_transfer_delete_validator,
    'file_transfers_transfer_download': EventType._file_transfers_transfer_download_validator,
    'file_transfers_transfer_send': EventType._file_transfers_transfer_send_validator,
    'file_transfers_transfer_view': EventType._file_transfers_transfer_view_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_restore_invitees': EventType._shared_content_restore_invitees_validator,
    'shared_content_restore_member': EventType._shared_content_restore_member_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_settings_add_expiration': EventType._shared_link_settings_add_expiration_validator,
    'shared_link_settings_add_password': EventType._shared_link_settings_add_password_validator,
    'shared_link_settings_allow_download_disabled': EventType._shared_link_settings_allow_download_disabled_validator,
    'shared_link_settings_allow_download_enabled': EventType._shared_link_settings_allow_download_enabled_validator,
    'shared_link_settings_change_audience': EventType._shared_link_settings_change_audience_validator,
    'shared_link_settings_change_expiration': EventType._shared_link_settings_change_expiration_validator,
    'shared_link_settings_change_password': EventType._shared_link_settings_change_password_validator,
    'shared_link_settings_remove_expiration': EventType._shared_link_settings_remove_expiration_validator,
    'shared_link_settings_remove_password': EventType._shared_link_settings_remove_password_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_disable_downloads': EventType._shmodel_disable_downloads_validator,
    'shmodel_enable_downloads': EventType._shmodel_enable_downloads_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,
    'computer_backup_policy_changed': EventType._computer_backup_policy_changed_validator,
    'content_administration_policy_changed': EventType._content_administration_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_add_exception': EventType._device_approvals_add_exception_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,
    'device_approvals_remove_exception': EventType._device_approvals_remove_exception_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_locking_policy_changed': EventType._file_locking_policy_changed_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,
    'file_transfers_policy_changed': EventType._file_transfers_policy_changed_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_send_invite_policy_changed': EventType._member_send_invite_policy_changed_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,
    'password_strength_requirements_change_policy': EventType._password_strength_requirements_change_policy_validator,
    'permanent_delete_change_policy': EventType._permanent_delete_change_policy_validator,
    'reseller_support_change_policy': EventType._reseller_support_change_policy_validator,
    'rewind_policy_changed': EventType._rewind_policy_changed_validator,
    'send_for_signature_policy_changed': EventType._send_for_signature_policy_changed_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,
    'smarter_smart_sync_policy_changed': EventType._smarter_smart_sync_policy_changed_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,
    'team_sharing_whitelist_subjects_changed': EventType._team_sharing_whitelist_subjects_changed_validator,
    'tfa_add_exception': EventType._tfa_add_exception_validator,
    'tfa_change_policy': EventType._tfa_change_policy_validator,
    'tfa_remove_exception': EventType._tfa_remove_exception_validator,
    'two_account_change_policy': EventType._two_account_change_policy_validator,
    'viewer_info_policy_changed': EventType._viewer_info_policy_changed_validator,
    'watermarking_policy_changed': EventType._watermarking_policy_changed_validator,
    'web_sessions_change_active_session_limit': EventType._web_sessions_change_active_session_limit_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,
    'changed_enterprise_admin_role': EventType._changed_enterprise_admin_role_validator,
    'changed_enterprise_connected_team_status': EventType._changed_enterprise_connected_team_status_validator,
    'ended_enterprise_admin_session': EventType._ended_enterprise_admin_session_validator,
    'ended_enterprise_admin_session_deprecated': EventType._ended_enterprise_admin_session_deprecated_validator,
    'enterprise_settings_locking': EventType._enterprise_settings_locking_validator,
    'guest_admin_change_status': EventType._guest_admin_change_status_validator,
    'started_enterprise_admin_session': EventType._started_enterprise_admin_session_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')

EventTypeArg._app_link_team_validator = bv.Void()
EventTypeArg._app_link_user_validator = bv.Void()
EventTypeArg._app_unlink_team_validator = bv.Void()
EventTypeArg._app_unlink_user_validator = bv.Void()
EventTypeArg._integration_connected_validator = bv.Void()
EventTypeArg._integration_disconnected_validator = bv.Void()
EventTypeArg._file_add_comment_validator = bv.Void()
EventTypeArg._file_change_comment_subscription_validator = bv.Void()
EventTypeArg._file_delete_comment_validator = bv.Void()
EventTypeArg._file_edit_comment_validator = bv.Void()
EventTypeArg._file_like_comment_validator = bv.Void()
EventTypeArg._file_resolve_comment_validator = bv.Void()
EventTypeArg._file_unlike_comment_validator = bv.Void()
EventTypeArg._file_unresolve_comment_validator = bv.Void()
EventTypeArg._governance_policy_add_folders_validator = bv.Void()
EventTypeArg._governance_policy_create_validator = bv.Void()
EventTypeArg._governance_policy_delete_validator = bv.Void()
EventTypeArg._governance_policy_edit_details_validator = bv.Void()
EventTypeArg._governance_policy_edit_duration_validator = bv.Void()
EventTypeArg._governance_policy_remove_folders_validator = bv.Void()
EventTypeArg._legal_holds_activate_a_hold_validator = bv.Void()
EventTypeArg._legal_holds_add_members_validator = bv.Void()
EventTypeArg._legal_holds_change_hold_details_validator = bv.Void()
EventTypeArg._legal_holds_change_hold_name_validator = bv.Void()
EventTypeArg._legal_holds_export_a_hold_validator = bv.Void()
EventTypeArg._legal_holds_export_cancelled_validator = bv.Void()
EventTypeArg._legal_holds_export_downloaded_validator = bv.Void()
EventTypeArg._legal_holds_export_removed_validator = bv.Void()
EventTypeArg._legal_holds_release_a_hold_validator = bv.Void()
EventTypeArg._legal_holds_remove_members_validator = bv.Void()
EventTypeArg._legal_holds_report_a_hold_validator = bv.Void()
EventTypeArg._device_change_ip_desktop_validator = bv.Void()
EventTypeArg._device_change_ip_mobile_validator = bv.Void()
EventTypeArg._device_change_ip_web_validator = bv.Void()
EventTypeArg._device_delete_on_unlink_fail_validator = bv.Void()
EventTypeArg._device_delete_on_unlink_success_validator = bv.Void()
EventTypeArg._device_link_fail_validator = bv.Void()
EventTypeArg._device_link_success_validator = bv.Void()
EventTypeArg._device_management_disabled_validator = bv.Void()
EventTypeArg._device_management_enabled_validator = bv.Void()
EventTypeArg._device_sync_backup_status_changed_validator = bv.Void()
EventTypeArg._device_unlink_validator = bv.Void()
EventTypeArg._emm_refresh_auth_token_validator = bv.Void()
EventTypeArg._account_capture_change_availability_validator = bv.Void()
EventTypeArg._account_capture_migrate_account_validator = bv.Void()
EventTypeArg._account_capture_notification_emails_sent_validator = bv.Void()
EventTypeArg._account_capture_relinquish_account_validator = bv.Void()
EventTypeArg._disabled_domain_invites_validator = bv.Void()
EventTypeArg._domain_invites_approve_request_to_join_team_validator = bv.Void()
EventTypeArg._domain_invites_decline_request_to_join_team_validator = bv.Void()
EventTypeArg._domain_invites_email_existing_users_validator = bv.Void()
EventTypeArg._domain_invites_request_to_join_team_validator = bv.Void()
EventTypeArg._domain_invites_set_invite_new_user_pref_to_no_validator = bv.Void()
EventTypeArg._domain_invites_set_invite_new_user_pref_to_yes_validator = bv.Void()
EventTypeArg._domain_verification_add_domain_fail_validator = bv.Void()
EventTypeArg._domain_verification_add_domain_success_validator = bv.Void()
EventTypeArg._domain_verification_remove_domain_validator = bv.Void()
EventTypeArg._enabled_domain_invites_validator = bv.Void()
EventTypeArg._create_folder_validator = bv.Void()
EventTypeArg._file_add_validator = bv.Void()
EventTypeArg._file_copy_validator = bv.Void()
EventTypeArg._file_delete_validator = bv.Void()
EventTypeArg._file_download_validator = bv.Void()
EventTypeArg._file_edit_validator = bv.Void()
EventTypeArg._file_get_copy_reference_validator = bv.Void()
EventTypeArg._file_locking_lock_status_changed_validator = bv.Void()
EventTypeArg._file_move_validator = bv.Void()
EventTypeArg._file_permanently_delete_validator = bv.Void()
EventTypeArg._file_preview_validator = bv.Void()
EventTypeArg._file_rename_validator = bv.Void()
EventTypeArg._file_restore_validator = bv.Void()
EventTypeArg._file_revert_validator = bv.Void()
EventTypeArg._file_rollback_changes_validator = bv.Void()
EventTypeArg._file_save_copy_reference_validator = bv.Void()
EventTypeArg._folder_overview_description_changed_validator = bv.Void()
EventTypeArg._folder_overview_item_pinned_validator = bv.Void()
EventTypeArg._folder_overview_item_unpinned_validator = bv.Void()
EventTypeArg._rewind_folder_validator = bv.Void()
EventTypeArg._file_request_change_validator = bv.Void()
EventTypeArg._file_request_close_validator = bv.Void()
EventTypeArg._file_request_create_validator = bv.Void()
EventTypeArg._file_request_delete_validator = bv.Void()
EventTypeArg._file_request_receive_file_validator = bv.Void()
EventTypeArg._group_add_external_id_validator = bv.Void()
EventTypeArg._group_add_member_validator = bv.Void()
EventTypeArg._group_change_external_id_validator = bv.Void()
EventTypeArg._group_change_management_type_validator = bv.Void()
EventTypeArg._group_change_member_role_validator = bv.Void()
EventTypeArg._group_create_validator = bv.Void()
EventTypeArg._group_delete_validator = bv.Void()
EventTypeArg._group_description_updated_validator = bv.Void()
EventTypeArg._group_join_policy_updated_validator = bv.Void()
EventTypeArg._group_moved_validator = bv.Void()
EventTypeArg._group_remove_external_id_validator = bv.Void()
EventTypeArg._group_remove_member_validator = bv.Void()
EventTypeArg._group_rename_validator = bv.Void()
EventTypeArg._account_lock_or_unlocked_validator = bv.Void()
EventTypeArg._emm_error_validator = bv.Void()
EventTypeArg._guest_admin_signed_in_via_trusted_teams_validator = bv.Void()
EventTypeArg._guest_admin_signed_out_via_trusted_teams_validator = bv.Void()
EventTypeArg._login_fail_validator = bv.Void()
EventTypeArg._login_success_validator = bv.Void()
EventTypeArg._logout_validator = bv.Void()
EventTypeArg._reseller_support_session_end_validator = bv.Void()
EventTypeArg._reseller_support_session_start_validator = bv.Void()
EventTypeArg._sign_in_as_session_end_validator = bv.Void()
EventTypeArg._sign_in_as_session_start_validator = bv.Void()
EventTypeArg._sso_error_validator = bv.Void()
EventTypeArg._create_team_invite_link_validator = bv.Void()
EventTypeArg._delete_team_invite_link_validator = bv.Void()
EventTypeArg._member_add_external_id_validator = bv.Void()
EventTypeArg._member_add_name_validator = bv.Void()
EventTypeArg._member_change_admin_role_validator = bv.Void()
EventTypeArg._member_change_email_validator = bv.Void()
EventTypeArg._member_change_external_id_validator = bv.Void()
EventTypeArg._member_change_membership_type_validator = bv.Void()
EventTypeArg._member_change_name_validator = bv.Void()
EventTypeArg._member_change_status_validator = bv.Void()
EventTypeArg._member_delete_manual_contacts_validator = bv.Void()
EventTypeArg._member_delete_profile_photo_validator = bv.Void()
EventTypeArg._member_permanently_delete_account_contents_validator = bv.Void()
EventTypeArg._member_remove_external_id_validator = bv.Void()
EventTypeArg._member_set_profile_photo_validator = bv.Void()
EventTypeArg._member_space_limits_add_custom_quota_validator = bv.Void()
EventTypeArg._member_space_limits_change_custom_quota_validator = bv.Void()
EventTypeArg._member_space_limits_change_status_validator = bv.Void()
EventTypeArg._member_space_limits_remove_custom_quota_validator = bv.Void()
EventTypeArg._member_suggest_validator = bv.Void()
EventTypeArg._member_transfer_account_contents_validator = bv.Void()
EventTypeArg._pending_secondary_email_added_validator = bv.Void()
EventTypeArg._secondary_email_deleted_validator = bv.Void()
EventTypeArg._secondary_email_verified_validator = bv.Void()
EventTypeArg._secondary_mails_policy_changed_validator = bv.Void()
EventTypeArg._binder_add_page_validator = bv.Void()
EventTypeArg._binder_add_section_validator = bv.Void()
EventTypeArg._binder_remove_page_validator = bv.Void()
EventTypeArg._binder_remove_section_validator = bv.Void()
EventTypeArg._binder_rename_page_validator = bv.Void()
EventTypeArg._binder_rename_section_validator = bv.Void()
EventTypeArg._binder_reorder_page_validator = bv.Void()
EventTypeArg._binder_reorder_section_validator = bv.Void()
EventTypeArg._paper_content_add_member_validator = bv.Void()
EventTypeArg._paper_content_add_to_folder_validator = bv.Void()
EventTypeArg._paper_content_archive_validator = bv.Void()
EventTypeArg._paper_content_create_validator = bv.Void()
EventTypeArg._paper_content_permanently_delete_validator = bv.Void()
EventTypeArg._paper_content_remove_from_folder_validator = bv.Void()
EventTypeArg._paper_content_remove_member_validator = bv.Void()
EventTypeArg._paper_content_rename_validator = bv.Void()
EventTypeArg._paper_content_restore_validator = bv.Void()
EventTypeArg._paper_doc_add_comment_validator = bv.Void()
EventTypeArg._paper_doc_change_member_role_validator = bv.Void()
EventTypeArg._paper_doc_change_sharing_policy_validator = bv.Void()
EventTypeArg._paper_doc_change_subscription_validator = bv.Void()
EventTypeArg._paper_doc_deleted_validator = bv.Void()
EventTypeArg._paper_doc_delete_comment_validator = bv.Void()
EventTypeArg._paper_doc_download_validator = bv.Void()
EventTypeArg._paper_doc_edit_validator = bv.Void()
EventTypeArg._paper_doc_edit_comment_validator = bv.Void()
EventTypeArg._paper_doc_followed_validator = bv.Void()
EventTypeArg._paper_doc_mention_validator = bv.Void()
EventTypeArg._paper_doc_ownership_changed_validator = bv.Void()
EventTypeArg._paper_doc_request_access_validator = bv.Void()
EventTypeArg._paper_doc_resolve_comment_validator = bv.Void()
EventTypeArg._paper_doc_revert_validator = bv.Void()
EventTypeArg._paper_doc_slack_share_validator = bv.Void()
EventTypeArg._paper_doc_team_invite_validator = bv.Void()
EventTypeArg._paper_doc_trashed_validator = bv.Void()
EventTypeArg._paper_doc_unresolve_comment_validator = bv.Void()
EventTypeArg._paper_doc_untrashed_validator = bv.Void()
EventTypeArg._paper_doc_view_validator = bv.Void()
EventTypeArg._paper_external_view_allow_validator = bv.Void()
EventTypeArg._paper_external_view_default_team_validator = bv.Void()
EventTypeArg._paper_external_view_forbid_validator = bv.Void()
EventTypeArg._paper_folder_change_subscription_validator = bv.Void()
EventTypeArg._paper_folder_deleted_validator = bv.Void()
EventTypeArg._paper_folder_followed_validator = bv.Void()
EventTypeArg._paper_folder_team_invite_validator = bv.Void()
EventTypeArg._paper_published_link_change_permission_validator = bv.Void()
EventTypeArg._paper_published_link_create_validator = bv.Void()
EventTypeArg._paper_published_link_disabled_validator = bv.Void()
EventTypeArg._paper_published_link_view_validator = bv.Void()
EventTypeArg._password_change_validator = bv.Void()
EventTypeArg._password_reset_validator = bv.Void()
EventTypeArg._password_reset_all_validator = bv.Void()
EventTypeArg._emm_create_exceptions_report_validator = bv.Void()
EventTypeArg._emm_create_usage_report_validator = bv.Void()
EventTypeArg._export_members_report_validator = bv.Void()
EventTypeArg._export_members_report_fail_validator = bv.Void()
EventTypeArg._external_sharing_create_report_validator = bv.Void()
EventTypeArg._external_sharing_report_failed_validator = bv.Void()
EventTypeArg._no_expiration_link_gen_create_report_validator = bv.Void()
EventTypeArg._no_expiration_link_gen_report_failed_validator = bv.Void()
EventTypeArg._no_password_link_gen_create_report_validator = bv.Void()
EventTypeArg._no_password_link_gen_report_failed_validator = bv.Void()
EventTypeArg._no_password_link_view_create_report_validator = bv.Void()
EventTypeArg._no_password_link_view_report_failed_validator = bv.Void()
EventTypeArg._outdated_link_view_create_report_validator = bv.Void()
EventTypeArg._outdated_link_view_report_failed_validator = bv.Void()
EventTypeArg._paper_admin_export_start_validator = bv.Void()
EventTypeArg._smart_sync_create_admin_privilege_report_validator = bv.Void()
EventTypeArg._team_activity_create_report_validator = bv.Void()
EventTypeArg._team_activity_create_report_fail_validator = bv.Void()
EventTypeArg._collection_share_validator = bv.Void()
EventTypeArg._file_transfers_file_add_validator = bv.Void()
EventTypeArg._file_transfers_transfer_delete_validator = bv.Void()
EventTypeArg._file_transfers_transfer_download_validator = bv.Void()
EventTypeArg._file_transfers_transfer_send_validator = bv.Void()
EventTypeArg._file_transfers_transfer_view_validator = bv.Void()
EventTypeArg._note_acl_invite_only_validator = bv.Void()
EventTypeArg._note_acl_link_validator = bv.Void()
EventTypeArg._note_acl_team_link_validator = bv.Void()
EventTypeArg._note_shared_validator = bv.Void()
EventTypeArg._note_share_receive_validator = bv.Void()
EventTypeArg._open_note_shared_validator = bv.Void()
EventTypeArg._sf_add_group_validator = bv.Void()
EventTypeArg._sf_allow_non_members_to_view_shared_links_validator = bv.Void()
EventTypeArg._sf_external_invite_warn_validator = bv.Void()
EventTypeArg._sf_fb_invite_validator = bv.Void()
EventTypeArg._sf_fb_invite_change_role_validator = bv.Void()
EventTypeArg._sf_fb_uninvite_validator = bv.Void()
EventTypeArg._sf_invite_group_validator = bv.Void()
EventTypeArg._sf_team_grant_access_validator = bv.Void()
EventTypeArg._sf_team_invite_validator = bv.Void()
EventTypeArg._sf_team_invite_change_role_validator = bv.Void()
EventTypeArg._sf_team_join_validator = bv.Void()
EventTypeArg._sf_team_join_from_oob_link_validator = bv.Void()
EventTypeArg._sf_team_uninvite_validator = bv.Void()
EventTypeArg._shared_content_add_invitees_validator = bv.Void()
EventTypeArg._shared_content_add_link_expiry_validator = bv.Void()
EventTypeArg._shared_content_add_link_password_validator = bv.Void()
EventTypeArg._shared_content_add_member_validator = bv.Void()
EventTypeArg._shared_content_change_downloads_policy_validator = bv.Void()
EventTypeArg._shared_content_change_invitee_role_validator = bv.Void()
EventTypeArg._shared_content_change_link_audience_validator = bv.Void()
EventTypeArg._shared_content_change_link_expiry_validator = bv.Void()
EventTypeArg._shared_content_change_link_password_validator = bv.Void()
EventTypeArg._shared_content_change_member_role_validator = bv.Void()
EventTypeArg._shared_content_change_viewer_info_policy_validator = bv.Void()
EventTypeArg._shared_content_claim_invitation_validator = bv.Void()
EventTypeArg._shared_content_copy_validator = bv.Void()
EventTypeArg._shared_content_download_validator = bv.Void()
EventTypeArg._shared_content_relinquish_membership_validator = bv.Void()
EventTypeArg._shared_content_remove_invitees_validator = bv.Void()
EventTypeArg._shared_content_remove_link_expiry_validator = bv.Void()
EventTypeArg._shared_content_remove_link_password_validator = bv.Void()
EventTypeArg._shared_content_remove_member_validator = bv.Void()
EventTypeArg._shared_content_request_access_validator = bv.Void()
EventTypeArg._shared_content_restore_invitees_validator = bv.Void()
EventTypeArg._shared_content_restore_member_validator = bv.Void()
EventTypeArg._shared_content_unshare_validator = bv.Void()
EventTypeArg._shared_content_view_validator = bv.Void()
EventTypeArg._shared_folder_change_link_policy_validator = bv.Void()
EventTypeArg._shared_folder_change_members_inheritance_policy_validator = bv.Void()
EventTypeArg._shared_folder_change_members_management_policy_validator = bv.Void()
EventTypeArg._shared_folder_change_members_policy_validator = bv.Void()
EventTypeArg._shared_folder_create_validator = bv.Void()
EventTypeArg._shared_folder_decline_invitation_validator = bv.Void()
EventTypeArg._shared_folder_mount_validator = bv.Void()
EventTypeArg._shared_folder_nest_validator = bv.Void()
EventTypeArg._shared_folder_transfer_ownership_validator = bv.Void()
EventTypeArg._shared_folder_unmount_validator = bv.Void()
EventTypeArg._shared_link_add_expiry_validator = bv.Void()
EventTypeArg._shared_link_change_expiry_validator = bv.Void()
EventTypeArg._shared_link_change_visibility_validator = bv.Void()
EventTypeArg._shared_link_copy_validator = bv.Void()
EventTypeArg._shared_link_create_validator = bv.Void()
EventTypeArg._shared_link_disable_validator = bv.Void()
EventTypeArg._shared_link_download_validator = bv.Void()
EventTypeArg._shared_link_remove_expiry_validator = bv.Void()
EventTypeArg._shared_link_settings_add_expiration_validator = bv.Void()
EventTypeArg._shared_link_settings_add_password_validator = bv.Void()
EventTypeArg._shared_link_settings_allow_download_disabled_validator = bv.Void()
EventTypeArg._shared_link_settings_allow_download_enabled_validator = bv.Void()
EventTypeArg._shared_link_settings_change_audience_validator = bv.Void()
EventTypeArg._shared_link_settings_change_expiration_validator = bv.Void()
EventTypeArg._shared_link_settings_change_password_validator = bv.Void()
EventTypeArg._shared_link_settings_remove_expiration_validator = bv.Void()
EventTypeArg._shared_link_settings_remove_password_validator = bv.Void()
EventTypeArg._shared_link_share_validator = bv.Void()
EventTypeArg._shared_link_view_validator = bv.Void()
EventTypeArg._shared_note_opened_validator = bv.Void()
EventTypeArg._shmodel_disable_downloads_validator = bv.Void()
EventTypeArg._shmodel_enable_downloads_validator = bv.Void()
EventTypeArg._shmodel_group_share_validator = bv.Void()
EventTypeArg._showcase_access_granted_validator = bv.Void()
EventTypeArg._showcase_add_member_validator = bv.Void()
EventTypeArg._showcase_archived_validator = bv.Void()
EventTypeArg._showcase_created_validator = bv.Void()
EventTypeArg._showcase_delete_comment_validator = bv.Void()
EventTypeArg._showcase_edited_validator = bv.Void()
EventTypeArg._showcase_edit_comment_validator = bv.Void()
EventTypeArg._showcase_file_added_validator = bv.Void()
EventTypeArg._showcase_file_download_validator = bv.Void()
EventTypeArg._showcase_file_removed_validator = bv.Void()
EventTypeArg._showcase_file_view_validator = bv.Void()
EventTypeArg._showcase_permanently_deleted_validator = bv.Void()
EventTypeArg._showcase_post_comment_validator = bv.Void()
EventTypeArg._showcase_remove_member_validator = bv.Void()
EventTypeArg._showcase_renamed_validator = bv.Void()
EventTypeArg._showcase_request_access_validator = bv.Void()
EventTypeArg._showcase_resolve_comment_validator = bv.Void()
EventTypeArg._showcase_restored_validator = bv.Void()
EventTypeArg._showcase_trashed_validator = bv.Void()
EventTypeArg._showcase_trashed_deprecated_validator = bv.Void()
EventTypeArg._showcase_unresolve_comment_validator = bv.Void()
EventTypeArg._showcase_untrashed_validator = bv.Void()
EventTypeArg._showcase_untrashed_deprecated_validator = bv.Void()
EventTypeArg._showcase_view_validator = bv.Void()
EventTypeArg._sso_add_cert_validator = bv.Void()
EventTypeArg._sso_add_login_url_validator = bv.Void()
EventTypeArg._sso_add_logout_url_validator = bv.Void()
EventTypeArg._sso_change_cert_validator = bv.Void()
EventTypeArg._sso_change_login_url_validator = bv.Void()
EventTypeArg._sso_change_logout_url_validator = bv.Void()
EventTypeArg._sso_change_saml_identity_mode_validator = bv.Void()
EventTypeArg._sso_remove_cert_validator = bv.Void()
EventTypeArg._sso_remove_login_url_validator = bv.Void()
EventTypeArg._sso_remove_logout_url_validator = bv.Void()
EventTypeArg._team_folder_change_status_validator = bv.Void()
EventTypeArg._team_folder_create_validator = bv.Void()
EventTypeArg._team_folder_downgrade_validator = bv.Void()
EventTypeArg._team_folder_permanently_delete_validator = bv.Void()
EventTypeArg._team_folder_rename_validator = bv.Void()
EventTypeArg._team_selective_sync_settings_changed_validator = bv.Void()
EventTypeArg._account_capture_change_policy_validator = bv.Void()
EventTypeArg._allow_download_disabled_validator = bv.Void()
EventTypeArg._allow_download_enabled_validator = bv.Void()
EventTypeArg._camera_uploads_policy_changed_validator = bv.Void()
EventTypeArg._computer_backup_policy_changed_validator = bv.Void()
EventTypeArg._content_administration_policy_changed_validator = bv.Void()
EventTypeArg._data_placement_restriction_change_policy_validator = bv.Void()
EventTypeArg._data_placement_restriction_satisfy_policy_validator = bv.Void()
EventTypeArg._device_approvals_add_exception_validator = bv.Void()
EventTypeArg._device_approvals_change_desktop_policy_validator = bv.Void()
EventTypeArg._device_approvals_change_mobile_policy_validator = bv.Void()
EventTypeArg._device_approvals_change_overage_action_validator = bv.Void()
EventTypeArg._device_approvals_change_unlink_action_validator = bv.Void()
EventTypeArg._device_approvals_remove_exception_validator = bv.Void()
EventTypeArg._directory_restrictions_add_members_validator = bv.Void()
EventTypeArg._directory_restrictions_remove_members_validator = bv.Void()
EventTypeArg._emm_add_exception_validator = bv.Void()
EventTypeArg._emm_change_policy_validator = bv.Void()
EventTypeArg._emm_remove_exception_validator = bv.Void()
EventTypeArg._extended_version_history_change_policy_validator = bv.Void()
EventTypeArg._file_comments_change_policy_validator = bv.Void()
EventTypeArg._file_locking_policy_changed_validator = bv.Void()
EventTypeArg._file_requests_change_policy_validator = bv.Void()
EventTypeArg._file_requests_emails_enabled_validator = bv.Void()
EventTypeArg._file_requests_emails_restricted_to_team_only_validator = bv.Void()
EventTypeArg._file_transfers_policy_changed_validator = bv.Void()
EventTypeArg._google_sso_change_policy_validator = bv.Void()
EventTypeArg._group_user_management_change_policy_validator = bv.Void()
EventTypeArg._integration_policy_changed_validator = bv.Void()
EventTypeArg._member_requests_change_policy_validator = bv.Void()
EventTypeArg._member_send_invite_policy_changed_validator = bv.Void()
EventTypeArg._member_space_limits_add_exception_validator = bv.Void()
EventTypeArg._member_space_limits_change_caps_type_policy_validator = bv.Void()
EventTypeArg._member_space_limits_change_policy_validator = bv.Void()
EventTypeArg._member_space_limits_remove_exception_validator = bv.Void()
EventTypeArg._member_suggestions_change_policy_validator = bv.Void()
EventTypeArg._microsoft_office_addin_change_policy_validator = bv.Void()
EventTypeArg._network_control_change_policy_validator = bv.Void()
EventTypeArg._paper_change_deployment_policy_validator = bv.Void()
EventTypeArg._paper_change_member_link_policy_validator = bv.Void()
EventTypeArg._paper_change_member_policy_validator = bv.Void()
EventTypeArg._paper_change_policy_validator = bv.Void()
EventTypeArg._paper_default_folder_policy_changed_validator = bv.Void()
EventTypeArg._paper_desktop_policy_changed_validator = bv.Void()
EventTypeArg._paper_enabled_users_group_addition_validator = bv.Void()
EventTypeArg._paper_enabled_users_group_removal_validator = bv.Void()
EventTypeArg._password_strength_requirements_change_policy_validator = bv.Void()
EventTypeArg._permanent_delete_change_policy_validator = bv.Void()
EventTypeArg._reseller_support_change_policy_validator = bv.Void()
EventTypeArg._rewind_policy_changed_validator = bv.Void()
EventTypeArg._send_for_signature_policy_changed_validator = bv.Void()
EventTypeArg._sharing_change_folder_join_policy_validator = bv.Void()
EventTypeArg._sharing_change_link_policy_validator = bv.Void()
EventTypeArg._sharing_change_member_policy_validator = bv.Void()
EventTypeArg._showcase_change_download_policy_validator = bv.Void()
EventTypeArg._showcase_change_enabled_policy_validator = bv.Void()
EventTypeArg._showcase_change_external_sharing_policy_validator = bv.Void()
EventTypeArg._smarter_smart_sync_policy_changed_validator = bv.Void()
EventTypeArg._smart_sync_change_policy_validator = bv.Void()
EventTypeArg._smart_sync_not_opt_out_validator = bv.Void()
EventTypeArg._smart_sync_opt_out_validator = bv.Void()
EventTypeArg._sso_change_policy_validator = bv.Void()
EventTypeArg._team_extensions_policy_changed_validator = bv.Void()
EventTypeArg._team_selective_sync_policy_changed_validator = bv.Void()
EventTypeArg._team_sharing_whitelist_subjects_changed_validator = bv.Void()
EventTypeArg._tfa_add_exception_validator = bv.Void()
EventTypeArg._tfa_change_policy_validator = bv.Void()
EventTypeArg._tfa_remove_exception_validator = bv.Void()
EventTypeArg._two_account_change_policy_validator = bv.Void()
EventTypeArg._viewer_info_policy_changed_validator = bv.Void()
EventTypeArg._watermarking_policy_changed_validator = bv.Void()
EventTypeArg._web_sessions_change_active_session_limit_validator = bv.Void()
EventTypeArg._web_sessions_change_fixed_length_policy_validator = bv.Void()
EventTypeArg._web_sessions_change_idle_length_policy_validator = bv.Void()
EventTypeArg._team_merge_from_validator = bv.Void()
EventTypeArg._team_merge_to_validator = bv.Void()
EventTypeArg._team_profile_add_logo_validator = bv.Void()
EventTypeArg._team_profile_change_default_language_validator = bv.Void()
EventTypeArg._team_profile_change_logo_validator = bv.Void()
EventTypeArg._team_profile_change_name_validator = bv.Void()
EventTypeArg._team_profile_remove_logo_validator = bv.Void()
EventTypeArg._tfa_add_backup_phone_validator = bv.Void()
EventTypeArg._tfa_add_security_key_validator = bv.Void()
EventTypeArg._tfa_change_backup_phone_validator = bv.Void()
EventTypeArg._tfa_change_status_validator = bv.Void()
EventTypeArg._tfa_remove_backup_phone_validator = bv.Void()
EventTypeArg._tfa_remove_security_key_validator = bv.Void()
EventTypeArg._tfa_reset_validator = bv.Void()
EventTypeArg._changed_enterprise_admin_role_validator = bv.Void()
EventTypeArg._changed_enterprise_connected_team_status_validator = bv.Void()
EventTypeArg._ended_enterprise_admin_session_validator = bv.Void()
EventTypeArg._ended_enterprise_admin_session_deprecated_validator = bv.Void()
EventTypeArg._enterprise_settings_locking_validator = bv.Void()
EventTypeArg._guest_admin_change_status_validator = bv.Void()
EventTypeArg._started_enterprise_admin_session_validator = bv.Void()
EventTypeArg._team_merge_request_accepted_validator = bv.Void()
EventTypeArg._team_merge_request_accepted_shown_to_primary_team_validator = bv.Void()
EventTypeArg._team_merge_request_accepted_shown_to_secondary_team_validator = bv.Void()
EventTypeArg._team_merge_request_auto_canceled_validator = bv.Void()
EventTypeArg._team_merge_request_canceled_validator = bv.Void()
EventTypeArg._team_merge_request_canceled_shown_to_primary_team_validator = bv.Void()
EventTypeArg._team_merge_request_canceled_shown_to_secondary_team_validator = bv.Void()
EventTypeArg._team_merge_request_expired_validator = bv.Void()
EventTypeArg._team_merge_request_expired_shown_to_primary_team_validator = bv.Void()
EventTypeArg._team_merge_request_expired_shown_to_secondary_team_validator = bv.Void()
EventTypeArg._team_merge_request_rejected_shown_to_primary_team_validator = bv.Void()
EventTypeArg._team_merge_request_rejected_shown_to_secondary_team_validator = bv.Void()
EventTypeArg._team_merge_request_reminder_validator = bv.Void()
EventTypeArg._team_merge_request_reminder_shown_to_primary_team_validator = bv.Void()
EventTypeArg._team_merge_request_reminder_shown_to_secondary_team_validator = bv.Void()
EventTypeArg._team_merge_request_revoked_validator = bv.Void()
EventTypeArg._team_merge_request_sent_shown_to_primary_team_validator = bv.Void()
EventTypeArg._team_merge_request_sent_shown_to_secondary_team_validator = bv.Void()
EventTypeArg._other_validator = bv.Void()
EventTypeArg._tagmap = {
    'app_link_team': EventTypeArg._app_link_team_validator,
    'app_link_user': EventTypeArg._app_link_user_validator,
    'app_unlink_team': EventTypeArg._app_unlink_team_validator,
    'app_unlink_user': EventTypeArg._app_unlink_user_validator,
    'integration_connected': EventTypeArg._integration_connected_validator,
    'integration_disconnected': EventTypeArg._integration_disconnected_validator,
    'file_add_comment': EventTypeArg._file_add_comment_validator,
    'file_change_comment_subscription': EventTypeArg._file_change_comment_subscription_validator,
    'file_delete_comment': EventTypeArg._file_delete_comment_validator,
    'file_edit_comment': EventTypeArg._file_edit_comment_validator,
    'file_like_comment': EventTypeArg._file_like_comment_validator,
    'file_resolve_comment': EventTypeArg._file_resolve_comment_validator,
    'file_unlike_comment': EventTypeArg._file_unlike_comment_validator,
    'file_unresolve_comment': EventTypeArg._file_unresolve_comment_validator,
    'governance_policy_add_folders': EventTypeArg._governance_policy_add_folders_validator,
    'governance_policy_create': EventTypeArg._governance_policy_create_validator,
    'governance_policy_delete': EventTypeArg._governance_policy_delete_validator,
    'governance_policy_edit_details': EventTypeArg._governance_policy_edit_details_validator,
    'governance_policy_edit_duration': EventTypeArg._governance_policy_edit_duration_validator,
    'governance_policy_remove_folders': EventTypeArg._governance_policy_remove_folders_validator,
    'legal_holds_activate_a_hold': EventTypeArg._legal_holds_activate_a_hold_validator,
    'legal_holds_add_members': EventTypeArg._legal_holds_add_members_validator,
    'legal_holds_change_hold_details': EventTypeArg._legal_holds_change_hold_details_validator,
    'legal_holds_change_hold_name': EventTypeArg._legal_holds_change_hold_name_validator,
    'legal_holds_export_a_hold': EventTypeArg._legal_holds_export_a_hold_validator,
    'legal_holds_export_cancelled': EventTypeArg._legal_holds_export_cancelled_validator,
    'legal_holds_export_downloaded': EventTypeArg._legal_holds_export_downloaded_validator,
    'legal_holds_export_removed': EventTypeArg._legal_holds_export_removed_validator,
    'legal_holds_release_a_hold': EventTypeArg._legal_holds_release_a_hold_validator,
    'legal_holds_remove_members': EventTypeArg._legal_holds_remove_members_validator,
    'legal_holds_report_a_hold': EventTypeArg._legal_holds_report_a_hold_validator,
    'device_change_ip_desktop': EventTypeArg._device_change_ip_desktop_validator,
    'device_change_ip_mobile': EventTypeArg._device_change_ip_mobile_validator,
    'device_change_ip_web': EventTypeArg._device_change_ip_web_validator,
    'device_delete_on_unlink_fail': EventTypeArg._device_delete_on_unlink_fail_validator,
    'device_delete_on_unlink_success': EventTypeArg._device_delete_on_unlink_success_validator,
    'device_link_fail': EventTypeArg._device_link_fail_validator,
    'device_link_success': EventTypeArg._device_link_success_validator,
    'device_management_disabled': EventTypeArg._device_management_disabled_validator,
    'device_management_enabled': EventTypeArg._device_management_enabled_validator,
    'device_sync_backup_status_changed': EventTypeArg._device_sync_backup_status_changed_validator,
    'device_unlink': EventTypeArg._device_unlink_validator,
    'emm_refresh_auth_token': EventTypeArg._emm_refresh_auth_token_validator,
    'account_capture_change_availability': EventTypeArg._account_capture_change_availability_validator,
    'account_capture_migrate_account': EventTypeArg._account_capture_migrate_account_validator,
    'account_capture_notification_emails_sent': EventTypeArg._account_capture_notification_emails_sent_validator,
    'account_capture_relinquish_account': EventTypeArg._account_capture_relinquish_account_validator,
    'disabled_domain_invites': EventTypeArg._disabled_domain_invites_validator,
    'domain_invites_approve_request_to_join_team': EventTypeArg._domain_invites_approve_request_to_join_team_validator,
    'domain_invites_decline_request_to_join_team': EventTypeArg._domain_invites_decline_request_to_join_team_validator,
    'domain_invites_email_existing_users': EventTypeArg._domain_invites_email_existing_users_validator,
    'domain_invites_request_to_join_team': EventTypeArg._domain_invites_request_to_join_team_validator,
    'domain_invites_set_invite_new_user_pref_to_no': EventTypeArg._domain_invites_set_invite_new_user_pref_to_no_validator,
    'domain_invites_set_invite_new_user_pref_to_yes': EventTypeArg._domain_invites_set_invite_new_user_pref_to_yes_validator,
    'domain_verification_add_domain_fail': EventTypeArg._domain_verification_add_domain_fail_validator,
    'domain_verification_add_domain_success': EventTypeArg._domain_verification_add_domain_success_validator,
    'domain_verification_remove_domain': EventTypeArg._domain_verification_remove_domain_validator,
    'enabled_domain_invites': EventTypeArg._enabled_domain_invites_validator,
    'create_folder': EventTypeArg._create_folder_validator,
    'file_add': EventTypeArg._file_add_validator,
    'file_copy': EventTypeArg._file_copy_validator,
    'file_delete': EventTypeArg._file_delete_validator,
    'file_download': EventTypeArg._file_download_validator,
    'file_edit': EventTypeArg._file_edit_validator,
    'file_get_copy_reference': EventTypeArg._file_get_copy_reference_validator,
    'file_locking_lock_status_changed': EventTypeArg._file_locking_lock_status_changed_validator,
    'file_move': EventTypeArg._file_move_validator,
    'file_permanently_delete': EventTypeArg._file_permanently_delete_validator,
    'file_preview': EventTypeArg._file_preview_validator,
    'file_rename': EventTypeArg._file_rename_validator,
    'file_restore': EventTypeArg._file_restore_validator,
    'file_revert': EventTypeArg._file_revert_validator,
    'file_rollback_changes': EventTypeArg._file_rollback_changes_validator,
    'file_save_copy_reference': EventTypeArg._file_save_copy_reference_validator,
    'folder_overview_description_changed': EventTypeArg._folder_overview_description_changed_validator,
    'folder_overview_item_pinned': EventTypeArg._folder_overview_item_pinned_validator,
    'folder_overview_item_unpinned': EventTypeArg._folder_overview_item_unpinned_validator,
    'rewind_folder': EventTypeArg._rewind_folder_validator,
    'file_request_change': EventTypeArg._file_request_change_validator,
    'file_request_close': EventTypeArg._file_request_close_validator,
    'file_request_create': EventTypeArg._file_request_create_validator,
    'file_request_delete': EventTypeArg._file_request_delete_validator,
    'file_request_receive_file': EventTypeArg._file_request_receive_file_validator,
    'group_add_external_id': EventTypeArg._group_add_external_id_validator,
    'group_add_member': EventTypeArg._group_add_member_validator,
    'group_change_external_id': EventTypeArg._group_change_external_id_validator,
    'group_change_management_type': EventTypeArg._group_change_management_type_validator,
    'group_change_member_role': EventTypeArg._group_change_member_role_validator,
    'group_create': EventTypeArg._group_create_validator,
    'group_delete': EventTypeArg._group_delete_validator,
    'group_description_updated': EventTypeArg._group_description_updated_validator,
    'group_join_policy_updated': EventTypeArg._group_join_policy_updated_validator,
    'group_moved': EventTypeArg._group_moved_validator,
    'group_remove_external_id': EventTypeArg._group_remove_external_id_validator,
    'group_remove_member': EventTypeArg._group_remove_member_validator,
    'group_rename': EventTypeArg._group_rename_validator,
    'account_lock_or_unlocked': EventTypeArg._account_lock_or_unlocked_validator,
    'emm_error': EventTypeArg._emm_error_validator,
    'guest_admin_signed_in_via_trusted_teams': EventTypeArg._guest_admin_signed_in_via_trusted_teams_validator,
    'guest_admin_signed_out_via_trusted_teams': EventTypeArg._guest_admin_signed_out_via_trusted_teams_validator,
    'login_fail': EventTypeArg._login_fail_validator,
    'login_success': EventTypeArg._login_success_validator,
    'logout': EventTypeArg._logout_validator,
    'reseller_support_session_end': EventTypeArg._reseller_support_session_end_validator,
    'reseller_support_session_start': EventTypeArg._reseller_support_session_start_validator,
    'sign_in_as_session_end': EventTypeArg._sign_in_as_session_end_validator,
    'sign_in_as_session_start': EventTypeArg._sign_in_as_session_start_validator,
    'sso_error': EventTypeArg._sso_error_validator,
    'create_team_invite_link': EventTypeArg._create_team_invite_link_validator,
    'delete_team_invite_link': EventTypeArg._delete_team_invite_link_validator,
    'member_add_external_id': EventTypeArg._member_add_external_id_validator,
    'member_add_name': EventTypeArg._member_add_name_validator,
    'member_change_admin_role': EventTypeArg._member_change_admin_role_validator,
    'member_change_email': EventTypeArg._member_change_email_validator,
    'member_change_external_id': EventTypeArg._member_change_external_id_validator,
    'member_change_membership_type': EventTypeArg._member_change_membership_type_validator,
    'member_change_name': EventTypeArg._member_change_name_validator,
    'member_change_status': EventTypeArg._member_change_status_validator,
    'member_delete_manual_contacts': EventTypeArg._member_delete_manual_contacts_validator,
    'member_delete_profile_photo': EventTypeArg._member_delete_profile_photo_validator,
    'member_permanently_delete_account_contents': EventTypeArg._member_permanently_delete_account_contents_validator,
    'member_remove_external_id': EventTypeArg._member_remove_external_id_validator,
    'member_set_profile_photo': EventTypeArg._member_set_profile_photo_validator,
    'member_space_limits_add_custom_quota': EventTypeArg._member_space_limits_add_custom_quota_validator,
    'member_space_limits_change_custom_quota': EventTypeArg._member_space_limits_change_custom_quota_validator,
    'member_space_limits_change_status': EventTypeArg._member_space_limits_change_status_validator,
    'member_space_limits_remove_custom_quota': EventTypeArg._member_space_limits_remove_custom_quota_validator,
    'member_suggest': EventTypeArg._member_suggest_validator,
    'member_transfer_account_contents': EventTypeArg._member_transfer_account_contents_validator,
    'pending_secondary_email_added': EventTypeArg._pending_secondary_email_added_validator,
    'secondary_email_deleted': EventTypeArg._secondary_email_deleted_validator,
    'secondary_email_verified': EventTypeArg._secondary_email_verified_validator,
    'secondary_mails_policy_changed': EventTypeArg._secondary_mails_policy_changed_validator,
    'binder_add_page': EventTypeArg._binder_add_page_validator,
    'binder_add_section': EventTypeArg._binder_add_section_validator,
    'binder_remove_page': EventTypeArg._binder_remove_page_validator,
    'binder_remove_section': EventTypeArg._binder_remove_section_validator,
    'binder_rename_page': EventTypeArg._binder_rename_page_validator,
    'binder_rename_section': EventTypeArg._binder_rename_section_validator,
    'binder_reorder_page': EventTypeArg._binder_reorder_page_validator,
    'binder_reorder_section': EventTypeArg._binder_reorder_section_validator,
    'paper_content_add_member': EventTypeArg._paper_content_add_member_validator,
    'paper_content_add_to_folder': EventTypeArg._paper_content_add_to_folder_validator,
    'paper_content_archive': EventTypeArg._paper_content_archive_validator,
    'paper_content_create': EventTypeArg._paper_content_create_validator,
    'paper_content_permanently_delete': EventTypeArg._paper_content_permanently_delete_validator,
    'paper_content_remove_from_folder': EventTypeArg._paper_content_remove_from_folder_validator,
    'paper_content_remove_member': EventTypeArg._paper_content_remove_member_validator,
    'paper_content_rename': EventTypeArg._paper_content_rename_validator,
    'paper_content_restore': EventTypeArg._paper_content_restore_validator,
    'paper_doc_add_comment': EventTypeArg._paper_doc_add_comment_validator,
    'paper_doc_change_member_role': EventTypeArg._paper_doc_change_member_role_validator,
    'paper_doc_change_sharing_policy': EventTypeArg._paper_doc_change_sharing_policy_validator,
    'paper_doc_change_subscription': EventTypeArg._paper_doc_change_subscription_validator,
    'paper_doc_deleted': EventTypeArg._paper_doc_deleted_validator,
    'paper_doc_delete_comment': EventTypeArg._paper_doc_delete_comment_validator,
    'paper_doc_download': EventTypeArg._paper_doc_download_validator,
    'paper_doc_edit': EventTypeArg._paper_doc_edit_validator,
    'paper_doc_edit_comment': EventTypeArg._paper_doc_edit_comment_validator,
    'paper_doc_followed': EventTypeArg._paper_doc_followed_validator,
    'paper_doc_mention': EventTypeArg._paper_doc_mention_validator,
    'paper_doc_ownership_changed': EventTypeArg._paper_doc_ownership_changed_validator,
    'paper_doc_request_access': EventTypeArg._paper_doc_request_access_validator,
    'paper_doc_resolve_comment': EventTypeArg._paper_doc_resolve_comment_validator,
    'paper_doc_revert': EventTypeArg._paper_doc_revert_validator,
    'paper_doc_slack_share': EventTypeArg._paper_doc_slack_share_validator,
    'paper_doc_team_invite': EventTypeArg._paper_doc_team_invite_validator,
    'paper_doc_trashed': EventTypeArg._paper_doc_trashed_validator,
    'paper_doc_unresolve_comment': EventTypeArg._paper_doc_unresolve_comment_validator,
    'paper_doc_untrashed': EventTypeArg._paper_doc_untrashed_validator,
    'paper_doc_view': EventTypeArg._paper_doc_view_validator,
    'paper_external_view_allow': EventTypeArg._paper_external_view_allow_validator,
    'paper_external_view_default_team': EventTypeArg._paper_external_view_default_team_validator,
    'paper_external_view_forbid': EventTypeArg._paper_external_view_forbid_validator,
    'paper_folder_change_subscription': EventTypeArg._paper_folder_change_subscription_validator,
    'paper_folder_deleted': EventTypeArg._paper_folder_deleted_validator,
    'paper_folder_followed': EventTypeArg._paper_folder_followed_validator,
    'paper_folder_team_invite': EventTypeArg._paper_folder_team_invite_validator,
    'paper_published_link_change_permission': EventTypeArg._paper_published_link_change_permission_validator,
    'paper_published_link_create': EventTypeArg._paper_published_link_create_validator,
    'paper_published_link_disabled': EventTypeArg._paper_published_link_disabled_validator,
    'paper_published_link_view': EventTypeArg._paper_published_link_view_validator,
    'password_change': EventTypeArg._password_change_validator,
    'password_reset': EventTypeArg._password_reset_validator,
    'password_reset_all': EventTypeArg._password_reset_all_validator,
    'emm_create_exceptions_report': EventTypeArg._emm_create_exceptions_report_validator,
    'emm_create_usage_report': EventTypeArg._emm_create_usage_report_validator,
    'export_members_report': EventTypeArg._export_members_report_validator,
    'export_members_report_fail': EventTypeArg._export_members_report_fail_validator,
    'external_sharing_create_report': EventTypeArg._external_sharing_create_report_validator,
    'external_sharing_report_failed': EventTypeArg._external_sharing_report_failed_validator,
    'no_expiration_link_gen_create_report': EventTypeArg._no_expiration_link_gen_create_report_validator,
    'no_expiration_link_gen_report_failed': EventTypeArg._no_expiration_link_gen_report_failed_validator,
    'no_password_link_gen_create_report': EventTypeArg._no_password_link_gen_create_report_validator,
    'no_password_link_gen_report_failed': EventTypeArg._no_password_link_gen_report_failed_validator,
    'no_password_link_view_create_report': EventTypeArg._no_password_link_view_create_report_validator,
    'no_password_link_view_report_failed': EventTypeArg._no_password_link_view_report_failed_validator,
    'outdated_link_view_create_report': EventTypeArg._outdated_link_view_create_report_validator,
    'outdated_link_view_report_failed': EventTypeArg._outdated_link_view_report_failed_validator,
    'paper_admin_export_start': EventTypeArg._paper_admin_export_start_validator,
    'smart_sync_create_admin_privilege_report': EventTypeArg._smart_sync_create_admin_privilege_report_validator,
    'team_activity_create_report': EventTypeArg._team_activity_create_report_validator,
    'team_activity_create_report_fail': EventTypeArg._team_activity_create_report_fail_validator,
    'collection_share': EventTypeArg._collection_share_validator,
    'file_transfers_file_add': EventTypeArg._file_transfers_file_add_validator,
    'file_transfers_transfer_delete': EventTypeArg._file_transfers_transfer_delete_validator,
    'file_transfers_transfer_download': EventTypeArg._file_transfers_transfer_download_validator,
    'file_transfers_transfer_send': EventTypeArg._file_transfers_transfer_send_validator,
    'file_transfers_transfer_view': EventTypeArg._file_transfers_transfer_view_validator,
    'note_acl_invite_only': EventTypeArg._note_acl_invite_only_validator,
    'note_acl_link': EventTypeArg._note_acl_link_validator,
    'note_acl_team_link': EventTypeArg._note_acl_team_link_validator,
    'note_shared': EventTypeArg._note_shared_validator,
    'note_share_receive': EventTypeArg._note_share_receive_validator,
    'open_note_shared': EventTypeArg._open_note_shared_validator,
    'sf_add_group': EventTypeArg._sf_add_group_validator,
    'sf_allow_non_members_to_view_shared_links': EventTypeArg._sf_allow_non_members_to_view_shared_links_validator,
    'sf_external_invite_warn': EventTypeArg._sf_external_invite_warn_validator,
    'sf_fb_invite': EventTypeArg._sf_fb_invite_validator,
    'sf_fb_invite_change_role': EventTypeArg._sf_fb_invite_change_role_validator,
    'sf_fb_uninvite': EventTypeArg._sf_fb_uninvite_validator,
    'sf_invite_group': EventTypeArg._sf_invite_group_validator,
    'sf_team_grant_access': EventTypeArg._sf_team_grant_access_validator,
    'sf_team_invite': EventTypeArg._sf_team_invite_validator,
    'sf_team_invite_change_role': EventTypeArg._sf_team_invite_change_role_validator,
    'sf_team_join': EventTypeArg._sf_team_join_validator,
    'sf_team_join_from_oob_link': EventTypeArg._sf_team_join_from_oob_link_validator,
    'sf_team_uninvite': EventTypeArg._sf_team_uninvite_validator,
    'shared_content_add_invitees': EventTypeArg._shared_content_add_invitees_validator,
    'shared_content_add_link_expiry': EventTypeArg._shared_content_add_link_expiry_validator,
    'shared_content_add_link_password': EventTypeArg._shared_content_add_link_password_validator,
    'shared_content_add_member': EventTypeArg._shared_content_add_member_validator,
    'shared_content_change_downloads_policy': EventTypeArg._shared_content_change_downloads_policy_validator,
    'shared_content_change_invitee_role': EventTypeArg._shared_content_change_invitee_role_validator,
    'shared_content_change_link_audience': EventTypeArg._shared_content_change_link_audience_validator,
    'shared_content_change_link_expiry': EventTypeArg._shared_content_change_link_expiry_validator,
    'shared_content_change_link_password': EventTypeArg._shared_content_change_link_password_validator,
    'shared_content_change_member_role': EventTypeArg._shared_content_change_member_role_validator,
    'shared_content_change_viewer_info_policy': EventTypeArg._shared_content_change_viewer_info_policy_validator,
    'shared_content_claim_invitation': EventTypeArg._shared_content_claim_invitation_validator,
    'shared_content_copy': EventTypeArg._shared_content_copy_validator,
    'shared_content_download': EventTypeArg._shared_content_download_validator,
    'shared_content_relinquish_membership': EventTypeArg._shared_content_relinquish_membership_validator,
    'shared_content_remove_invitees': EventTypeArg._shared_content_remove_invitees_validator,
    'shared_content_remove_link_expiry': EventTypeArg._shared_content_remove_link_expiry_validator,
    'shared_content_remove_link_password': EventTypeArg._shared_content_remove_link_password_validator,
    'shared_content_remove_member': EventTypeArg._shared_content_remove_member_validator,
    'shared_content_request_access': EventTypeArg._shared_content_request_access_validator,
    'shared_content_restore_invitees': EventTypeArg._shared_content_restore_invitees_validator,
    'shared_content_restore_member': EventTypeArg._shared_content_restore_member_validator,
    'shared_content_unshare': EventTypeArg._shared_content_unshare_validator,
    'shared_content_view': EventTypeArg._shared_content_view_validator,
    'shared_folder_change_link_policy': EventTypeArg._shared_folder_change_link_policy_validator,
    'shared_folder_change_members_inheritance_policy': EventTypeArg._shared_folder_change_members_inheritance_policy_validator,
    'shared_folder_change_members_management_policy': EventTypeArg._shared_folder_change_members_management_policy_validator,
    'shared_folder_change_members_policy': EventTypeArg._shared_folder_change_members_policy_validator,
    'shared_folder_create': EventTypeArg._shared_folder_create_validator,
    'shared_folder_decline_invitation': EventTypeArg._shared_folder_decline_invitation_validator,
    'shared_folder_mount': EventTypeArg._shared_folder_mount_validator,
    'shared_folder_nest': EventTypeArg._shared_folder_nest_validator,
    'shared_folder_transfer_ownership': EventTypeArg._shared_folder_transfer_ownership_validator,
    'shared_folder_unmount': EventTypeArg._shared_folder_unmount_validator,
    'shared_link_add_expiry': EventTypeArg._shared_link_add_expiry_validator,
    'shared_link_change_expiry': EventTypeArg._shared_link_change_expiry_validator,
    'shared_link_change_visibility': EventTypeArg._shared_link_change_visibility_validator,
    'shared_link_copy': EventTypeArg._shared_link_copy_validator,
    'shared_link_create': EventTypeArg._shared_link_create_validator,
    'shared_link_disable': EventTypeArg._shared_link_disable_validator,
    'shared_link_download': EventTypeArg._shared_link_download_validator,
    'shared_link_remove_expiry': EventTypeArg._shared_link_remove_expiry_validator,
    'shared_link_settings_add_expiration': EventTypeArg._shared_link_settings_add_expiration_validator,
    'shared_link_settings_add_password': EventTypeArg._shared_link_settings_add_password_validator,
    'shared_link_settings_allow_download_disabled': EventTypeArg._shared_link_settings_allow_download_disabled_validator,
    'shared_link_settings_allow_download_enabled': EventTypeArg._shared_link_settings_allow_download_enabled_validator,
    'shared_link_settings_change_audience': EventTypeArg._shared_link_settings_change_audience_validator,
    'shared_link_settings_change_expiration': EventTypeArg._shared_link_settings_change_expiration_validator,
    'shared_link_settings_change_password': EventTypeArg._shared_link_settings_change_password_validator,
    'shared_link_settings_remove_expiration': EventTypeArg._shared_link_settings_remove_expiration_validator,
    'shared_link_settings_remove_password': EventTypeArg._shared_link_settings_remove_password_validator,
    'shared_link_share': EventTypeArg._shared_link_share_validator,
    'shared_link_view': EventTypeArg._shared_link_view_validator,
    'shared_note_opened': EventTypeArg._shared_note_opened_validator,
    'shmodel_disable_downloads': EventTypeArg._shmodel_disable_downloads_validator,
    'shmodel_enable_downloads': EventTypeArg._shmodel_enable_downloads_validator,
    'shmodel_group_share': EventTypeArg._shmodel_group_share_validator,
    'showcase_access_granted': EventTypeArg._showcase_access_granted_validator,
    'showcase_add_member': EventTypeArg._showcase_add_member_validator,
    'showcase_archived': EventTypeArg._showcase_archived_validator,
    'showcase_created': EventTypeArg._showcase_created_validator,
    'showcase_delete_comment': EventTypeArg._showcase_delete_comment_validator,
    'showcase_edited': EventTypeArg._showcase_edited_validator,
    'showcase_edit_comment': EventTypeArg._showcase_edit_comment_validator,
    'showcase_file_added': EventTypeArg._showcase_file_added_validator,
    'showcase_file_download': EventTypeArg._showcase_file_download_validator,
    'showcase_file_removed': EventTypeArg._showcase_file_removed_validator,
    'showcase_file_view': EventTypeArg._showcase_file_view_validator,
    'showcase_permanently_deleted': EventTypeArg._showcase_permanently_deleted_validator,
    'showcase_post_comment': EventTypeArg._showcase_post_comment_validator,
    'showcase_remove_member': EventTypeArg._showcase_remove_member_validator,
    'showcase_renamed': EventTypeArg._showcase_renamed_validator,
    'showcase_request_access': EventTypeArg._showcase_request_access_validator,
    'showcase_resolve_comment': EventTypeArg._showcase_resolve_comment_validator,
    'showcase_restored': EventTypeArg._showcase_restored_validator,
    'showcase_trashed': EventTypeArg._showcase_trashed_validator,
    'showcase_trashed_deprecated': EventTypeArg._showcase_trashed_deprecated_validator,
    'showcase_unresolve_comment': EventTypeArg._showcase_unresolve_comment_validator,
    'showcase_untrashed': EventTypeArg._showcase_untrashed_validator,
    'showcase_untrashed_deprecated': EventTypeArg._showcase_untrashed_deprecated_validator,
    'showcase_view': EventTypeArg._showcase_view_validator,
    'sso_add_cert': EventTypeArg._sso_add_cert_validator,
    'sso_add_login_url': EventTypeArg._sso_add_login_url_validator,
    'sso_add_logout_url': EventTypeArg._sso_add_logout_url_validator,
    'sso_change_cert': EventTypeArg._sso_change_cert_validator,
    'sso_change_login_url': EventTypeArg._sso_change_login_url_validator,
    'sso_change_logout_url': EventTypeArg._sso_change_logout_url_validator,
    'sso_change_saml_identity_mode': EventTypeArg._sso_change_saml_identity_mode_validator,
    'sso_remove_cert': EventTypeArg._sso_remove_cert_validator,
    'sso_remove_login_url': EventTypeArg._sso_remove_login_url_validator,
    'sso_remove_logout_url': EventTypeArg._sso_remove_logout_url_validator,
    'team_folder_change_status': EventTypeArg._team_folder_change_status_validator,
    'team_folder_create': EventTypeArg._team_folder_create_validator,
    'team_folder_downgrade': EventTypeArg._team_folder_downgrade_validator,
    'team_folder_permanently_delete': EventTypeArg._team_folder_permanently_delete_validator,
    'team_folder_rename': EventTypeArg._team_folder_rename_validator,
    'team_selective_sync_settings_changed': EventTypeArg._team_selective_sync_settings_changed_validator,
    'account_capture_change_policy': EventTypeArg._account_capture_change_policy_validator,
    'allow_download_disabled': EventTypeArg._allow_download_disabled_validator,
    'allow_download_enabled': EventTypeArg._allow_download_enabled_validator,
    'camera_uploads_policy_changed': EventTypeArg._camera_uploads_policy_changed_validator,
    'computer_backup_policy_changed': EventTypeArg._computer_backup_policy_changed_validator,
    'content_administration_policy_changed': EventTypeArg._content_administration_policy_changed_validator,
    'data_placement_restriction_change_policy': EventTypeArg._data_placement_restriction_change_policy_validator,
    'data_placement_restriction_satisfy_policy': EventTypeArg._data_placement_restriction_satisfy_policy_validator,
    'device_approvals_add_exception': EventTypeArg._device_approvals_add_exception_validator,
    'device_approvals_change_desktop_policy': EventTypeArg._device_approvals_change_desktop_policy_validator,
    'device_approvals_change_mobile_policy': EventTypeArg._device_approvals_change_mobile_policy_validator,
    'device_approvals_change_overage_action': EventTypeArg._device_approvals_change_overage_action_validator,
    'device_approvals_change_unlink_action': EventTypeArg._device_approvals_change_unlink_action_validator,
    'device_approvals_remove_exception': EventTypeArg._device_approvals_remove_exception_validator,
    'directory_restrictions_add_members': EventTypeArg._directory_restrictions_add_members_validator,
    'directory_restrictions_remove_members': EventTypeArg._directory_restrictions_remove_members_validator,
    'emm_add_exception': EventTypeArg._emm_add_exception_validator,
    'emm_change_policy': EventTypeArg._emm_change_policy_validator,
    'emm_remove_exception': EventTypeArg._emm_remove_exception_validator,
    'extended_version_history_change_policy': EventTypeArg._extended_version_history_change_policy_validator,
    'file_comments_change_policy': EventTypeArg._file_comments_change_policy_validator,
    'file_locking_policy_changed': EventTypeArg._file_locking_policy_changed_validator,
    'file_requests_change_policy': EventTypeArg._file_requests_change_policy_validator,
    'file_requests_emails_enabled': EventTypeArg._file_requests_emails_enabled_validator,
    'file_requests_emails_restricted_to_team_only': EventTypeArg._file_requests_emails_restricted_to_team_only_validator,
    'file_transfers_policy_changed': EventTypeArg._file_transfers_policy_changed_validator,
    'google_sso_change_policy': EventTypeArg._google_sso_change_policy_validator,
    'group_user_management_change_policy': EventTypeArg._group_user_management_change_policy_validator,
    'integration_policy_changed': EventTypeArg._integration_policy_changed_validator,
    'member_requests_change_policy': EventTypeArg._member_requests_change_policy_validator,
    'member_send_invite_policy_changed': EventTypeArg._member_send_invite_policy_changed_validator,
    'member_space_limits_add_exception': EventTypeArg._member_space_limits_add_exception_validator,
    'member_space_limits_change_caps_type_policy': EventTypeArg._member_space_limits_change_caps_type_policy_validator,
    'member_space_limits_change_policy': EventTypeArg._member_space_limits_change_policy_validator,
    'member_space_limits_remove_exception': EventTypeArg._member_space_limits_remove_exception_validator,
    'member_suggestions_change_policy': EventTypeArg._member_suggestions_change_policy_validator,
    'microsoft_office_addin_change_policy': EventTypeArg._microsoft_office_addin_change_policy_validator,
    'network_control_change_policy': EventTypeArg._network_control_change_policy_validator,
    'paper_change_deployment_policy': EventTypeArg._paper_change_deployment_policy_validator,
    'paper_change_member_link_policy': EventTypeArg._paper_change_member_link_policy_validator,
    'paper_change_member_policy': EventTypeArg._paper_change_member_policy_validator,
    'paper_change_policy': EventTypeArg._paper_change_policy_validator,
    'paper_default_folder_policy_changed': EventTypeArg._paper_default_folder_policy_changed_validator,
    'paper_desktop_policy_changed': EventTypeArg._paper_desktop_policy_changed_validator,
    'paper_enabled_users_group_addition': EventTypeArg._paper_enabled_users_group_addition_validator,
    'paper_enabled_users_group_removal': EventTypeArg._paper_enabled_users_group_removal_validator,
    'password_strength_requirements_change_policy': EventTypeArg._password_strength_requirements_change_policy_validator,
    'permanent_delete_change_policy': EventTypeArg._permanent_delete_change_policy_validator,
    'reseller_support_change_policy': EventTypeArg._reseller_support_change_policy_validator,
    'rewind_policy_changed': EventTypeArg._rewind_policy_changed_validator,
    'send_for_signature_policy_changed': EventTypeArg._send_for_signature_policy_changed_validator,
    'sharing_change_folder_join_policy': EventTypeArg._sharing_change_folder_join_policy_validator,
    'sharing_change_link_policy': EventTypeArg._sharing_change_link_policy_validator,
    'sharing_change_member_policy': EventTypeArg._sharing_change_member_policy_validator,
    'showcase_change_download_policy': EventTypeArg._showcase_change_download_policy_validator,
    'showcase_change_enabled_policy': EventTypeArg._showcase_change_enabled_policy_validator,
    'showcase_change_external_sharing_policy': EventTypeArg._showcase_change_external_sharing_policy_validator,
    'smarter_smart_sync_policy_changed': EventTypeArg._smarter_smart_sync_policy_changed_validator,
    'smart_sync_change_policy': EventTypeArg._smart_sync_change_policy_validator,
    'smart_sync_not_opt_out': EventTypeArg._smart_sync_not_opt_out_validator,
    'smart_sync_opt_out': EventTypeArg._smart_sync_opt_out_validator,
    'sso_change_policy': EventTypeArg._sso_change_policy_validator,
    'team_extensions_policy_changed': EventTypeArg._team_extensions_policy_changed_validator,
    'team_selective_sync_policy_changed': EventTypeArg._team_selective_sync_policy_changed_validator,
    'team_sharing_whitelist_subjects_changed': EventTypeArg._team_sharing_whitelist_subjects_changed_validator,
    'tfa_add_exception': EventTypeArg._tfa_add_exception_validator,
    'tfa_change_policy': EventTypeArg._tfa_change_policy_validator,
    'tfa_remove_exception': EventTypeArg._tfa_remove_exception_validator,
    'two_account_change_policy': EventTypeArg._two_account_change_policy_validator,
    'viewer_info_policy_changed': EventTypeArg._viewer_info_policy_changed_validator,
    'watermarking_policy_changed': EventTypeArg._watermarking_policy_changed_validator,
    'web_sessions_change_active_session_limit': EventTypeArg._web_sessions_change_active_session_limit_validator,
    'web_sessions_change_fixed_length_policy': EventTypeArg._web_sessions_change_fixed_length_policy_validator,
    'web_sessions_change_idle_length_policy': EventTypeArg._web_sessions_change_idle_length_policy_validator,
    'team_merge_from': EventTypeArg._team_merge_from_validator,
    'team_merge_to': EventTypeArg._team_merge_to_validator,
    'team_profile_add_logo': EventTypeArg._team_profile_add_logo_validator,
    'team_profile_change_default_language': EventTypeArg._team_profile_change_default_language_validator,
    'team_profile_change_logo': EventTypeArg._team_profile_change_logo_validator,
    'team_profile_change_name': EventTypeArg._team_profile_change_name_validator,
    'team_profile_remove_logo': EventTypeArg._team_profile_remove_logo_validator,
    'tfa_add_backup_phone': EventTypeArg._tfa_add_backup_phone_validator,
    'tfa_add_security_key': EventTypeArg._tfa_add_security_key_validator,
    'tfa_change_backup_phone': EventTypeArg._tfa_change_backup_phone_validator,
    'tfa_change_status': EventTypeArg._tfa_change_status_validator,
    'tfa_remove_backup_phone': EventTypeArg._tfa_remove_backup_phone_validator,
    'tfa_remove_security_key': EventTypeArg._tfa_remove_security_key_validator,
    'tfa_reset': EventTypeArg._tfa_reset_validator,
    'changed_enterprise_admin_role': EventTypeArg._changed_enterprise_admin_role_validator,
    'changed_enterprise_connected_team_status': EventTypeArg._changed_enterprise_connected_team_status_validator,
    'ended_enterprise_admin_session': EventTypeArg._ended_enterprise_admin_session_validator,
    'ended_enterprise_admin_session_deprecated': EventTypeArg._ended_enterprise_admin_session_deprecated_validator,
    'enterprise_settings_locking': EventTypeArg._enterprise_settings_locking_validator,
    'guest_admin_change_status': EventTypeArg._guest_admin_change_status_validator,
    'started_enterprise_admin_session': EventTypeArg._started_enterprise_admin_session_validator,
    'team_merge_request_accepted': EventTypeArg._team_merge_request_accepted_validator,
    'team_merge_request_accepted_shown_to_primary_team': EventTypeArg._team_merge_request_accepted_shown_to_primary_team_validator,
    'team_merge_request_accepted_shown_to_secondary_team': EventTypeArg._team_merge_request_accepted_shown_to_secondary_team_validator,
    'team_merge_request_auto_canceled': EventTypeArg._team_merge_request_auto_canceled_validator,
    'team_merge_request_canceled': EventTypeArg._team_merge_request_canceled_validator,
    'team_merge_request_canceled_shown_to_primary_team': EventTypeArg._team_merge_request_canceled_shown_to_primary_team_validator,
    'team_merge_request_canceled_shown_to_secondary_team': EventTypeArg._team_merge_request_canceled_shown_to_secondary_team_validator,
    'team_merge_request_expired': EventTypeArg._team_merge_request_expired_validator,
    'team_merge_request_expired_shown_to_primary_team': EventTypeArg._team_merge_request_expired_shown_to_primary_team_validator,
    'team_merge_request_expired_shown_to_secondary_team': EventTypeArg._team_merge_request_expired_shown_to_secondary_team_validator,
    'team_merge_request_rejected_shown_to_primary_team': EventTypeArg._team_merge_request_rejected_shown_to_primary_team_validator,
    'team_merge_request_rejected_shown_to_secondary_team': EventTypeArg._team_merge_request_rejected_shown_to_secondary_team_validator,
    'team_merge_request_reminder': EventTypeArg._team_merge_request_reminder_validator,
    'team_merge_request_reminder_shown_to_primary_team': EventTypeArg._team_merge_request_reminder_shown_to_primary_team_validator,
    'team_merge_request_reminder_shown_to_secondary_team': EventTypeArg._team_merge_request_reminder_shown_to_secondary_team_validator,
    'team_merge_request_revoked': EventTypeArg._team_merge_request_revoked_validator,
    'team_merge_request_sent_shown_to_primary_team': EventTypeArg._team_merge_request_sent_shown_to_primary_team_validator,
    'team_merge_request_sent_shown_to_secondary_team': EventTypeArg._team_merge_request_sent_shown_to_secondary_team_validator,
    'other': EventTypeArg._other_validator,
}

EventTypeArg.app_link_team = EventTypeArg('app_link_team')
EventTypeArg.app_link_user = EventTypeArg('app_link_user')
EventTypeArg.app_unlink_team = EventTypeArg('app_unlink_team')
EventTypeArg.app_unlink_user = EventTypeArg('app_unlink_user')
EventTypeArg.integration_connected = EventTypeArg('integration_connected')
EventTypeArg.integration_disconnected = EventTypeArg('integration_disconnected')
EventTypeArg.file_add_comment = EventTypeArg('file_add_comment')
EventTypeArg.file_change_comment_subscription = EventTypeArg('file_change_comment_subscription')
EventTypeArg.file_delete_comment = EventTypeArg('file_delete_comment')
EventTypeArg.file_edit_comment = EventTypeArg('file_edit_comment')
EventTypeArg.file_like_comment = EventTypeArg('file_like_comment')
EventTypeArg.file_resolve_comment = EventTypeArg('file_resolve_comment')
EventTypeArg.file_unlike_comment = EventTypeArg('file_unlike_comment')
EventTypeArg.file_unresolve_comment = EventTypeArg('file_unresolve_comment')
EventTypeArg.governance_policy_add_folders = EventTypeArg('governance_policy_add_folders')
EventTypeArg.governance_policy_create = EventTypeArg('governance_policy_create')
EventTypeArg.governance_policy_delete = EventTypeArg('governance_policy_delete')
EventTypeArg.governance_policy_edit_details = EventTypeArg('governance_policy_edit_details')
EventTypeArg.governance_policy_edit_duration = EventTypeArg('governance_policy_edit_duration')
EventTypeArg.governance_policy_remove_folders = EventTypeArg('governance_policy_remove_folders')
EventTypeArg.legal_holds_activate_a_hold = EventTypeArg('legal_holds_activate_a_hold')
EventTypeArg.legal_holds_add_members = EventTypeArg('legal_holds_add_members')
EventTypeArg.legal_holds_change_hold_details = EventTypeArg('legal_holds_change_hold_details')
EventTypeArg.legal_holds_change_hold_name = EventTypeArg('legal_holds_change_hold_name')
EventTypeArg.legal_holds_export_a_hold = EventTypeArg('legal_holds_export_a_hold')
EventTypeArg.legal_holds_export_cancelled = EventTypeArg('legal_holds_export_cancelled')
EventTypeArg.legal_holds_export_downloaded = EventTypeArg('legal_holds_export_downloaded')
EventTypeArg.legal_holds_export_removed = EventTypeArg('legal_holds_export_removed')
EventTypeArg.legal_holds_release_a_hold = EventTypeArg('legal_holds_release_a_hold')
EventTypeArg.legal_holds_remove_members = EventTypeArg('legal_holds_remove_members')
EventTypeArg.legal_holds_report_a_hold = EventTypeArg('legal_holds_report_a_hold')
EventTypeArg.device_change_ip_desktop = EventTypeArg('device_change_ip_desktop')
EventTypeArg.device_change_ip_mobile = EventTypeArg('device_change_ip_mobile')
EventTypeArg.device_change_ip_web = EventTypeArg('device_change_ip_web')
EventTypeArg.device_delete_on_unlink_fail = EventTypeArg('device_delete_on_unlink_fail')
EventTypeArg.device_delete_on_unlink_success = EventTypeArg('device_delete_on_unlink_success')
EventTypeArg.device_link_fail = EventTypeArg('device_link_fail')
EventTypeArg.device_link_success = EventTypeArg('device_link_success')
EventTypeArg.device_management_disabled = EventTypeArg('device_management_disabled')
EventTypeArg.device_management_enabled = EventTypeArg('device_management_enabled')
EventTypeArg.device_sync_backup_status_changed = EventTypeArg('device_sync_backup_status_changed')
EventTypeArg.device_unlink = EventTypeArg('device_unlink')
EventTypeArg.emm_refresh_auth_token = EventTypeArg('emm_refresh_auth_token')
EventTypeArg.account_capture_change_availability = EventTypeArg('account_capture_change_availability')
EventTypeArg.account_capture_migrate_account = EventTypeArg('account_capture_migrate_account')
EventTypeArg.account_capture_notification_emails_sent = EventTypeArg('account_capture_notification_emails_sent')
EventTypeArg.account_capture_relinquish_account = EventTypeArg('account_capture_relinquish_account')
EventTypeArg.disabled_domain_invites = EventTypeArg('disabled_domain_invites')
EventTypeArg.domain_invites_approve_request_to_join_team = EventTypeArg('domain_invites_approve_request_to_join_team')
EventTypeArg.domain_invites_decline_request_to_join_team = EventTypeArg('domain_invites_decline_request_to_join_team')
EventTypeArg.domain_invites_email_existing_users = EventTypeArg('domain_invites_email_existing_users')
EventTypeArg.domain_invites_request_to_join_team = EventTypeArg('domain_invites_request_to_join_team')
EventTypeArg.domain_invites_set_invite_new_user_pref_to_no = EventTypeArg('domain_invites_set_invite_new_user_pref_to_no')
EventTypeArg.domain_invites_set_invite_new_user_pref_to_yes = EventTypeArg('domain_invites_set_invite_new_user_pref_to_yes')
EventTypeArg.domain_verification_add_domain_fail = EventTypeArg('domain_verification_add_domain_fail')
EventTypeArg.domain_verification_add_domain_success = EventTypeArg('domain_verification_add_domain_success')
EventTypeArg.domain_verification_remove_domain = EventTypeArg('domain_verification_remove_domain')
EventTypeArg.enabled_domain_invites = EventTypeArg('enabled_domain_invites')
EventTypeArg.create_folder = EventTypeArg('create_folder')
EventTypeArg.file_add = EventTypeArg('file_add')
EventTypeArg.file_copy = EventTypeArg('file_copy')
EventTypeArg.file_delete = EventTypeArg('file_delete')
EventTypeArg.file_download = EventTypeArg('file_download')
EventTypeArg.file_edit = EventTypeArg('file_edit')
EventTypeArg.file_get_copy_reference = EventTypeArg('file_get_copy_reference')
EventTypeArg.file_locking_lock_status_changed = EventTypeArg('file_locking_lock_status_changed')
EventTypeArg.file_move = EventTypeArg('file_move')
EventTypeArg.file_permanently_delete = EventTypeArg('file_permanently_delete')
EventTypeArg.file_preview = EventTypeArg('file_preview')
EventTypeArg.file_rename = EventTypeArg('file_rename')
EventTypeArg.file_restore = EventTypeArg('file_restore')
EventTypeArg.file_revert = EventTypeArg('file_revert')
EventTypeArg.file_rollback_changes = EventTypeArg('file_rollback_changes')
EventTypeArg.file_save_copy_reference = EventTypeArg('file_save_copy_reference')
EventTypeArg.folder_overview_description_changed = EventTypeArg('folder_overview_description_changed')
EventTypeArg.folder_overview_item_pinned = EventTypeArg('folder_overview_item_pinned')
EventTypeArg.folder_overview_item_unpinned = EventTypeArg('folder_overview_item_unpinned')
EventTypeArg.rewind_folder = EventTypeArg('rewind_folder')
EventTypeArg.file_request_change = EventTypeArg('file_request_change')
EventTypeArg.file_request_close = EventTypeArg('file_request_close')
EventTypeArg.file_request_create = EventTypeArg('file_request_create')
EventTypeArg.file_request_delete = EventTypeArg('file_request_delete')
EventTypeArg.file_request_receive_file = EventTypeArg('file_request_receive_file')
EventTypeArg.group_add_external_id = EventTypeArg('group_add_external_id')
EventTypeArg.group_add_member = EventTypeArg('group_add_member')
EventTypeArg.group_change_external_id = EventTypeArg('group_change_external_id')
EventTypeArg.group_change_management_type = EventTypeArg('group_change_management_type')
EventTypeArg.group_change_member_role = EventTypeArg('group_change_member_role')
EventTypeArg.group_create = EventTypeArg('group_create')
EventTypeArg.group_delete = EventTypeArg('group_delete')
EventTypeArg.group_description_updated = EventTypeArg('group_description_updated')
EventTypeArg.group_join_policy_updated = EventTypeArg('group_join_policy_updated')
EventTypeArg.group_moved = EventTypeArg('group_moved')
EventTypeArg.group_remove_external_id = EventTypeArg('group_remove_external_id')
EventTypeArg.group_remove_member = EventTypeArg('group_remove_member')
EventTypeArg.group_rename = EventTypeArg('group_rename')
EventTypeArg.account_lock_or_unlocked = EventTypeArg('account_lock_or_unlocked')
EventTypeArg.emm_error = EventTypeArg('emm_error')
EventTypeArg.guest_admin_signed_in_via_trusted_teams = EventTypeArg('guest_admin_signed_in_via_trusted_teams')
EventTypeArg.guest_admin_signed_out_via_trusted_teams = EventTypeArg('guest_admin_signed_out_via_trusted_teams')
EventTypeArg.login_fail = EventTypeArg('login_fail')
EventTypeArg.login_success = EventTypeArg('login_success')
EventTypeArg.logout = EventTypeArg('logout')
EventTypeArg.reseller_support_session_end = EventTypeArg('reseller_support_session_end')
EventTypeArg.reseller_support_session_start = EventTypeArg('reseller_support_session_start')
EventTypeArg.sign_in_as_session_end = EventTypeArg('sign_in_as_session_end')
EventTypeArg.sign_in_as_session_start = EventTypeArg('sign_in_as_session_start')
EventTypeArg.sso_error = EventTypeArg('sso_error')
EventTypeArg.create_team_invite_link = EventTypeArg('create_team_invite_link')
EventTypeArg.delete_team_invite_link = EventTypeArg('delete_team_invite_link')
EventTypeArg.member_add_external_id = EventTypeArg('member_add_external_id')
EventTypeArg.member_add_name = EventTypeArg('member_add_name')
EventTypeArg.member_change_admin_role = EventTypeArg('member_change_admin_role')
EventTypeArg.member_change_email = EventTypeArg('member_change_email')
EventTypeArg.member_change_external_id = EventTypeArg('member_change_external_id')
EventTypeArg.member_change_membership_type = EventTypeArg('member_change_membership_type')
EventTypeArg.member_change_name = EventTypeArg('member_change_name')
EventTypeArg.member_change_status = EventTypeArg('member_change_status')
EventTypeArg.member_delete_manual_contacts = EventTypeArg('member_delete_manual_contacts')
EventTypeArg.member_delete_profile_photo = EventTypeArg('member_delete_profile_photo')
EventTypeArg.member_permanently_delete_account_contents = EventTypeArg('member_permanently_delete_account_contents')
EventTypeArg.member_remove_external_id = EventTypeArg('member_remove_external_id')
EventTypeArg.member_set_profile_photo = EventTypeArg('member_set_profile_photo')
EventTypeArg.member_space_limits_add_custom_quota = EventTypeArg('member_space_limits_add_custom_quota')
EventTypeArg.member_space_limits_change_custom_quota = EventTypeArg('member_space_limits_change_custom_quota')
EventTypeArg.member_space_limits_change_status = EventTypeArg('member_space_limits_change_status')
EventTypeArg.member_space_limits_remove_custom_quota = EventTypeArg('member_space_limits_remove_custom_quota')
EventTypeArg.member_suggest = EventTypeArg('member_suggest')
EventTypeArg.member_transfer_account_contents = EventTypeArg('member_transfer_account_contents')
EventTypeArg.pending_secondary_email_added = EventTypeArg('pending_secondary_email_added')
EventTypeArg.secondary_email_deleted = EventTypeArg('secondary_email_deleted')
EventTypeArg.secondary_email_verified = EventTypeArg('secondary_email_verified')
EventTypeArg.secondary_mails_policy_changed = EventTypeArg('secondary_mails_policy_changed')
EventTypeArg.binder_add_page = EventTypeArg('binder_add_page')
EventTypeArg.binder_add_section = EventTypeArg('binder_add_section')
EventTypeArg.binder_remove_page = EventTypeArg('binder_remove_page')
EventTypeArg.binder_remove_section = EventTypeArg('binder_remove_section')
EventTypeArg.binder_rename_page = EventTypeArg('binder_rename_page')
EventTypeArg.binder_rename_section = EventTypeArg('binder_rename_section')
EventTypeArg.binder_reorder_page = EventTypeArg('binder_reorder_page')
EventTypeArg.binder_reorder_section = EventTypeArg('binder_reorder_section')
EventTypeArg.paper_content_add_member = EventTypeArg('paper_content_add_member')
EventTypeArg.paper_content_add_to_folder = EventTypeArg('paper_content_add_to_folder')
EventTypeArg.paper_content_archive = EventTypeArg('paper_content_archive')
EventTypeArg.paper_content_create = EventTypeArg('paper_content_create')
EventTypeArg.paper_content_permanently_delete = EventTypeArg('paper_content_permanently_delete')
EventTypeArg.paper_content_remove_from_folder = EventTypeArg('paper_content_remove_from_folder')
EventTypeArg.paper_content_remove_member = EventTypeArg('paper_content_remove_member')
EventTypeArg.paper_content_rename = EventTypeArg('paper_content_rename')
EventTypeArg.paper_content_restore = EventTypeArg('paper_content_restore')
EventTypeArg.paper_doc_add_comment = EventTypeArg('paper_doc_add_comment')
EventTypeArg.paper_doc_change_member_role = EventTypeArg('paper_doc_change_member_role')
EventTypeArg.paper_doc_change_sharing_policy = EventTypeArg('paper_doc_change_sharing_policy')
EventTypeArg.paper_doc_change_subscription = EventTypeArg('paper_doc_change_subscription')
EventTypeArg.paper_doc_deleted = EventTypeArg('paper_doc_deleted')
EventTypeArg.paper_doc_delete_comment = EventTypeArg('paper_doc_delete_comment')
EventTypeArg.paper_doc_download = EventTypeArg('paper_doc_download')
EventTypeArg.paper_doc_edit = EventTypeArg('paper_doc_edit')
EventTypeArg.paper_doc_edit_comment = EventTypeArg('paper_doc_edit_comment')
EventTypeArg.paper_doc_followed = EventTypeArg('paper_doc_followed')
EventTypeArg.paper_doc_mention = EventTypeArg('paper_doc_mention')
EventTypeArg.paper_doc_ownership_changed = EventTypeArg('paper_doc_ownership_changed')
EventTypeArg.paper_doc_request_access = EventTypeArg('paper_doc_request_access')
EventTypeArg.paper_doc_resolve_comment = EventTypeArg('paper_doc_resolve_comment')
EventTypeArg.paper_doc_revert = EventTypeArg('paper_doc_revert')
EventTypeArg.paper_doc_slack_share = EventTypeArg('paper_doc_slack_share')
EventTypeArg.paper_doc_team_invite = EventTypeArg('paper_doc_team_invite')
EventTypeArg.paper_doc_trashed = EventTypeArg('paper_doc_trashed')
EventTypeArg.paper_doc_unresolve_comment = EventTypeArg('paper_doc_unresolve_comment')
EventTypeArg.paper_doc_untrashed = EventTypeArg('paper_doc_untrashed')
EventTypeArg.paper_doc_view = EventTypeArg('paper_doc_view')
EventTypeArg.paper_external_view_allow = EventTypeArg('paper_external_view_allow')
EventTypeArg.paper_external_view_default_team = EventTypeArg('paper_external_view_default_team')
EventTypeArg.paper_external_view_forbid = EventTypeArg('paper_external_view_forbid')
EventTypeArg.paper_folder_change_subscription = EventTypeArg('paper_folder_change_subscription')
EventTypeArg.paper_folder_deleted = EventTypeArg('paper_folder_deleted')
EventTypeArg.paper_folder_followed = EventTypeArg('paper_folder_followed')
EventTypeArg.paper_folder_team_invite = EventTypeArg('paper_folder_team_invite')
EventTypeArg.paper_published_link_change_permission = EventTypeArg('paper_published_link_change_permission')
EventTypeArg.paper_published_link_create = EventTypeArg('paper_published_link_create')
EventTypeArg.paper_published_link_disabled = EventTypeArg('paper_published_link_disabled')
EventTypeArg.paper_published_link_view = EventTypeArg('paper_published_link_view')
EventTypeArg.password_change = EventTypeArg('password_change')
EventTypeArg.password_reset = EventTypeArg('password_reset')
EventTypeArg.password_reset_all = EventTypeArg('password_reset_all')
EventTypeArg.emm_create_exceptions_report = EventTypeArg('emm_create_exceptions_report')
EventTypeArg.emm_create_usage_report = EventTypeArg('emm_create_usage_report')
EventTypeArg.export_members_report = EventTypeArg('export_members_report')
EventTypeArg.export_members_report_fail = EventTypeArg('export_members_report_fail')
EventTypeArg.external_sharing_create_report = EventTypeArg('external_sharing_create_report')
EventTypeArg.external_sharing_report_failed = EventTypeArg('external_sharing_report_failed')
EventTypeArg.no_expiration_link_gen_create_report = EventTypeArg('no_expiration_link_gen_create_report')
EventTypeArg.no_expiration_link_gen_report_failed = EventTypeArg('no_expiration_link_gen_report_failed')
EventTypeArg.no_password_link_gen_create_report = EventTypeArg('no_password_link_gen_create_report')
EventTypeArg.no_password_link_gen_report_failed = EventTypeArg('no_password_link_gen_report_failed')
EventTypeArg.no_password_link_view_create_report = EventTypeArg('no_password_link_view_create_report')
EventTypeArg.no_password_link_view_report_failed = EventTypeArg('no_password_link_view_report_failed')
EventTypeArg.outdated_link_view_create_report = EventTypeArg('outdated_link_view_create_report')
EventTypeArg.outdated_link_view_report_failed = EventTypeArg('outdated_link_view_report_failed')
EventTypeArg.paper_admin_export_start = EventTypeArg('paper_admin_export_start')
EventTypeArg.smart_sync_create_admin_privilege_report = EventTypeArg('smart_sync_create_admin_privilege_report')
EventTypeArg.team_activity_create_report = EventTypeArg('team_activity_create_report')
EventTypeArg.team_activity_create_report_fail = EventTypeArg('team_activity_create_report_fail')
EventTypeArg.collection_share = EventTypeArg('collection_share')
EventTypeArg.file_transfers_file_add = EventTypeArg('file_transfers_file_add')
EventTypeArg.file_transfers_transfer_delete = EventTypeArg('file_transfers_transfer_delete')
EventTypeArg.file_transfers_transfer_download = EventTypeArg('file_transfers_transfer_download')
EventTypeArg.file_transfers_transfer_send = EventTypeArg('file_transfers_transfer_send')
EventTypeArg.file_transfers_transfer_view = EventTypeArg('file_transfers_transfer_view')
EventTypeArg.note_acl_invite_only = EventTypeArg('note_acl_invite_only')
EventTypeArg.note_acl_link = EventTypeArg('note_acl_link')
EventTypeArg.note_acl_team_link = EventTypeArg('note_acl_team_link')
EventTypeArg.note_shared = EventTypeArg('note_shared')
EventTypeArg.note_share_receive = EventTypeArg('note_share_receive')
EventTypeArg.open_note_shared = EventTypeArg('open_note_shared')
EventTypeArg.sf_add_group = EventTypeArg('sf_add_group')
EventTypeArg.sf_allow_non_members_to_view_shared_links = EventTypeArg('sf_allow_non_members_to_view_shared_links')
EventTypeArg.sf_external_invite_warn = EventTypeArg('sf_external_invite_warn')
EventTypeArg.sf_fb_invite = EventTypeArg('sf_fb_invite')
EventTypeArg.sf_fb_invite_change_role = EventTypeArg('sf_fb_invite_change_role')
EventTypeArg.sf_fb_uninvite = EventTypeArg('sf_fb_uninvite')
EventTypeArg.sf_invite_group = EventTypeArg('sf_invite_group')
EventTypeArg.sf_team_grant_access = EventTypeArg('sf_team_grant_access')
EventTypeArg.sf_team_invite = EventTypeArg('sf_team_invite')
EventTypeArg.sf_team_invite_change_role = EventTypeArg('sf_team_invite_change_role')
EventTypeArg.sf_team_join = EventTypeArg('sf_team_join')
EventTypeArg.sf_team_join_from_oob_link = EventTypeArg('sf_team_join_from_oob_link')
EventTypeArg.sf_team_uninvite = EventTypeArg('sf_team_uninvite')
EventTypeArg.shared_content_add_invitees = EventTypeArg('shared_content_add_invitees')
EventTypeArg.shared_content_add_link_expiry = EventTypeArg('shared_content_add_link_expiry')
EventTypeArg.shared_content_add_link_password = EventTypeArg('shared_content_add_link_password')
EventTypeArg.shared_content_add_member = EventTypeArg('shared_content_add_member')
EventTypeArg.shared_content_change_downloads_policy = EventTypeArg('shared_content_change_downloads_policy')
EventTypeArg.shared_content_change_invitee_role = EventTypeArg('shared_content_change_invitee_role')
EventTypeArg.shared_content_change_link_audience = EventTypeArg('shared_content_change_link_audience')
EventTypeArg.shared_content_change_link_expiry = EventTypeArg('shared_content_change_link_expiry')
EventTypeArg.shared_content_change_link_password = EventTypeArg('shared_content_change_link_password')
EventTypeArg.shared_content_change_member_role = EventTypeArg('shared_content_change_member_role')
EventTypeArg.shared_content_change_viewer_info_policy = EventTypeArg('shared_content_change_viewer_info_policy')
EventTypeArg.shared_content_claim_invitation = EventTypeArg('shared_content_claim_invitation')
EventTypeArg.shared_content_copy = EventTypeArg('shared_content_copy')
EventTypeArg.shared_content_download = EventTypeArg('shared_content_download')
EventTypeArg.shared_content_relinquish_membership = EventTypeArg('shared_content_relinquish_membership')
EventTypeArg.shared_content_remove_invitees = EventTypeArg('shared_content_remove_invitees')
EventTypeArg.shared_content_remove_link_expiry = EventTypeArg('shared_content_remove_link_expiry')
EventTypeArg.shared_content_remove_link_password = EventTypeArg('shared_content_remove_link_password')
EventTypeArg.shared_content_remove_member = EventTypeArg('shared_content_remove_member')
EventTypeArg.shared_content_request_access = EventTypeArg('shared_content_request_access')
EventTypeArg.shared_content_restore_invitees = EventTypeArg('shared_content_restore_invitees')
EventTypeArg.shared_content_restore_member = EventTypeArg('shared_content_restore_member')
EventTypeArg.shared_content_unshare = EventTypeArg('shared_content_unshare')
EventTypeArg.shared_content_view = EventTypeArg('shared_content_view')
EventTypeArg.shared_folder_change_link_policy = EventTypeArg('shared_folder_change_link_policy')
EventTypeArg.shared_folder_change_members_inheritance_policy = EventTypeArg('shared_folder_change_members_inheritance_policy')
EventTypeArg.shared_folder_change_members_management_policy = EventTypeArg('shared_folder_change_members_management_policy')
EventTypeArg.shared_folder_change_members_policy = EventTypeArg('shared_folder_change_members_policy')
EventTypeArg.shared_folder_create = EventTypeArg('shared_folder_create')
EventTypeArg.shared_folder_decline_invitation = EventTypeArg('shared_folder_decline_invitation')
EventTypeArg.shared_folder_mount = EventTypeArg('shared_folder_mount')
EventTypeArg.shared_folder_nest = EventTypeArg('shared_folder_nest')
EventTypeArg.shared_folder_transfer_ownership = EventTypeArg('shared_folder_transfer_ownership')
EventTypeArg.shared_folder_unmount = EventTypeArg('shared_folder_unmount')
EventTypeArg.shared_link_add_expiry = EventTypeArg('shared_link_add_expiry')
EventTypeArg.shared_link_change_expiry = EventTypeArg('shared_link_change_expiry')
EventTypeArg.shared_link_change_visibility = EventTypeArg('shared_link_change_visibility')
EventTypeArg.shared_link_copy = EventTypeArg('shared_link_copy')
EventTypeArg.shared_link_create = EventTypeArg('shared_link_create')
EventTypeArg.shared_link_disable = EventTypeArg('shared_link_disable')
EventTypeArg.shared_link_download = EventTypeArg('shared_link_download')
EventTypeArg.shared_link_remove_expiry = EventTypeArg('shared_link_remove_expiry')
EventTypeArg.shared_link_settings_add_expiration = EventTypeArg('shared_link_settings_add_expiration')
EventTypeArg.shared_link_settings_add_password = EventTypeArg('shared_link_settings_add_password')
EventTypeArg.shared_link_settings_allow_download_disabled = EventTypeArg('shared_link_settings_allow_download_disabled')
EventTypeArg.shared_link_settings_allow_download_enabled = EventTypeArg('shared_link_settings_allow_download_enabled')
EventTypeArg.shared_link_settings_change_audience = EventTypeArg('shared_link_settings_change_audience')
EventTypeArg.shared_link_settings_change_expiration = EventTypeArg('shared_link_settings_change_expiration')
EventTypeArg.shared_link_settings_change_password = EventTypeArg('shared_link_settings_change_password')
EventTypeArg.shared_link_settings_remove_expiration = EventTypeArg('shared_link_settings_remove_expiration')
EventTypeArg.shared_link_settings_remove_password = EventTypeArg('shared_link_settings_remove_password')
EventTypeArg.shared_link_share = EventTypeArg('shared_link_share')
EventTypeArg.shared_link_view = EventTypeArg('shared_link_view')
EventTypeArg.shared_note_opened = EventTypeArg('shared_note_opened')
EventTypeArg.shmodel_disable_downloads = EventTypeArg('shmodel_disable_downloads')
EventTypeArg.shmodel_enable_downloads = EventTypeArg('shmodel_enable_downloads')
EventTypeArg.shmodel_group_share = EventTypeArg('shmodel_group_share')
EventTypeArg.showcase_access_granted = EventTypeArg('showcase_access_granted')
EventTypeArg.showcase_add_member = EventTypeArg('showcase_add_member')
EventTypeArg.showcase_archived = EventTypeArg('showcase_archived')
EventTypeArg.showcase_created = EventTypeArg('showcase_created')
EventTypeArg.showcase_delete_comment = EventTypeArg('showcase_delete_comment')
EventTypeArg.showcase_edited = EventTypeArg('showcase_edited')
EventTypeArg.showcase_edit_comment = EventTypeArg('showcase_edit_comment')
EventTypeArg.showcase_file_added = EventTypeArg('showcase_file_added')
EventTypeArg.showcase_file_download = EventTypeArg('showcase_file_download')
EventTypeArg.showcase_file_removed = EventTypeArg('showcase_file_removed')
EventTypeArg.showcase_file_view = EventTypeArg('showcase_file_view')
EventTypeArg.showcase_permanently_deleted = EventTypeArg('showcase_permanently_deleted')
EventTypeArg.showcase_post_comment = EventTypeArg('showcase_post_comment')
EventTypeArg.showcase_remove_member = EventTypeArg('showcase_remove_member')
EventTypeArg.showcase_renamed = EventTypeArg('showcase_renamed')
EventTypeArg.showcase_request_access = EventTypeArg('showcase_request_access')
EventTypeArg.showcase_resolve_comment = EventTypeArg('showcase_resolve_comment')
EventTypeArg.showcase_restored = EventTypeArg('showcase_restored')
EventTypeArg.showcase_trashed = EventTypeArg('showcase_trashed')
EventTypeArg.showcase_trashed_deprecated = EventTypeArg('showcase_trashed_deprecated')
EventTypeArg.showcase_unresolve_comment = EventTypeArg('showcase_unresolve_comment')
EventTypeArg.showcase_untrashed = EventTypeArg('showcase_untrashed')
EventTypeArg.showcase_untrashed_deprecated = EventTypeArg('showcase_untrashed_deprecated')
EventTypeArg.showcase_view = EventTypeArg('showcase_view')
EventTypeArg.sso_add_cert = EventTypeArg('sso_add_cert')
EventTypeArg.sso_add_login_url = EventTypeArg('sso_add_login_url')
EventTypeArg.sso_add_logout_url = EventTypeArg('sso_add_logout_url')
EventTypeArg.sso_change_cert = EventTypeArg('sso_change_cert')
EventTypeArg.sso_change_login_url = EventTypeArg('sso_change_login_url')
EventTypeArg.sso_change_logout_url = EventTypeArg('sso_change_logout_url')
EventTypeArg.sso_change_saml_identity_mode = EventTypeArg('sso_change_saml_identity_mode')
EventTypeArg.sso_remove_cert = EventTypeArg('sso_remove_cert')
EventTypeArg.sso_remove_login_url = EventTypeArg('sso_remove_login_url')
EventTypeArg.sso_remove_logout_url = EventTypeArg('sso_remove_logout_url')
EventTypeArg.team_folder_change_status = EventTypeArg('team_folder_change_status')
EventTypeArg.team_folder_create = EventTypeArg('team_folder_create')
EventTypeArg.team_folder_downgrade = EventTypeArg('team_folder_downgrade')
EventTypeArg.team_folder_permanently_delete = EventTypeArg('team_folder_permanently_delete')
EventTypeArg.team_folder_rename = EventTypeArg('team_folder_rename')
EventTypeArg.team_selective_sync_settings_changed = EventTypeArg('team_selective_sync_settings_changed')
EventTypeArg.account_capture_change_policy = EventTypeArg('account_capture_change_policy')
EventTypeArg.allow_download_disabled = EventTypeArg('allow_download_disabled')
EventTypeArg.allow_download_enabled = EventTypeArg('allow_download_enabled')
EventTypeArg.camera_uploads_policy_changed = EventTypeArg('camera_uploads_policy_changed')
EventTypeArg.computer_backup_policy_changed = EventTypeArg('computer_backup_policy_changed')
EventTypeArg.content_administration_policy_changed = EventTypeArg('content_administration_policy_changed')
EventTypeArg.data_placement_restriction_change_policy = EventTypeArg('data_placement_restriction_change_policy')
EventTypeArg.data_placement_restriction_satisfy_policy = EventTypeArg('data_placement_restriction_satisfy_policy')
EventTypeArg.device_approvals_add_exception = EventTypeArg('device_approvals_add_exception')
EventTypeArg.device_approvals_change_desktop_policy = EventTypeArg('device_approvals_change_desktop_policy')
EventTypeArg.device_approvals_change_mobile_policy = EventTypeArg('device_approvals_change_mobile_policy')
EventTypeArg.device_approvals_change_overage_action = EventTypeArg('device_approvals_change_overage_action')
EventTypeArg.device_approvals_change_unlink_action = EventTypeArg('device_approvals_change_unlink_action')
EventTypeArg.device_approvals_remove_exception = EventTypeArg('device_approvals_remove_exception')
EventTypeArg.directory_restrictions_add_members = EventTypeArg('directory_restrictions_add_members')
EventTypeArg.directory_restrictions_remove_members = EventTypeArg('directory_restrictions_remove_members')
EventTypeArg.emm_add_exception = EventTypeArg('emm_add_exception')
EventTypeArg.emm_change_policy = EventTypeArg('emm_change_policy')
EventTypeArg.emm_remove_exception = EventTypeArg('emm_remove_exception')
EventTypeArg.extended_version_history_change_policy = EventTypeArg('extended_version_history_change_policy')
EventTypeArg.file_comments_change_policy = EventTypeArg('file_comments_change_policy')
EventTypeArg.file_locking_policy_changed = EventTypeArg('file_locking_policy_changed')
EventTypeArg.file_requests_change_policy = EventTypeArg('file_requests_change_policy')
EventTypeArg.file_requests_emails_enabled = EventTypeArg('file_requests_emails_enabled')
EventTypeArg.file_requests_emails_restricted_to_team_only = EventTypeArg('file_requests_emails_restricted_to_team_only')
EventTypeArg.file_transfers_policy_changed = EventTypeArg('file_transfers_policy_changed')
EventTypeArg.google_sso_change_policy = EventTypeArg('google_sso_change_policy')
EventTypeArg.group_user_management_change_policy = EventTypeArg('group_user_management_change_policy')
EventTypeArg.integration_policy_changed = EventTypeArg('integration_policy_changed')
EventTypeArg.member_requests_change_policy = EventTypeArg('member_requests_change_policy')
EventTypeArg.member_send_invite_policy_changed = EventTypeArg('member_send_invite_policy_changed')
EventTypeArg.member_space_limits_add_exception = EventTypeArg('member_space_limits_add_exception')
EventTypeArg.member_space_limits_change_caps_type_policy = EventTypeArg('member_space_limits_change_caps_type_policy')
EventTypeArg.member_space_limits_change_policy = EventTypeArg('member_space_limits_change_policy')
EventTypeArg.member_space_limits_remove_exception = EventTypeArg('member_space_limits_remove_exception')
EventTypeArg.member_suggestions_change_policy = EventTypeArg('member_suggestions_change_policy')
EventTypeArg.microsoft_office_addin_change_policy = EventTypeArg('microsoft_office_addin_change_policy')
EventTypeArg.network_control_change_policy = EventTypeArg('network_control_change_policy')
EventTypeArg.paper_change_deployment_policy = EventTypeArg('paper_change_deployment_policy')
EventTypeArg.paper_change_member_link_policy = EventTypeArg('paper_change_member_link_policy')
EventTypeArg.paper_change_member_policy = EventTypeArg('paper_change_member_policy')
EventTypeArg.paper_change_policy = EventTypeArg('paper_change_policy')
EventTypeArg.paper_default_folder_policy_changed = EventTypeArg('paper_default_folder_policy_changed')
EventTypeArg.paper_desktop_policy_changed = EventTypeArg('paper_desktop_policy_changed')
EventTypeArg.paper_enabled_users_group_addition = EventTypeArg('paper_enabled_users_group_addition')
EventTypeArg.paper_enabled_users_group_removal = EventTypeArg('paper_enabled_users_group_removal')
EventTypeArg.password_strength_requirements_change_policy = EventTypeArg('password_strength_requirements_change_policy')
EventTypeArg.permanent_delete_change_policy = EventTypeArg('permanent_delete_change_policy')
EventTypeArg.reseller_support_change_policy = EventTypeArg('reseller_support_change_policy')
EventTypeArg.rewind_policy_changed = EventTypeArg('rewind_policy_changed')
EventTypeArg.send_for_signature_policy_changed = EventTypeArg('send_for_signature_policy_changed')
EventTypeArg.sharing_change_folder_join_policy = EventTypeArg('sharing_change_folder_join_policy')
EventTypeArg.sharing_change_link_policy = EventTypeArg('sharing_change_link_policy')
EventTypeArg.sharing_change_member_policy = EventTypeArg('sharing_change_member_policy')
EventTypeArg.showcase_change_download_policy = EventTypeArg('showcase_change_download_policy')
EventTypeArg.showcase_change_enabled_policy = EventTypeArg('showcase_change_enabled_policy')
EventTypeArg.showcase_change_external_sharing_policy = EventTypeArg('showcase_change_external_sharing_policy')
EventTypeArg.smarter_smart_sync_policy_changed = EventTypeArg('smarter_smart_sync_policy_changed')
EventTypeArg.smart_sync_change_policy = EventTypeArg('smart_sync_change_policy')
EventTypeArg.smart_sync_not_opt_out = EventTypeArg('smart_sync_not_opt_out')
EventTypeArg.smart_sync_opt_out = EventTypeArg('smart_sync_opt_out')
EventTypeArg.sso_change_policy = EventTypeArg('sso_change_policy')
EventTypeArg.team_extensions_policy_changed = EventTypeArg('team_extensions_policy_changed')
EventTypeArg.team_selective_sync_policy_changed = EventTypeArg('team_selective_sync_policy_changed')
EventTypeArg.team_sharing_whitelist_subjects_changed = EventTypeArg('team_sharing_whitelist_subjects_changed')
EventTypeArg.tfa_add_exception = EventTypeArg('tfa_add_exception')
EventTypeArg.tfa_change_policy = EventTypeArg('tfa_change_policy')
EventTypeArg.tfa_remove_exception = EventTypeArg('tfa_remove_exception')
EventTypeArg.two_account_change_policy = EventTypeArg('two_account_change_policy')
EventTypeArg.viewer_info_policy_changed = EventTypeArg('viewer_info_policy_changed')
EventTypeArg.watermarking_policy_changed = EventTypeArg('watermarking_policy_changed')
EventTypeArg.web_sessions_change_active_session_limit = EventTypeArg('web_sessions_change_active_session_limit')
EventTypeArg.web_sessions_change_fixed_length_policy = EventTypeArg('web_sessions_change_fixed_length_policy')
EventTypeArg.web_sessions_change_idle_length_policy = EventTypeArg('web_sessions_change_idle_length_policy')
EventTypeArg.team_merge_from = EventTypeArg('team_merge_from')
EventTypeArg.team_merge_to = EventTypeArg('team_merge_to')
EventTypeArg.team_profile_add_logo = EventTypeArg('team_profile_add_logo')
EventTypeArg.team_profile_change_default_language = EventTypeArg('team_profile_change_default_language')
EventTypeArg.team_profile_change_logo = EventTypeArg('team_profile_change_logo')
EventTypeArg.team_profile_change_name = EventTypeArg('team_profile_change_name')
EventTypeArg.team_profile_remove_logo = EventTypeArg('team_profile_remove_logo')
EventTypeArg.tfa_add_backup_phone = EventTypeArg('tfa_add_backup_phone')
EventTypeArg.tfa_add_security_key = EventTypeArg('tfa_add_security_key')
EventTypeArg.tfa_change_backup_phone = EventTypeArg('tfa_change_backup_phone')
EventTypeArg.tfa_change_status = EventTypeArg('tfa_change_status')
EventTypeArg.tfa_remove_backup_phone = EventTypeArg('tfa_remove_backup_phone')
EventTypeArg.tfa_remove_security_key = EventTypeArg('tfa_remove_security_key')
EventTypeArg.tfa_reset = EventTypeArg('tfa_reset')
EventTypeArg.changed_enterprise_admin_role = EventTypeArg('changed_enterprise_admin_role')
EventTypeArg.changed_enterprise_connected_team_status = EventTypeArg('changed_enterprise_connected_team_status')
EventTypeArg.ended_enterprise_admin_session = EventTypeArg('ended_enterprise_admin_session')
EventTypeArg.ended_enterprise_admin_session_deprecated = EventTypeArg('ended_enterprise_admin_session_deprecated')
EventTypeArg.enterprise_settings_locking = EventTypeArg('enterprise_settings_locking')
EventTypeArg.guest_admin_change_status = EventTypeArg('guest_admin_change_status')
EventTypeArg.started_enterprise_admin_session = EventTypeArg('started_enterprise_admin_session')
EventTypeArg.team_merge_request_accepted = EventTypeArg('team_merge_request_accepted')
EventTypeArg.team_merge_request_accepted_shown_to_primary_team = EventTypeArg('team_merge_request_accepted_shown_to_primary_team')
EventTypeArg.team_merge_request_accepted_shown_to_secondary_team = EventTypeArg('team_merge_request_accepted_shown_to_secondary_team')
EventTypeArg.team_merge_request_auto_canceled = EventTypeArg('team_merge_request_auto_canceled')
EventTypeArg.team_merge_request_canceled = EventTypeArg('team_merge_request_canceled')
EventTypeArg.team_merge_request_canceled_shown_to_primary_team = EventTypeArg('team_merge_request_canceled_shown_to_primary_team')
EventTypeArg.team_merge_request_canceled_shown_to_secondary_team = EventTypeArg('team_merge_request_canceled_shown_to_secondary_team')
EventTypeArg.team_merge_request_expired = EventTypeArg('team_merge_request_expired')
EventTypeArg.team_merge_request_expired_shown_to_primary_team = EventTypeArg('team_merge_request_expired_shown_to_primary_team')
EventTypeArg.team_merge_request_expired_shown_to_secondary_team = EventTypeArg('team_merge_request_expired_shown_to_secondary_team')
EventTypeArg.team_merge_request_rejected_shown_to_primary_team = EventTypeArg('team_merge_request_rejected_shown_to_primary_team')
EventTypeArg.team_merge_request_rejected_shown_to_secondary_team = EventTypeArg('team_merge_request_rejected_shown_to_secondary_team')
EventTypeArg.team_merge_request_reminder = EventTypeArg('team_merge_request_reminder')
EventTypeArg.team_merge_request_reminder_shown_to_primary_team = EventTypeArg('team_merge_request_reminder_shown_to_primary_team')
EventTypeArg.team_merge_request_reminder_shown_to_secondary_team = EventTypeArg('team_merge_request_reminder_shown_to_secondary_team')
EventTypeArg.team_merge_request_revoked = EventTypeArg('team_merge_request_revoked')
EventTypeArg.team_merge_request_sent_shown_to_primary_team = EventTypeArg('team_merge_request_sent_shown_to_primary_team')
EventTypeArg.team_merge_request_sent_shown_to_secondary_team = EventTypeArg('team_merge_request_sent_shown_to_secondary_team')
EventTypeArg.other = EventTypeArg('other')

ExportMembersReportDetails._all_field_names_ = set([])
ExportMembersReportDetails._all_fields_ = []

ExportMembersReportFailDetails._failure_reason_validator = team.TeamReportFailureReason_validator
ExportMembersReportFailDetails._all_field_names_ = set(['failure_reason'])
ExportMembersReportFailDetails._all_fields_ = [('failure_reason', ExportMembersReportFailDetails._failure_reason_validator)]

ExportMembersReportFailType._description_validator = bv.String()
ExportMembersReportFailType._all_field_names_ = set(['description'])
ExportMembersReportFailType._all_fields_ = [('description', ExportMembersReportFailType._description_validator)]

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')

ExternalSharingCreateReportDetails._all_field_names_ = set([])
ExternalSharingCreateReportDetails._all_fields_ = []

ExternalSharingCreateReportType._description_validator = bv.String()
ExternalSharingCreateReportType._all_field_names_ = set(['description'])
ExternalSharingCreateReportType._all_fields_ = [('description', ExternalSharingCreateReportType._description_validator)]

ExternalSharingReportFailedDetails._failure_reason_validator = team.TeamReportFailureReason_validator
ExternalSharingReportFailedDetails._all_field_names_ = set(['failure_reason'])
ExternalSharingReportFailedDetails._all_fields_ = [('failure_reason', ExternalSharingReportFailedDetails._failure_reason_validator)]

ExternalSharingReportFailedType._description_validator = bv.String()
ExternalSharingReportFailedType._all_field_names_ = set(['description'])
ExternalSharingReportFailedType._all_fields_ = [('description', ExternalSharingReportFailedType._description_validator)]

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),
]

FedAdminRole._enterprise_admin_validator = bv.Void()
FedAdminRole._not_enterprise_admin_validator = bv.Void()
FedAdminRole._other_validator = bv.Void()
FedAdminRole._tagmap = {
    'enterprise_admin': FedAdminRole._enterprise_admin_validator,
    'not_enterprise_admin': FedAdminRole._not_enterprise_admin_validator,
    'other': FedAdminRole._other_validator,
}

FedAdminRole.enterprise_admin = FedAdminRole('enterprise_admin')
FedAdminRole.not_enterprise_admin = FedAdminRole('not_enterprise_admin')
FedAdminRole.other = FedAdminRole('other')

FedExtraDetails._organization_validator = OrganizationDetails_validator
FedExtraDetails._team_validator = TeamDetails_validator
FedExtraDetails._other_validator = bv.Void()
FedExtraDetails._tagmap = {
    'organization': FedExtraDetails._organization_validator,
    'team': FedExtraDetails._team_validator,
    'other': FedExtraDetails._other_validator,
}

FedExtraDetails.other = FedExtraDetails('other')

FedHandshakeAction._accepted_invite_validator = bv.Void()
FedHandshakeAction._canceled_invite_validator = bv.Void()
FedHandshakeAction._invite_expired_validator = bv.Void()
FedHandshakeAction._invited_validator = bv.Void()
FedHandshakeAction._rejected_invite_validator = bv.Void()
FedHandshakeAction._removed_team_validator = bv.Void()
FedHandshakeAction._other_validator = bv.Void()
FedHandshakeAction._tagmap = {
    'accepted_invite': FedHandshakeAction._accepted_invite_validator,
    'canceled_invite': FedHandshakeAction._canceled_invite_validator,
    'invite_expired': FedHandshakeAction._invite_expired_validator,
    'invited': FedHandshakeAction._invited_validator,
    'rejected_invite': FedHandshakeAction._rejected_invite_validator,
    'removed_team': FedHandshakeAction._removed_team_validator,
    'other': FedHandshakeAction._other_validator,
}

FedHandshakeAction.accepted_invite = FedHandshakeAction('accepted_invite')
FedHandshakeAction.canceled_invite = FedHandshakeAction('canceled_invite')
FedHandshakeAction.invite_expired = FedHandshakeAction('invite_expired')
FedHandshakeAction.invited = FedHandshakeAction('invited')
FedHandshakeAction.rejected_invite = FedHandshakeAction('rejected_invite')
FedHandshakeAction.removed_team = FedHandshakeAction('removed_team')
FedHandshakeAction.other = FedHandshakeAction('other')

FederationStatusChangeAdditionalInfo._connected_team_name_validator = ConnectedTeamName_validator
FederationStatusChangeAdditionalInfo._non_trusted_team_details_validator = NonTrustedTeamDetails_validator
FederationStatusChangeAdditionalInfo._organization_name_validator = OrganizationName_validator
FederationStatusChangeAdditionalInfo._other_validator = bv.Void()
FederationStatusChangeAdditionalInfo._tagmap = {
    'connected_team_name': FederationStatusChangeAdditionalInfo._connected_team_name_validator,
    'non_trusted_team_details': FederationStatusChangeAdditionalInfo._non_trusted_team_details_validator,
    'organization_name': FederationStatusChangeAdditionalInfo._organization_name_validator,
    'other': FederationStatusChangeAdditionalInfo._other_validator,
}

FederationStatusChangeAdditionalInfo.other = FederationStatusChangeAdditionalInfo('other')

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)]

FileLockingLockStatusChangedDetails._previous_value_validator = LockStatus_validator
FileLockingLockStatusChangedDetails._new_value_validator = LockStatus_validator
FileLockingLockStatusChangedDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
FileLockingLockStatusChangedDetails._all_fields_ = [
    ('previous_value', FileLockingLockStatusChangedDetails._previous_value_validator),
    ('new_value', FileLockingLockStatusChangedDetails._new_value_validator),
]

FileLockingLockStatusChangedType._description_validator = bv.String()
FileLockingLockStatusChangedType._all_field_names_ = set(['description'])
FileLockingLockStatusChangedType._all_fields_ = [('description', FileLockingLockStatusChangedType._description_validator)]

FileLockingPolicyChangedDetails._new_value_validator = team_policies.FileLockingPolicyState_validator
FileLockingPolicyChangedDetails._previous_value_validator = team_policies.FileLockingPolicyState_validator
FileLockingPolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
FileLockingPolicyChangedDetails._all_fields_ = [
    ('new_value', FileLockingPolicyChangedDetails._new_value_validator),
    ('previous_value', FileLockingPolicyChangedDetails._previous_value_validator),
]

FileLockingPolicyChangedType._description_validator = bv.String()
FileLockingPolicyChangedType._all_field_names_ = set(['description'])
FileLockingPolicyChangedType._all_fields_ = [('description', FileLockingPolicyChangedType._description_validator)]

FileOrFolderLogInfo._path_validator = PathLogInfo_validator
FileOrFolderLogInfo._display_name_validator = bv.Nullable(bv.String())
FileOrFolderLogInfo._file_id_validator = bv.Nullable(bv.String())
FileOrFolderLogInfo._file_size_validator = bv.Nullable(bv.UInt64())
FileOrFolderLogInfo._all_field_names_ = set([
    'path',
    'display_name',
    'file_id',
    'file_size',
])
FileOrFolderLogInfo._all_fields_ = [
    ('path', FileOrFolderLogInfo._path_validator),
    ('display_name', FileOrFolderLogInfo._display_name_validator),
    ('file_id', FileOrFolderLogInfo._file_id_validator),
    ('file_size', FileOrFolderLogInfo._file_size_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)]

FileTransfersFileAddDetails._file_transfer_id_validator = bv.String()
FileTransfersFileAddDetails._all_field_names_ = set(['file_transfer_id'])
FileTransfersFileAddDetails._all_fields_ = [('file_transfer_id', FileTransfersFileAddDetails._file_transfer_id_validator)]

FileTransfersFileAddType._description_validator = bv.String()
FileTransfersFileAddType._all_field_names_ = set(['description'])
FileTransfersFileAddType._all_fields_ = [('description', FileTransfersFileAddType._description_validator)]

FileTransfersPolicy._disabled_validator = bv.Void()
FileTransfersPolicy._enabled_validator = bv.Void()
FileTransfersPolicy._other_validator = bv.Void()
FileTransfersPolicy._tagmap = {
    'disabled': FileTransfersPolicy._disabled_validator,
    'enabled': FileTransfersPolicy._enabled_validator,
    'other': FileTransfersPolicy._other_validator,
}

FileTransfersPolicy.disabled = FileTransfersPolicy('disabled')
FileTransfersPolicy.enabled = FileTransfersPolicy('enabled')
FileTransfersPolicy.other = FileTransfersPolicy('other')

FileTransfersPolicyChangedDetails._new_value_validator = FileTransfersPolicy_validator
FileTransfersPolicyChangedDetails._previous_value_validator = FileTransfersPolicy_validator
FileTransfersPolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
FileTransfersPolicyChangedDetails._all_fields_ = [
    ('new_value', FileTransfersPolicyChangedDetails._new_value_validator),
    ('previous_value', FileTransfersPolicyChangedDetails._previous_value_validator),
]

FileTransfersPolicyChangedType._description_validator = bv.String()
FileTransfersPolicyChangedType._all_field_names_ = set(['description'])
FileTransfersPolicyChangedType._all_fields_ = [('description', FileTransfersPolicyChangedType._description_validator)]

FileTransfersTransferDeleteDetails._file_transfer_id_validator = bv.String()
FileTransfersTransferDeleteDetails._all_field_names_ = set(['file_transfer_id'])
FileTransfersTransferDeleteDetails._all_fields_ = [('file_transfer_id', FileTransfersTransferDeleteDetails._file_transfer_id_validator)]

FileTransfersTransferDeleteType._description_validator = bv.String()
FileTransfersTransferDeleteType._all_field_names_ = set(['description'])
FileTransfersTransferDeleteType._all_fields_ = [('description', FileTransfersTransferDeleteType._description_validator)]

FileTransfersTransferDownloadDetails._file_transfer_id_validator = bv.String()
FileTransfersTransferDownloadDetails._all_field_names_ = set(['file_transfer_id'])
FileTransfersTransferDownloadDetails._all_fields_ = [('file_transfer_id', FileTransfersTransferDownloadDetails._file_transfer_id_validator)]

FileTransfersTransferDownloadType._description_validator = bv.String()
FileTransfersTransferDownloadType._all_field_names_ = set(['description'])
FileTransfersTransferDownloadType._all_fields_ = [('description', FileTransfersTransferDownloadType._description_validator)]

FileTransfersTransferSendDetails._file_transfer_id_validator = bv.String()
FileTransfersTransferSendDetails._all_field_names_ = set(['file_transfer_id'])
FileTransfersTransferSendDetails._all_fields_ = [('file_transfer_id', FileTransfersTransferSendDetails._file_transfer_id_validator)]

FileTransfersTransferSendType._description_validator = bv.String()
FileTransfersTransferSendType._all_field_names_ = set(['description'])
FileTransfersTransferSendType._all_fields_ = [('description', FileTransfersTransferSendType._description_validator)]

FileTransfersTransferViewDetails._file_transfer_id_validator = bv.String()
FileTransfersTransferViewDetails._all_field_names_ = set(['file_transfer_id'])
FileTransfersTransferViewDetails._all_fields_ = [('file_transfer_id', FileTransfersTransferViewDetails._file_transfer_id_validator)]

FileTransfersTransferViewType._description_validator = bv.String()
FileTransfersTransferViewType._all_field_names_ = set(['description'])
FileTransfersTransferViewType._all_fields_ = [('description', FileTransfersTransferViewType._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._file_count_validator = bv.Nullable(bv.UInt64())
FolderLogInfo._all_field_names_ = FileOrFolderLogInfo._all_field_names_.union(set(['file_count']))
FolderLogInfo._all_fields_ = FileOrFolderLogInfo._all_fields_ + [('file_count', FolderLogInfo._file_count_validator)]

FolderOverviewDescriptionChangedDetails._folder_overview_location_asset_validator = bv.UInt64()
FolderOverviewDescriptionChangedDetails._all_field_names_ = set(['folder_overview_location_asset'])
FolderOverviewDescriptionChangedDetails._all_fields_ = [('folder_overview_location_asset', FolderOverviewDescriptionChangedDetails._folder_overview_location_asset_validator)]

FolderOverviewDescriptionChangedType._description_validator = bv.String()
FolderOverviewDescriptionChangedType._all_field_names_ = set(['description'])
FolderOverviewDescriptionChangedType._all_fields_ = [('description', FolderOverviewDescriptionChangedType._description_validator)]

FolderOverviewItemPinnedDetails._folder_overview_location_asset_validator = bv.UInt64()
FolderOverviewItemPinnedDetails._pinned_items_asset_indices_validator = bv.List(bv.UInt64())
FolderOverviewItemPinnedDetails._all_field_names_ = set([
    'folder_overview_location_asset',
    'pinned_items_asset_indices',
])
FolderOverviewItemPinnedDetails._all_fields_ = [
    ('folder_overview_location_asset', FolderOverviewItemPinnedDetails._folder_overview_location_asset_validator),
    ('pinned_items_asset_indices', FolderOverviewItemPinnedDetails._pinned_items_asset_indices_validator),
]

FolderOverviewItemPinnedType._description_validator = bv.String()
FolderOverviewItemPinnedType._all_field_names_ = set(['description'])
FolderOverviewItemPinnedType._all_fields_ = [('description', FolderOverviewItemPinnedType._description_validator)]

FolderOverviewItemUnpinnedDetails._folder_overview_location_asset_validator = bv.UInt64()
FolderOverviewItemUnpinnedDetails._pinned_items_asset_indices_validator = bv.List(bv.UInt64())
FolderOverviewItemUnpinnedDetails._all_field_names_ = set([
    'folder_overview_location_asset',
    'pinned_items_asset_indices',
])
FolderOverviewItemUnpinnedDetails._all_fields_ = [
    ('folder_overview_location_asset', FolderOverviewItemUnpinnedDetails._folder_overview_location_asset_validator),
    ('pinned_items_asset_indices', FolderOverviewItemUnpinnedDetails._pinned_items_asset_indices_validator),
]

FolderOverviewItemUnpinnedType._description_validator = bv.String()
FolderOverviewItemUnpinnedType._all_field_names_ = set(['description'])
FolderOverviewItemUnpinnedType._all_fields_ = [('description', FolderOverviewItemUnpinnedType._description_validator)]

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._event_type_validator = bv.Nullable(EventTypeArg_validator)
GetTeamEventsArg._all_field_names_ = set([
    'limit',
    'account_id',
    'time',
    'category',
    'event_type',
])
GetTeamEventsArg._all_fields_ = [
    ('limit', GetTeamEventsArg._limit_validator),
    ('account_id', GetTeamEventsArg._account_id_validator),
    ('time', GetTeamEventsArg._time_validator),
    ('category', GetTeamEventsArg._category_validator),
    ('event_type', GetTeamEventsArg._event_type_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._invalid_filters_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,
    'invalid_filters': GetTeamEventsError._invalid_filters_validator,
    'other': GetTeamEventsError._other_validator,
}

GetTeamEventsError.account_id_not_found = GetTeamEventsError('account_id_not_found')
GetTeamEventsError.invalid_time_range = GetTeamEventsError('invalid_time_range')
GetTeamEventsError.invalid_filters = GetTeamEventsError('invalid_filters')
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')

GovernancePolicyAddFoldersDetails._governance_policy_id_validator = bv.String()
GovernancePolicyAddFoldersDetails._name_validator = bv.String()
GovernancePolicyAddFoldersDetails._policy_type_validator = bv.Nullable(PolicyType_validator)
GovernancePolicyAddFoldersDetails._folders_validator = bv.Nullable(bv.List(bv.String()))
GovernancePolicyAddFoldersDetails._all_field_names_ = set([
    'governance_policy_id',
    'name',
    'policy_type',
    'folders',
])
GovernancePolicyAddFoldersDetails._all_fields_ = [
    ('governance_policy_id', GovernancePolicyAddFoldersDetails._governance_policy_id_validator),
    ('name', GovernancePolicyAddFoldersDetails._name_validator),
    ('policy_type', GovernancePolicyAddFoldersDetails._policy_type_validator),
    ('folders', GovernancePolicyAddFoldersDetails._folders_validator),
]

GovernancePolicyAddFoldersType._description_validator = bv.String()
GovernancePolicyAddFoldersType._all_field_names_ = set(['description'])
GovernancePolicyAddFoldersType._all_fields_ = [('description', GovernancePolicyAddFoldersType._description_validator)]

GovernancePolicyCreateDetails._governance_policy_id_validator = bv.String()
GovernancePolicyCreateDetails._name_validator = bv.String()
GovernancePolicyCreateDetails._policy_type_validator = bv.Nullable(PolicyType_validator)
GovernancePolicyCreateDetails._duration_validator = DurationLogInfo_validator
GovernancePolicyCreateDetails._folders_validator = bv.Nullable(bv.List(bv.String()))
GovernancePolicyCreateDetails._all_field_names_ = set([
    'governance_policy_id',
    'name',
    'policy_type',
    'duration',
    'folders',
])
GovernancePolicyCreateDetails._all_fields_ = [
    ('governance_policy_id', GovernancePolicyCreateDetails._governance_policy_id_validator),
    ('name', GovernancePolicyCreateDetails._name_validator),
    ('policy_type', GovernancePolicyCreateDetails._policy_type_validator),
    ('duration', GovernancePolicyCreateDetails._duration_validator),
    ('folders', GovernancePolicyCreateDetails._folders_validator),
]

GovernancePolicyCreateType._description_validator = bv.String()
GovernancePolicyCreateType._all_field_names_ = set(['description'])
GovernancePolicyCreateType._all_fields_ = [('description', GovernancePolicyCreateType._description_validator)]

GovernancePolicyDeleteDetails._governance_policy_id_validator = bv.String()
GovernancePolicyDeleteDetails._name_validator = bv.String()
GovernancePolicyDeleteDetails._policy_type_validator = bv.Nullable(PolicyType_validator)
GovernancePolicyDeleteDetails._all_field_names_ = set([
    'governance_policy_id',
    'name',
    'policy_type',
])
GovernancePolicyDeleteDetails._all_fields_ = [
    ('governance_policy_id', GovernancePolicyDeleteDetails._governance_policy_id_validator),
    ('name', GovernancePolicyDeleteDetails._name_validator),
    ('policy_type', GovernancePolicyDeleteDetails._policy_type_validator),
]

GovernancePolicyDeleteType._description_validator = bv.String()
GovernancePolicyDeleteType._all_field_names_ = set(['description'])
GovernancePolicyDeleteType._all_fields_ = [('description', GovernancePolicyDeleteType._description_validator)]

GovernancePolicyEditDetailsDetails._governance_policy_id_validator = bv.String()
GovernancePolicyEditDetailsDetails._name_validator = bv.String()
GovernancePolicyEditDetailsDetails._policy_type_validator = bv.Nullable(PolicyType_validator)
GovernancePolicyEditDetailsDetails._attribute_validator = bv.String()
GovernancePolicyEditDetailsDetails._previous_value_validator = bv.String()
GovernancePolicyEditDetailsDetails._new_value_validator = bv.String()
GovernancePolicyEditDetailsDetails._all_field_names_ = set([
    'governance_policy_id',
    'name',
    'policy_type',
    'attribute',
    'previous_value',
    'new_value',
])
GovernancePolicyEditDetailsDetails._all_fields_ = [
    ('governance_policy_id', GovernancePolicyEditDetailsDetails._governance_policy_id_validator),
    ('name', GovernancePolicyEditDetailsDetails._name_validator),
    ('policy_type', GovernancePolicyEditDetailsDetails._policy_type_validator),
    ('attribute', GovernancePolicyEditDetailsDetails._attribute_validator),
    ('previous_value', GovernancePolicyEditDetailsDetails._previous_value_validator),
    ('new_value', GovernancePolicyEditDetailsDetails._new_value_validator),
]

GovernancePolicyEditDetailsType._description_validator = bv.String()
GovernancePolicyEditDetailsType._all_field_names_ = set(['description'])
GovernancePolicyEditDetailsType._all_fields_ = [('description', GovernancePolicyEditDetailsType._description_validator)]

GovernancePolicyEditDurationDetails._governance_policy_id_validator = bv.String()
GovernancePolicyEditDurationDetails._name_validator = bv.String()
GovernancePolicyEditDurationDetails._policy_type_validator = bv.Nullable(PolicyType_validator)
GovernancePolicyEditDurationDetails._previous_value_validator = DurationLogInfo_validator
GovernancePolicyEditDurationDetails._new_value_validator = DurationLogInfo_validator
GovernancePolicyEditDurationDetails._all_field_names_ = set([
    'governance_policy_id',
    'name',
    'policy_type',
    'previous_value',
    'new_value',
])
GovernancePolicyEditDurationDetails._all_fields_ = [
    ('governance_policy_id', GovernancePolicyEditDurationDetails._governance_policy_id_validator),
    ('name', GovernancePolicyEditDurationDetails._name_validator),
    ('policy_type', GovernancePolicyEditDurationDetails._policy_type_validator),
    ('previous_value', GovernancePolicyEditDurationDetails._previous_value_validator),
    ('new_value', GovernancePolicyEditDurationDetails._new_value_validator),
]

GovernancePolicyEditDurationType._description_validator = bv.String()
GovernancePolicyEditDurationType._all_field_names_ = set(['description'])
GovernancePolicyEditDurationType._all_fields_ = [('description', GovernancePolicyEditDurationType._description_validator)]

GovernancePolicyRemoveFoldersDetails._governance_policy_id_validator = bv.String()
GovernancePolicyRemoveFoldersDetails._name_validator = bv.String()
GovernancePolicyRemoveFoldersDetails._policy_type_validator = bv.Nullable(PolicyType_validator)
GovernancePolicyRemoveFoldersDetails._folders_validator = bv.Nullable(bv.List(bv.String()))
GovernancePolicyRemoveFoldersDetails._all_field_names_ = set([
    'governance_policy_id',
    'name',
    'policy_type',
    'folders',
])
GovernancePolicyRemoveFoldersDetails._all_fields_ = [
    ('governance_policy_id', GovernancePolicyRemoveFoldersDetails._governance_policy_id_validator),
    ('name', GovernancePolicyRemoveFoldersDetails._name_validator),
    ('policy_type', GovernancePolicyRemoveFoldersDetails._policy_type_validator),
    ('folders', GovernancePolicyRemoveFoldersDetails._folders_validator),
]

GovernancePolicyRemoveFoldersType._description_validator = bv.String()
GovernancePolicyRemoveFoldersType._all_field_names_ = set(['description'])
GovernancePolicyRemoveFoldersType._all_fields_ = [('description', GovernancePolicyRemoveFoldersType._description_validator)]

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)]

InviteMethod._auto_approve_validator = bv.Void()
InviteMethod._invite_link_validator = bv.Void()
InviteMethod._member_invite_validator = bv.Void()
InviteMethod._moved_from_another_team_validator = bv.Void()
InviteMethod._other_validator = bv.Void()
InviteMethod._tagmap = {
    'auto_approve': InviteMethod._auto_approve_validator,
    'invite_link': InviteMethod._invite_link_validator,
    'member_invite': InviteMethod._member_invite_validator,
    'moved_from_another_team': InviteMethod._moved_from_another_team_validator,
    'other': InviteMethod._other_validator,
}

InviteMethod.auto_approve = InviteMethod('auto_approve')
InviteMethod.invite_link = InviteMethod('invite_link')
InviteMethod.member_invite = InviteMethod('member_invite')
InviteMethod.moved_from_another_team = InviteMethod('moved_from_another_team')
InviteMethod.other = InviteMethod('other')

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._was_linked_apps_truncated_validator = bv.Nullable(bv.Boolean())
JoinTeamDetails._was_linked_devices_truncated_validator = bv.Nullable(bv.Boolean())
JoinTeamDetails._was_linked_shared_folders_truncated_validator = bv.Nullable(bv.Boolean())
JoinTeamDetails._has_linked_apps_validator = bv.Nullable(bv.Boolean())
JoinTeamDetails._has_linked_devices_validator = bv.Nullable(bv.Boolean())
JoinTeamDetails._has_linked_shared_folders_validator = bv.Nullable(bv.Boolean())
JoinTeamDetails._all_field_names_ = set([
    'linked_apps',
    'linked_devices',
    'linked_shared_folders',
    'was_linked_apps_truncated',
    'was_linked_devices_truncated',
    'was_linked_shared_folders_truncated',
    'has_linked_apps',
    'has_linked_devices',
    'has_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),
    ('was_linked_apps_truncated', JoinTeamDetails._was_linked_apps_truncated_validator),
    ('was_linked_devices_truncated', JoinTeamDetails._was_linked_devices_truncated_validator),
    ('was_linked_shared_folders_truncated', JoinTeamDetails._was_linked_shared_folders_truncated_validator),
    ('has_linked_apps', JoinTeamDetails._has_linked_apps_validator),
    ('has_linked_devices', JoinTeamDetails._has_linked_devices_validator),
    ('has_linked_shared_folders', JoinTeamDetails._has_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_

LegalHoldsActivateAHoldDetails._legal_hold_id_validator = bv.String()
LegalHoldsActivateAHoldDetails._name_validator = bv.String()
LegalHoldsActivateAHoldDetails._start_date_validator = common.DropboxTimestamp_validator
LegalHoldsActivateAHoldDetails._end_date_validator = bv.Nullable(common.DropboxTimestamp_validator)
LegalHoldsActivateAHoldDetails._all_field_names_ = set([
    'legal_hold_id',
    'name',
    'start_date',
    'end_date',
])
LegalHoldsActivateAHoldDetails._all_fields_ = [
    ('legal_hold_id', LegalHoldsActivateAHoldDetails._legal_hold_id_validator),
    ('name', LegalHoldsActivateAHoldDetails._name_validator),
    ('start_date', LegalHoldsActivateAHoldDetails._start_date_validator),
    ('end_date', LegalHoldsActivateAHoldDetails._end_date_validator),
]

LegalHoldsActivateAHoldType._description_validator = bv.String()
LegalHoldsActivateAHoldType._all_field_names_ = set(['description'])
LegalHoldsActivateAHoldType._all_fields_ = [('description', LegalHoldsActivateAHoldType._description_validator)]

LegalHoldsAddMembersDetails._legal_hold_id_validator = bv.String()
LegalHoldsAddMembersDetails._name_validator = bv.String()
LegalHoldsAddMembersDetails._all_field_names_ = set([
    'legal_hold_id',
    'name',
])
LegalHoldsAddMembersDetails._all_fields_ = [
    ('legal_hold_id', LegalHoldsAddMembersDetails._legal_hold_id_validator),
    ('name', LegalHoldsAddMembersDetails._name_validator),
]

LegalHoldsAddMembersType._description_validator = bv.String()
LegalHoldsAddMembersType._all_field_names_ = set(['description'])
LegalHoldsAddMembersType._all_fields_ = [('description', LegalHoldsAddMembersType._description_validator)]

LegalHoldsChangeHoldDetailsDetails._legal_hold_id_validator = bv.String()
LegalHoldsChangeHoldDetailsDetails._name_validator = bv.String()
LegalHoldsChangeHoldDetailsDetails._previous_value_validator = bv.String()
LegalHoldsChangeHoldDetailsDetails._new_value_validator = bv.String()
LegalHoldsChangeHoldDetailsDetails._all_field_names_ = set([
    'legal_hold_id',
    'name',
    'previous_value',
    'new_value',
])
LegalHoldsChangeHoldDetailsDetails._all_fields_ = [
    ('legal_hold_id', LegalHoldsChangeHoldDetailsDetails._legal_hold_id_validator),
    ('name', LegalHoldsChangeHoldDetailsDetails._name_validator),
    ('previous_value', LegalHoldsChangeHoldDetailsDetails._previous_value_validator),
    ('new_value', LegalHoldsChangeHoldDetailsDetails._new_value_validator),
]

LegalHoldsChangeHoldDetailsType._description_validator = bv.String()
LegalHoldsChangeHoldDetailsType._all_field_names_ = set(['description'])
LegalHoldsChangeHoldDetailsType._all_fields_ = [('description', LegalHoldsChangeHoldDetailsType._description_validator)]

LegalHoldsChangeHoldNameDetails._legal_hold_id_validator = bv.String()
LegalHoldsChangeHoldNameDetails._previous_value_validator = bv.String()
LegalHoldsChangeHoldNameDetails._new_value_validator = bv.String()
LegalHoldsChangeHoldNameDetails._all_field_names_ = set([
    'legal_hold_id',
    'previous_value',
    'new_value',
])
LegalHoldsChangeHoldNameDetails._all_fields_ = [
    ('legal_hold_id', LegalHoldsChangeHoldNameDetails._legal_hold_id_validator),
    ('previous_value', LegalHoldsChangeHoldNameDetails._previous_value_validator),
    ('new_value', LegalHoldsChangeHoldNameDetails._new_value_validator),
]

LegalHoldsChangeHoldNameType._description_validator = bv.String()
LegalHoldsChangeHoldNameType._all_field_names_ = set(['description'])
LegalHoldsChangeHoldNameType._all_fields_ = [('description', LegalHoldsChangeHoldNameType._description_validator)]

LegalHoldsExportAHoldDetails._legal_hold_id_validator = bv.String()
LegalHoldsExportAHoldDetails._name_validator = bv.String()
LegalHoldsExportAHoldDetails._export_name_validator = bv.Nullable(bv.String())
LegalHoldsExportAHoldDetails._all_field_names_ = set([
    'legal_hold_id',
    'name',
    'export_name',
])
LegalHoldsExportAHoldDetails._all_fields_ = [
    ('legal_hold_id', LegalHoldsExportAHoldDetails._legal_hold_id_validator),
    ('name', LegalHoldsExportAHoldDetails._name_validator),
    ('export_name', LegalHoldsExportAHoldDetails._export_name_validator),
]

LegalHoldsExportAHoldType._description_validator = bv.String()
LegalHoldsExportAHoldType._all_field_names_ = set(['description'])
LegalHoldsExportAHoldType._all_fields_ = [('description', LegalHoldsExportAHoldType._description_validator)]

LegalHoldsExportCancelledDetails._legal_hold_id_validator = bv.String()
LegalHoldsExportCancelledDetails._name_validator = bv.String()
LegalHoldsExportCancelledDetails._export_name_validator = bv.String()
LegalHoldsExportCancelledDetails._all_field_names_ = set([
    'legal_hold_id',
    'name',
    'export_name',
])
LegalHoldsExportCancelledDetails._all_fields_ = [
    ('legal_hold_id', LegalHoldsExportCancelledDetails._legal_hold_id_validator),
    ('name', LegalHoldsExportCancelledDetails._name_validator),
    ('export_name', LegalHoldsExportCancelledDetails._export_name_validator),
]

LegalHoldsExportCancelledType._description_validator = bv.String()
LegalHoldsExportCancelledType._all_field_names_ = set(['description'])
LegalHoldsExportCancelledType._all_fields_ = [('description', LegalHoldsExportCancelledType._description_validator)]

LegalHoldsExportDownloadedDetails._legal_hold_id_validator = bv.String()
LegalHoldsExportDownloadedDetails._name_validator = bv.String()
LegalHoldsExportDownloadedDetails._export_name_validator = bv.String()
LegalHoldsExportDownloadedDetails._part_validator = bv.Nullable(bv.String())
LegalHoldsExportDownloadedDetails._file_name_validator = bv.Nullable(bv.String())
LegalHoldsExportDownloadedDetails._all_field_names_ = set([
    'legal_hold_id',
    'name',
    'export_name',
    'part',
    'file_name',
])
LegalHoldsExportDownloadedDetails._all_fields_ = [
    ('legal_hold_id', LegalHoldsExportDownloadedDetails._legal_hold_id_validator),
    ('name', LegalHoldsExportDownloadedDetails._name_validator),
    ('export_name', LegalHoldsExportDownloadedDetails._export_name_validator),
    ('part', LegalHoldsExportDownloadedDetails._part_validator),
    ('file_name', LegalHoldsExportDownloadedDetails._file_name_validator),
]

LegalHoldsExportDownloadedType._description_validator = bv.String()
LegalHoldsExportDownloadedType._all_field_names_ = set(['description'])
LegalHoldsExportDownloadedType._all_fields_ = [('description', LegalHoldsExportDownloadedType._description_validator)]

LegalHoldsExportRemovedDetails._legal_hold_id_validator = bv.String()
LegalHoldsExportRemovedDetails._name_validator = bv.String()
LegalHoldsExportRemovedDetails._export_name_validator = bv.String()
LegalHoldsExportRemovedDetails._all_field_names_ = set([
    'legal_hold_id',
    'name',
    'export_name',
])
LegalHoldsExportRemovedDetails._all_fields_ = [
    ('legal_hold_id', LegalHoldsExportRemovedDetails._legal_hold_id_validator),
    ('name', LegalHoldsExportRemovedDetails._name_validator),
    ('export_name', LegalHoldsExportRemovedDetails._export_name_validator),
]

LegalHoldsExportRemovedType._description_validator = bv.String()
LegalHoldsExportRemovedType._all_field_names_ = set(['description'])
LegalHoldsExportRemovedType._all_fields_ = [('description', LegalHoldsExportRemovedType._description_validator)]

LegalHoldsReleaseAHoldDetails._legal_hold_id_validator = bv.String()
LegalHoldsReleaseAHoldDetails._name_validator = bv.String()
LegalHoldsReleaseAHoldDetails._all_field_names_ = set([
    'legal_hold_id',
    'name',
])
LegalHoldsReleaseAHoldDetails._all_fields_ = [
    ('legal_hold_id', LegalHoldsReleaseAHoldDetails._legal_hold_id_validator),
    ('name', LegalHoldsReleaseAHoldDetails._name_validator),
]

LegalHoldsReleaseAHoldType._description_validator = bv.String()
LegalHoldsReleaseAHoldType._all_field_names_ = set(['description'])
LegalHoldsReleaseAHoldType._all_fields_ = [('description', LegalHoldsReleaseAHoldType._description_validator)]

LegalHoldsRemoveMembersDetails._legal_hold_id_validator = bv.String()
LegalHoldsRemoveMembersDetails._name_validator = bv.String()
LegalHoldsRemoveMembersDetails._all_field_names_ = set([
    'legal_hold_id',
    'name',
])
LegalHoldsRemoveMembersDetails._all_fields_ = [
    ('legal_hold_id', LegalHoldsRemoveMembersDetails._legal_hold_id_validator),
    ('name', LegalHoldsRemoveMembersDetails._name_validator),
]

LegalHoldsRemoveMembersType._description_validator = bv.String()
LegalHoldsRemoveMembersType._all_field_names_ = set(['description'])
LegalHoldsRemoveMembersType._all_fields_ = [('description', LegalHoldsRemoveMembersType._description_validator)]

LegalHoldsReportAHoldDetails._legal_hold_id_validator = bv.String()
LegalHoldsReportAHoldDetails._name_validator = bv.String()
LegalHoldsReportAHoldDetails._all_field_names_ = set([
    'legal_hold_id',
    'name',
])
LegalHoldsReportAHoldDetails._all_fields_ = [
    ('legal_hold_id', LegalHoldsReportAHoldDetails._legal_hold_id_validator),
    ('name', LegalHoldsReportAHoldDetails._name_validator),
]

LegalHoldsReportAHoldType._description_validator = bv.String()
LegalHoldsReportAHoldType._all_field_names_ = set(['description'])
LegalHoldsReportAHoldType._all_fields_ = [('description', LegalHoldsReportAHoldType._description_validator)]

LinkedDeviceLogInfo._desktop_device_session_validator = DesktopDeviceSessionLogInfo_validator
LinkedDeviceLogInfo._legacy_device_session_validator = LegacyDeviceSessionLogInfo_validator
LinkedDeviceLogInfo._mobile_device_session_validator = MobileDeviceSessionLogInfo_validator
LinkedDeviceLogInfo._web_device_session_validator = WebDeviceSessionLogInfo_validator
LinkedDeviceLogInfo._other_validator = bv.Void()
LinkedDeviceLogInfo._tagmap = {
    'desktop_device_session': LinkedDeviceLogInfo._desktop_device_session_validator,
    'legacy_device_session': LinkedDeviceLogInfo._legacy_device_session_validator,
    'mobile_device_session': LinkedDeviceLogInfo._mobile_device_session_validator,
    'web_device_session': LinkedDeviceLogInfo._web_device_session_validator,
    'other': LinkedDeviceLogInfo._other_validator,
}

LinkedDeviceLogInfo.other = LinkedDeviceLogInfo('other')

LockStatus._locked_validator = bv.Void()
LockStatus._unlocked_validator = bv.Void()
LockStatus._other_validator = bv.Void()
LockStatus._tagmap = {
    'locked': LockStatus._locked_validator,
    'unlocked': LockStatus._unlocked_validator,
    'other': LockStatus._other_validator,
}

LockStatus.locked = LockStatus('locked')
LockStatus.unlocked = LockStatus('unlocked')
LockStatus.other = LockStatus('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._apple_oauth_validator = bv.Void()
LoginMethod._first_party_token_exchange_validator = bv.Void()
LoginMethod._google_oauth_validator = bv.Void()
LoginMethod._password_validator = bv.Void()
LoginMethod._qr_code_validator = bv.Void()
LoginMethod._saml_validator = bv.Void()
LoginMethod._two_factor_authentication_validator = bv.Void()
LoginMethod._web_session_validator = bv.Void()
LoginMethod._other_validator = bv.Void()
LoginMethod._tagmap = {
    'apple_oauth': LoginMethod._apple_oauth_validator,
    'first_party_token_exchange': LoginMethod._first_party_token_exchange_validator,
    'google_oauth': LoginMethod._google_oauth_validator,
    'password': LoginMethod._password_validator,
    'qr_code': LoginMethod._qr_code_validator,
    'saml': LoginMethod._saml_validator,
    'two_factor_authentication': LoginMethod._two_factor_authentication_validator,
    'web_session': LoginMethod._web_session_validator,
    'other': LoginMethod._other_validator,
}

LoginMethod.apple_oauth = LoginMethod('apple_oauth')
LoginMethod.first_party_token_exchange = LoginMethod('first_party_token_exchange')
LoginMethod.google_oauth = LoginMethod('google_oauth')
LoginMethod.password = LoginMethod('password')
LoginMethod.qr_code = LoginMethod('qr_code')
LoginMethod.saml = LoginMethod('saml')
LoginMethod.two_factor_authentication = LoginMethod('two_factor_authentication')
LoginMethod.web_session = LoginMethod('web_session')
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._login_id_validator = bv.Nullable(bv.String())
LogoutDetails._all_field_names_ = set(['login_id'])
LogoutDetails._all_fields_ = [('login_id', LogoutDetails._login_id_validator)]

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._new_team_validator = bv.Nullable(bv.String())
MemberChangeStatusDetails._previous_team_validator = bv.Nullable(bv.String())
MemberChangeStatusDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
    'action',
    'new_team',
    'previous_team',
])
MemberChangeStatusDetails._all_fields_ = [
    ('previous_value', MemberChangeStatusDetails._previous_value_validator),
    ('new_value', MemberChangeStatusDetails._new_value_validator),
    ('action', MemberChangeStatusDetails._action_validator),
    ('new_team', MemberChangeStatusDetails._new_team_validator),
    ('previous_team', MemberChangeStatusDetails._previous_team_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)]

MemberDeleteProfilePhotoDetails._all_field_names_ = set([])
MemberDeleteProfilePhotoDetails._all_fields_ = []

MemberDeleteProfilePhotoType._description_validator = bv.String()
MemberDeleteProfilePhotoType._all_field_names_ = set(['description'])
MemberDeleteProfilePhotoType._all_fields_ = [('description', MemberDeleteProfilePhotoType._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._leave_validator = bv.Void()
MemberRemoveActionType._offboard_validator = bv.Void()
MemberRemoveActionType._offboard_and_retain_team_folders_validator = bv.Void()
MemberRemoveActionType._other_validator = bv.Void()
MemberRemoveActionType._tagmap = {
    'delete': MemberRemoveActionType._delete_validator,
    'leave': MemberRemoveActionType._leave_validator,
    'offboard': MemberRemoveActionType._offboard_validator,
    'offboard_and_retain_team_folders': MemberRemoveActionType._offboard_and_retain_team_folders_validator,
    'other': MemberRemoveActionType._other_validator,
}

MemberRemoveActionType.delete = MemberRemoveActionType('delete')
MemberRemoveActionType.leave = MemberRemoveActionType('leave')
MemberRemoveActionType.offboard = MemberRemoveActionType('offboard')
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')

MemberSendInvitePolicy._disabled_validator = bv.Void()
MemberSendInvitePolicy._everyone_validator = bv.Void()
MemberSendInvitePolicy._specific_members_validator = bv.Void()
MemberSendInvitePolicy._other_validator = bv.Void()
MemberSendInvitePolicy._tagmap = {
    'disabled': MemberSendInvitePolicy._disabled_validator,
    'everyone': MemberSendInvitePolicy._everyone_validator,
    'specific_members': MemberSendInvitePolicy._specific_members_validator,
    'other': MemberSendInvitePolicy._other_validator,
}

MemberSendInvitePolicy.disabled = MemberSendInvitePolicy('disabled')
MemberSendInvitePolicy.everyone = MemberSendInvitePolicy('everyone')
MemberSendInvitePolicy.specific_members = MemberSendInvitePolicy('specific_members')
MemberSendInvitePolicy.other = MemberSendInvitePolicy('other')

MemberSendInvitePolicyChangedDetails._new_value_validator = MemberSendInvitePolicy_validator
MemberSendInvitePolicyChangedDetails._previous_value_validator = MemberSendInvitePolicy_validator
MemberSendInvitePolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
MemberSendInvitePolicyChangedDetails._all_fields_ = [
    ('new_value', MemberSendInvitePolicyChangedDetails._new_value_validator),
    ('previous_value', MemberSendInvitePolicyChangedDetails._previous_value_validator),
]

MemberSendInvitePolicyChangedType._description_validator = bv.String()
MemberSendInvitePolicyChangedType._all_field_names_ = set(['description'])
MemberSendInvitePolicyChangedType._all_fields_ = [('description', MemberSendInvitePolicyChangedType._description_validator)]

MemberSetProfilePhotoDetails._all_field_names_ = set([])
MemberSetProfilePhotoDetails._all_fields_ = []

MemberSetProfilePhotoType._description_validator = bv.String()
MemberSetProfilePhotoType._all_field_names_ = set(['description'])
MemberSetProfilePhotoType._all_fields_ = [('description', MemberSetProfilePhotoType._description_validator)]

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._active_validator = bv.Void()
MemberStatus._invited_validator = bv.Void()
MemberStatus._moved_to_another_team_validator = bv.Void()
MemberStatus._not_joined_validator = bv.Void()
MemberStatus._removed_validator = bv.Void()
MemberStatus._suspended_validator = bv.Void()
MemberStatus._other_validator = bv.Void()
MemberStatus._tagmap = {
    'active': MemberStatus._active_validator,
    'invited': MemberStatus._invited_validator,
    'moved_to_another_team': MemberStatus._moved_to_another_team_validator,
    'not_joined': MemberStatus._not_joined_validator,
    'removed': MemberStatus._removed_validator,
    'suspended': MemberStatus._suspended_validator,
    'other': MemberStatus._other_validator,
}

MemberStatus.active = MemberStatus('active')
MemberStatus.invited = MemberStatus('invited')
MemberStatus.moved_to_another_team = MemberStatus('moved_to_another_team')
MemberStatus.not_joined = MemberStatus('not_joined')
MemberStatus.removed = MemberStatus('removed')
MemberStatus.suspended = MemberStatus('suspended')
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._is_shared_namespace_validator = bv.Nullable(bv.Boolean())
NamespaceRelativePathLogInfo._all_field_names_ = set([
    'ns_id',
    'relative_path',
    'is_shared_namespace',
])
NamespaceRelativePathLogInfo._all_fields_ = [
    ('ns_id', NamespaceRelativePathLogInfo._ns_id_validator),
    ('relative_path', NamespaceRelativePathLogInfo._relative_path_validator),
    ('is_shared_namespace', NamespaceRelativePathLogInfo._is_shared_namespace_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')

NoExpirationLinkGenCreateReportDetails._start_date_validator = common.DropboxTimestamp_validator
NoExpirationLinkGenCreateReportDetails._end_date_validator = common.DropboxTimestamp_validator
NoExpirationLinkGenCreateReportDetails._all_field_names_ = set([
    'start_date',
    'end_date',
])
NoExpirationLinkGenCreateReportDetails._all_fields_ = [
    ('start_date', NoExpirationLinkGenCreateReportDetails._start_date_validator),
    ('end_date', NoExpirationLinkGenCreateReportDetails._end_date_validator),
]

NoExpirationLinkGenCreateReportType._description_validator = bv.String()
NoExpirationLinkGenCreateReportType._all_field_names_ = set(['description'])
NoExpirationLinkGenCreateReportType._all_fields_ = [('description', NoExpirationLinkGenCreateReportType._description_validator)]

NoExpirationLinkGenReportFailedDetails._failure_reason_validator = team.TeamReportFailureReason_validator
NoExpirationLinkGenReportFailedDetails._all_field_names_ = set(['failure_reason'])
NoExpirationLinkGenReportFailedDetails._all_fields_ = [('failure_reason', NoExpirationLinkGenReportFailedDetails._failure_reason_validator)]

NoExpirationLinkGenReportFailedType._description_validator = bv.String()
NoExpirationLinkGenReportFailedType._all_field_names_ = set(['description'])
NoExpirationLinkGenReportFailedType._all_fields_ = [('description', NoExpirationLinkGenReportFailedType._description_validator)]

NoPasswordLinkGenCreateReportDetails._start_date_validator = common.DropboxTimestamp_validator
NoPasswordLinkGenCreateReportDetails._end_date_validator = common.DropboxTimestamp_validator
NoPasswordLinkGenCreateReportDetails._all_field_names_ = set([
    'start_date',
    'end_date',
])
NoPasswordLinkGenCreateReportDetails._all_fields_ = [
    ('start_date', NoPasswordLinkGenCreateReportDetails._start_date_validator),
    ('end_date', NoPasswordLinkGenCreateReportDetails._end_date_validator),
]

NoPasswordLinkGenCreateReportType._description_validator = bv.String()
NoPasswordLinkGenCreateReportType._all_field_names_ = set(['description'])
NoPasswordLinkGenCreateReportType._all_fields_ = [('description', NoPasswordLinkGenCreateReportType._description_validator)]

NoPasswordLinkGenReportFailedDetails._failure_reason_validator = team.TeamReportFailureReason_validator
NoPasswordLinkGenReportFailedDetails._all_field_names_ = set(['failure_reason'])
NoPasswordLinkGenReportFailedDetails._all_fields_ = [('failure_reason', NoPasswordLinkGenReportFailedDetails._failure_reason_validator)]

NoPasswordLinkGenReportFailedType._description_validator = bv.String()
NoPasswordLinkGenReportFailedType._all_field_names_ = set(['description'])
NoPasswordLinkGenReportFailedType._all_fields_ = [('description', NoPasswordLinkGenReportFailedType._description_validator)]

NoPasswordLinkViewCreateReportDetails._start_date_validator = common.DropboxTimestamp_validator
NoPasswordLinkViewCreateReportDetails._end_date_validator = common.DropboxTimestamp_validator
NoPasswordLinkViewCreateReportDetails._all_field_names_ = set([
    'start_date',
    'end_date',
])
NoPasswordLinkViewCreateReportDetails._all_fields_ = [
    ('start_date', NoPasswordLinkViewCreateReportDetails._start_date_validator),
    ('end_date', NoPasswordLinkViewCreateReportDetails._end_date_validator),
]

NoPasswordLinkViewCreateReportType._description_validator = bv.String()
NoPasswordLinkViewCreateReportType._all_field_names_ = set(['description'])
NoPasswordLinkViewCreateReportType._all_fields_ = [('description', NoPasswordLinkViewCreateReportType._description_validator)]

NoPasswordLinkViewReportFailedDetails._failure_reason_validator = team.TeamReportFailureReason_validator
NoPasswordLinkViewReportFailedDetails._all_field_names_ = set(['failure_reason'])
NoPasswordLinkViewReportFailedDetails._all_fields_ = [('failure_reason', NoPasswordLinkViewReportFailedDetails._failure_reason_validator)]

NoPasswordLinkViewReportFailedType._description_validator = bv.String()
NoPasswordLinkViewReportFailedType._all_field_names_ = set(['description'])
NoPasswordLinkViewReportFailedType._all_fields_ = [('description', NoPasswordLinkViewReportFailedType._description_validator)]

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_

NonTrustedTeamDetails._team_validator = bv.String()
NonTrustedTeamDetails._all_field_names_ = set(['team'])
NonTrustedTeamDetails._all_fields_ = [('team', NonTrustedTeamDetails._team_validator)]

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)]

OrganizationDetails._organization_validator = bv.String()
OrganizationDetails._all_field_names_ = set(['organization'])
OrganizationDetails._all_fields_ = [('organization', OrganizationDetails._organization_validator)]

OrganizationName._organization_validator = bv.String()
OrganizationName._all_field_names_ = set(['organization'])
OrganizationName._all_fields_ = [('organization', OrganizationName._organization_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),
]

OutdatedLinkViewCreateReportDetails._start_date_validator = common.DropboxTimestamp_validator
OutdatedLinkViewCreateReportDetails._end_date_validator = common.DropboxTimestamp_validator
OutdatedLinkViewCreateReportDetails._all_field_names_ = set([
    'start_date',
    'end_date',
])
OutdatedLinkViewCreateReportDetails._all_fields_ = [
    ('start_date', OutdatedLinkViewCreateReportDetails._start_date_validator),
    ('end_date', OutdatedLinkViewCreateReportDetails._end_date_validator),
]

OutdatedLinkViewCreateReportType._description_validator = bv.String()
OutdatedLinkViewCreateReportType._all_field_names_ = set(['description'])
OutdatedLinkViewCreateReportType._all_fields_ = [('description', OutdatedLinkViewCreateReportType._description_validator)]

OutdatedLinkViewReportFailedDetails._failure_reason_validator = team.TeamReportFailureReason_validator
OutdatedLinkViewReportFailedDetails._all_field_names_ = set(['failure_reason'])
OutdatedLinkViewReportFailedDetails._all_fields_ = [('failure_reason', OutdatedLinkViewReportFailedDetails._failure_reason_validator)]

OutdatedLinkViewReportFailedType._description_validator = bv.String()
OutdatedLinkViewReportFailedType._all_field_names_ = set(['description'])
OutdatedLinkViewReportFailedType._all_fields_ = [('description', OutdatedLinkViewReportFailedType._description_validator)]

PaperAccessType._commenter_validator = bv.Void()
PaperAccessType._editor_validator = bv.Void()
PaperAccessType._viewer_validator = bv.Void()
PaperAccessType._other_validator = bv.Void()
PaperAccessType._tagmap = {
    'commenter': PaperAccessType._commenter_validator,
    'editor': PaperAccessType._editor_validator,
    'viewer': PaperAccessType._viewer_validator,
    'other': PaperAccessType._other_validator,
}

PaperAccessType.commenter = PaperAccessType('commenter')
PaperAccessType.editor = PaperAccessType('editor')
PaperAccessType.viewer = PaperAccessType('viewer')
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.Nullable(bv.UInt64())
PaperContentRemoveFromFolderDetails._parent_asset_index_validator = bv.Nullable(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')

PaperPublishedLinkChangePermissionDetails._event_uuid_validator = bv.String()
PaperPublishedLinkChangePermissionDetails._new_permission_level_validator = bv.String()
PaperPublishedLinkChangePermissionDetails._previous_permission_level_validator = bv.String()
PaperPublishedLinkChangePermissionDetails._all_field_names_ = set([
    'event_uuid',
    'new_permission_level',
    'previous_permission_level',
])
PaperPublishedLinkChangePermissionDetails._all_fields_ = [
    ('event_uuid', PaperPublishedLinkChangePermissionDetails._event_uuid_validator),
    ('new_permission_level', PaperPublishedLinkChangePermissionDetails._new_permission_level_validator),
    ('previous_permission_level', PaperPublishedLinkChangePermissionDetails._previous_permission_level_validator),
]

PaperPublishedLinkChangePermissionType._description_validator = bv.String()
PaperPublishedLinkChangePermissionType._all_field_names_ = set(['description'])
PaperPublishedLinkChangePermissionType._all_fields_ = [('description', PaperPublishedLinkChangePermissionType._description_validator)]

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._group_validator = GroupLogInfo_validator
ParticipantLogInfo._user_validator = UserLogInfo_validator
ParticipantLogInfo._other_validator = bv.Void()
ParticipantLogInfo._tagmap = {
    'group': ParticipantLogInfo._group_validator,
    'user': ParticipantLogInfo._user_validator,
    'other': ParticipantLogInfo._other_validator,
}

ParticipantLogInfo.other = ParticipantLogInfo('other')

PassPolicy._allow_validator = bv.Void()
PassPolicy._disabled_validator = bv.Void()
PassPolicy._enabled_validator = bv.Void()
PassPolicy._other_validator = bv.Void()
PassPolicy._tagmap = {
    'allow': PassPolicy._allow_validator,
    'disabled': PassPolicy._disabled_validator,
    'enabled': PassPolicy._enabled_validator,
    'other': PassPolicy._other_validator,
}

PassPolicy.allow = PassPolicy('allow')
PassPolicy.disabled = PassPolicy('disabled')
PassPolicy.enabled = PassPolicy('enabled')
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)]

PasswordStrengthRequirementsChangePolicyDetails._previous_value_validator = team_policies.PasswordStrengthPolicy_validator
PasswordStrengthRequirementsChangePolicyDetails._new_value_validator = team_policies.PasswordStrengthPolicy_validator
PasswordStrengthRequirementsChangePolicyDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
PasswordStrengthRequirementsChangePolicyDetails._all_fields_ = [
    ('previous_value', PasswordStrengthRequirementsChangePolicyDetails._previous_value_validator),
    ('new_value', PasswordStrengthRequirementsChangePolicyDetails._new_value_validator),
]

PasswordStrengthRequirementsChangePolicyType._description_validator = bv.String()
PasswordStrengthRequirementsChangePolicyType._all_field_names_ = set(['description'])
PasswordStrengthRequirementsChangePolicyType._all_fields_ = [('description', PasswordStrengthRequirementsChangePolicyType._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),
]

PendingSecondaryEmailAddedDetails._secondary_email_validator = EmailAddress_validator
PendingSecondaryEmailAddedDetails._all_field_names_ = set(['secondary_email'])
PendingSecondaryEmailAddedDetails._all_fields_ = [('secondary_email', PendingSecondaryEmailAddedDetails._secondary_email_validator)]

PendingSecondaryEmailAddedType._description_validator = bv.String()
PendingSecondaryEmailAddedType._all_field_names_ = set(['description'])
PendingSecondaryEmailAddedType._all_fields_ = [('description', PendingSecondaryEmailAddedType._description_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')

PolicyType._retention_validator = bv.Void()
PolicyType._other_validator = bv.Void()
PolicyType._tagmap = {
    'retention': PolicyType._retention_validator,
    'other': PolicyType._other_validator,
}

PolicyType.retention = PolicyType('retention')
PolicyType.other = PolicyType('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_device_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_device': QuickActionType._unlink_device_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_device = QuickActionType('unlink_device')
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)]

RewindFolderDetails._rewind_folder_target_ts_ms_validator = common.DropboxTimestamp_validator
RewindFolderDetails._all_field_names_ = set(['rewind_folder_target_ts_ms'])
RewindFolderDetails._all_fields_ = [('rewind_folder_target_ts_ms', RewindFolderDetails._rewind_folder_target_ts_ms_validator)]

RewindFolderType._description_validator = bv.String()
RewindFolderType._all_field_names_ = set(['description'])
RewindFolderType._all_fields_ = [('description', RewindFolderType._description_validator)]

RewindPolicy._admins_only_validator = bv.Void()
RewindPolicy._everyone_validator = bv.Void()
RewindPolicy._other_validator = bv.Void()
RewindPolicy._tagmap = {
    'admins_only': RewindPolicy._admins_only_validator,
    'everyone': RewindPolicy._everyone_validator,
    'other': RewindPolicy._other_validator,
}

RewindPolicy.admins_only = RewindPolicy('admins_only')
RewindPolicy.everyone = RewindPolicy('everyone')
RewindPolicy.other = RewindPolicy('other')

RewindPolicyChangedDetails._new_value_validator = RewindPolicy_validator
RewindPolicyChangedDetails._previous_value_validator = RewindPolicy_validator
RewindPolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
RewindPolicyChangedDetails._all_fields_ = [
    ('new_value', RewindPolicyChangedDetails._new_value_validator),
    ('previous_value', RewindPolicyChangedDetails._previous_value_validator),
]

RewindPolicyChangedType._description_validator = bv.String()
RewindPolicyChangedType._all_field_names_ = set(['description'])
RewindPolicyChangedType._all_fields_ = [('description', RewindPolicyChangedType._description_validator)]

SecondaryEmailDeletedDetails._secondary_email_validator = EmailAddress_validator
SecondaryEmailDeletedDetails._all_field_names_ = set(['secondary_email'])
SecondaryEmailDeletedDetails._all_fields_ = [('secondary_email', SecondaryEmailDeletedDetails._secondary_email_validator)]

SecondaryEmailDeletedType._description_validator = bv.String()
SecondaryEmailDeletedType._all_field_names_ = set(['description'])
SecondaryEmailDeletedType._all_fields_ = [('description', SecondaryEmailDeletedType._description_validator)]

SecondaryEmailVerifiedDetails._secondary_email_validator = EmailAddress_validator
SecondaryEmailVerifiedDetails._all_field_names_ = set(['secondary_email'])
SecondaryEmailVerifiedDetails._all_fields_ = [('secondary_email', SecondaryEmailVerifiedDetails._secondary_email_validator)]

SecondaryEmailVerifiedType._description_validator = bv.String()
SecondaryEmailVerifiedType._all_field_names_ = set(['description'])
SecondaryEmailVerifiedType._all_fields_ = [('description', SecondaryEmailVerifiedType._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)]

SendForSignaturePolicy._disabled_validator = bv.Void()
SendForSignaturePolicy._enabled_validator = bv.Void()
SendForSignaturePolicy._other_validator = bv.Void()
SendForSignaturePolicy._tagmap = {
    'disabled': SendForSignaturePolicy._disabled_validator,
    'enabled': SendForSignaturePolicy._enabled_validator,
    'other': SendForSignaturePolicy._other_validator,
}

SendForSignaturePolicy.disabled = SendForSignaturePolicy('disabled')
SendForSignaturePolicy.enabled = SendForSignaturePolicy('enabled')
SendForSignaturePolicy.other = SendForSignaturePolicy('other')

SendForSignaturePolicyChangedDetails._new_value_validator = SendForSignaturePolicy_validator
SendForSignaturePolicyChangedDetails._previous_value_validator = SendForSignaturePolicy_validator
SendForSignaturePolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SendForSignaturePolicyChangedDetails._all_fields_ = [
    ('new_value', SendForSignaturePolicyChangedDetails._new_value_validator),
    ('previous_value', SendForSignaturePolicyChangedDetails._previous_value_validator),
]

SendForSignaturePolicyChangedType._description_validator = bv.String()
SendForSignaturePolicyChangedType._all_field_names_ = set(['description'])
SendForSignaturePolicyChangedType._all_fields_ = [('description', SendForSignaturePolicyChangedType._description_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)]

SharedContentRestoreInviteesDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedContentRestoreInviteesDetails._invitees_validator = bv.List(EmailAddress_validator)
SharedContentRestoreInviteesDetails._all_field_names_ = set([
    'shared_content_access_level',
    'invitees',
])
SharedContentRestoreInviteesDetails._all_fields_ = [
    ('shared_content_access_level', SharedContentRestoreInviteesDetails._shared_content_access_level_validator),
    ('invitees', SharedContentRestoreInviteesDetails._invitees_validator),
]

SharedContentRestoreInviteesType._description_validator = bv.String()
SharedContentRestoreInviteesType._all_field_names_ = set(['description'])
SharedContentRestoreInviteesType._all_fields_ = [('description', SharedContentRestoreInviteesType._description_validator)]

SharedContentRestoreMemberDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedContentRestoreMemberDetails._all_field_names_ = set(['shared_content_access_level'])
SharedContentRestoreMemberDetails._all_fields_ = [('shared_content_access_level', SharedContentRestoreMemberDetails._shared_content_access_level_validator)]

SharedContentRestoreMemberType._description_validator = bv.String()
SharedContentRestoreMemberType._all_field_names_ = set(['description'])
SharedContentRestoreMemberType._all_fields_ = [('description', SharedContentRestoreMemberType._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._dont_inherit_members_validator = bv.Void()
SharedFolderMembersInheritancePolicy._inherit_members_validator = bv.Void()
SharedFolderMembersInheritancePolicy._other_validator = bv.Void()
SharedFolderMembersInheritancePolicy._tagmap = {
    'dont_inherit_members': SharedFolderMembersInheritancePolicy._dont_inherit_members_validator,
    'inherit_members': SharedFolderMembersInheritancePolicy._inherit_members_validator,
    'other': SharedFolderMembersInheritancePolicy._other_validator,
}

SharedFolderMembersInheritancePolicy.dont_inherit_members = SharedFolderMembersInheritancePolicy('dont_inherit_members')
SharedFolderMembersInheritancePolicy.inherit_members = SharedFolderMembersInheritancePolicy('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)]

SharedLinkSettingsAddExpirationDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedLinkSettingsAddExpirationDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedLinkSettingsAddExpirationDetails._new_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedLinkSettingsAddExpirationDetails._all_field_names_ = set([
    'shared_content_access_level',
    'shared_content_link',
    'new_value',
])
SharedLinkSettingsAddExpirationDetails._all_fields_ = [
    ('shared_content_access_level', SharedLinkSettingsAddExpirationDetails._shared_content_access_level_validator),
    ('shared_content_link', SharedLinkSettingsAddExpirationDetails._shared_content_link_validator),
    ('new_value', SharedLinkSettingsAddExpirationDetails._new_value_validator),
]

SharedLinkSettingsAddExpirationType._description_validator = bv.String()
SharedLinkSettingsAddExpirationType._all_field_names_ = set(['description'])
SharedLinkSettingsAddExpirationType._all_fields_ = [('description', SharedLinkSettingsAddExpirationType._description_validator)]

SharedLinkSettingsAddPasswordDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedLinkSettingsAddPasswordDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedLinkSettingsAddPasswordDetails._all_field_names_ = set([
    'shared_content_access_level',
    'shared_content_link',
])
SharedLinkSettingsAddPasswordDetails._all_fields_ = [
    ('shared_content_access_level', SharedLinkSettingsAddPasswordDetails._shared_content_access_level_validator),
    ('shared_content_link', SharedLinkSettingsAddPasswordDetails._shared_content_link_validator),
]

SharedLinkSettingsAddPasswordType._description_validator = bv.String()
SharedLinkSettingsAddPasswordType._all_field_names_ = set(['description'])
SharedLinkSettingsAddPasswordType._all_fields_ = [('description', SharedLinkSettingsAddPasswordType._description_validator)]

SharedLinkSettingsAllowDownloadDisabledDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedLinkSettingsAllowDownloadDisabledDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedLinkSettingsAllowDownloadDisabledDetails._all_field_names_ = set([
    'shared_content_access_level',
    'shared_content_link',
])
SharedLinkSettingsAllowDownloadDisabledDetails._all_fields_ = [
    ('shared_content_access_level', SharedLinkSettingsAllowDownloadDisabledDetails._shared_content_access_level_validator),
    ('shared_content_link', SharedLinkSettingsAllowDownloadDisabledDetails._shared_content_link_validator),
]

SharedLinkSettingsAllowDownloadDisabledType._description_validator = bv.String()
SharedLinkSettingsAllowDownloadDisabledType._all_field_names_ = set(['description'])
SharedLinkSettingsAllowDownloadDisabledType._all_fields_ = [('description', SharedLinkSettingsAllowDownloadDisabledType._description_validator)]

SharedLinkSettingsAllowDownloadEnabledDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedLinkSettingsAllowDownloadEnabledDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedLinkSettingsAllowDownloadEnabledDetails._all_field_names_ = set([
    'shared_content_access_level',
    'shared_content_link',
])
SharedLinkSettingsAllowDownloadEnabledDetails._all_fields_ = [
    ('shared_content_access_level', SharedLinkSettingsAllowDownloadEnabledDetails._shared_content_access_level_validator),
    ('shared_content_link', SharedLinkSettingsAllowDownloadEnabledDetails._shared_content_link_validator),
]

SharedLinkSettingsAllowDownloadEnabledType._description_validator = bv.String()
SharedLinkSettingsAllowDownloadEnabledType._all_field_names_ = set(['description'])
SharedLinkSettingsAllowDownloadEnabledType._all_fields_ = [('description', SharedLinkSettingsAllowDownloadEnabledType._description_validator)]

SharedLinkSettingsChangeAudienceDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedLinkSettingsChangeAudienceDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedLinkSettingsChangeAudienceDetails._new_value_validator = sharing.LinkAudience_validator
SharedLinkSettingsChangeAudienceDetails._previous_value_validator = bv.Nullable(sharing.LinkAudience_validator)
SharedLinkSettingsChangeAudienceDetails._all_field_names_ = set([
    'shared_content_access_level',
    'shared_content_link',
    'new_value',
    'previous_value',
])
SharedLinkSettingsChangeAudienceDetails._all_fields_ = [
    ('shared_content_access_level', SharedLinkSettingsChangeAudienceDetails._shared_content_access_level_validator),
    ('shared_content_link', SharedLinkSettingsChangeAudienceDetails._shared_content_link_validator),
    ('new_value', SharedLinkSettingsChangeAudienceDetails._new_value_validator),
    ('previous_value', SharedLinkSettingsChangeAudienceDetails._previous_value_validator),
]

SharedLinkSettingsChangeAudienceType._description_validator = bv.String()
SharedLinkSettingsChangeAudienceType._all_field_names_ = set(['description'])
SharedLinkSettingsChangeAudienceType._all_fields_ = [('description', SharedLinkSettingsChangeAudienceType._description_validator)]

SharedLinkSettingsChangeExpirationDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedLinkSettingsChangeExpirationDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedLinkSettingsChangeExpirationDetails._new_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedLinkSettingsChangeExpirationDetails._previous_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedLinkSettingsChangeExpirationDetails._all_field_names_ = set([
    'shared_content_access_level',
    'shared_content_link',
    'new_value',
    'previous_value',
])
SharedLinkSettingsChangeExpirationDetails._all_fields_ = [
    ('shared_content_access_level', SharedLinkSettingsChangeExpirationDetails._shared_content_access_level_validator),
    ('shared_content_link', SharedLinkSettingsChangeExpirationDetails._shared_content_link_validator),
    ('new_value', SharedLinkSettingsChangeExpirationDetails._new_value_validator),
    ('previous_value', SharedLinkSettingsChangeExpirationDetails._previous_value_validator),
]

SharedLinkSettingsChangeExpirationType._description_validator = bv.String()
SharedLinkSettingsChangeExpirationType._all_field_names_ = set(['description'])
SharedLinkSettingsChangeExpirationType._all_fields_ = [('description', SharedLinkSettingsChangeExpirationType._description_validator)]

SharedLinkSettingsChangePasswordDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedLinkSettingsChangePasswordDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedLinkSettingsChangePasswordDetails._all_field_names_ = set([
    'shared_content_access_level',
    'shared_content_link',
])
SharedLinkSettingsChangePasswordDetails._all_fields_ = [
    ('shared_content_access_level', SharedLinkSettingsChangePasswordDetails._shared_content_access_level_validator),
    ('shared_content_link', SharedLinkSettingsChangePasswordDetails._shared_content_link_validator),
]

SharedLinkSettingsChangePasswordType._description_validator = bv.String()
SharedLinkSettingsChangePasswordType._all_field_names_ = set(['description'])
SharedLinkSettingsChangePasswordType._all_fields_ = [('description', SharedLinkSettingsChangePasswordType._description_validator)]

SharedLinkSettingsRemoveExpirationDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedLinkSettingsRemoveExpirationDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedLinkSettingsRemoveExpirationDetails._previous_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedLinkSettingsRemoveExpirationDetails._all_field_names_ = set([
    'shared_content_access_level',
    'shared_content_link',
    'previous_value',
])
SharedLinkSettingsRemoveExpirationDetails._all_fields_ = [
    ('shared_content_access_level', SharedLinkSettingsRemoveExpirationDetails._shared_content_access_level_validator),
    ('shared_content_link', SharedLinkSettingsRemoveExpirationDetails._shared_content_link_validator),
    ('previous_value', SharedLinkSettingsRemoveExpirationDetails._previous_value_validator),
]

SharedLinkSettingsRemoveExpirationType._description_validator = bv.String()
SharedLinkSettingsRemoveExpirationType._all_field_names_ = set(['description'])
SharedLinkSettingsRemoveExpirationType._all_fields_ = [('description', SharedLinkSettingsRemoveExpirationType._description_validator)]

SharedLinkSettingsRemovePasswordDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedLinkSettingsRemovePasswordDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedLinkSettingsRemovePasswordDetails._all_field_names_ = set([
    'shared_content_access_level',
    'shared_content_link',
])
SharedLinkSettingsRemovePasswordDetails._all_fields_ = [
    ('shared_content_access_level', SharedLinkSettingsRemovePasswordDetails._shared_content_access_level_validator),
    ('shared_content_link', SharedLinkSettingsRemovePasswordDetails._shared_content_link_validator),
]

SharedLinkSettingsRemovePasswordType._description_validator = bv.String()
SharedLinkSettingsRemovePasswordType._all_field_names_ = set(['description'])
SharedLinkSettingsRemovePasswordType._all_fields_ = [('description', SharedLinkSettingsRemovePasswordType._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._no_one_validator = bv.Void()
SharedLinkVisibility._password_validator = bv.Void()
SharedLinkVisibility._public_validator = bv.Void()
SharedLinkVisibility._team_only_validator = bv.Void()
SharedLinkVisibility._other_validator = bv.Void()
SharedLinkVisibility._tagmap = {
    'no_one': SharedLinkVisibility._no_one_validator,
    'password': SharedLinkVisibility._password_validator,
    'public': SharedLinkVisibility._public_validator,
    'team_only': SharedLinkVisibility._team_only_validator,
    'other': SharedLinkVisibility._other_validator,
}

SharedLinkVisibility.no_one = SharedLinkVisibility('no_one')
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._forbid_with_exclusions_validator = bv.Void()
SharingMemberPolicy._other_validator = bv.Void()
SharingMemberPolicy._tagmap = {
    'allow': SharingMemberPolicy._allow_validator,
    'forbid': SharingMemberPolicy._forbid_validator,
    'forbid_with_exclusions': SharingMemberPolicy._forbid_with_exclusions_validator,
    'other': SharingMemberPolicy._other_validator,
}

SharingMemberPolicy.allow = SharingMemberPolicy('allow')
SharingMemberPolicy.forbid = SharingMemberPolicy('forbid')
SharingMemberPolicy.forbid_with_exclusions = SharingMemberPolicy('forbid_with_exclusions')
SharingMemberPolicy.other = SharingMemberPolicy('other')

ShmodelDisableDownloadsDetails._shared_link_owner_validator = bv.Nullable(UserLogInfo_validator)
ShmodelDisableDownloadsDetails._all_field_names_ = set(['shared_link_owner'])
ShmodelDisableDownloadsDetails._all_fields_ = [('shared_link_owner', ShmodelDisableDownloadsDetails._shared_link_owner_validator)]

ShmodelDisableDownloadsType._description_validator = bv.String()
ShmodelDisableDownloadsType._all_field_names_ = set(['description'])
ShmodelDisableDownloadsType._all_fields_ = [('description', ShmodelDisableDownloadsType._description_validator)]

ShmodelEnableDownloadsDetails._shared_link_owner_validator = bv.Nullable(UserLogInfo_validator)
ShmodelEnableDownloadsDetails._all_field_names_ = set(['shared_link_owner'])
ShmodelEnableDownloadsDetails._all_fields_ = [('shared_link_owner', ShmodelEnableDownloadsDetails._shared_link_owner_validator)]

ShmodelEnableDownloadsType._description_validator = bv.String()
ShmodelEnableDownloadsType._all_field_names_ = set(['description'])
ShmodelEnableDownloadsType._all_fields_ = [('description', ShmodelEnableDownloadsType._description_validator)]

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)]

SmarterSmartSyncPolicyChangedDetails._previous_value_validator = team_policies.SmarterSmartSyncPolicyState_validator
SmarterSmartSyncPolicyChangedDetails._new_value_validator = team_policies.SmarterSmartSyncPolicyState_validator
SmarterSmartSyncPolicyChangedDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
SmarterSmartSyncPolicyChangedDetails._all_fields_ = [
    ('previous_value', SmarterSmartSyncPolicyChangedDetails._previous_value_validator),
    ('new_value', SmarterSmartSyncPolicyChangedDetails._new_value_validator),
]

SmarterSmartSyncPolicyChangedType._description_validator = bv.String()
SmarterSmartSyncPolicyChangedType._all_field_names_ = set(['description'])
SmarterSmartSyncPolicyChangedType._all_fields_ = [('description', SmarterSmartSyncPolicyChangedType._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._near_quota_validator = bv.Void()
SpaceLimitsStatus._over_quota_validator = bv.Void()
SpaceLimitsStatus._within_quota_validator = bv.Void()
SpaceLimitsStatus._other_validator = bv.Void()
SpaceLimitsStatus._tagmap = {
    'near_quota': SpaceLimitsStatus._near_quota_validator,
    'over_quota': SpaceLimitsStatus._over_quota_validator,
    'within_quota': SpaceLimitsStatus._within_quota_validator,
    'other': SpaceLimitsStatus._other_validator,
}

SpaceLimitsStatus.near_quota = SpaceLimitsStatus('near_quota')
SpaceLimitsStatus.over_quota = SpaceLimitsStatus('over_quota')
SpaceLimitsStatus.within_quota = SpaceLimitsStatus('within_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)]

StartedEnterpriseAdminSessionDetails._federation_extra_details_validator = FedExtraDetails_validator
StartedEnterpriseAdminSessionDetails._all_field_names_ = set(['federation_extra_details'])
StartedEnterpriseAdminSessionDetails._all_fields_ = [('federation_extra_details', StartedEnterpriseAdminSessionDetails._federation_extra_details_validator)]

StartedEnterpriseAdminSessionType._description_validator = bv.String()
StartedEnterpriseAdminSessionType._all_field_names_ = set(['description'])
StartedEnterpriseAdminSessionType._all_fields_ = [('description', StartedEnterpriseAdminSessionType._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)]

TeamDetails._team_validator = bv.String()
TeamDetails._all_field_names_ = set(['team'])
TeamDetails._all_fields_ = [('team', TeamDetails._team_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)]

TeamInviteDetails._invite_method_validator = InviteMethod_validator
TeamInviteDetails._additional_license_purchase_validator = bv.Nullable(bv.Boolean())
TeamInviteDetails._all_field_names_ = set([
    'invite_method',
    'additional_license_purchase',
])
TeamInviteDetails._all_fields_ = [
    ('invite_method', TeamInviteDetails._invite_method_validator),
    ('additional_license_purchase', TeamInviteDetails._additional_license_purchase_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_

TeamLogInfo._display_name_validator = bv.String()
TeamLogInfo._all_field_names_ = set(['display_name'])
TeamLogInfo._all_fields_ = [('display_name', TeamLogInfo._display_name_validator)]

TeamMemberLogInfo._team_member_id_validator = bv.Nullable(team_common.TeamMemberId_validator)
TeamMemberLogInfo._member_external_id_validator = bv.Nullable(team_common.MemberExternalId_validator)
TeamMemberLogInfo._team_validator = bv.Nullable(TeamLogInfo_validator)
TeamMemberLogInfo._field_names_ = set([
    'team_member_id',
    'member_external_id',
    'team',
])
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),
    ('team', TeamMemberLogInfo._team_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)]

TeamSharingWhitelistSubjectsChangedDetails._added_whitelist_subjects_validator = bv.List(bv.String())
TeamSharingWhitelistSubjectsChangedDetails._removed_whitelist_subjects_validator = bv.List(bv.String())
TeamSharingWhitelistSubjectsChangedDetails._all_field_names_ = set([
    'added_whitelist_subjects',
    'removed_whitelist_subjects',
])
TeamSharingWhitelistSubjectsChangedDetails._all_fields_ = [
    ('added_whitelist_subjects', TeamSharingWhitelistSubjectsChangedDetails._added_whitelist_subjects_validator),
    ('removed_whitelist_subjects', TeamSharingWhitelistSubjectsChangedDetails._removed_whitelist_subjects_validator),
]

TeamSharingWhitelistSubjectsChangedType._description_validator = bv.String()
TeamSharingWhitelistSubjectsChangedType._all_field_names_ = set(['description'])
TeamSharingWhitelistSubjectsChangedType._all_fields_ = [('description', TeamSharingWhitelistSubjectsChangedType._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)]

TfaAddExceptionDetails._all_field_names_ = set([])
TfaAddExceptionDetails._all_fields_ = []

TfaAddExceptionType._description_validator = bv.String()
TfaAddExceptionType._all_field_names_ = set(['description'])
TfaAddExceptionType._all_fields_ = [('description', TfaAddExceptionType._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._authenticator_validator = bv.Void()
TfaConfiguration._disabled_validator = bv.Void()
TfaConfiguration._enabled_validator = bv.Void()
TfaConfiguration._sms_validator = bv.Void()
TfaConfiguration._other_validator = bv.Void()
TfaConfiguration._tagmap = {
    'authenticator': TfaConfiguration._authenticator_validator,
    'disabled': TfaConfiguration._disabled_validator,
    'enabled': TfaConfiguration._enabled_validator,
    'sms': TfaConfiguration._sms_validator,
    'other': TfaConfiguration._other_validator,
}

TfaConfiguration.authenticator = TfaConfiguration('authenticator')
TfaConfiguration.disabled = TfaConfiguration('disabled')
TfaConfiguration.enabled = TfaConfiguration('enabled')
TfaConfiguration.sms = TfaConfiguration('sms')
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)]

TfaRemoveExceptionDetails._all_field_names_ = set([])
TfaRemoveExceptionDetails._all_fields_ = []

TfaRemoveExceptionType._description_validator = bv.String()
TfaRemoveExceptionType._all_field_names_ = set(['description'])
TfaRemoveExceptionType._all_fields_ = [('description', TfaRemoveExceptionType._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._days_validator = bv.Void()
TimeUnit._hours_validator = bv.Void()
TimeUnit._milliseconds_validator = bv.Void()
TimeUnit._minutes_validator = bv.Void()
TimeUnit._months_validator = bv.Void()
TimeUnit._seconds_validator = bv.Void()
TimeUnit._weeks_validator = bv.Void()
TimeUnit._years_validator = bv.Void()
TimeUnit._other_validator = bv.Void()
TimeUnit._tagmap = {
    'days': TimeUnit._days_validator,
    'hours': TimeUnit._hours_validator,
    'milliseconds': TimeUnit._milliseconds_validator,
    'minutes': TimeUnit._minutes_validator,
    'months': TimeUnit._months_validator,
    'seconds': TimeUnit._seconds_validator,
    'weeks': TimeUnit._weeks_validator,
    'years': TimeUnit._years_validator,
    'other': TimeUnit._other_validator,
}

TimeUnit.days = TimeUnit('days')
TimeUnit.hours = TimeUnit('hours')
TimeUnit.milliseconds = TimeUnit('milliseconds')
TimeUnit.minutes = TimeUnit('minutes')
TimeUnit.months = TimeUnit('months')
TimeUnit.seconds = TimeUnit('seconds')
TimeUnit.weeks = TimeUnit('weeks')
TimeUnit.years = TimeUnit('years')
TimeUnit.other = TimeUnit('other')

TrustedNonTeamMemberLogInfo._trusted_non_team_member_type_validator = TrustedNonTeamMemberType_validator
TrustedNonTeamMemberLogInfo._team_validator = bv.Nullable(TeamLogInfo_validator)
TrustedNonTeamMemberLogInfo._field_names_ = set([
    'trusted_non_team_member_type',
    'team',
])
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),
    ('team', TrustedNonTeamMemberLogInfo._team_validator),
]
TrustedNonTeamMemberLogInfo._all_fields_ = UserLogInfo._all_fields_ + TrustedNonTeamMemberLogInfo._fields_

TrustedNonTeamMemberType._enterprise_admin_validator = bv.Void()
TrustedNonTeamMemberType._multi_instance_admin_validator = bv.Void()
TrustedNonTeamMemberType._other_validator = bv.Void()
TrustedNonTeamMemberType._tagmap = {
    'enterprise_admin': TrustedNonTeamMemberType._enterprise_admin_validator,
    'multi_instance_admin': TrustedNonTeamMemberType._multi_instance_admin_validator,
    'other': TrustedNonTeamMemberType._other_validator,
}

TrustedNonTeamMemberType.enterprise_admin = TrustedNonTeamMemberType('enterprise_admin')
TrustedNonTeamMemberType.multi_instance_admin = TrustedNonTeamMemberType('multi_instance_admin')
TrustedNonTeamMemberType.other = TrustedNonTeamMemberType('other')

TrustedTeamsRequestAction._accepted_validator = bv.Void()
TrustedTeamsRequestAction._declined_validator = bv.Void()
TrustedTeamsRequestAction._expired_validator = bv.Void()
TrustedTeamsRequestAction._invited_validator = bv.Void()
TrustedTeamsRequestAction._revoked_validator = bv.Void()
TrustedTeamsRequestAction._other_validator = bv.Void()
TrustedTeamsRequestAction._tagmap = {
    'accepted': TrustedTeamsRequestAction._accepted_validator,
    'declined': TrustedTeamsRequestAction._declined_validator,
    'expired': TrustedTeamsRequestAction._expired_validator,
    'invited': TrustedTeamsRequestAction._invited_validator,
    'revoked': TrustedTeamsRequestAction._revoked_validator,
    'other': TrustedTeamsRequestAction._other_validator,
}

TrustedTeamsRequestAction.accepted = TrustedTeamsRequestAction('accepted')
TrustedTeamsRequestAction.declined = TrustedTeamsRequestAction('declined')
TrustedTeamsRequestAction.expired = TrustedTeamsRequestAction('expired')
TrustedTeamsRequestAction.invited = TrustedTeamsRequestAction('invited')
TrustedTeamsRequestAction.revoked = TrustedTeamsRequestAction('revoked')
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)]

WatermarkingPolicy._disabled_validator = bv.Void()
WatermarkingPolicy._enabled_validator = bv.Void()
WatermarkingPolicy._other_validator = bv.Void()
WatermarkingPolicy._tagmap = {
    'disabled': WatermarkingPolicy._disabled_validator,
    'enabled': WatermarkingPolicy._enabled_validator,
    'other': WatermarkingPolicy._other_validator,
}

WatermarkingPolicy.disabled = WatermarkingPolicy('disabled')
WatermarkingPolicy.enabled = WatermarkingPolicy('enabled')
WatermarkingPolicy.other = WatermarkingPolicy('other')

WatermarkingPolicyChangedDetails._new_value_validator = WatermarkingPolicy_validator
WatermarkingPolicyChangedDetails._previous_value_validator = WatermarkingPolicy_validator
WatermarkingPolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
WatermarkingPolicyChangedDetails._all_fields_ = [
    ('new_value', WatermarkingPolicyChangedDetails._new_value_validator),
    ('previous_value', WatermarkingPolicyChangedDetails._previous_value_validator),
]

WatermarkingPolicyChangedType._description_validator = bv.String()
WatermarkingPolicyChangedType._all_field_names_ = set(['description'])
WatermarkingPolicyChangedType._all_fields_ = [('description', WatermarkingPolicyChangedType._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_

WebSessionsChangeActiveSessionLimitDetails._previous_value_validator = bv.String()
WebSessionsChangeActiveSessionLimitDetails._new_value_validator = bv.String()
WebSessionsChangeActiveSessionLimitDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
WebSessionsChangeActiveSessionLimitDetails._all_fields_ = [
    ('previous_value', WebSessionsChangeActiveSessionLimitDetails._previous_value_validator),
    ('new_value', WebSessionsChangeActiveSessionLimitDetails._new_value_validator),
]

WebSessionsChangeActiveSessionLimitType._description_validator = bv.String()
WebSessionsChangeActiveSessionLimitType._all_field_names_ = set(['description'])
WebSessionsChangeActiveSessionLimitType._all_fields_ = [('description', WebSessionsChangeActiveSessionLimitType._description_validator)]

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,
}

