# -*- coding: utf-8 -*-
# Auto-generated by Stone, do not modify.
# flake8: noqa
# pylint: skip-file
try:
    from . import stone_validators as bv
    from . import stone_base as bb
except (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,
        files,
        team_common,
        team_policies,
        users_common,
    )
except (SystemError, ValueError):
    import common
    import files
    import team_common
    import team_policies
    import users_common

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AccessMethodLogInfo_validator = bv.Union(AccessMethodLogInfo)

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

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

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

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

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

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

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

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

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

AccountCaptureAvailability_validator = bv.Union(AccountCaptureAvailability)

class AccountCaptureChangeAvailabilityDetails(object):
    """
    Granted or revoked the option to enable account capture on domains belonging
    to the team.

    :ivar new_value: New account capture availabilty value.
    :ivar 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 __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 AccountCaptureChangePolicyDetails(object):
    """
    Changed the account capture policy on a domain belonging to the team.

    :ivar new_value: New account capture policy.
    :ivar 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 __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 AccountCaptureMigrateAccountDetails(object):
    """
    Account captured user migrated their account to the team.

    :ivar 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 __repr__(self):
        return 'AccountCaptureMigrateAccountDetails(domain_name={!r})'.format(
            self._domain_name_value,
        )

AccountCaptureMigrateAccountDetails_validator = bv.Struct(AccountCaptureMigrateAccountDetails)

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

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

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

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

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

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

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

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

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

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

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

AccountCapturePolicy_validator = bv.Union(AccountCapturePolicy)

class AccountCaptureRelinquishAccountDetails(object):
    """
    Account captured user relinquished their account by changing the email
    address associated with it.

    :ivar 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 __repr__(self):
        return 'AccountCaptureRelinquishAccountDetails(domain_name={!r})'.format(
            self._domain_name_value,
        )

AccountCaptureRelinquishAccountDetails_validator = bv.Struct(AccountCaptureRelinquishAccountDetails)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    def __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
    user = None
    # Attribute is overwritten below the class definition
    limited_admin = None
    # Attribute is overwritten below the class definition
    support_admin = None
    # Attribute is overwritten below the class definition
    user_management_admin = None
    # Attribute is overwritten below the class definition
    team_admin = None
    # Attribute is overwritten below the class definition
    other = None

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

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

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

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

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

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

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

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

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

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

AdminRole_validator = bv.Union(AdminRole)

class AllowDownloadDisabledDetails(object):
    """
    Disabled allow downloads.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

AllowDownloadDisabledDetails_validator = bv.Struct(AllowDownloadDisabledDetails)

class AllowDownloadEnabledDetails(object):
    """
    Enabled allow downloads.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

AllowDownloadEnabledDetails_validator = bv.Struct(AllowDownloadEnabledDetails)

class ApiSessionLogInfo(object):
    """
    Api session.

    :ivar 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 __repr__(self):
        return 'ApiSessionLogInfo(request_id={!r})'.format(
            self._request_id_value,
        )

ApiSessionLogInfo_validator = bv.Struct(ApiSessionLogInfo)

class AppLinkTeamDetails(object):
    """
    Linked an app for team.

    :ivar 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 __repr__(self):
        return 'AppLinkTeamDetails(app_info={!r})'.format(
            self._app_info_value,
        )

AppLinkTeamDetails_validator = bv.Struct(AppLinkTeamDetails)

class AppLinkUserDetails(object):
    """
    Linked an app for team member.

    :ivar 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 __repr__(self):
        return 'AppLinkUserDetails(app_info={!r})'.format(
            self._app_info_value,
        )

AppLinkUserDetails_validator = bv.Struct(AppLinkUserDetails)

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

    :ivar app_id: App unique ID. Might be missing due to historical data gap.
    :ivar 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 __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(object):
    """
    Unlinked an app for team.

    :ivar 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 __repr__(self):
        return 'AppUnlinkTeamDetails(app_info={!r})'.format(
            self._app_info_value,
        )

AppUnlinkTeamDetails_validator = bv.Struct(AppUnlinkTeamDetails)

class AppUnlinkUserDetails(object):
    """
    Unlinked an app for team member.

    :ivar 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 __repr__(self):
        return 'AppUnlinkUserDetails(app_info={!r})'.format(
            self._app_info_value,
        )

AppUnlinkUserDetails_validator = bv.Struct(AppUnlinkUserDetails)

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 file: File's details.
    :ivar FolderLogInfo folder: Folder's details.
    :ivar PaperDocumentLogInfo paper_document: Paper docuement's details.
    :ivar PaperFolderLogInfo paper_folder: Paper folder'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)

    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_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 docuement'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 __repr__(self):
        return 'AssetLogInfo(%r, %r)' % (self._tag, self._value)

AssetLogInfo_validator = bv.Union(AssetLogInfo)

class Certificate(object):
    """
    Certificate details.

    :ivar subject: Certificate subject.
    :ivar issuer: Certificate issuer.
    :ivar issue_date: Certificate issue date.
    :ivar expiration_date: Certificate expiration date.
    :ivar serial_number: Certificate serial number.
    :ivar sha1_fingerprint: Certificate sha1 fingerprint.
    :ivar 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:
            raise AttributeError("missing required field 'common_name'")

    @common_name.setter
    def common_name(self, val):
        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 __repr__(self):
        return 'Certificate(subject={!r}, issuer={!r}, issue_date={!r}, expiration_date={!r}, serial_number={!r}, sha1_fingerprint={!r}, common_name={!r})'.format(
            self._subject_value,
            self._issuer_value,
            self._issue_date_value,
            self._expiration_date_value,
            self._serial_number_value,
            self._sha1_fingerprint_value,
            self._common_name_value,
        )

Certificate_validator = bv.Struct(Certificate)

class CollectionShareDetails(object):
    """
    Shared an album.

    :ivar 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 __repr__(self):
        return 'CollectionShareDetails(album_name={!r})'.format(
            self._album_name_value,
        )

CollectionShareDetails_validator = bv.Struct(CollectionShareDetails)

class Confidentiality(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
    confidential = None
    # Attribute is overwritten below the class definition
    non_confidential = None
    # Attribute is overwritten below the class definition
    other = None

    def is_confidential(self):
        """
        Check if the union tag is ``confidential``.

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

    def is_non_confidential(self):
        """
        Check if the union tag is ``non_confidential``.

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

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

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

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

Confidentiality_validator = bv.Union(Confidentiality)

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 __repr__(self):
        return 'ContentPermanentDeletePolicy(%r, %r)' % (self._tag, self._value)

ContentPermanentDeletePolicy_validator = bv.Union(ContentPermanentDeletePolicy)

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

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

    :ivar TeamMemberLogInfo team_member: Action was done on behalf of a team
        member.
    :ivar NonTeamMemberLogInfo non_team_member: Action was done on behalf of a
        non team member.
    :ivar team: Action was done on behalf of the team.
    """

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

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

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

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

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

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

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

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

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

    def is_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_team_member(self):
        """
        Action was done on behalf of a team member.

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

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

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

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

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

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

ContextLogInfo_validator = bv.Union(ContextLogInfo)

class CreateFolderDetails(object):
    """
    Created folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

CreateFolderDetails_validator = bv.Struct(CreateFolderDetails)

class DataPlacementRestrictionChangePolicyDetails(object):
    """
    Set a restriction policy regarding the location of data centers where team
    data resides.

    :ivar previous_value: Previous placement restriction.
    :ivar 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 __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 DataPlacementRestrictionSatisfyPolicyDetails(object):
    """
    Satisfied a previously set restriction policy regarding the location of data
    centers where team data resides (i.e. all data have been migrated according
    to the restriction placed).

    :ivar 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 __repr__(self):
        return 'DataPlacementRestrictionSatisfyPolicyDetails(placement_restriction={!r})'.format(
            self._placement_restriction_value,
        )

DataPlacementRestrictionSatisfyPolicyDetails_validator = bv.Struct(DataPlacementRestrictionSatisfyPolicyDetails)

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

    :ivar 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 __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 __repr__(self):
        return 'DesktopSessionLogInfo(session_id={!r})'.format(
            self._session_id_value,
        )

DesktopSessionLogInfo_validator = bv.Struct(DesktopSessionLogInfo)

class DeviceApprovalsChangeDesktopPolicyDetails(object):
    """
    Set or removed a limit on the number of computers each team member can link
    to their work Dropbox account.

    :ivar new_value: New desktop device approvals policy. Might be missing due
        to historical data gap.
    :ivar 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 __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 DeviceApprovalsChangeMobilePolicyDetails(object):
    """
    Set or removed a limit on the number of mobiles devices each team member can
    link to their work Dropbox account.

    :ivar new_value: New mobile device approvals policy. Might be missing due to
        historical data gap.
    :ivar 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 __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 DeviceApprovalsChangeOverageActionDetails(object):
    """
    Changed the action taken when a team member is already over the limits (e.g
    when they join the team, an admin lowers limits, etc.).

    :ivar new_value: New over the limits policy. Might be missing due to
        historical data gap.
    :ivar 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_validator
        """
        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_validator
        """
        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 __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 DeviceApprovalsChangeUnlinkActionDetails(object):
    """
    Changed the action taken with respect to approval limits when a team member
    unlinks an approved device.

    :ivar new_value: New device unlink policy. Might be missing due to
        historical data gap.
    :ivar 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 __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 DeviceApprovalsPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

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

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

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

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

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

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

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

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

DeviceApprovalsPolicy_validator = bv.Union(DeviceApprovalsPolicy)

class DeviceChangeIpDesktopDetails(object):
    """
    IP address associated with active desktop session changed.

    :ivar device_info: Device information.
    """

    __slots__ = [
        '_device_info_value',
        '_device_info_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 device_info=None):
        self._device_info_value = None
        self._device_info_present = False
        if device_info is not None:
            self.device_info = device_info

    @property
    def device_info(self):
        """
        Device information.

        :rtype: DeviceLogInfo
        """
        if self._device_info_present:
            return self._device_info_value
        else:
            raise AttributeError("missing required field 'device_info'")

    @device_info.setter
    def device_info(self, val):
        self._device_info_validator.validate_type_only(val)
        self._device_info_value = val
        self._device_info_present = True

    @device_info.deleter
    def device_info(self):
        self._device_info_value = None
        self._device_info_present = False

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

DeviceChangeIpDesktopDetails_validator = bv.Struct(DeviceChangeIpDesktopDetails)

class DeviceChangeIpMobileDetails(object):
    """
    IP address associated with active mobile session changed.

    :ivar device_info: Device information.
    """

    __slots__ = [
        '_device_info_value',
        '_device_info_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 device_info=None):
        self._device_info_value = None
        self._device_info_present = False
        if device_info is not None:
            self.device_info = device_info

    @property
    def device_info(self):
        """
        Device information.

        :rtype: DeviceLogInfo
        """
        if self._device_info_present:
            return self._device_info_value
        else:
            raise AttributeError("missing required field 'device_info'")

    @device_info.setter
    def device_info(self, val):
        self._device_info_validator.validate_type_only(val)
        self._device_info_value = val
        self._device_info_present = True

    @device_info.deleter
    def device_info(self):
        self._device_info_value = None
        self._device_info_present = False

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

DeviceChangeIpMobileDetails_validator = bv.Struct(DeviceChangeIpMobileDetails)

class DeviceChangeIpWebDetails(object):
    """
    IP address associated with active Web session changed.

    :ivar device_info: Device information. Might be missing due to historical
        data gap.
    :ivar user_agent: Web browser name.
    """

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

    _has_required_fields = True

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

    @property
    def device_info(self):
        """
        Device information. Might be missing due to historical data gap.

        :rtype: DeviceLogInfo
        """
        if self._device_info_present:
            return self._device_info_value
        else:
            return None

    @device_info.setter
    def device_info(self, val):
        if val is None:
            del self.device_info
            return
        self._device_info_validator.validate_type_only(val)
        self._device_info_value = val
        self._device_info_present = True

    @device_info.deleter
    def device_info(self):
        self._device_info_value = None
        self._device_info_present = False

    @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 __repr__(self):
        return 'DeviceChangeIpWebDetails(user_agent={!r}, device_info={!r})'.format(
            self._user_agent_value,
            self._device_info_value,
        )

DeviceChangeIpWebDetails_validator = bv.Struct(DeviceChangeIpWebDetails)

class DeviceDeleteOnUnlinkFailDetails(object):
    """
    Failed to delete all files from an unlinked device.

    :ivar device_info: Device information.
    :ivar num_failures: The number of times that remote file deletion failed.
    """

    __slots__ = [
        '_device_info_value',
        '_device_info_present',
        '_num_failures_value',
        '_num_failures_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 device_info=None,
                 num_failures=None):
        self._device_info_value = None
        self._device_info_present = False
        self._num_failures_value = None
        self._num_failures_present = False
        if device_info is not None:
            self.device_info = device_info
        if num_failures is not None:
            self.num_failures = num_failures

    @property
    def device_info(self):
        """
        Device information.

        :rtype: DeviceLogInfo
        """
        if self._device_info_present:
            return self._device_info_value
        else:
            raise AttributeError("missing required field 'device_info'")

    @device_info.setter
    def device_info(self, val):
        self._device_info_validator.validate_type_only(val)
        self._device_info_value = val
        self._device_info_present = True

    @device_info.deleter
    def device_info(self):
        self._device_info_value = None
        self._device_info_present = False

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

        :rtype: long
        """
        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 __repr__(self):
        return 'DeviceDeleteOnUnlinkFailDetails(device_info={!r}, num_failures={!r})'.format(
            self._device_info_value,
            self._num_failures_value,
        )

DeviceDeleteOnUnlinkFailDetails_validator = bv.Struct(DeviceDeleteOnUnlinkFailDetails)

class DeviceDeleteOnUnlinkSuccessDetails(object):
    """
    Deleted all files from an unlinked device.

    :ivar device_info: Device information.
    """

    __slots__ = [
        '_device_info_value',
        '_device_info_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 device_info=None):
        self._device_info_value = None
        self._device_info_present = False
        if device_info is not None:
            self.device_info = device_info

    @property
    def device_info(self):
        """
        Device information.

        :rtype: DeviceLogInfo
        """
        if self._device_info_present:
            return self._device_info_value
        else:
            raise AttributeError("missing required field 'device_info'")

    @device_info.setter
    def device_info(self, val):
        self._device_info_validator.validate_type_only(val)
        self._device_info_value = val
        self._device_info_present = True

    @device_info.deleter
    def device_info(self):
        self._device_info_value = None
        self._device_info_present = False

    def __repr__(self):
        return 'DeviceDeleteOnUnlinkSuccessDetails(device_info={!r})'.format(
            self._device_info_value,
        )

DeviceDeleteOnUnlinkSuccessDetails_validator = bv.Struct(DeviceDeleteOnUnlinkSuccessDetails)

class DeviceLinkFailDetails(object):
    """
    Failed to link a device.

    :ivar device_info: Device information. Might be missing due to historical
        data gap.
    :ivar device_type: A description of the device used while user approval
        blocked.
    """

    __slots__ = [
        '_device_info_value',
        '_device_info_present',
        '_device_type_value',
        '_device_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 device_type=None,
                 device_info=None):
        self._device_info_value = None
        self._device_info_present = False
        self._device_type_value = None
        self._device_type_present = False
        if device_info is not None:
            self.device_info = device_info
        if device_type is not None:
            self.device_type = device_type

    @property
    def device_info(self):
        """
        Device information. Might be missing due to historical data gap.

        :rtype: DeviceLogInfo
        """
        if self._device_info_present:
            return self._device_info_value
        else:
            return None

    @device_info.setter
    def device_info(self, val):
        if val is None:
            del self.device_info
            return
        self._device_info_validator.validate_type_only(val)
        self._device_info_value = val
        self._device_info_present = True

    @device_info.deleter
    def device_info(self):
        self._device_info_value = None
        self._device_info_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 __repr__(self):
        return 'DeviceLinkFailDetails(device_type={!r}, device_info={!r})'.format(
            self._device_type_value,
            self._device_info_value,
        )

DeviceLinkFailDetails_validator = bv.Struct(DeviceLinkFailDetails)

class DeviceLinkSuccessDetails(object):
    """
    Linked a device.

    :ivar device_info: Device information.
    """

    __slots__ = [
        '_device_info_value',
        '_device_info_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 device_info=None):
        self._device_info_value = None
        self._device_info_present = False
        if device_info is not None:
            self.device_info = device_info

    @property
    def device_info(self):
        """
        Device information.

        :rtype: DeviceLogInfo
        """
        if self._device_info_present:
            return self._device_info_value
        else:
            raise AttributeError("missing required field 'device_info'")

    @device_info.setter
    def device_info(self, val):
        self._device_info_validator.validate_type_only(val)
        self._device_info_value = val
        self._device_info_present = True

    @device_info.deleter
    def device_info(self):
        self._device_info_value = None
        self._device_info_present = False

    def __repr__(self):
        return 'DeviceLinkSuccessDetails(device_info={!r})'.format(
            self._device_info_value,
        )

DeviceLinkSuccessDetails_validator = bv.Struct(DeviceLinkSuccessDetails)

class DeviceLogInfo(object):
    """
    Device's logged information.

    :ivar device_id: Device unique id. Might be missing due to historical data
        gap.
    :ivar display_name: Device display name. Might be missing due to historical
        data gap.
    :ivar is_emm_managed: True if this device is emm managed, false otherwise.
        Might be missing due to historical data gap.
    :ivar platform: Device platform name. Might be missing due to historical
        data gap.
    :ivar mac_address: Device mac address. Might be missing due to historical
        data gap.
    :ivar os_version: Device OS version. Might be missing due to historical data
        gap.
    :ivar device_type: Device type. Might be missing due to historical data gap.
    :ivar ip_address: IP address. Might be missing due to historical data gap.
    :ivar last_activity: Last activity. Might be missing due to historical data
        gap.
    :ivar app_version: Linking app version. Might be missing due to historical
        data gap.
    """

    __slots__ = [
        '_device_id_value',
        '_device_id_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',
        '_ip_address_value',
        '_ip_address_present',
        '_last_activity_value',
        '_last_activity_present',
        '_app_version_value',
        '_app_version_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 device_id=None,
                 display_name=None,
                 is_emm_managed=None,
                 platform=None,
                 mac_address=None,
                 os_version=None,
                 device_type=None,
                 ip_address=None,
                 last_activity=None,
                 app_version=None):
        self._device_id_value = None
        self._device_id_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._ip_address_value = None
        self._ip_address_present = False
        self._last_activity_value = None
        self._last_activity_present = False
        self._app_version_value = None
        self._app_version_present = False
        if device_id is not None:
            self.device_id = device_id
        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 ip_address is not None:
            self.ip_address = ip_address
        if last_activity is not None:
            self.last_activity = last_activity
        if app_version is not None:
            self.app_version = app_version

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

        :rtype: str
        """
        if self._device_id_present:
            return self._device_id_value
        else:
            return None

    @device_id.setter
    def device_id(self, val):
        if val is None:
            del self.device_id
            return
        val = self._device_id_validator.validate(val)
        self._device_id_value = val
        self._device_id_present = True

    @device_id.deleter
    def device_id(self):
        self._device_id_value = None
        self._device_id_present = False

    @property
    def display_name(self):
        """
        Device 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 is_emm_managed(self):
        """
        True if this device is emm managed, false otherwise. 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):
        """
        Device platform name. 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):
        """
        Device mac address. 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):
        """
        Device 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):
        """
        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 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 last_activity(self):
        """
        Last activity. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._last_activity_present:
            return self._last_activity_value
        else:
            return None

    @last_activity.setter
    def last_activity(self, val):
        if val is None:
            del self.last_activity
            return
        val = self._last_activity_validator.validate(val)
        self._last_activity_value = val
        self._last_activity_present = True

    @last_activity.deleter
    def last_activity(self):
        self._last_activity_value = None
        self._last_activity_present = False

    @property
    def app_version(self):
        """
        Linking app version. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._app_version_present:
            return self._app_version_value
        else:
            return None

    @app_version.setter
    def app_version(self, val):
        if val is None:
            del self.app_version
            return
        val = self._app_version_validator.validate(val)
        self._app_version_value = val
        self._app_version_present = True

    @app_version.deleter
    def app_version(self):
        self._app_version_value = None
        self._app_version_present = False

    def __repr__(self):
        return 'DeviceLogInfo(device_id={!r}, display_name={!r}, is_emm_managed={!r}, platform={!r}, mac_address={!r}, os_version={!r}, device_type={!r}, ip_address={!r}, last_activity={!r}, app_version={!r})'.format(
            self._device_id_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._ip_address_value,
            self._last_activity_value,
            self._app_version_value,
        )

DeviceLogInfo_validator = bv.Struct(DeviceLogInfo)

class DeviceManagementDisabledDetails(object):
    """
    Disable Device Management.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

DeviceManagementDisabledDetails_validator = bv.Struct(DeviceManagementDisabledDetails)

class DeviceManagementEnabledDetails(object):
    """
    Enable Device Management.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

DeviceManagementEnabledDetails_validator = bv.Struct(DeviceManagementEnabledDetails)

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 __repr__(self):
        return 'DeviceType(%r, %r)' % (self._tag, self._value)

DeviceType_validator = bv.Union(DeviceType)

class DeviceUnlinkDetails(object):
    """
    Disconnected a device.

    :ivar device_info: Device information.
    :ivar delete_data: True if the user requested to delete data after device
        unlink, false otherwise.
    """

    __slots__ = [
        '_device_info_value',
        '_device_info_present',
        '_delete_data_value',
        '_delete_data_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 device_info=None,
                 delete_data=None):
        self._device_info_value = None
        self._device_info_present = False
        self._delete_data_value = None
        self._delete_data_present = False
        if device_info is not None:
            self.device_info = device_info
        if delete_data is not None:
            self.delete_data = delete_data

    @property
    def device_info(self):
        """
        Device information.

        :rtype: DeviceLogInfo
        """
        if self._device_info_present:
            return self._device_info_value
        else:
            raise AttributeError("missing required field 'device_info'")

    @device_info.setter
    def device_info(self, val):
        self._device_info_validator.validate_type_only(val)
        self._device_info_value = val
        self._device_info_present = True

    @device_info.deleter
    def device_info(self):
        self._device_info_value = None
        self._device_info_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 __repr__(self):
        return 'DeviceUnlinkDetails(device_info={!r}, delete_data={!r})'.format(
            self._device_info_value,
            self._delete_data_value,
        )

DeviceUnlinkDetails_validator = bv.Struct(DeviceUnlinkDetails)

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

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

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

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

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

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

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

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

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

DeviceUnlinkPolicy_validator = bv.Union(DeviceUnlinkPolicy)

class DisabledDomainInvitesDetails(object):
    """
    Disabled domain invites.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

DisabledDomainInvitesDetails_validator = bv.Struct(DisabledDomainInvitesDetails)

class DomainInvitesApproveRequestToJoinTeamDetails(object):
    """
    Approved a member's request to join the team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

DomainInvitesApproveRequestToJoinTeamDetails_validator = bv.Struct(DomainInvitesApproveRequestToJoinTeamDetails)

class DomainInvitesDeclineRequestToJoinTeamDetails(object):
    """
    Declined a user's request to join the team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

DomainInvitesDeclineRequestToJoinTeamDetails_validator = bv.Struct(DomainInvitesDeclineRequestToJoinTeamDetails)

class DomainInvitesEmailExistingUsersDetails(object):
    """
    Sent domain invites to existing domain accounts.

    :ivar domain_name: Domain names.
    :ivar 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: list of [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: long
        """
        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 __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 DomainInvitesRequestToJoinTeamDetails(object):
    """
    Asked to join the team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

DomainInvitesRequestToJoinTeamDetails_validator = bv.Struct(DomainInvitesRequestToJoinTeamDetails)

class DomainInvitesSetInviteNewUserPrefToNoDetails(object):
    """
    Turned off u201cAutomatically invite new usersu201d.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

DomainInvitesSetInviteNewUserPrefToNoDetails_validator = bv.Struct(DomainInvitesSetInviteNewUserPrefToNoDetails)

class DomainInvitesSetInviteNewUserPrefToYesDetails(object):
    """
    Turned on u201cAutomatically invite new usersu201d.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

DomainInvitesSetInviteNewUserPrefToYesDetails_validator = bv.Struct(DomainInvitesSetInviteNewUserPrefToYesDetails)

class DomainVerificationAddDomainFailDetails(object):
    """
    Failed to verify a domain belonging to the team.

    :ivar domain_name: Domain name.
    :ivar 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 __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 DomainVerificationAddDomainSuccessDetails(object):
    """
    Verified a domain belonging to the team.

    :ivar domain_names: Domain names.
    :ivar 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 __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 DomainVerificationRemoveDomainDetails(object):
    """
    Removed a domain from the list of verified domains belonging to the team.

    :ivar 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 __repr__(self):
        return 'DomainVerificationRemoveDomainDetails(domain_names={!r})'.format(
            self._domain_names_value,
        )

DomainVerificationRemoveDomainDetails_validator = bv.Struct(DomainVerificationRemoveDomainDetails)

class DurationLogInfo(object):
    """
    Represents a time duration: unit and amount

    :ivar unit: Time unit.
    :ivar 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: long
        """
        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 __repr__(self):
        return 'DurationLogInfo(unit={!r}, amount={!r})'.format(
            self._unit_value,
            self._amount_value,
        )

DurationLogInfo_validator = bv.Struct(DurationLogInfo)

class EmmAddExceptionDetails(object):
    """
    Added an exception for one or more team members to optionally use the
    regular Dropbox app when EMM is enabled.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

EmmAddExceptionDetails_validator = bv.Struct(EmmAddExceptionDetails)

class EmmChangePolicyDetails(object):
    """
    Enabled or disabled enterprise mobility management for team members.

    :ivar new_value: New enterprise mobility management policy.
    :ivar 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_validator
        """
        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_validator
        """
        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 __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 EmmCreateExceptionsReportDetails(object):
    """
    EMM excluded users report created.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

EmmCreateExceptionsReportDetails_validator = bv.Struct(EmmCreateExceptionsReportDetails)

class EmmCreateUsageReportDetails(object):
    """
    EMM mobile app usage report created.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

EmmCreateUsageReportDetails_validator = bv.Struct(EmmCreateUsageReportDetails)

class EmmLoginSuccessDetails(object):
    """
    Signed in using the Dropbox EMM app.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

EmmLoginSuccessDetails_validator = bv.Struct(EmmLoginSuccessDetails)

class EmmRefreshAuthTokenDetails(object):
    """
    Refreshed the auth token used for setting up enterprise mobility management.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

EmmRefreshAuthTokenDetails_validator = bv.Struct(EmmRefreshAuthTokenDetails)

class EmmRemoveExceptionDetails(object):
    """
    Removed an exception for one or more team members to optionally use the
    regular Dropbox app when EMM is enabled.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

EmmRemoveExceptionDetails_validator = bv.Struct(EmmRemoveExceptionDetails)

class EnabledDomainInvitesDetails(object):
    """
    Enabled domain invites.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

EnabledDomainInvitesDetails_validator = bv.Struct(EnabledDomainInvitesDetails)

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 account_capture: Events that have to do with account capture and
        invite enforcement on team-owned domains.
    :ivar administration: Events that relate to team and team member account
        administration or team administration. Note that these actions are not
        necessarily performed by team admins. They might also be performed by
        Dropbox Support or System or by team members on their own accounts.
    :ivar apps: Events that apply to management of linked apps.
    :ivar authentication: Events that apply to user authentication in some way.
    :ivar comments: Events that have to do with comments on files and Paper
        documents.
    :ivar content_access: Events that apply to changes how people can access
        content on Dropbox as well as actions that represent actually accessing
        content.
    :ivar devices: Events that apply to linked devices on mobile, desktop and
        Web platforms.
    :ivar device_approvals: Events that concern device approvals and device
        management.
    :ivar domains: Events that involve domain management feature: domain
        verification, invite enforcement and account capture.
    :ivar emm: Events that involve enterprise mobility management and the
        Dropbox EMM app.
    :ivar errors: Events that mark some type of unexpected outcome.
    :ivar files: Events that mark a user's interaction with files and folders on
        Dropbox.
    :ivar file_operations: Events that have to do with filesystem operations on
        files and folders: copy, move, delete, etc.
    :ivar file_requests: Events that apply to the file requests feature.
    :ivar groups: Events that involve group management.
    :ivar logins: Events that involve users signing in to or out of Dropbox.
    :ivar members: Events that involve team member management.
    :ivar paper: Events that apply to Dropbox Paper.
    :ivar passwords: Events that involve using, changing or resetting passwords.
    :ivar reports: Events that concern generation of admin reports, including
        team activity and device usage.
    :ivar sessions: Events that mark the beginning or end of sessions as well as
        those that apply to an ongoing session.
    :ivar shared_files: Events that specifically apply to shared files.
    :ivar shared_folders: Events that specifically apply to shared folders.
    :ivar shared_links: Events that specifically apply to link sharing.
    :ivar sharing: Events that apply to all types of sharing and collaboration.
    :ivar sharing_policies: Events that concern policies that affect sharing -
        both at the team level and at the folder level.
    :ivar sso: Events that involve using or configuring single sign-on as well
        as administrative policies concerning single sign-on.
    :ivar team_folders: Events that involve team folder management.
    :ivar team_policies: Events that involve a change in team-wide policies.
    :ivar team_profile: Events that involve a change in the team profile.
    :ivar tfa: Events that involve using or configuring two factor
        authentication as well as administrative policies concerning two factor
        authentication.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    account_capture = None
    # Attribute is overwritten below the class definition
    administration = None
    # Attribute is overwritten below the class definition
    apps = None
    # Attribute is overwritten below the class definition
    authentication = None
    # Attribute is overwritten below the class definition
    comments = None
    # Attribute is overwritten below the class definition
    content_access = None
    # Attribute is overwritten below the class definition
    devices = None
    # Attribute is overwritten below the class definition
    device_approvals = None
    # Attribute is overwritten below the class definition
    domains = None
    # Attribute is overwritten below the class definition
    emm = None
    # Attribute is overwritten below the class definition
    errors = None
    # Attribute is overwritten below the class definition
    files = 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
    sessions = None
    # Attribute is overwritten below the class definition
    shared_files = None
    # Attribute is overwritten below the class definition
    shared_folders = None
    # Attribute is overwritten below the class definition
    shared_links = None
    # Attribute is overwritten below the class definition
    sharing = None
    # Attribute is overwritten below the class definition
    sharing_policies = 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
    other = None

    def is_account_capture(self):
        """
        Check if the union tag is ``account_capture``.

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

    def is_administration(self):
        """
        Check if the union tag is ``administration``.

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

    def is_apps(self):
        """
        Check if the union tag is ``apps``.

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

    def is_authentication(self):
        """
        Check if the union tag is ``authentication``.

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

    def is_comments(self):
        """
        Check if the union tag is ``comments``.

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

    def is_content_access(self):
        """
        Check if the union tag is ``content_access``.

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

    def is_devices(self):
        """
        Check if the union tag is ``devices``.

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

    def is_device_approvals(self):
        """
        Check if the union tag is ``device_approvals``.

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

    def is_domains(self):
        """
        Check if the union tag is ``domains``.

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

    def is_emm(self):
        """
        Check if the union tag is ``emm``.

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

    def is_errors(self):
        """
        Check if the union tag is ``errors``.

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

    def is_files(self):
        """
        Check if the union tag is ``files``.

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

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

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

    def is_shared_files(self):
        """
        Check if the union tag is ``shared_files``.

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

    def is_shared_folders(self):
        """
        Check if the union tag is ``shared_folders``.

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

    def is_shared_links(self):
        """
        Check if the union tag is ``shared_links``.

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

    def is_sharing(self):
        """
        Check if the union tag is ``sharing``.

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

    def is_sharing_policies(self):
        """
        Check if the union tag is ``sharing_policies``.

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

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

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

    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 MemberChangeMembershipTypeDetails
        member_change_membership_type_details: Changed the membership type
        (limited vs full) for team member.
    :ivar MemberPermanentlyDeleteAccountContentsDetails
        member_permanently_delete_account_contents_details: Permanently deleted
        contents of a removed team member account.
    :ivar MemberSpaceLimitsChangeStatusDetails
        member_space_limits_change_status_details: Changed the status with
        respect to whether the team member is under or over storage quota
        specified by policy.
    :ivar MemberTransferAccountContentsDetails
        member_transfer_account_contents_details: Transferred contents of a
        removed team member account to another member.
    :ivar PaperAdminExportStartDetails paper_admin_export_start_details:
        Exported all Paper documents in the team.
    :ivar PaperEnabledUsersGroupAdditionDetails
        paper_enabled_users_group_addition_details: Users added to Paper enabled
        users list.
    :ivar PaperEnabledUsersGroupRemovalDetails
        paper_enabled_users_group_removal_details: Users removed from Paper
        enabled users list.
    :ivar PaperExternalViewAllowDetails paper_external_view_allow_details: Paper
        external sharing policy changed: anyone.
    :ivar PaperExternalViewDefaultTeamDetails
        paper_external_view_default_team_details: Paper external sharing policy
        changed: default team.
    :ivar PaperExternalViewForbidDetails paper_external_view_forbid_details:
        Paper external sharing policy changed: team-only.
    :ivar SfExternalInviteWarnDetails sf_external_invite_warn_details: Admin
        settings: team members see a warning before sharing folders outside the
        team (DEPRECATED FEATURE).
    :ivar TeamMergeFromDetails team_merge_from_details: Merged another team into
        this team.
    :ivar TeamMergeToDetails team_merge_to_details: Merged this team into
        another team.
    :ivar AppLinkTeamDetails app_link_team_details: Linked an app for team.
    :ivar AppLinkUserDetails app_link_user_details: Linked an app for team
        member.
    :ivar AppUnlinkTeamDetails app_unlink_team_details: Unlinked an app for
        team.
    :ivar AppUnlinkUserDetails app_unlink_user_details: Unlinked an app for team
        member.
    :ivar FileAddCommentDetails file_add_comment_details: Added a file comment.
    :ivar FileChangeCommentSubscriptionDetails
        file_change_comment_subscription_details: Subscribed to or unsubscribed
        from comment notifications for file.
    :ivar FileDeleteCommentDetails file_delete_comment_details: Deleted a file
        comment.
    :ivar FileLikeCommentDetails file_like_comment_details: Liked a file
        comment.
    :ivar FileResolveCommentDetails file_resolve_comment_details: Resolved a
        file comment.
    :ivar FileUnlikeCommentDetails file_unlike_comment_details: Unliked a file
        comment.
    :ivar FileUnresolveCommentDetails file_unresolve_comment_details: Unresolved
        a file comment.
    :ivar DeviceChangeIpDesktopDetails device_change_ip_desktop_details: IP
        address associated with active desktop session changed.
    :ivar DeviceChangeIpMobileDetails device_change_ip_mobile_details: IP
        address associated with active mobile session changed.
    :ivar DeviceChangeIpWebDetails device_change_ip_web_details: IP address
        associated with active Web session changed.
    :ivar DeviceDeleteOnUnlinkFailDetails device_delete_on_unlink_fail_details:
        Failed to delete all files from an unlinked device.
    :ivar DeviceDeleteOnUnlinkSuccessDetails
        device_delete_on_unlink_success_details: Deleted all files from an
        unlinked device.
    :ivar DeviceLinkFailDetails device_link_fail_details: Failed to link a
        device.
    :ivar DeviceLinkSuccessDetails device_link_success_details: Linked a device.
    :ivar DeviceManagementDisabledDetails device_management_disabled_details:
        Disable Device Management.
    :ivar DeviceManagementEnabledDetails device_management_enabled_details:
        Enable Device Management.
    :ivar DeviceUnlinkDetails device_unlink_details: Disconnected a device.
    :ivar EmmRefreshAuthTokenDetails emm_refresh_auth_token_details: Refreshed
        the auth token used for setting up enterprise mobility management.
    :ivar AccountCaptureChangeAvailabilityDetails
        account_capture_change_availability_details: Granted or revoked the
        option to enable account capture on domains belonging to the team.
    :ivar AccountCaptureMigrateAccountDetails
        account_capture_migrate_account_details: Account captured user migrated
        their account to the team.
    :ivar AccountCaptureRelinquishAccountDetails
        account_capture_relinquish_account_details: Account captured user
        relinquished their account by changing the email address associated with
        it.
    :ivar DisabledDomainInvitesDetails disabled_domain_invites_details: Disabled
        domain invites.
    :ivar DomainInvitesApproveRequestToJoinTeamDetails
        domain_invites_approve_request_to_join_team_details: Approved a member's
        request to join the team.
    :ivar DomainInvitesDeclineRequestToJoinTeamDetails
        domain_invites_decline_request_to_join_team_details: Declined a user's
        request to join the team.
    :ivar DomainInvitesEmailExistingUsersDetails
        domain_invites_email_existing_users_details: Sent domain invites to
        existing domain accounts.
    :ivar DomainInvitesRequestToJoinTeamDetails
        domain_invites_request_to_join_team_details: Asked to join the team.
    :ivar DomainInvitesSetInviteNewUserPrefToNoDetails
        domain_invites_set_invite_new_user_pref_to_no_details: Turned off
        u201cAutomatically invite new usersu201d.
    :ivar DomainInvitesSetInviteNewUserPrefToYesDetails
        domain_invites_set_invite_new_user_pref_to_yes_details: Turned on
        u201cAutomatically invite new usersu201d.
    :ivar DomainVerificationAddDomainFailDetails
        domain_verification_add_domain_fail_details: Failed to verify a domain
        belonging to the team.
    :ivar DomainVerificationAddDomainSuccessDetails
        domain_verification_add_domain_success_details: Verified a domain
        belonging to the team.
    :ivar DomainVerificationRemoveDomainDetails
        domain_verification_remove_domain_details: Removed a domain from the
        list of verified domains belonging to the team.
    :ivar EnabledDomainInvitesDetails enabled_domain_invites_details: Enabled
        domain invites.
    :ivar CreateFolderDetails create_folder_details: Created folders.
    :ivar FileAddDetails file_add_details: Added files and/or folders.
    :ivar FileCopyDetails file_copy_details: Copied files and/or folders.
    :ivar FileDeleteDetails file_delete_details: Deleted files and/or folders.
    :ivar FileDownloadDetails file_download_details: Downloaded files and/or
        folders.
    :ivar FileEditDetails file_edit_details: Edited files.
    :ivar FileGetCopyReferenceDetails file_get_copy_reference_details: Create a
        copy reference to a file or folder.
    :ivar FileMoveDetails file_move_details: Moved files and/or folders.
    :ivar FilePermanentlyDeleteDetails file_permanently_delete_details:
        Permanently deleted files and/or folders.
    :ivar FilePreviewDetails file_preview_details: Previewed files and/or
        folders.
    :ivar FileRenameDetails file_rename_details: Renamed files and/or folders.
    :ivar FileRestoreDetails file_restore_details: Restored deleted files and/or
        folders.
    :ivar FileRevertDetails file_revert_details: Reverted files to a previous
        version.
    :ivar FileRollbackChangesDetails file_rollback_changes_details: Rolled back
        file change location changes.
    :ivar FileSaveCopyReferenceDetails file_save_copy_reference_details: Save a
        file or folder using a copy reference.
    :ivar FileRequestAddDeadlineDetails file_request_add_deadline_details: Added
        a deadline to a file request.
    :ivar FileRequestChangeFolderDetails file_request_change_folder_details:
        Changed the file request folder.
    :ivar FileRequestChangeTitleDetails file_request_change_title_details:
        Change the file request title.
    :ivar FileRequestCloseDetails file_request_close_details: Closed a file
        request.
    :ivar FileRequestCreateDetails file_request_create_details: Created a file
        request.
    :ivar FileRequestReceiveFileDetails file_request_receive_file_details:
        Received files for a file request.
    :ivar FileRequestRemoveDeadlineDetails file_request_remove_deadline_details:
        Removed the file request deadline.
    :ivar FileRequestSendDetails file_request_send_details: Sent file request to
        users via email.
    :ivar GroupAddExternalIdDetails group_add_external_id_details: Added an
        external ID for group.
    :ivar GroupAddMemberDetails group_add_member_details: Added team members to
        a group.
    :ivar GroupChangeExternalIdDetails group_change_external_id_details: Changed
        the external ID for group.
    :ivar GroupChangeManagementTypeDetails group_change_management_type_details:
        Changed group management type.
    :ivar GroupChangeMemberRoleDetails group_change_member_role_details: Changed
        the manager permissions belonging to a group member.
    :ivar GroupCreateDetails group_create_details: Created a group.
    :ivar GroupDeleteDetails group_delete_details: Deleted a group.
    :ivar GroupMovedDetails group_moved_details: Moved a group.
    :ivar GroupRemoveExternalIdDetails group_remove_external_id_details: Removed
        the external ID for group.
    :ivar GroupRemoveMemberDetails group_remove_member_details: Removed team
        members from a group.
    :ivar GroupRenameDetails group_rename_details: Renamed a group.
    :ivar EmmLoginSuccessDetails emm_login_success_details: Signed in using the
        Dropbox EMM app.
    :ivar LogoutDetails logout_details: Signed out.
    :ivar PasswordLoginFailDetails password_login_fail_details: Failed to sign
        in using a password.
    :ivar PasswordLoginSuccessDetails password_login_success_details: Signed in
        using a password.
    :ivar ResellerSupportSessionEndDetails reseller_support_session_end_details:
        Ended reseller support session.
    :ivar ResellerSupportSessionStartDetails
        reseller_support_session_start_details: Started reseller support
        session.
    :ivar SignInAsSessionEndDetails sign_in_as_session_end_details: Ended admin
        sign-in-as session.
    :ivar SignInAsSessionStartDetails sign_in_as_session_start_details: Started
        admin sign-in-as session.
    :ivar SsoLoginFailDetails sso_login_fail_details: Failed to sign in using
        SSO.
    :ivar MemberAddNameDetails member_add_name_details: Set team member name
        when joining team.
    :ivar MemberChangeAdminRoleDetails member_change_admin_role_details: Change
        the admin role belonging to team member.
    :ivar MemberChangeEmailDetails member_change_email_details: Changed team
        member email address.
    :ivar MemberChangeNameDetails member_change_name_details: Changed team
        member name.
    :ivar MemberChangeStatusDetails member_change_status_details: Changed the
        membership status of a team member.
    :ivar MemberSuggestDetails member_suggest_details: Suggested a new team
        member to be added to the team.
    :ivar PaperContentAddMemberDetails paper_content_add_member_details: Added
        users to the membership of a Paper doc or folder.
    :ivar PaperContentAddToFolderDetails paper_content_add_to_folder_details:
        Added Paper doc or folder to a folder.
    :ivar PaperContentArchiveDetails paper_content_archive_details: Archived
        Paper doc or folder.
    :ivar PaperContentCreateDetails paper_content_create_details: Created a
        Paper doc or folder.
    :ivar PaperContentPermanentlyDeleteDetails
        paper_content_permanently_delete_details: Permanently deleted a Paper
        doc or folder.
    :ivar PaperContentRemoveFromFolderDetails
        paper_content_remove_from_folder_details: Removed Paper doc or folder
        from a folder.
    :ivar PaperContentRemoveMemberDetails paper_content_remove_member_details:
        Removed a user from the membership of a Paper doc or folder.
    :ivar PaperContentRenameDetails paper_content_rename_details: Renamed Paper
        doc or folder.
    :ivar PaperContentRestoreDetails paper_content_restore_details: Restored an
        archived Paper doc or folder.
    :ivar PaperDocAddCommentDetails paper_doc_add_comment_details: Added a Paper
        doc comment.
    :ivar PaperDocChangeMemberRoleDetails paper_doc_change_member_role_details:
        Changed the access type of a Paper doc member.
    :ivar PaperDocChangeSharingPolicyDetails
        paper_doc_change_sharing_policy_details: Changed the sharing policy for
        Paper doc.
    :ivar PaperDocChangeSubscriptionDetails
        paper_doc_change_subscription_details: Followed or unfollowed a Paper
        doc.
    :ivar PaperDocDeletedDetails paper_doc_deleted_details: Paper doc archived.
    :ivar PaperDocDeleteCommentDetails paper_doc_delete_comment_details: Deleted
        a Paper doc comment.
    :ivar PaperDocDownloadDetails paper_doc_download_details: Downloaded a Paper
        doc in a particular output format.
    :ivar PaperDocEditDetails paper_doc_edit_details: Edited a Paper doc.
    :ivar PaperDocEditCommentDetails paper_doc_edit_comment_details: Edited a
        Paper doc comment.
    :ivar PaperDocFollowedDetails paper_doc_followed_details: Followed a Paper
        doc.
    :ivar PaperDocMentionDetails paper_doc_mention_details: Mentioned a member
        in a Paper doc.
    :ivar PaperDocRequestAccessDetails paper_doc_request_access_details:
        Requested to be a member on a Paper doc.
    :ivar PaperDocResolveCommentDetails paper_doc_resolve_comment_details: Paper
        doc comment resolved.
    :ivar PaperDocRevertDetails paper_doc_revert_details: Restored a Paper doc
        to previous revision.
    :ivar PaperDocSlackShareDetails paper_doc_slack_share_details: Paper doc
        link shared via slack.
    :ivar PaperDocTeamInviteDetails paper_doc_team_invite_details: Paper doc
        shared with team member.
    :ivar PaperDocTrashedDetails paper_doc_trashed_details: Paper doc trashed.
    :ivar PaperDocUnresolveCommentDetails paper_doc_unresolve_comment_details:
        Unresolved a Paper doc comment.
    :ivar PaperDocUntrashedDetails paper_doc_untrashed_details: Paper doc
        untrashed.
    :ivar PaperDocViewDetails paper_doc_view_details: Viewed Paper doc.
    :ivar PaperFolderChangeSubscriptionDetails
        paper_folder_change_subscription_details: Followed or unfollowed a Paper
        folder.
    :ivar PaperFolderDeletedDetails paper_folder_deleted_details: Paper folder
        archived.
    :ivar PaperFolderFollowedDetails paper_folder_followed_details: Followed a
        Paper folder.
    :ivar PaperFolderTeamInviteDetails paper_folder_team_invite_details: Paper
        folder shared with team member.
    :ivar PasswordChangeDetails password_change_details: Changed password.
    :ivar PasswordResetDetails password_reset_details: Reset password.
    :ivar PasswordResetAllDetails password_reset_all_details: Reset all team
        member passwords.
    :ivar EmmCreateExceptionsReportDetails emm_create_exceptions_report_details:
        EMM excluded users report created.
    :ivar EmmCreateUsageReportDetails emm_create_usage_report_details: EMM
        mobile app usage report created.
    :ivar SmartSyncCreateAdminPrivilegeReportDetails
        smart_sync_create_admin_privilege_report_details: Smart Sync non-admin
        devices report created.
    :ivar TeamActivityCreateReportDetails team_activity_create_report_details:
        Created a team activity report.
    :ivar CollectionShareDetails collection_share_details: Shared an album.
    :ivar NoteAclInviteOnlyDetails note_acl_invite_only_details: Changed a Paper
        document to be invite-only.
    :ivar NoteAclLinkDetails note_acl_link_details: Changed a Paper document to
        be link accessible.
    :ivar NoteAclTeamLinkDetails note_acl_team_link_details: Changed a Paper
        document to be link accessible for the team.
    :ivar NoteSharedDetails note_shared_details: Shared a Paper doc.
    :ivar NoteShareReceiveDetails note_share_receive_details: Shared Paper
        document received.
    :ivar OpenNoteSharedDetails open_note_shared_details: Opened a shared Paper
        doc.
    :ivar SfAddGroupDetails sf_add_group_details: Added the team to a shared
        folder.
    :ivar SfAllowNonMembersToViewSharedLinksDetails
        sf_allow_non_members_to_view_shared_links_details: Allowed non
        collaborators to view links to files in a shared folder.
    :ivar SfInviteGroupDetails sf_invite_group_details: Invited a group to a
        shared folder.
    :ivar SfNestDetails sf_nest_details: Changed parent of shared folder.
    :ivar SfTeamDeclineDetails sf_team_decline_details: Declined a team member's
        invitation to a shared folder.
    :ivar SfTeamGrantAccessDetails sf_team_grant_access_details: Granted access
        to a shared folder.
    :ivar SfTeamInviteDetails sf_team_invite_details: Invited team members to a
        shared folder.
    :ivar SfTeamInviteChangeRoleDetails sf_team_invite_change_role_details:
        Changed a team member's role in a shared folder.
    :ivar SfTeamJoinDetails sf_team_join_details: Joined a team member's shared
        folder.
    :ivar SfTeamJoinFromOobLinkDetails sf_team_join_from_oob_link_details:
        Joined a team member's shared folder from a link.
    :ivar SfTeamUninviteDetails sf_team_uninvite_details: Unshared a folder with
        a team member.
    :ivar SharedContentAddInviteesDetails shared_content_add_invitees_details:
        Sent an email invitation to the membership of a shared file or folder.
    :ivar SharedContentAddLinkExpiryDetails
        shared_content_add_link_expiry_details: Added an expiry to the link for
        the shared file or folder.
    :ivar SharedContentAddLinkPasswordDetails
        shared_content_add_link_password_details: Added a password to the link
        for the shared file or folder.
    :ivar SharedContentAddMemberDetails shared_content_add_member_details: Added
        users and/or groups to the membership of a shared file or folder.
    :ivar SharedContentChangeDownloadsPolicyDetails
        shared_content_change_downloads_policy_details: Changed whether members
        can download the shared file or folder.
    :ivar SharedContentChangeInviteeRoleDetails
        shared_content_change_invitee_role_details: Changed the access type of
        an invitee to a shared file or folder before the invitation was claimed.
    :ivar SharedContentChangeLinkAudienceDetails
        shared_content_change_link_audience_details: Changed the audience of the
        link for a shared file or folder.
    :ivar SharedContentChangeLinkExpiryDetails
        shared_content_change_link_expiry_details: Changed the expiry of the
        link for the shared file or folder.
    :ivar SharedContentChangeLinkPasswordDetails
        shared_content_change_link_password_details: Changed the password on the
        link for the shared file or folder.
    :ivar SharedContentChangeMemberRoleDetails
        shared_content_change_member_role_details: Changed the access type of a
        shared file or folder member.
    :ivar SharedContentChangeViewerInfoPolicyDetails
        shared_content_change_viewer_info_policy_details: Changed whether
        members can see who viewed the shared file or folder.
    :ivar SharedContentClaimInvitationDetails
        shared_content_claim_invitation_details: Claimed membership to a team
        member's shared folder.
    :ivar SharedContentCopyDetails shared_content_copy_details: Copied the
        shared file or folder to own Dropbox.
    :ivar SharedContentDownloadDetails shared_content_download_details:
        Downloaded the shared file or folder.
    :ivar SharedContentRelinquishMembershipDetails
        shared_content_relinquish_membership_details: Left the membership of a
        shared file or folder.
    :ivar SharedContentRemoveInviteeDetails
        shared_content_remove_invitee_details: Removed an invitee from the
        membership of a shared file or folder before it was claimed.
    :ivar SharedContentRemoveLinkExpiryDetails
        shared_content_remove_link_expiry_details: Removed the expiry of the
        link for the shared file or folder.
    :ivar SharedContentRemoveLinkPasswordDetails
        shared_content_remove_link_password_details: Removed the password on the
        link for the shared file or folder.
    :ivar SharedContentRemoveMemberDetails shared_content_remove_member_details:
        Removed a user or a group from the membership of a shared file or
        folder.
    :ivar SharedContentRequestAccessDetails
        shared_content_request_access_details: Requested to be on the membership
        of a shared file or folder.
    :ivar SharedContentUnshareDetails shared_content_unshare_details: Unshared a
        shared file or folder by clearing its membership and turning off its
        link.
    :ivar SharedContentViewDetails shared_content_view_details: Previewed the
        shared file or folder.
    :ivar SharedFolderChangeConfidentialityDetails
        shared_folder_change_confidentiality_details: Set or unset the
        confidential flag on a shared folder.
    :ivar SharedFolderChangeLinkPolicyDetails
        shared_folder_change_link_policy_details: Changed who can access the
        shared folder via a link.
    :ivar SharedFolderChangeMemberManagementPolicyDetails
        shared_folder_change_member_management_policy_details: Changed who can
        manage the membership of a shared folder.
    :ivar SharedFolderChangeMemberPolicyDetails
        shared_folder_change_member_policy_details: Changed who can become a
        member of the shared folder.
    :ivar SharedFolderCreateDetails shared_folder_create_details: Created a
        shared folder.
    :ivar SharedFolderMountDetails shared_folder_mount_details: Added a shared
        folder to own Dropbox.
    :ivar SharedFolderTransferOwnershipDetails
        shared_folder_transfer_ownership_details: Transferred the ownership of a
        shared folder to another member.
    :ivar SharedFolderUnmountDetails shared_folder_unmount_details: Deleted a
        shared folder from Dropbox.
    :ivar SharedNoteOpenedDetails shared_note_opened_details: Shared Paper
        document was opened.
    :ivar ShmodelAppCreateDetails shmodel_app_create_details: Created a link to
        a file using an app.
    :ivar ShmodelCreateDetails shmodel_create_details: Created a new link.
    :ivar ShmodelDisableDetails shmodel_disable_details: Removed a link.
    :ivar ShmodelFbShareDetails shmodel_fb_share_details: Shared a link with
        Facebook users.
    :ivar ShmodelGroupShareDetails shmodel_group_share_details: Shared a link
        with a group.
    :ivar ShmodelRemoveExpirationDetails shmodel_remove_expiration_details:
        Removed the expiration date from a link.
    :ivar ShmodelSetExpirationDetails shmodel_set_expiration_details: Added an
        expiration date to a link.
    :ivar ShmodelTeamCopyDetails shmodel_team_copy_details: Added a team
        member's file/folder to their Dropbox from a link.
    :ivar ShmodelTeamDownloadDetails shmodel_team_download_details: Downloaded a
        team member's file/folder from a link.
    :ivar ShmodelTeamShareDetails shmodel_team_share_details: Shared a link with
        team members.
    :ivar ShmodelTeamViewDetails shmodel_team_view_details: Opened a team
        member's link.
    :ivar ShmodelVisibilityPasswordDetails shmodel_visibility_password_details:
        Password-protected a link.
    :ivar ShmodelVisibilityPublicDetails shmodel_visibility_public_details: Made
        a file/folder visible to anyone with the link.
    :ivar ShmodelVisibilityTeamOnlyDetails shmodel_visibility_team_only_details:
        Made a file/folder visible only to team members with the link.
    :ivar SsoAddCertDetails sso_add_cert_details: Added the X.509 certificate
        for SSO.
    :ivar SsoAddLoginUrlDetails sso_add_login_url_details: Added sign-in URL for
        SSO.
    :ivar SsoAddLogoutUrlDetails sso_add_logout_url_details: Added sign-out URL
        for SSO.
    :ivar SsoChangeCertDetails sso_change_cert_details: Changed the X.509
        certificate for SSO.
    :ivar SsoChangeLoginUrlDetails sso_change_login_url_details: Changed the
        sign-in URL for SSO.
    :ivar SsoChangeLogoutUrlDetails sso_change_logout_url_details: Changed the
        sign-out URL for SSO.
    :ivar SsoChangeSamlIdentityModeDetails
        sso_change_saml_identity_mode_details: Changed the SAML identity mode
        for SSO.
    :ivar SsoRemoveCertDetails sso_remove_cert_details: Removed the X.509
        certificate for SSO.
    :ivar SsoRemoveLoginUrlDetails sso_remove_login_url_details: Removed the
        sign-in URL for SSO.
    :ivar SsoRemoveLogoutUrlDetails sso_remove_logout_url_details: Removed
        single sign-on logout URL.
    :ivar TeamFolderChangeStatusDetails team_folder_change_status_details:
        Changed the archival status of a team folder.
    :ivar TeamFolderCreateDetails team_folder_create_details: Created a new team
        folder in active status.
    :ivar TeamFolderDowngradeDetails team_folder_downgrade_details: Downgraded a
        team folder to a regular shared folder.
    :ivar TeamFolderPermanentlyDeleteDetails
        team_folder_permanently_delete_details: Permanently deleted an archived
        team folder.
    :ivar TeamFolderRenameDetails team_folder_rename_details: Renamed an active
        or archived team folder.
    :ivar AccountCaptureChangePolicyDetails
        account_capture_change_policy_details: Changed the account capture
        policy on a domain belonging to the team.
    :ivar AllowDownloadDisabledDetails allow_download_disabled_details: Disabled
        allow downloads.
    :ivar AllowDownloadEnabledDetails allow_download_enabled_details: Enabled
        allow downloads.
    :ivar DataPlacementRestrictionChangePolicyDetails
        data_placement_restriction_change_policy_details: Set a restriction
        policy regarding the location of data centers where team data resides.
    :ivar DataPlacementRestrictionSatisfyPolicyDetails
        data_placement_restriction_satisfy_policy_details: Satisfied a
        previously set restriction policy regarding the location of data centers
        where team data resides (i.e. all data have been migrated according to
        the restriction placed).
    :ivar DeviceApprovalsChangeDesktopPolicyDetails
        device_approvals_change_desktop_policy_details: Set or removed a limit
        on the number of computers each team member can link to their work
        Dropbox account.
    :ivar DeviceApprovalsChangeMobilePolicyDetails
        device_approvals_change_mobile_policy_details: Set or removed a limit on
        the number of mobiles devices each team member can link to their work
        Dropbox account.
    :ivar DeviceApprovalsChangeOverageActionDetails
        device_approvals_change_overage_action_details: Changed the action taken
        when a team member is already over the limits (e.g when they join the
        team, an admin lowers limits, etc.).
    :ivar DeviceApprovalsChangeUnlinkActionDetails
        device_approvals_change_unlink_action_details: Changed the action taken
        with respect to approval limits when a team member unlinks an approved
        device.
    :ivar EmmAddExceptionDetails emm_add_exception_details: Added an exception
        for one or more team members to optionally use the regular Dropbox app
        when EMM is enabled.
    :ivar EmmChangePolicyDetails emm_change_policy_details: Enabled or disabled
        enterprise mobility management for team members.
    :ivar EmmRemoveExceptionDetails emm_remove_exception_details: Removed an
        exception for one or more team members to optionally use the regular
        Dropbox app when EMM is enabled.
    :ivar ExtendedVersionHistoryChangePolicyDetails
        extended_version_history_change_policy_details: Accepted or opted out of
        extended version history.
    :ivar FileCommentsChangePolicyDetails file_comments_change_policy_details:
        Enabled or disabled commenting on team files.
    :ivar FileRequestsChangePolicyDetails file_requests_change_policy_details:
        Enabled or disabled file requests.
    :ivar FileRequestsEmailsEnabledDetails file_requests_emails_enabled_details:
        Enabled file request emails for everyone.
    :ivar FileRequestsEmailsRestrictedToTeamOnlyDetails
        file_requests_emails_restricted_to_team_only_details: Allowed file
        request emails for the team.
    :ivar GoogleSsoChangePolicyDetails google_sso_change_policy_details: Enabled
        or disabled Google single sign-on for the team.
    :ivar GroupUserManagementChangePolicyDetails
        group_user_management_change_policy_details: Changed who can create
        groups.
    :ivar MemberRequestsChangePolicyDetails
        member_requests_change_policy_details: Changed whether users can find
        the team when not invited.
    :ivar MemberSpaceLimitsAddExceptionDetails
        member_space_limits_add_exception_details: Added an exception for one or
        more team members to bypass space limits imposed by policy.
    :ivar MemberSpaceLimitsChangePolicyDetails
        member_space_limits_change_policy_details: Changed the storage limits
        applied to team members by policy.
    :ivar MemberSpaceLimitsRemoveExceptionDetails
        member_space_limits_remove_exception_details: Removed an exception for
        one or more team members to bypass space limits imposed by policy.
    :ivar MemberSuggestionsChangePolicyDetails
        member_suggestions_change_policy_details: Enabled or disabled the option
        for team members to suggest new members to add to the team.
    :ivar MicrosoftOfficeAddinChangePolicyDetails
        microsoft_office_addin_change_policy_details: Enabled or disabled the
        Microsoft Office add-in, which lets team members save files to Dropbox
        directly from Microsoft Office.
    :ivar NetworkControlChangePolicyDetails
        network_control_change_policy_details: Enabled or disabled network
        control.
    :ivar PaperChangeDeploymentPolicyDetails
        paper_change_deployment_policy_details: Changed whether Dropbox Paper,
        when enabled, is deployed to all teams or to specific members of the
        team.
    :ivar PaperChangeMemberLinkPolicyDetails
        paper_change_member_link_policy_details: Changed whether non team
        members can view Paper documents using a link.
    :ivar PaperChangeMemberPolicyDetails paper_change_member_policy_details:
        Changed whether team members can share Paper documents externally (i.e.
        outside the team), and if so, whether they should be accessible only by
        team members or anyone by default.
    :ivar PaperChangePolicyDetails paper_change_policy_details: Enabled or
        disabled Dropbox Paper for the team.
    :ivar PermanentDeleteChangePolicyDetails
        permanent_delete_change_policy_details: Enabled or disabled the ability
        of team members to permanently delete content.
    :ivar SharingChangeFolderJoinPolicyDetails
        sharing_change_folder_join_policy_details: Changed whether team members
        can join shared folders owned externally (i.e. outside the team).
    :ivar SharingChangeLinkPolicyDetails sharing_change_link_policy_details:
        Changed whether team members can share links externally (i.e. outside
        the team), and if so, whether links should be accessible only by team
        members or anyone by default.
    :ivar SharingChangeMemberPolicyDetails sharing_change_member_policy_details:
        Changed whether team members can share files and folders externally
        (i.e. outside the team).
    :ivar SmartSyncChangePolicyDetails smart_sync_change_policy_details: Changed
        the default Smart Sync policy for team members.
    :ivar SmartSyncNotOptOutDetails smart_sync_not_opt_out_details: Opted team
        into Smart Sync.
    :ivar SmartSyncOptOutDetails smart_sync_opt_out_details: Opted team out of
        Smart Sync.
    :ivar SsoChangePolicyDetails sso_change_policy_details: Change the single
        sign-on policy for the team.
    :ivar TfaChangePolicyDetails tfa_change_policy_details: Change two-step
        verification policy for the team.
    :ivar TwoAccountChangePolicyDetails two_account_change_policy_details:
        Enabled or disabled the option for team members to link a personal
        Dropbox account in addition to their work account to the same computer.
    :ivar WebSessionsChangeFixedLengthPolicyDetails
        web_sessions_change_fixed_length_policy_details: Changed how long team
        members can stay signed in to Dropbox on the web.
    :ivar WebSessionsChangeIdleLengthPolicyDetails
        web_sessions_change_idle_length_policy_details: Changed how long team
        members can be idle while signed in to Dropbox on the web.
    :ivar TeamProfileAddLogoDetails team_profile_add_logo_details: Added a team
        logo to be displayed on shared link headers.
    :ivar TeamProfileChangeDefaultLanguageDetails
        team_profile_change_default_language_details: Changed the default
        language for the team.
    :ivar TeamProfileChangeLogoDetails team_profile_change_logo_details: Changed
        the team logo to be displayed on shared link headers.
    :ivar TeamProfileChangeNameDetails team_profile_change_name_details: Changed
        the team name.
    :ivar TeamProfileRemoveLogoDetails team_profile_remove_logo_details: Removed
        the team logo to be displayed on shared link headers.
    :ivar TfaAddBackupPhoneDetails tfa_add_backup_phone_details: Added a backup
        phone for two-step verification.
    :ivar TfaAddSecurityKeyDetails tfa_add_security_key_details: Added a
        security key for two-step verification.
    :ivar TfaChangeBackupPhoneDetails tfa_change_backup_phone_details: Changed
        the backup phone for two-step verification.
    :ivar TfaChangeStatusDetails tfa_change_status_details: Enabled, disabled or
        changed the configuration for two-step verification.
    :ivar TfaRemoveBackupPhoneDetails tfa_remove_backup_phone_details: Removed
        the backup phone for two-step verification.
    :ivar TfaRemoveSecurityKeyDetails tfa_remove_security_key_details: Removed a
        security key for two-step verification.
    :ivar TfaResetDetails tfa_reset_details: Reset two-step verification for
        team member.
    :ivar MissingDetails 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 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_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_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_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 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 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 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 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 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 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 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_like_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_like_comment_details`` tag with value ``val``.

        :param FileLikeCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_like_comment_details', val)

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

        :param FileResolveCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_resolve_comment_details', val)

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

        :param FileUnlikeCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_unlike_comment_details', val)

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

        :param FileUnresolveCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_unresolve_comment_details', val)

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

        :param DeviceChangeIpDesktopDetails val:
        :rtype: EventDetails
        """
        return cls('device_change_ip_desktop_details', val)

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

        :param DeviceChangeIpMobileDetails val:
        :rtype: EventDetails
        """
        return cls('device_change_ip_mobile_details', val)

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

        :param DeviceChangeIpWebDetails val:
        :rtype: EventDetails
        """
        return cls('device_change_ip_web_details', val)

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

        :param DeviceDeleteOnUnlinkFailDetails val:
        :rtype: EventDetails
        """
        return cls('device_delete_on_unlink_fail_details', val)

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

        :param DeviceDeleteOnUnlinkSuccessDetails val:
        :rtype: EventDetails
        """
        return cls('device_delete_on_unlink_success_details', val)

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

        :param DeviceLinkFailDetails val:
        :rtype: EventDetails
        """
        return cls('device_link_fail_details', val)

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

        :param DeviceLinkSuccessDetails val:
        :rtype: EventDetails
        """
        return cls('device_link_success_details', val)

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

        :param DeviceManagementDisabledDetails val:
        :rtype: EventDetails
        """
        return cls('device_management_disabled_details', val)

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

        :param DeviceManagementEnabledDetails val:
        :rtype: EventDetails
        """
        return cls('device_management_enabled_details', val)

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

        :param DeviceUnlinkDetails val:
        :rtype: EventDetails
        """
        return cls('device_unlink_details', val)

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

        :param EmmRefreshAuthTokenDetails val:
        :rtype: EventDetails
        """
        return cls('emm_refresh_auth_token_details', val)

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

        :param AccountCaptureChangeAvailabilityDetails val:
        :rtype: EventDetails
        """
        return cls('account_capture_change_availability_details', val)

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

        :param AccountCaptureMigrateAccountDetails val:
        :rtype: EventDetails
        """
        return cls('account_capture_migrate_account_details', val)

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

        :param AccountCaptureRelinquishAccountDetails val:
        :rtype: EventDetails
        """
        return cls('account_capture_relinquish_account_details', val)

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

        :param DisabledDomainInvitesDetails val:
        :rtype: EventDetails
        """
        return cls('disabled_domain_invites_details', val)

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

        :param DomainInvitesApproveRequestToJoinTeamDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_approve_request_to_join_team_details', val)

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

        :param DomainInvitesDeclineRequestToJoinTeamDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_decline_request_to_join_team_details', val)

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

        :param DomainInvitesEmailExistingUsersDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_email_existing_users_details', val)

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

        :param DomainInvitesRequestToJoinTeamDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_request_to_join_team_details', val)

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

        :param DomainInvitesSetInviteNewUserPrefToNoDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_set_invite_new_user_pref_to_no_details', val)

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

        :param DomainInvitesSetInviteNewUserPrefToYesDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_set_invite_new_user_pref_to_yes_details', val)

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

        :param DomainVerificationAddDomainFailDetails val:
        :rtype: EventDetails
        """
        return cls('domain_verification_add_domain_fail_details', val)

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

        :param DomainVerificationAddDomainSuccessDetails val:
        :rtype: EventDetails
        """
        return cls('domain_verification_add_domain_success_details', val)

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

        :param DomainVerificationRemoveDomainDetails val:
        :rtype: EventDetails
        """
        return cls('domain_verification_remove_domain_details', val)

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

        :param EnabledDomainInvitesDetails val:
        :rtype: EventDetails
        """
        return cls('enabled_domain_invites_details', val)

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

        :param CreateFolderDetails val:
        :rtype: EventDetails
        """
        return cls('create_folder_details', val)

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

        :param FileAddDetails val:
        :rtype: EventDetails
        """
        return cls('file_add_details', val)

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

        :param FileCopyDetails val:
        :rtype: EventDetails
        """
        return cls('file_copy_details', val)

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

        :param FileDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('file_delete_details', val)

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

        :param FileDownloadDetails val:
        :rtype: EventDetails
        """
        return cls('file_download_details', val)

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

        :param FileEditDetails val:
        :rtype: EventDetails
        """
        return cls('file_edit_details', val)

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

        :param FileGetCopyReferenceDetails val:
        :rtype: EventDetails
        """
        return cls('file_get_copy_reference_details', val)

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

        :param FileMoveDetails val:
        :rtype: EventDetails
        """
        return cls('file_move_details', val)

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

        :param FilePermanentlyDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('file_permanently_delete_details', val)

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

        :param FilePreviewDetails val:
        :rtype: EventDetails
        """
        return cls('file_preview_details', val)

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

        :param FileRenameDetails val:
        :rtype: EventDetails
        """
        return cls('file_rename_details', val)

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

        :param FileRestoreDetails val:
        :rtype: EventDetails
        """
        return cls('file_restore_details', val)

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

        :param FileRevertDetails val:
        :rtype: EventDetails
        """
        return cls('file_revert_details', val)

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

        :param FileRollbackChangesDetails val:
        :rtype: EventDetails
        """
        return cls('file_rollback_changes_details', val)

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

        :param FileSaveCopyReferenceDetails val:
        :rtype: EventDetails
        """
        return cls('file_save_copy_reference_details', val)

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

        :param FileRequestAddDeadlineDetails val:
        :rtype: EventDetails
        """
        return cls('file_request_add_deadline_details', val)

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

        :param FileRequestChangeFolderDetails val:
        :rtype: EventDetails
        """
        return cls('file_request_change_folder_details', val)

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

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

        :param FileRequestRemoveDeadlineDetails val:
        :rtype: EventDetails
        """
        return cls('file_request_remove_deadline_details', val)

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

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

        :param GroupMovedDetails val:
        :rtype: EventDetails
        """
        return cls('group_moved_details', val)

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

        :param GroupRemoveExternalIdDetails val:
        :rtype: EventDetails
        """
        return cls('group_remove_external_id_details', val)

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

        :param GroupRemoveMemberDetails val:
        :rtype: EventDetails
        """
        return cls('group_remove_member_details', val)

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

        :param GroupRenameDetails val:
        :rtype: EventDetails
        """
        return cls('group_rename_details', val)

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

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

        :param PasswordLoginFailDetails val:
        :rtype: EventDetails
        """
        return cls('password_login_fail_details', val)

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

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

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

        :param CollectionShareDetails val:
        :rtype: EventDetails
        """
        return cls('collection_share_details', val)

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

        :param NoteAclInviteOnlyDetails val:
        :rtype: EventDetails
        """
        return cls('note_acl_invite_only_details', val)

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

        :param NoteAclLinkDetails val:
        :rtype: EventDetails
        """
        return cls('note_acl_link_details', val)

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

        :param NoteAclTeamLinkDetails val:
        :rtype: EventDetails
        """
        return cls('note_acl_team_link_details', val)

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

        :param NoteSharedDetails val:
        :rtype: EventDetails
        """
        return cls('note_shared_details', val)

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

        :param NoteShareReceiveDetails val:
        :rtype: EventDetails
        """
        return cls('note_share_receive_details', val)

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

        :param OpenNoteSharedDetails val:
        :rtype: EventDetails
        """
        return cls('open_note_shared_details', val)

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

        :param SfAddGroupDetails val:
        :rtype: EventDetails
        """
        return cls('sf_add_group_details', val)

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

        :param SfAllowNonMembersToViewSharedLinksDetails val:
        :rtype: EventDetails
        """
        return cls('sf_allow_non_members_to_view_shared_links_details', val)

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

        :param SfNestDetails val:
        :rtype: EventDetails
        """
        return cls('sf_nest_details', val)

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

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

        :param SharedContentRemoveInviteeDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_remove_invitee_details', val)

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

        :param SharedContentRemoveLinkExpiryDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_remove_link_expiry_details', val)

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

        :param SharedContentRemoveLinkPasswordDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_remove_link_password_details', val)

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

        :param SharedContentRemoveMemberDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_remove_member_details', val)

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

        :param SharedContentRequestAccessDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_request_access_details', val)

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

        :param SharedContentUnshareDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_unshare_details', val)

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

        :param SharedContentViewDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_view_details', val)

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

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

        :param SharedFolderChangeMemberManagementPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_change_member_management_policy_details', val)

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

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

        :param ShmodelAppCreateDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_app_create_details', val)

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

        :param ShmodelCreateDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_create_details', val)

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

        :param ShmodelDisableDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_disable_details', val)

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

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

        :param ShmodelRemoveExpirationDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_remove_expiration_details', val)

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

        :param ShmodelSetExpirationDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_set_expiration_details', val)

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

        :param ShmodelTeamCopyDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_team_copy_details', val)

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

        :param ShmodelTeamDownloadDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_team_download_details', val)

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

        :param ShmodelTeamShareDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_team_share_details', val)

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

        :param ShmodelTeamViewDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_team_view_details', val)

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

        :param ShmodelVisibilityPasswordDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_visibility_password_details', val)

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

        :param ShmodelVisibilityPublicDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_visibility_public_details', val)

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

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

        :param DataPlacementRestrictionChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('data_placement_restriction_change_policy_details', val)

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

        :param DataPlacementRestrictionSatisfyPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('data_placement_restriction_satisfy_policy_details', val)

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

        :param DeviceApprovalsChangeDesktopPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('device_approvals_change_desktop_policy_details', val)

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

        :param DeviceApprovalsChangeMobilePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('device_approvals_change_mobile_policy_details', val)

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

        :param DeviceApprovalsChangeOverageActionDetails val:
        :rtype: EventDetails
        """
        return cls('device_approvals_change_overage_action_details', val)

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

        :param DeviceApprovalsChangeUnlinkActionDetails val:
        :rtype: EventDetails
        """
        return cls('device_approvals_change_unlink_action_details', val)

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

        :param EmmAddExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('emm_add_exception_details', val)

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

        :param EmmChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('emm_change_policy_details', val)

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

        :param EmmRemoveExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('emm_remove_exception_details', val)

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

        :param ExtendedVersionHistoryChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('extended_version_history_change_policy_details', val)

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

        :param FileCommentsChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('file_comments_change_policy_details', val)

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

        :param FileRequestsChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('file_requests_change_policy_details', val)

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

        :param FileRequestsEmailsEnabledDetails val:
        :rtype: EventDetails
        """
        return cls('file_requests_emails_enabled_details', val)

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

        :param FileRequestsEmailsRestrictedToTeamOnlyDetails val:
        :rtype: EventDetails
        """
        return cls('file_requests_emails_restricted_to_team_only_details', val)

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

        :param GoogleSsoChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('google_sso_change_policy_details', val)

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

        :param GroupUserManagementChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('group_user_management_change_policy_details', val)

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

        :param MemberRequestsChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('member_requests_change_policy_details', val)

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

        :param MemberSpaceLimitsAddExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_add_exception_details', val)

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

        :param TfaChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_change_policy_details', val)

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

        :param TwoAccountChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('two_account_change_policy_details', val)

    @classmethod
    def 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_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 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_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_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_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_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_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_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_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_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_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_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_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_like_comment_details(self):
        """
        Check if the union tag is ``file_like_comment_details``.

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

    def is_file_resolve_comment_details(self):
        """
        Check if the union tag is ``file_resolve_comment_details``.

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

    def is_file_unlike_comment_details(self):
        """
        Check if the union tag is ``file_unlike_comment_details``.

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

    def is_file_unresolve_comment_details(self):
        """
        Check if the union tag is ``file_unresolve_comment_details``.

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

    def is_device_change_ip_desktop_details(self):
        """
        Check if the union tag is ``device_change_ip_desktop_details``.

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

    def is_device_change_ip_mobile_details(self):
        """
        Check if the union tag is ``device_change_ip_mobile_details``.

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

    def is_device_change_ip_web_details(self):
        """
        Check if the union tag is ``device_change_ip_web_details``.

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

    def is_device_delete_on_unlink_fail_details(self):
        """
        Check if the union tag is ``device_delete_on_unlink_fail_details``.

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

    def is_device_delete_on_unlink_success_details(self):
        """
        Check if the union tag is ``device_delete_on_unlink_success_details``.

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

    def is_device_link_fail_details(self):
        """
        Check if the union tag is ``device_link_fail_details``.

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

    def is_device_link_success_details(self):
        """
        Check if the union tag is ``device_link_success_details``.

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

    def is_device_management_disabled_details(self):
        """
        Check if the union tag is ``device_management_disabled_details``.

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

    def is_device_management_enabled_details(self):
        """
        Check if the union tag is ``device_management_enabled_details``.

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

    def is_device_unlink_details(self):
        """
        Check if the union tag is ``device_unlink_details``.

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

    def is_emm_refresh_auth_token_details(self):
        """
        Check if the union tag is ``emm_refresh_auth_token_details``.

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

    def is_account_capture_change_availability_details(self):
        """
        Check if the union tag is ``account_capture_change_availability_details``.

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

    def is_account_capture_migrate_account_details(self):
        """
        Check if the union tag is ``account_capture_migrate_account_details``.

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

    def is_account_capture_relinquish_account_details(self):
        """
        Check if the union tag is ``account_capture_relinquish_account_details``.

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

    def is_disabled_domain_invites_details(self):
        """
        Check if the union tag is ``disabled_domain_invites_details``.

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

    def is_domain_invites_approve_request_to_join_team_details(self):
        """
        Check if the union tag is ``domain_invites_approve_request_to_join_team_details``.

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

    def is_domain_invites_decline_request_to_join_team_details(self):
        """
        Check if the union tag is ``domain_invites_decline_request_to_join_team_details``.

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

    def is_domain_invites_email_existing_users_details(self):
        """
        Check if the union tag is ``domain_invites_email_existing_users_details``.

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

    def is_domain_invites_request_to_join_team_details(self):
        """
        Check if the union tag is ``domain_invites_request_to_join_team_details``.

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

    def is_domain_invites_set_invite_new_user_pref_to_no_details(self):
        """
        Check if the union tag is ``domain_invites_set_invite_new_user_pref_to_no_details``.

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

    def is_domain_invites_set_invite_new_user_pref_to_yes_details(self):
        """
        Check if the union tag is ``domain_invites_set_invite_new_user_pref_to_yes_details``.

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

    def is_domain_verification_add_domain_fail_details(self):
        """
        Check if the union tag is ``domain_verification_add_domain_fail_details``.

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

    def is_domain_verification_add_domain_success_details(self):
        """
        Check if the union tag is ``domain_verification_add_domain_success_details``.

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

    def is_domain_verification_remove_domain_details(self):
        """
        Check if the union tag is ``domain_verification_remove_domain_details``.

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

    def is_enabled_domain_invites_details(self):
        """
        Check if the union tag is ``enabled_domain_invites_details``.

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

    def is_create_folder_details(self):
        """
        Check if the union tag is ``create_folder_details``.

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

    def is_file_add_details(self):
        """
        Check if the union tag is ``file_add_details``.

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

    def is_file_copy_details(self):
        """
        Check if the union tag is ``file_copy_details``.

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

    def is_file_delete_details(self):
        """
        Check if the union tag is ``file_delete_details``.

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

    def is_file_download_details(self):
        """
        Check if the union tag is ``file_download_details``.

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

    def is_file_edit_details(self):
        """
        Check if the union tag is ``file_edit_details``.

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

    def is_file_get_copy_reference_details(self):
        """
        Check if the union tag is ``file_get_copy_reference_details``.

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

    def is_file_move_details(self):
        """
        Check if the union tag is ``file_move_details``.

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

    def is_file_permanently_delete_details(self):
        """
        Check if the union tag is ``file_permanently_delete_details``.

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

    def is_file_preview_details(self):
        """
        Check if the union tag is ``file_preview_details``.

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

    def is_file_rename_details(self):
        """
        Check if the union tag is ``file_rename_details``.

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

    def is_file_restore_details(self):
        """
        Check if the union tag is ``file_restore_details``.

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

    def is_file_revert_details(self):
        """
        Check if the union tag is ``file_revert_details``.

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

    def is_file_rollback_changes_details(self):
        """
        Check if the union tag is ``file_rollback_changes_details``.

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

    def is_file_save_copy_reference_details(self):
        """
        Check if the union tag is ``file_save_copy_reference_details``.

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

    def is_file_request_add_deadline_details(self):
        """
        Check if the union tag is ``file_request_add_deadline_details``.

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

    def is_file_request_change_folder_details(self):
        """
        Check if the union tag is ``file_request_change_folder_details``.

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

    def is_file_request_change_title_details(self):
        """
        Check if the union tag is ``file_request_change_title_details``.

        :rtype: bool
        """
        return self._tag == 'file_request_change_title_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_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_file_request_remove_deadline_details(self):
        """
        Check if the union tag is ``file_request_remove_deadline_details``.

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

    def is_file_request_send_details(self):
        """
        Check if the union tag is ``file_request_send_details``.

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

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

    def is_group_remove_external_id_details(self):
        """
        Check if the union tag is ``group_remove_external_id_details``.

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

    def is_group_remove_member_details(self):
        """
        Check if the union tag is ``group_remove_member_details``.

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

    def is_group_rename_details(self):
        """
        Check if the union tag is ``group_rename_details``.

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

    def is_emm_login_success_details(self):
        """
        Check if the union tag is ``emm_login_success_details``.

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

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

    def is_password_login_success_details(self):
        """
        Check if the union tag is ``password_login_success_details``.

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

        :rtype: bool
        """
        return self._tag == 'sso_login_fail_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_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_suggest_details(self):
        """
        Check if the union tag is ``member_suggest_details``.

        :rtype: bool
        """
        return self._tag == 'member_suggest_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_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_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_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_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_collection_share_details(self):
        """
        Check if the union tag is ``collection_share_details``.

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

    def is_note_acl_invite_only_details(self):
        """
        Check if the union tag is ``note_acl_invite_only_details``.

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

    def is_note_acl_link_details(self):
        """
        Check if the union tag is ``note_acl_link_details``.

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

    def is_note_acl_team_link_details(self):
        """
        Check if the union tag is ``note_acl_team_link_details``.

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

    def is_note_shared_details(self):
        """
        Check if the union tag is ``note_shared_details``.

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

    def is_note_share_receive_details(self):
        """
        Check if the union tag is ``note_share_receive_details``.

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

    def is_open_note_shared_details(self):
        """
        Check if the union tag is ``open_note_shared_details``.

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

    def is_sf_add_group_details(self):
        """
        Check if the union tag is ``sf_add_group_details``.

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

    def is_sf_allow_non_members_to_view_shared_links_details(self):
        """
        Check if the union tag is ``sf_allow_non_members_to_view_shared_links_details``.

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

    def is_sf_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_nest_details(self):
        """
        Check if the union tag is ``sf_nest_details``.

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

    def is_sf_team_decline_details(self):
        """
        Check if the union tag is ``sf_team_decline_details``.

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

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

    def is_shared_content_remove_link_expiry_details(self):
        """
        Check if the union tag is ``shared_content_remove_link_expiry_details``.

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

    def is_shared_content_remove_link_password_details(self):
        """
        Check if the union tag is ``shared_content_remove_link_password_details``.

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

    def is_shared_content_remove_member_details(self):
        """
        Check if the union tag is ``shared_content_remove_member_details``.

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

    def is_shared_content_request_access_details(self):
        """
        Check if the union tag is ``shared_content_request_access_details``.

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

    def is_shared_content_unshare_details(self):
        """
        Check if the union tag is ``shared_content_unshare_details``.

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

    def is_shared_content_view_details(self):
        """
        Check if the union tag is ``shared_content_view_details``.

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

    def is_shared_folder_change_confidentiality_details(self):
        """
        Check if the union tag is ``shared_folder_change_confidentiality_details``.

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

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

    def is_shared_folder_change_member_policy_details(self):
        """
        Check if the union tag is ``shared_folder_change_member_policy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_member_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_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_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_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_app_create_details(self):
        """
        Check if the union tag is ``shmodel_app_create_details``.

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

    def is_shmodel_create_details(self):
        """
        Check if the union tag is ``shmodel_create_details``.

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

    def is_shmodel_disable_details(self):
        """
        Check if the union tag is ``shmodel_disable_details``.

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

    def is_shmodel_fb_share_details(self):
        """
        Check if the union tag is ``shmodel_fb_share_details``.

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

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

    def is_shmodel_set_expiration_details(self):
        """
        Check if the union tag is ``shmodel_set_expiration_details``.

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

    def is_shmodel_team_copy_details(self):
        """
        Check if the union tag is ``shmodel_team_copy_details``.

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

    def is_shmodel_team_download_details(self):
        """
        Check if the union tag is ``shmodel_team_download_details``.

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

    def is_shmodel_team_share_details(self):
        """
        Check if the union tag is ``shmodel_team_share_details``.

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

    def is_shmodel_team_view_details(self):
        """
        Check if the union tag is ``shmodel_team_view_details``.

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

    def is_shmodel_visibility_password_details(self):
        """
        Check if the union tag is ``shmodel_visibility_password_details``.

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

    def is_shmodel_visibility_public_details(self):
        """
        Check if the union tag is ``shmodel_visibility_public_details``.

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

    def is_shmodel_visibility_team_only_details(self):
        """
        Check if the union tag is ``shmodel_visibility_team_only_details``.

        :rtype: bool
        """
        return self._tag == 'shmodel_visibility_team_only_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_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_data_placement_restriction_change_policy_details(self):
        """
        Check if the union tag is ``data_placement_restriction_change_policy_details``.

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

    def is_data_placement_restriction_satisfy_policy_details(self):
        """
        Check if the union tag is ``data_placement_restriction_satisfy_policy_details``.

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

    def is_device_approvals_change_desktop_policy_details(self):
        """
        Check if the union tag is ``device_approvals_change_desktop_policy_details``.

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

    def is_device_approvals_change_mobile_policy_details(self):
        """
        Check if the union tag is ``device_approvals_change_mobile_policy_details``.

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

    def is_device_approvals_change_overage_action_details(self):
        """
        Check if the union tag is ``device_approvals_change_overage_action_details``.

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

    def is_device_approvals_change_unlink_action_details(self):
        """
        Check if the union tag is ``device_approvals_change_unlink_action_details``.

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

    def is_emm_add_exception_details(self):
        """
        Check if the union tag is ``emm_add_exception_details``.

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

    def is_emm_change_policy_details(self):
        """
        Check if the union tag is ``emm_change_policy_details``.

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

    def is_emm_remove_exception_details(self):
        """
        Check if the union tag is ``emm_remove_exception_details``.

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

    def is_extended_version_history_change_policy_details(self):
        """
        Check if the union tag is ``extended_version_history_change_policy_details``.

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

    def is_file_comments_change_policy_details(self):
        """
        Check if the union tag is ``file_comments_change_policy_details``.

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

    def is_file_requests_change_policy_details(self):
        """
        Check if the union tag is ``file_requests_change_policy_details``.

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

    def is_file_requests_emails_enabled_details(self):
        """
        Check if the union tag is ``file_requests_emails_enabled_details``.

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

    def is_file_requests_emails_restricted_to_team_only_details(self):
        """
        Check if the union tag is ``file_requests_emails_restricted_to_team_only_details``.

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

    def is_google_sso_change_policy_details(self):
        """
        Check if the union tag is ``google_sso_change_policy_details``.

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

    def is_group_user_management_change_policy_details(self):
        """
        Check if the union tag is ``group_user_management_change_policy_details``.

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

    def is_member_requests_change_policy_details(self):
        """
        Check if the union tag is ``member_requests_change_policy_details``.

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

    def is_member_space_limits_add_exception_details(self):
        """
        Check if the union tag is ``member_space_limits_add_exception_details``.

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

    def is_member_space_limits_change_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_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_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_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_tfa_change_policy_details(self):
        """
        Check if the union tag is ``tfa_change_policy_details``.

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

    def is_two_account_change_policy_details(self):
        """
        Check if the union tag is ``two_account_change_policy_details``.

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

    def is_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_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_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_member_change_membership_type_details(self):
        """
        Changed the membership type (limited vs full) for team member.

        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_permanently_delete_account_contents_details(self):
        """
        Permanently deleted contents of a removed team member account.

        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_space_limits_change_status_details(self):
        """
        Changed the status with respect to whether the team member is under or
        over storage quota specified by policy.

        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_transfer_account_contents_details(self):
        """
        Transferred contents of a removed team member account to another member.

        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_paper_admin_export_start_details(self):
        """
        Exported all Paper documents in the team.

        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_paper_enabled_users_group_addition_details(self):
        """
        Users added to Paper enabled users list.

        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):
        """
        Users removed from Paper enabled users list.

        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_paper_external_view_allow_details(self):
        """
        Paper external sharing policy changed: anyone.

        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):
        """
        Paper external sharing policy changed: default team.

        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):
        """
        Paper external sharing policy changed: team-only.

        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_sf_external_invite_warn_details(self):
        """
        Admin settings: team members see a warning before sharing folders
        outside the team (DEPRECATED FEATURE).

        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_team_merge_from_details(self):
        """
        Merged another team into this team.

        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):
        """
        Merged this team into another team.

        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_app_link_team_details(self):
        """
        Linked an app for team.

        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):
        """
        Linked an app for team member.

        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):
        """
        Unlinked an app for team.

        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):
        """
        Unlinked an app for team member.

        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_file_add_comment_details(self):
        """
        Added a file comment.

        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):
        """
        Subscribed to or unsubscribed from comment notifications for file.

        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):
        """
        Deleted a file comment.

        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_like_comment_details(self):
        """
        Liked a file comment.

        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):
        """
        Resolved a file comment.

        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):
        """
        Unliked a file comment.

        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):
        """
        Unresolved a file comment.

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

        :rtype: FileUnresolveCommentDetails
        """
        if not self.is_file_unresolve_comment_details():
            raise AttributeError("tag 'file_unresolve_comment_details' not set")
        return self._value

    def get_device_change_ip_desktop_details(self):
        """
        IP address associated with active desktop session changed.

        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):
        """
        IP address associated with active mobile session changed.

        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):
        """
        IP address associated with active Web session changed.

        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):
        """
        Failed to delete all files from an unlinked device.

        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):
        """
        Deleted all files from an unlinked device.

        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):
        """
        Failed to link a device.

        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):
        """
        Linked a device.

        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):
        """
        Disable Device Management.

        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):
        """
        Enable Device Management.

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

        :rtype: DeviceManagementEnabledDetails
        """
        if not self.is_device_management_enabled_details():
            raise AttributeError("tag 'device_management_enabled_details' not set")
        return self._value

    def get_device_unlink_details(self):
        """
        Disconnected a device.

        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):
        """
        Refreshed the auth token used for setting up enterprise mobility
        management.

        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):
        """
        Granted or revoked the option to enable account capture on domains
        belonging to the team.

        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):
        """
        Account captured user migrated their account to the team.

        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_relinquish_account_details(self):
        """
        Account captured user relinquished their account by changing the email
        address associated with it.

        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):
        """
        Disabled domain invites.

        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):
        """
        Approved a member's request to join the team.

        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):
        """
        Declined a user's request to join the team.

        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):
        """
        Sent domain invites to existing domain accounts.

        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):
        """
        Asked to join the team.

        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):
        """
        Turned off u201cAutomatically invite new usersu201d.

        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):
        """
        Turned on u201cAutomatically invite new usersu201d.

        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):
        """
        Failed to verify a domain belonging to the team.

        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):
        """
        Verified a domain belonging to the team.

        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):
        """
        Removed a domain from the list of verified domains belonging to the
        team.

        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):
        """
        Enabled domain invites.

        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):
        """
        Created folders.

        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):
        """
        Added files and/or folders.

        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):
        """
        Copied files and/or folders.

        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):
        """
        Deleted files and/or folders.

        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):
        """
        Downloaded files and/or folders.

        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):
        """
        Edited files.

        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):
        """
        Create a copy reference to a file or folder.

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

        :rtype: FileGetCopyReferenceDetails
        """
        if not self.is_file_get_copy_reference_details():
            raise AttributeError("tag 'file_get_copy_reference_details' not set")
        return self._value

    def get_file_move_details(self):
        """
        Moved files and/or folders.

        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):
        """
        Permanently deleted files and/or folders.

        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):
        """
        Previewed files and/or folders.

        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):
        """
        Renamed files and/or folders.

        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):
        """
        Restored deleted files and/or folders.

        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):
        """
        Reverted files to a previous version.

        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):
        """
        Rolled back file change location changes.

        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):
        """
        Save a file or folder using a copy reference.

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

        :rtype: FileSaveCopyReferenceDetails
        """
        if not self.is_file_save_copy_reference_details():
            raise AttributeError("tag 'file_save_copy_reference_details' not set")
        return self._value

    def get_file_request_add_deadline_details(self):
        """
        Added a deadline to a file request.

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

        :rtype: FileRequestAddDeadlineDetails
        """
        if not self.is_file_request_add_deadline_details():
            raise AttributeError("tag 'file_request_add_deadline_details' not set")
        return self._value

    def get_file_request_change_folder_details(self):
        """
        Changed the file request folder.

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

        :rtype: FileRequestChangeFolderDetails
        """
        if not self.is_file_request_change_folder_details():
            raise AttributeError("tag 'file_request_change_folder_details' not set")
        return self._value

    def get_file_request_change_title_details(self):
        """
        Change the file request title.

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

        :rtype: FileRequestChangeTitleDetails
        """
        if not self.is_file_request_change_title_details():
            raise AttributeError("tag 'file_request_change_title_details' not set")
        return self._value

    def get_file_request_close_details(self):
        """
        Closed a file request.

        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):
        """
        Created a file request.

        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_receive_file_details(self):
        """
        Received files for a file request.

        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_file_request_remove_deadline_details(self):
        """
        Removed the file request deadline.

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

        :rtype: FileRequestRemoveDeadlineDetails
        """
        if not self.is_file_request_remove_deadline_details():
            raise AttributeError("tag 'file_request_remove_deadline_details' not set")
        return self._value

    def get_file_request_send_details(self):
        """
        Sent file request to users via email.

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

        :rtype: FileRequestSendDetails
        """
        if not self.is_file_request_send_details():
            raise AttributeError("tag 'file_request_send_details' not set")
        return self._value

    def get_group_add_external_id_details(self):
        """
        Added an external ID for group.

        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):
        """
        Added team members to a group.

        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):
        """
        Changed the external ID for group.

        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):
        """
        Changed group management type.

        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):
        """
        Changed the manager permissions belonging to a group member.

        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):
        """
        Created a group.

        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):
        """
        Deleted a group.

        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_moved_details(self):
        """
        Moved a group.

        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):
        """
        Removed the external ID for group.

        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):
        """
        Removed team members from a group.

        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):
        """
        Renamed a group.

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

        :rtype: GroupRenameDetails
        """
        if not self.is_group_rename_details():
            raise AttributeError("tag 'group_rename_details' not set")
        return self._value

    def get_emm_login_success_details(self):
        """
        Signed in using the Dropbox EMM app.

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

        :rtype: EmmLoginSuccessDetails
        """
        if not self.is_emm_login_success_details():
            raise AttributeError("tag 'emm_login_success_details' not set")
        return self._value

    def get_logout_details(self):
        """
        Signed out.

        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_password_login_fail_details(self):
        """
        Failed to sign in using a password.

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

        :rtype: PasswordLoginFailDetails
        """
        if not self.is_password_login_fail_details():
            raise AttributeError("tag 'password_login_fail_details' not set")
        return self._value

    def get_password_login_success_details(self):
        """
        Signed in using a password.

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

        :rtype: PasswordLoginSuccessDetails
        """
        if not self.is_password_login_success_details():
            raise AttributeError("tag 'password_login_success_details' not set")
        return self._value

    def get_reseller_support_session_end_details(self):
        """
        Ended reseller support session.

        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):
        """
        Started reseller support session.

        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):
        """
        Ended admin sign-in-as session.

        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):
        """
        Started admin sign-in-as session.

        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_login_fail_details(self):
        """
        Failed to sign in using SSO.

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

        :rtype: SsoLoginFailDetails
        """
        if not self.is_sso_login_fail_details():
            raise AttributeError("tag 'sso_login_fail_details' not set")
        return self._value

    def get_member_add_name_details(self):
        """
        Set team member name when joining team.

        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):
        """
        Change the admin role belonging to team member.

        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):
        """
        Changed team member email address.

        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_name_details(self):
        """
        Changed team member name.

        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):
        """
        Changed the membership status of a team member.

        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_suggest_details(self):
        """
        Suggested a new team member to be added to the team.

        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_paper_content_add_member_details(self):
        """
        Added users to the membership of a Paper doc or folder.

        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):
        """
        Added Paper doc or folder to a folder.

        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):
        """
        Archived Paper doc or folder.

        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):
        """
        Created a Paper doc or folder.

        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):
        """
        Permanently deleted a Paper doc or folder.

        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):
        """
        Removed Paper doc or folder from a folder.

        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):
        """
        Removed a user from the membership of a Paper doc or folder.

        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):
        """
        Renamed Paper doc or folder.

        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):
        """
        Restored an archived Paper doc or folder.

        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):
        """
        Added a Paper doc comment.

        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):
        """
        Changed the access type of a Paper doc member.

        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):
        """
        Changed the sharing policy for Paper doc.

        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):
        """
        Followed or unfollowed a Paper doc.

        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):
        """
        Paper doc archived.

        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):
        """
        Deleted a Paper doc comment.

        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):
        """
        Downloaded a Paper doc in a particular output format.

        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):
        """
        Edited a Paper doc.

        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):
        """
        Edited a Paper doc comment.

        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):
        """
        Followed a Paper doc.

        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):
        """
        Mentioned a member in a Paper doc.

        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_request_access_details(self):
        """
        Requested to be a member on a Paper doc.

        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):
        """
        Paper doc comment resolved.

        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):
        """
        Restored a Paper doc to previous revision.

        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):
        """
        Paper doc link shared via slack.

        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):
        """
        Paper doc shared with team member.

        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):
        """
        Paper doc trashed.

        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):
        """
        Unresolved a Paper doc comment.

        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):
        """
        Paper doc untrashed.

        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):
        """
        Viewed Paper doc.

        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_folder_change_subscription_details(self):
        """
        Followed or unfollowed a Paper folder.

        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):
        """
        Paper folder archived.

        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):
        """
        Followed a Paper folder.

        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):
        """
        Paper folder shared with team member.

        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_password_change_details(self):
        """
        Changed password.

        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):
        """
        Reset password.

        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):
        """
        Reset all team member passwords.

        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):
        """
        EMM excluded users report created.

        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):
        """
        EMM mobile app usage report created.

        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_smart_sync_create_admin_privilege_report_details(self):
        """
        Smart Sync non-admin devices report created.

        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):
        """
        Created a team activity report.

        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_collection_share_details(self):
        """
        Shared an album.

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

        :rtype: CollectionShareDetails
        """
        if not self.is_collection_share_details():
            raise AttributeError("tag 'collection_share_details' not set")
        return self._value

    def get_note_acl_invite_only_details(self):
        """
        Changed a Paper document to be invite-only.

        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):
        """
        Changed a Paper document to be link accessible.

        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):
        """
        Changed a Paper document to be link accessible for the team.

        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):
        """
        Shared a Paper doc.

        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):
        """
        Shared Paper document received.

        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):
        """
        Opened a shared Paper doc.

        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):
        """
        Added the team to a shared folder.

        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):
        """
        Allowed non collaborators to view links to files in a shared folder.

        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_invite_group_details(self):
        """
        Invited a group to a shared folder.

        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_nest_details(self):
        """
        Changed parent of shared folder.

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

        :rtype: SfNestDetails
        """
        if not self.is_sf_nest_details():
            raise AttributeError("tag 'sf_nest_details' not set")
        return self._value

    def get_sf_team_decline_details(self):
        """
        Declined a team member's invitation to a shared folder.

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

        :rtype: SfTeamDeclineDetails
        """
        if not self.is_sf_team_decline_details():
            raise AttributeError("tag 'sf_team_decline_details' not set")
        return self._value

    def get_sf_team_grant_access_details(self):
        """
        Granted access to a shared folder.

        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):
        """
        Invited team members to a shared folder.

        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):
        """
        Changed a team member's role in a shared folder.

        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):
        """
        Joined a team member's shared folder.

        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):
        """
        Joined a team member's shared folder from a link.

        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):
        """
        Unshared a folder with a team member.

        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):
        """
        Sent an email invitation to the membership of a shared file or folder.

        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):
        """
        Added an expiry to the link for the shared file or folder.

        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):
        """
        Added a password to the link for the shared file or folder.

        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):
        """
        Added users and/or groups to the membership of a shared file or folder.

        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):
        """
        Changed whether members can download the shared file or folder.

        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):
        """
        Changed the access type of an invitee to a shared file or folder before
        the invitation was claimed.

        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):
        """
        Changed the audience of the link for a shared file or folder.

        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):
        """
        Changed the expiry of the link for the shared file or folder.

        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):
        """
        Changed the password on the link for the shared file or folder.

        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):
        """
        Changed the access type of a shared file or folder member.

        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):
        """
        Changed whether members can see who viewed the shared file or folder.

        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):
        """
        Claimed membership to a team member's shared folder.

        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):
        """
        Copied the shared file or folder to own Dropbox.

        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):
        """
        Downloaded the shared file or folder.

        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):
        """
        Left the membership of a shared file or folder.

        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_invitee_details(self):
        """
        Removed an invitee from the membership of a shared file or folder before
        it was claimed.

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

        :rtype: SharedContentRemoveInviteeDetails
        """
        if not self.is_shared_content_remove_invitee_details():
            raise AttributeError("tag 'shared_content_remove_invitee_details' not set")
        return self._value

    def get_shared_content_remove_link_expiry_details(self):
        """
        Removed the expiry of the link for the shared file or folder.

        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):
        """
        Removed the password on the link for the shared file or folder.

        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):
        """
        Removed a user or a group from the membership of a shared file or
        folder.

        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):
        """
        Requested to be on the membership of a shared file or folder.

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

        :rtype: SharedContentRequestAccessDetails
        """
        if not self.is_shared_content_request_access_details():
            raise AttributeError("tag 'shared_content_request_access_details' not set")
        return self._value

    def get_shared_content_unshare_details(self):
        """
        Unshared a shared file or folder by clearing its membership and turning
        off its link.

        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):
        """
        Previewed the shared file or folder.

        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_confidentiality_details(self):
        """
        Set or unset the confidential flag on a shared folder.

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

        :rtype: SharedFolderChangeConfidentialityDetails
        """
        if not self.is_shared_folder_change_confidentiality_details():
            raise AttributeError("tag 'shared_folder_change_confidentiality_details' not set")
        return self._value

    def get_shared_folder_change_link_policy_details(self):
        """
        Changed who can access the shared folder via a link.

        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_member_management_policy_details(self):
        """
        Changed who can manage the membership of a shared folder.

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

        :rtype: SharedFolderChangeMemberManagementPolicyDetails
        """
        if not self.is_shared_folder_change_member_management_policy_details():
            raise AttributeError("tag 'shared_folder_change_member_management_policy_details' not set")
        return self._value

    def get_shared_folder_change_member_policy_details(self):
        """
        Changed who can become a member of the shared folder.

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

        :rtype: SharedFolderChangeMemberPolicyDetails
        """
        if not self.is_shared_folder_change_member_policy_details():
            raise AttributeError("tag 'shared_folder_change_member_policy_details' not set")
        return self._value

    def get_shared_folder_create_details(self):
        """
        Created a shared folder.

        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_mount_details(self):
        """
        Added a shared folder to own Dropbox.

        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_transfer_ownership_details(self):
        """
        Transferred the ownership of a shared folder to another member.

        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):
        """
        Deleted a shared folder from Dropbox.

        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_note_opened_details(self):
        """
        Shared Paper document was opened.

        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_app_create_details(self):
        """
        Created a link to a file using an app.

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

        :rtype: ShmodelAppCreateDetails
        """
        if not self.is_shmodel_app_create_details():
            raise AttributeError("tag 'shmodel_app_create_details' not set")
        return self._value

    def get_shmodel_create_details(self):
        """
        Created a new link.

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

        :rtype: ShmodelCreateDetails
        """
        if not self.is_shmodel_create_details():
            raise AttributeError("tag 'shmodel_create_details' not set")
        return self._value

    def get_shmodel_disable_details(self):
        """
        Removed a link.

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

        :rtype: ShmodelDisableDetails
        """
        if not self.is_shmodel_disable_details():
            raise AttributeError("tag 'shmodel_disable_details' not set")
        return self._value

    def get_shmodel_fb_share_details(self):
        """
        Shared a link with Facebook users.

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

        :rtype: ShmodelFbShareDetails
        """
        if not self.is_shmodel_fb_share_details():
            raise AttributeError("tag 'shmodel_fb_share_details' not set")
        return self._value

    def get_shmodel_group_share_details(self):
        """
        Shared a link with a group.

        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_shmodel_remove_expiration_details(self):
        """
        Removed the expiration date from a link.

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

        :rtype: ShmodelRemoveExpirationDetails
        """
        if not self.is_shmodel_remove_expiration_details():
            raise AttributeError("tag 'shmodel_remove_expiration_details' not set")
        return self._value

    def get_shmodel_set_expiration_details(self):
        """
        Added an expiration date to a link.

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

        :rtype: ShmodelSetExpirationDetails
        """
        if not self.is_shmodel_set_expiration_details():
            raise AttributeError("tag 'shmodel_set_expiration_details' not set")
        return self._value

    def get_shmodel_team_copy_details(self):
        """
        Added a team member's file/folder to their Dropbox from a link.

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

        :rtype: ShmodelTeamCopyDetails
        """
        if not self.is_shmodel_team_copy_details():
            raise AttributeError("tag 'shmodel_team_copy_details' not set")
        return self._value

    def get_shmodel_team_download_details(self):
        """
        Downloaded a team member's file/folder from a link.

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

        :rtype: ShmodelTeamDownloadDetails
        """
        if not self.is_shmodel_team_download_details():
            raise AttributeError("tag 'shmodel_team_download_details' not set")
        return self._value

    def get_shmodel_team_share_details(self):
        """
        Shared a link with team members.

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

        :rtype: ShmodelTeamShareDetails
        """
        if not self.is_shmodel_team_share_details():
            raise AttributeError("tag 'shmodel_team_share_details' not set")
        return self._value

    def get_shmodel_team_view_details(self):
        """
        Opened a team member's link.

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

        :rtype: ShmodelTeamViewDetails
        """
        if not self.is_shmodel_team_view_details():
            raise AttributeError("tag 'shmodel_team_view_details' not set")
        return self._value

    def get_shmodel_visibility_password_details(self):
        """
        Password-protected a link.

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

        :rtype: ShmodelVisibilityPasswordDetails
        """
        if not self.is_shmodel_visibility_password_details():
            raise AttributeError("tag 'shmodel_visibility_password_details' not set")
        return self._value

    def get_shmodel_visibility_public_details(self):
        """
        Made a file/folder visible to anyone with the link.

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

        :rtype: ShmodelVisibilityPublicDetails
        """
        if not self.is_shmodel_visibility_public_details():
            raise AttributeError("tag 'shmodel_visibility_public_details' not set")
        return self._value

    def get_shmodel_visibility_team_only_details(self):
        """
        Made a file/folder visible only to team members with the link.

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

        :rtype: ShmodelVisibilityTeamOnlyDetails
        """
        if not self.is_shmodel_visibility_team_only_details():
            raise AttributeError("tag 'shmodel_visibility_team_only_details' not set")
        return self._value

    def get_sso_add_cert_details(self):
        """
        Added the X.509 certificate for SSO.

        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):
        """
        Added sign-in URL for SSO.

        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):
        """
        Added sign-out URL for SSO.

        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):
        """
        Changed the X.509 certificate for SSO.

        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):
        """
        Changed the sign-in URL for SSO.

        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):
        """
        Changed the sign-out URL for SSO.

        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):
        """
        Changed the SAML identity mode for SSO.

        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):
        """
        Removed the X.509 certificate for SSO.

        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):
        """
        Removed the sign-in URL for SSO.

        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):
        """
        Removed single sign-on logout URL.

        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):
        """
        Changed the archival status of a team folder.

        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):
        """
        Created a new team folder in active status.

        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):
        """
        Downgraded a team folder to a regular shared folder.

        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):
        """
        Permanently deleted an archived team folder.

        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):
        """
        Renamed an active or archived team folder.

        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_account_capture_change_policy_details(self):
        """
        Changed the account capture policy on a domain belonging to the team.

        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):
        """
        Disabled allow downloads.

        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):
        """
        Enabled allow downloads.

        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_data_placement_restriction_change_policy_details(self):
        """
        Set a restriction policy regarding the location of data centers where
        team data resides.

        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):
        """
        Satisfied a previously set restriction policy regarding the location of
        data centers where team data resides (i.e. all data have been migrated
        according to the restriction placed).

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

        :rtype: DataPlacementRestrictionSatisfyPolicyDetails
        """
        if not self.is_data_placement_restriction_satisfy_policy_details():
            raise AttributeError("tag 'data_placement_restriction_satisfy_policy_details' not set")
        return self._value

    def get_device_approvals_change_desktop_policy_details(self):
        """
        Set or removed a limit on the number of computers each team member can
        link to their work Dropbox account.

        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):
        """
        Set or removed a limit on the number of mobiles devices each team member
        can link to their work Dropbox account.

        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):
        """
        Changed the action taken when a team member is already over the limits
        (e.g when they join the team, an admin lowers limits, etc.).

        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):
        """
        Changed the action taken with respect to approval limits when a team
        member unlinks an approved device.

        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_emm_add_exception_details(self):
        """
        Added an exception for one or more team members to optionally use the
        regular Dropbox app when EMM is enabled.

        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):
        """
        Enabled or disabled enterprise mobility management for team members.

        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):
        """
        Removed an exception for one or more team members to optionally use the
        regular Dropbox app when EMM is enabled.

        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):
        """
        Accepted or opted out of extended version history.

        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):
        """
        Enabled or disabled commenting on team files.

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

        :rtype: FileCommentsChangePolicyDetails
        """
        if not self.is_file_comments_change_policy_details():
            raise AttributeError("tag 'file_comments_change_policy_details' not set")
        return self._value

    def get_file_requests_change_policy_details(self):
        """
        Enabled or disabled file requests.

        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):
        """
        Enabled file request emails for everyone.

        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):
        """
        Allowed file request emails for the team.

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

        :rtype: FileRequestsEmailsRestrictedToTeamOnlyDetails
        """
        if not self.is_file_requests_emails_restricted_to_team_only_details():
            raise AttributeError("tag 'file_requests_emails_restricted_to_team_only_details' not set")
        return self._value

    def get_google_sso_change_policy_details(self):
        """
        Enabled or disabled Google single sign-on for the team.

        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):
        """
        Changed who can create groups.

        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_member_requests_change_policy_details(self):
        """
        Changed whether users can find the team when not invited.

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

        :rtype: MemberRequestsChangePolicyDetails
        """
        if not self.is_member_requests_change_policy_details():
            raise AttributeError("tag 'member_requests_change_policy_details' not set")
        return self._value

    def get_member_space_limits_add_exception_details(self):
        """
        Added an exception for one or more team members to bypass space limits
        imposed by policy.

        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_policy_details(self):
        """
        Changed the storage limits applied to team members by policy.

        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):
        """
        Removed an exception for one or more team members to bypass space limits
        imposed by policy.

        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):
        """
        Enabled or disabled the option for team members to suggest new members
        to add to the team.

        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):
        """
        Enabled or disabled the Microsoft Office add-in, which lets team members
        save files to Dropbox directly from Microsoft Office.

        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):
        """
        Enabled or disabled network control.

        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):
        """
        Changed whether Dropbox Paper, when enabled, is deployed to all teams or
        to specific members of the team.

        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):
        """
        Changed whether non team members can view Paper documents using a link.

        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):
        """
        Changed whether team members can share Paper documents externally (i.e.
        outside the team), and if so, whether they should be accessible only by
        team members or anyone by default.

        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):
        """
        Enabled or disabled Dropbox Paper for the team.

        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_permanent_delete_change_policy_details(self):
        """
        Enabled or disabled the ability of team members to permanently delete
        content.

        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_sharing_change_folder_join_policy_details(self):
        """
        Changed whether team members can join shared folders owned externally
        (i.e. outside the team).

        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):
        """
        Changed whether team members can share links externally (i.e. outside
        the team), and if so, whether links should be accessible only by team
        members or anyone by default.

        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):
        """
        Changed whether team members can share files and folders externally
        (i.e. outside the team).

        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_smart_sync_change_policy_details(self):
        """
        Changed the default Smart Sync policy for team members.

        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):
        """
        Opted team into Smart Sync.

        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):
        """
        Opted team out of Smart Sync.

        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):
        """
        Change the single sign-on policy for the team.

        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_tfa_change_policy_details(self):
        """
        Change two-step verification policy for the team.

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

        :rtype: TfaChangePolicyDetails
        """
        if not self.is_tfa_change_policy_details():
            raise AttributeError("tag 'tfa_change_policy_details' not set")
        return self._value

    def get_two_account_change_policy_details(self):
        """
        Enabled or disabled the option for team members to link a personal
        Dropbox account in addition to their work account to the same computer.

        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_web_sessions_change_fixed_length_policy_details(self):
        """
        Changed how long team members can stay signed in to Dropbox on the web.

        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):
        """
        Changed how long team members can be idle while signed in to Dropbox on
        the web.

        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_profile_add_logo_details(self):
        """
        Added a team logo to be displayed on shared link headers.

        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):
        """
        Changed the default language for the team.

        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):
        """
        Changed the team logo to be displayed on shared link headers.

        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):
        """
        Changed the team name.

        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):
        """
        Removed the team logo to be displayed on shared link headers.

        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):
        """
        Added a backup phone for two-step verification.

        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):
        """
        Added a security key for two-step verification.

        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):
        """
        Changed the backup phone for two-step verification.

        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):
        """
        Enabled, disabled or changed the configuration for two-step
        verification.

        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):
        """
        Removed the backup phone for two-step verification.

        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):
        """
        Removed a security key for two-step verification.

        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):
        """
        Reset two-step verification for team member.

        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_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 __repr__(self):
        return 'EventDetails(%r, %r)' % (self._tag, self._value)

EventDetails_validator = bv.Union(EventDetails)

class EventType(bb.Union):
    """
    The type of the event.

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

    :ivar member_change_membership_type: Changed the membership type (limited vs
        full) for team member.
    :ivar member_permanently_delete_account_contents: Permanently deleted
        contents of a removed team member account.
    :ivar member_space_limits_change_status: Changed the status with respect to
        whether the team member is under or over storage quota specified by
        policy.
    :ivar member_transfer_account_contents: Transferred contents of a removed
        team member account to another member.
    :ivar paper_admin_export_start: Exported all Paper documents in the team.
    :ivar paper_enabled_users_group_addition: Users added to Paper enabled users
        list.
    :ivar paper_enabled_users_group_removal: Users removed from Paper enabled
        users list.
    :ivar paper_external_view_allow: Paper external sharing policy changed:
        anyone. This event is deprecated and will not be logged going forward as
        the associated product functionality no longer exists.
    :ivar paper_external_view_default_team: Paper external sharing policy
        changed: default team. This event is deprecated and will not be logged
        going forward as the associated product functionality no longer exists.
    :ivar paper_external_view_forbid: Paper external sharing policy changed:
        team-only. This event is deprecated and will not be logged going forward
        as the associated product functionality no longer exists.
    :ivar sf_external_invite_warn: Admin settings: team members see a warning
        before sharing folders outside the team (DEPRECATED FEATURE). This event
        is deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar team_merge_from: Merged another team into this team.
    :ivar team_merge_to: Merged this team into another team.
    :ivar app_link_team: Linked an app for team.
    :ivar app_link_user: Linked an app for team member.
    :ivar app_unlink_team: Unlinked an app for team.
    :ivar app_unlink_user: Unlinked an app for team member.
    :ivar file_add_comment: Added a file comment.
    :ivar file_change_comment_subscription: Subscribed to or unsubscribed from
        comment notifications for file.
    :ivar file_delete_comment: Deleted a file comment.
    :ivar file_like_comment: Liked a file comment. This event is deprecated and
        will not be logged going forward as the associated product functionality
        no longer exists.
    :ivar file_resolve_comment: Resolved a file comment.
    :ivar file_unlike_comment: Unliked a file comment. This event is deprecated
        and will not be logged going forward as the associated product
        functionality no longer exists.
    :ivar file_unresolve_comment: Unresolved a file comment.
    :ivar device_change_ip_desktop: IP address associated with active desktop
        session changed.
    :ivar device_change_ip_mobile: IP address associated with active mobile
        session changed.
    :ivar device_change_ip_web: IP address associated with active Web session
        changed.
    :ivar device_delete_on_unlink_fail: Failed to delete all files from an
        unlinked device.
    :ivar device_delete_on_unlink_success: Deleted all files from an unlinked
        device.
    :ivar device_link_fail: Failed to link a device.
    :ivar device_link_success: Linked a device.
    :ivar device_management_disabled: Disable Device Management. This event is
        deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar device_management_enabled: Enable Device Management. This event is
        deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar device_unlink: Disconnected a device.
    :ivar emm_refresh_auth_token: Refreshed the auth token used for setting up
        enterprise mobility management.
    :ivar account_capture_change_availability: Granted or revoked the option to
        enable account capture on domains belonging to the team.
    :ivar account_capture_migrate_account: Account captured user migrated their
        account to the team.
    :ivar account_capture_relinquish_account: Account captured user relinquished
        their account by changing the email address associated with it.
    :ivar disabled_domain_invites: Disabled domain invites. This event is
        deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar domain_invites_approve_request_to_join_team: Approved a member's
        request to join the team.
    :ivar domain_invites_decline_request_to_join_team: Declined a user's request
        to join the team.
    :ivar domain_invites_email_existing_users: Sent domain invites to existing
        domain accounts.
    :ivar domain_invites_request_to_join_team: Asked to join the team.
    :ivar domain_invites_set_invite_new_user_pref_to_no: Turned off
        u201cAutomatically invite new usersu201d. This event is deprecated and
        will not be logged going forward as the associated product functionality
        no longer exists.
    :ivar domain_invites_set_invite_new_user_pref_to_yes: Turned on
        u201cAutomatically invite new usersu201d. This event is deprecated and
        will not be logged going forward as the associated product functionality
        no longer exists.
    :ivar domain_verification_add_domain_fail: Failed to verify a domain
        belonging to the team.
    :ivar domain_verification_add_domain_success: Verified a domain belonging to
        the team.
    :ivar domain_verification_remove_domain: Removed a domain from the list of
        verified domains belonging to the team.
    :ivar enabled_domain_invites: Enabled domain invites. This event is
        deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar create_folder: Created folders. This event is deprecated and will not
        be logged going forward as the associated product functionality no
        longer exists.
    :ivar file_add: Added files and/or folders.
    :ivar file_copy: Copied files and/or folders.
    :ivar file_delete: Deleted files and/or folders.
    :ivar file_download: Downloaded files and/or folders.
    :ivar file_edit: Edited files.
    :ivar file_get_copy_reference: Create a copy reference to a file or folder.
    :ivar file_move: Moved files and/or folders.
    :ivar file_permanently_delete: Permanently deleted files and/or folders.
    :ivar file_preview: Previewed files and/or folders.
    :ivar file_rename: Renamed files and/or folders.
    :ivar file_restore: Restored deleted files and/or folders.
    :ivar file_revert: Reverted files to a previous version.
    :ivar file_rollback_changes: Rolled back file change location changes.
    :ivar file_save_copy_reference: Save a file or folder using a copy
        reference.
    :ivar file_request_add_deadline: Added a deadline to a file request.
    :ivar file_request_change_folder: Changed the file request folder.
    :ivar file_request_change_title: Change the file request title.
    :ivar file_request_close: Closed a file request.
    :ivar file_request_create: Created a file request.
    :ivar file_request_receive_file: Received files for a file request.
    :ivar file_request_remove_deadline: Removed the file request deadline.
    :ivar file_request_send: Sent file request to users via email.
    :ivar group_add_external_id: Added an external ID for group.
    :ivar group_add_member: Added team members to a group.
    :ivar group_change_external_id: Changed the external ID for group.
    :ivar group_change_management_type: Changed group management type.
    :ivar group_change_member_role: Changed the manager permissions belonging to
        a group member.
    :ivar group_create: Created a group.
    :ivar group_delete: Deleted a group.
    :ivar group_moved: Moved a group. This event is deprecated and will not be
        logged going forward as the associated product functionality no longer
        exists.
    :ivar group_remove_external_id: Removed the external ID for group.
    :ivar group_remove_member: Removed team members from a group.
    :ivar group_rename: Renamed a group.
    :ivar emm_login_success: Signed in using the Dropbox EMM app.
    :ivar logout: Signed out.
    :ivar password_login_fail: Failed to sign in using a password.
    :ivar password_login_success: Signed in using a password.
    :ivar reseller_support_session_end: Ended reseller support session.
    :ivar reseller_support_session_start: Started reseller support session.
    :ivar sign_in_as_session_end: Ended admin sign-in-as session.
    :ivar sign_in_as_session_start: Started admin sign-in-as session.
    :ivar sso_login_fail: Failed to sign in using SSO.
    :ivar member_add_name: Set team member name when joining team.
    :ivar member_change_admin_role: Change the admin role belonging to team
        member.
    :ivar member_change_email: Changed team member email address.
    :ivar member_change_name: Changed team member name.
    :ivar member_change_status: Changed the membership status of a team member.
    :ivar member_suggest: Suggested a new team member to be added to the team.
    :ivar paper_content_add_member: Added users to the membership of a Paper doc
        or folder.
    :ivar paper_content_add_to_folder: Added Paper doc or folder to a folder.
    :ivar paper_content_archive: Archived Paper doc or folder.
    :ivar paper_content_create: Created a Paper doc or folder.
    :ivar paper_content_permanently_delete: Permanently deleted a Paper doc or
        folder.
    :ivar paper_content_remove_from_folder: Removed Paper doc or folder from a
        folder.
    :ivar paper_content_remove_member: Removed a user from the membership of a
        Paper doc or folder.
    :ivar paper_content_rename: Renamed Paper doc or folder.
    :ivar paper_content_restore: Restored an archived Paper doc or folder.
    :ivar paper_doc_add_comment: Added a Paper doc comment.
    :ivar paper_doc_change_member_role: Changed the access type of a Paper doc
        member.
    :ivar paper_doc_change_sharing_policy: Changed the sharing policy for Paper
        doc.
    :ivar paper_doc_change_subscription: Followed or unfollowed a Paper doc.
    :ivar paper_doc_deleted: Paper doc archived. This event is deprecated and
        will not be logged going forward as the associated product functionality
        no longer exists.
    :ivar paper_doc_delete_comment: Deleted a Paper doc comment.
    :ivar paper_doc_download: Downloaded a Paper doc in a particular output
        format.
    :ivar paper_doc_edit: Edited a Paper doc.
    :ivar paper_doc_edit_comment: Edited a Paper doc comment.
    :ivar paper_doc_followed: Followed a Paper doc. This event is replaced by
        paper_doc_change_subscription and will not be logged going forward.
    :ivar paper_doc_mention: Mentioned a member in a Paper doc.
    :ivar paper_doc_request_access: Requested to be a member on a Paper doc.
    :ivar paper_doc_resolve_comment: Paper doc comment resolved.
    :ivar paper_doc_revert: Restored a Paper doc to previous revision.
    :ivar paper_doc_slack_share: Paper doc link shared via slack.
    :ivar paper_doc_team_invite: Paper doc shared with team member. This event
        is deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar paper_doc_trashed: Paper doc trashed.
    :ivar paper_doc_unresolve_comment: Unresolved a Paper doc comment.
    :ivar paper_doc_untrashed: Paper doc untrashed.
    :ivar paper_doc_view: Viewed Paper doc.
    :ivar paper_folder_change_subscription: Followed or unfollowed a Paper
        folder.
    :ivar paper_folder_deleted: Paper folder archived. This event is deprecated
        and will not be logged going forward as the associated product
        functionality no longer exists.
    :ivar paper_folder_followed: Followed a Paper folder. This event is replaced
        by paper_folder_change_subscription and will not be logged going
        forward.
    :ivar paper_folder_team_invite: Paper folder shared with team member. This
        event is deprecated and will not be logged going forward as the
        associated product functionality no longer exists.
    :ivar password_change: Changed password.
    :ivar password_reset: Reset password.
    :ivar password_reset_all: Reset all team member passwords.
    :ivar emm_create_exceptions_report: EMM excluded users report created.
    :ivar emm_create_usage_report: EMM mobile app usage report created.
    :ivar smart_sync_create_admin_privilege_report: Smart Sync non-admin devices
        report created.
    :ivar team_activity_create_report: Created a team activity report.
    :ivar collection_share: Shared an album.
    :ivar note_acl_invite_only: Changed a Paper document to be invite-only. This
        event is deprecated and will not be logged going forward as the
        associated product functionality no longer exists.
    :ivar note_acl_link: Changed a Paper document to be link accessible. This
        event is deprecated and will not be logged going forward as the
        associated product functionality no longer exists.
    :ivar note_acl_team_link: Changed a Paper document to be link accessible for
        the team. This event is deprecated and will not be logged going forward
        as the associated product functionality no longer exists.
    :ivar note_shared: Shared a Paper doc. This event is deprecated and will not
        be logged going forward as the associated product functionality no
        longer exists.
    :ivar note_share_receive: Shared Paper document received. This event is
        deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar open_note_shared: Opened a shared Paper doc. This event is deprecated
        and will not be logged going forward as the associated product
        functionality no longer exists.
    :ivar sf_add_group: Added the team to a shared folder.
    :ivar sf_allow_non_members_to_view_shared_links: Allowed non collaborators
        to view links to files in a shared folder. This event is deprecated and
        will not be logged going forward as the associated product functionality
        no longer exists.
    :ivar sf_invite_group: Invited a group to a shared folder. This event is
        deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar sf_nest: Changed parent of shared folder.
    :ivar sf_team_decline: Declined a team member's invitation to a shared
        folder.
    :ivar sf_team_grant_access: Granted access to a shared folder. This event is
        deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar sf_team_invite: Invited team members to a shared folder. This event is
        deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar sf_team_invite_change_role: Changed a team member's role in a shared
        folder. This event is deprecated and will not be logged going forward as
        the associated product functionality no longer exists.
    :ivar sf_team_join: Joined a team member's shared folder. This event is
        deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar sf_team_join_from_oob_link: Joined a team member's shared folder from
        a link. This event is deprecated and will not be logged going forward as
        the associated product functionality no longer exists.
    :ivar sf_team_uninvite: Unshared a folder with a team member. This event is
        deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar shared_content_add_invitees: Sent an email invitation to the
        membership of a shared file or folder.
    :ivar shared_content_add_link_expiry: Added an expiry to the link for the
        shared file or folder.
    :ivar shared_content_add_link_password: Added a password to the link for the
        shared file or folder.
    :ivar shared_content_add_member: Added users and/or groups to the membership
        of a shared file or folder.
    :ivar shared_content_change_downloads_policy: Changed whether members can
        download the shared file or folder.
    :ivar shared_content_change_invitee_role: Changed the access type of an
        invitee to a shared file or folder before the invitation was claimed.
    :ivar shared_content_change_link_audience: Changed the audience of the link
        for a shared file or folder.
    :ivar shared_content_change_link_expiry: Changed the expiry of the link for
        the shared file or folder.
    :ivar shared_content_change_link_password: Changed the password on the link
        for the shared file or folder.
    :ivar shared_content_change_member_role: Changed the access type of a shared
        file or folder member.
    :ivar shared_content_change_viewer_info_policy: Changed whether members can
        see who viewed the shared file or folder.
    :ivar shared_content_claim_invitation: Claimed membership to a team member's
        shared folder.
    :ivar shared_content_copy: Copied the shared file or folder to own Dropbox.
    :ivar shared_content_download: Downloaded the shared file or folder.
    :ivar shared_content_relinquish_membership: Left the membership of a shared
        file or folder.
    :ivar shared_content_remove_invitee: Removed an invitee from the membership
        of a shared file or folder before it was claimed.
    :ivar shared_content_remove_link_expiry: Removed the expiry of the link for
        the shared file or folder.
    :ivar shared_content_remove_link_password: Removed the password on the link
        for the shared file or folder.
    :ivar shared_content_remove_member: Removed a user or a group from the
        membership of a shared file or folder.
    :ivar shared_content_request_access: Requested to be on the membership of a
        shared file or folder.
    :ivar shared_content_unshare: Unshared a shared file or folder by clearing
        its membership and turning off its link.
    :ivar shared_content_view: Previewed the shared file or folder.
    :ivar shared_folder_change_confidentiality: Set or unset the confidential
        flag on a shared folder.
    :ivar shared_folder_change_link_policy: Changed who can access the shared
        folder via a link.
    :ivar shared_folder_change_member_management_policy: Changed who can manage
        the membership of a shared folder.
    :ivar shared_folder_change_member_policy: Changed who can become a member of
        the shared folder.
    :ivar shared_folder_create: Created a shared folder.
    :ivar shared_folder_mount: Added a shared folder to own Dropbox.
    :ivar shared_folder_transfer_ownership: Transferred the ownership of a
        shared folder to another member.
    :ivar shared_folder_unmount: Deleted a shared folder from Dropbox.
    :ivar shared_note_opened: Shared Paper document was opened. This event is
        deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar shmodel_app_create: Created a link to a file using an app.
    :ivar shmodel_create: Created a new link.
    :ivar shmodel_disable: Removed a link.
    :ivar shmodel_fb_share: Shared a link with Facebook users.
    :ivar shmodel_group_share: Shared a link with a group. This event is
        deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar shmodel_remove_expiration: Removed the expiration date from a link.
    :ivar shmodel_set_expiration: Added an expiration date to a link.
    :ivar shmodel_team_copy: Added a team member's file/folder to their Dropbox
        from a link.
    :ivar shmodel_team_download: Downloaded a team member's file/folder from a
        link.
    :ivar shmodel_team_share: Shared a link with team members.
    :ivar shmodel_team_view: Opened a team member's link.
    :ivar shmodel_visibility_password: Password-protected a link.
    :ivar shmodel_visibility_public: Made a file/folder visible to anyone with
        the link.
    :ivar shmodel_visibility_team_only: Made a file/folder visible only to team
        members with the link.
    :ivar sso_add_cert: Added the X.509 certificate for SSO.
    :ivar sso_add_login_url: Added sign-in URL for SSO.
    :ivar sso_add_logout_url: Added sign-out URL for SSO.
    :ivar sso_change_cert: Changed the X.509 certificate for SSO.
    :ivar sso_change_login_url: Changed the sign-in URL for SSO.
    :ivar sso_change_logout_url: Changed the sign-out URL for SSO.
    :ivar sso_change_saml_identity_mode: Changed the SAML identity mode for SSO.
    :ivar sso_remove_cert: Removed the X.509 certificate for SSO.
    :ivar sso_remove_login_url: Removed the sign-in URL for SSO.
    :ivar sso_remove_logout_url: Removed single sign-on logout URL.
    :ivar team_folder_change_status: Changed the archival status of a team
        folder.
    :ivar team_folder_create: Created a new team folder in active status.
    :ivar team_folder_downgrade: Downgraded a team folder to a regular shared
        folder.
    :ivar team_folder_permanently_delete: Permanently deleted an archived team
        folder.
    :ivar team_folder_rename: Renamed an active or archived team folder.
    :ivar account_capture_change_policy: Changed the account capture policy on a
        domain belonging to the team.
    :ivar allow_download_disabled: Disabled allow downloads. This event is
        deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar allow_download_enabled: Enabled allow downloads. This event is
        deprecated and will not be logged going forward as the associated
        product functionality no longer exists.
    :ivar data_placement_restriction_change_policy: Set a restriction policy
        regarding the location of data centers where team data resides.
    :ivar data_placement_restriction_satisfy_policy: Satisfied a previously set
        restriction policy regarding the location of data centers where team
        data resides (i.e. all data have been migrated according to the
        restriction placed).
    :ivar device_approvals_change_desktop_policy: Set or removed a limit on the
        number of computers each team member can link to their work Dropbox
        account.
    :ivar device_approvals_change_mobile_policy: Set or removed a limit on the
        number of mobiles devices each team member can link to their work
        Dropbox account.
    :ivar device_approvals_change_overage_action: Changed the action taken when
        a team member is already over the limits (e.g when they join the team,
        an admin lowers limits, etc.).
    :ivar device_approvals_change_unlink_action: Changed the action taken with
        respect to approval limits when a team member unlinks an approved
        device.
    :ivar emm_add_exception: Added an exception for one or more team members to
        optionally use the regular Dropbox app when EMM is enabled.
    :ivar emm_change_policy: Enabled or disabled enterprise mobility management
        for team members.
    :ivar emm_remove_exception: Removed an exception for one or more team
        members to optionally use the regular Dropbox app when EMM is enabled.
    :ivar extended_version_history_change_policy: Accepted or opted out of
        extended version history.
    :ivar file_comments_change_policy: Enabled or disabled commenting on team
        files.
    :ivar file_requests_change_policy: Enabled or disabled file requests.
    :ivar file_requests_emails_enabled: Enabled file request emails for
        everyone. This event is deprecated and will not be logged going forward
        as the associated product functionality no longer exists.
    :ivar file_requests_emails_restricted_to_team_only: Allowed file request
        emails for the team. This event is deprecated and will not be logged
        going forward as the associated product functionality no longer exists.
    :ivar google_sso_change_policy: Enabled or disabled Google single sign-on
        for the team.
    :ivar group_user_management_change_policy: Changed who can create groups.
    :ivar member_requests_change_policy: Changed whether users can find the team
        when not invited.
    :ivar member_space_limits_add_exception: Added an exception for one or more
        team members to bypass space limits imposed by policy.
    :ivar member_space_limits_change_policy: Changed the storage limits applied
        to team members by policy.
    :ivar member_space_limits_remove_exception: Removed an exception for one or
        more team members to bypass space limits imposed by policy.
    :ivar member_suggestions_change_policy: Enabled or disabled the option for
        team members to suggest new members to add to the team.
    :ivar microsoft_office_addin_change_policy: Enabled or disabled the
        Microsoft Office add-in, which lets team members save files to Dropbox
        directly from Microsoft Office.
    :ivar network_control_change_policy: Enabled or disabled network control.
    :ivar paper_change_deployment_policy: Changed whether Dropbox Paper, when
        enabled, is deployed to all teams or to specific members of the team.
    :ivar paper_change_member_link_policy: Changed whether non team members can
        view Paper documents using a link. This event is deprecated and will not
        be logged going forward as the associated product functionality no
        longer exists.
    :ivar paper_change_member_policy: Changed whether team members can share
        Paper documents externally (i.e. outside the team), and if so, whether
        they should be accessible only by team members or anyone by default.
    :ivar paper_change_policy: Enabled or disabled Dropbox Paper for the team.
    :ivar permanent_delete_change_policy: Enabled or disabled the ability of
        team members to permanently delete content.
    :ivar sharing_change_folder_join_policy: Changed whether team members can
        join shared folders owned externally (i.e. outside the team).
    :ivar sharing_change_link_policy: Changed whether team members can share
        links externally (i.e. outside the team), and if so, whether links
        should be accessible only by team members or anyone by default.
    :ivar sharing_change_member_policy: Changed whether team members can share
        files and folders externally (i.e. outside the team).
    :ivar smart_sync_change_policy: Changed the default Smart Sync policy for
        team members.
    :ivar smart_sync_not_opt_out: Opted team into Smart Sync.
    :ivar smart_sync_opt_out: Opted team out of Smart Sync.
    :ivar sso_change_policy: Change the single sign-on policy for the team.
    :ivar tfa_change_policy: Change two-step verification policy for the team.
    :ivar two_account_change_policy: Enabled or disabled the option for team
        members to link a personal Dropbox account in addition to their work
        account to the same computer.
    :ivar web_sessions_change_fixed_length_policy: Changed how long team members
        can stay signed in to Dropbox on the web.
    :ivar web_sessions_change_idle_length_policy: Changed how long team members
        can be idle while signed in to Dropbox on the web.
    :ivar team_profile_add_logo: Added a team logo to be displayed on shared
        link headers.
    :ivar team_profile_change_default_language: Changed the default language for
        the team.
    :ivar team_profile_change_logo: Changed the team logo to be displayed on
        shared link headers.
    :ivar team_profile_change_name: Changed the team name.
    :ivar team_profile_remove_logo: Removed the team logo to be displayed on
        shared link headers.
    :ivar tfa_add_backup_phone: Added a backup phone for two-step verification.
    :ivar tfa_add_security_key: Added a security key for two-step verification.
    :ivar tfa_change_backup_phone: Changed the backup phone for two-step
        verification.
    :ivar tfa_change_status: Enabled, disabled or changed the configuration for
        two-step verification.
    :ivar tfa_remove_backup_phone: Removed the backup phone for two-step
        verification.
    :ivar tfa_remove_security_key: Removed a security key for two-step
        verification.
    :ivar tfa_reset: Reset two-step verification for team member.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    member_change_membership_type = None
    # Attribute is overwritten below the class definition
    member_permanently_delete_account_contents = None
    # Attribute is overwritten below the class definition
    member_space_limits_change_status = None
    # Attribute is overwritten below the class definition
    member_transfer_account_contents = None
    # Attribute is overwritten below the class definition
    paper_admin_export_start = 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
    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
    sf_external_invite_warn = 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
    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
    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_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
    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_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_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_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
    file_request_add_deadline = None
    # Attribute is overwritten below the class definition
    file_request_change_folder = None
    # Attribute is overwritten below the class definition
    file_request_change_title = 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_receive_file = None
    # Attribute is overwritten below the class definition
    file_request_remove_deadline = None
    # Attribute is overwritten below the class definition
    file_request_send = 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_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
    emm_login_success = None
    # Attribute is overwritten below the class definition
    logout = None
    # Attribute is overwritten below the class definition
    password_login_fail = None
    # Attribute is overwritten below the class definition
    password_login_success = 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_login_fail = 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_name = None
    # Attribute is overwritten below the class definition
    member_change_status = None
    # Attribute is overwritten below the class definition
    member_suggest = 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_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_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
    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
    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
    collection_share = 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_invite_group = None
    # Attribute is overwritten below the class definition
    sf_nest = None
    # Attribute is overwritten below the class definition
    sf_team_decline = 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_invitee = 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_unshare = None
    # Attribute is overwritten below the class definition
    shared_content_view = None
    # Attribute is overwritten below the class definition
    shared_folder_change_confidentiality = None
    # Attribute is overwritten below the class definition
    shared_folder_change_link_policy = None
    # Attribute is overwritten below the class definition
    shared_folder_change_member_management_policy = None
    # Attribute is overwritten below the class definition
    shared_folder_change_member_policy = None
    # Attribute is overwritten below the class definition
    shared_folder_create = None
    # Attribute is overwritten below the class definition
    shared_folder_mount = 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_note_opened = None
    # Attribute is overwritten below the class definition
    shmodel_app_create = None
    # Attribute is overwritten below the class definition
    shmodel_create = None
    # Attribute is overwritten below the class definition
    shmodel_disable = None
    # Attribute is overwritten below the class definition
    shmodel_fb_share = None
    # Attribute is overwritten below the class definition
    shmodel_group_share = None
    # Attribute is overwritten below the class definition
    shmodel_remove_expiration = None
    # Attribute is overwritten below the class definition
    shmodel_set_expiration = None
    # Attribute is overwritten below the class definition
    shmodel_team_copy = None
    # Attribute is overwritten below the class definition
    shmodel_team_download = None
    # Attribute is overwritten below the class definition
    shmodel_team_share = None
    # Attribute is overwritten below the class definition
    shmodel_team_view = None
    # Attribute is overwritten below the class definition
    shmodel_visibility_password = None
    # Attribute is overwritten below the class definition
    shmodel_visibility_public = None
    # Attribute is overwritten below the class definition
    shmodel_visibility_team_only = 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
    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
    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_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
    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_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
    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
    member_requests_change_policy = 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_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
    permanent_delete_change_policy = 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
    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
    tfa_change_policy = None
    # Attribute is overwritten below the class definition
    two_account_change_policy = 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_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
    other = None

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

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

    def is_file_resolve_comment(self):
        """
        Check if the union tag is ``file_resolve_comment``.

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

    def is_file_unlike_comment(self):
        """
        Check if the union tag is ``file_unlike_comment``.

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

    def is_file_unresolve_comment(self):
        """
        Check if the union tag is ``file_unresolve_comment``.

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

    def is_device_change_ip_desktop(self):
        """
        Check if the union tag is ``device_change_ip_desktop``.

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

    def is_device_change_ip_mobile(self):
        """
        Check if the union tag is ``device_change_ip_mobile``.

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

    def is_device_change_ip_web(self):
        """
        Check if the union tag is ``device_change_ip_web``.

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

    def is_device_delete_on_unlink_fail(self):
        """
        Check if the union tag is ``device_delete_on_unlink_fail``.

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

    def is_device_delete_on_unlink_success(self):
        """
        Check if the union tag is ``device_delete_on_unlink_success``.

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

    def is_device_link_fail(self):
        """
        Check if the union tag is ``device_link_fail``.

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

    def is_device_link_success(self):
        """
        Check if the union tag is ``device_link_success``.

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

    def is_device_management_disabled(self):
        """
        Check if the union tag is ``device_management_disabled``.

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

    def is_device_management_enabled(self):
        """
        Check if the union tag is ``device_management_enabled``.

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

    def is_device_unlink(self):
        """
        Check if the union tag is ``device_unlink``.

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

    def is_emm_refresh_auth_token(self):
        """
        Check if the union tag is ``emm_refresh_auth_token``.

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

    def is_account_capture_change_availability(self):
        """
        Check if the union tag is ``account_capture_change_availability``.

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

    def is_account_capture_migrate_account(self):
        """
        Check if the union tag is ``account_capture_migrate_account``.

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

    def is_account_capture_relinquish_account(self):
        """
        Check if the union tag is ``account_capture_relinquish_account``.

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

    def is_disabled_domain_invites(self):
        """
        Check if the union tag is ``disabled_domain_invites``.

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

    def is_domain_invites_approve_request_to_join_team(self):
        """
        Check if the union tag is ``domain_invites_approve_request_to_join_team``.

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

    def is_domain_invites_decline_request_to_join_team(self):
        """
        Check if the union tag is ``domain_invites_decline_request_to_join_team``.

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

    def is_domain_invites_email_existing_users(self):
        """
        Check if the union tag is ``domain_invites_email_existing_users``.

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

    def is_domain_invites_request_to_join_team(self):
        """
        Check if the union tag is ``domain_invites_request_to_join_team``.

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

    def is_domain_invites_set_invite_new_user_pref_to_no(self):
        """
        Check if the union tag is ``domain_invites_set_invite_new_user_pref_to_no``.

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

    def is_domain_invites_set_invite_new_user_pref_to_yes(self):
        """
        Check if the union tag is ``domain_invites_set_invite_new_user_pref_to_yes``.

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

    def is_domain_verification_add_domain_fail(self):
        """
        Check if the union tag is ``domain_verification_add_domain_fail``.

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

    def is_domain_verification_add_domain_success(self):
        """
        Check if the union tag is ``domain_verification_add_domain_success``.

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

    def is_domain_verification_remove_domain(self):
        """
        Check if the union tag is ``domain_verification_remove_domain``.

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

    def is_enabled_domain_invites(self):
        """
        Check if the union tag is ``enabled_domain_invites``.

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

    def is_create_folder(self):
        """
        Check if the union tag is ``create_folder``.

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

    def is_file_add(self):
        """
        Check if the union tag is ``file_add``.

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

    def is_file_copy(self):
        """
        Check if the union tag is ``file_copy``.

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

    def is_file_delete(self):
        """
        Check if the union tag is ``file_delete``.

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

    def is_file_download(self):
        """
        Check if the union tag is ``file_download``.

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

    def is_file_edit(self):
        """
        Check if the union tag is ``file_edit``.

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

    def is_file_get_copy_reference(self):
        """
        Check if the union tag is ``file_get_copy_reference``.

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

    def is_file_move(self):
        """
        Check if the union tag is ``file_move``.

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

    def is_file_permanently_delete(self):
        """
        Check if the union tag is ``file_permanently_delete``.

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

    def is_file_preview(self):
        """
        Check if the union tag is ``file_preview``.

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

    def is_file_rename(self):
        """
        Check if the union tag is ``file_rename``.

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

    def is_file_restore(self):
        """
        Check if the union tag is ``file_restore``.

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

    def is_file_revert(self):
        """
        Check if the union tag is ``file_revert``.

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

    def is_file_rollback_changes(self):
        """
        Check if the union tag is ``file_rollback_changes``.

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

    def is_file_save_copy_reference(self):
        """
        Check if the union tag is ``file_save_copy_reference``.

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

    def is_file_request_add_deadline(self):
        """
        Check if the union tag is ``file_request_add_deadline``.

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

    def is_file_request_change_folder(self):
        """
        Check if the union tag is ``file_request_change_folder``.

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

    def is_file_request_change_title(self):
        """
        Check if the union tag is ``file_request_change_title``.

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

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

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

    def is_file_request_remove_deadline(self):
        """
        Check if the union tag is ``file_request_remove_deadline``.

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

    def is_file_request_send(self):
        """
        Check if the union tag is ``file_request_send``.

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

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

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

    def is_group_remove_external_id(self):
        """
        Check if the union tag is ``group_remove_external_id``.

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

    def is_group_remove_member(self):
        """
        Check if the union tag is ``group_remove_member``.

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

    def is_group_rename(self):
        """
        Check if the union tag is ``group_rename``.

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

    def is_emm_login_success(self):
        """
        Check if the union tag is ``emm_login_success``.

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

    def is_logout(self):
        """
        Check if the union tag is ``logout``.

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

    def is_password_login_fail(self):
        """
        Check if the union tag is ``password_login_fail``.

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

    def is_password_login_success(self):
        """
        Check if the union tag is ``password_login_success``.

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

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

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

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

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

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

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

    def is_note_acl_invite_only(self):
        """
        Check if the union tag is ``note_acl_invite_only``.

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

    def is_note_acl_link(self):
        """
        Check if the union tag is ``note_acl_link``.

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

    def is_note_acl_team_link(self):
        """
        Check if the union tag is ``note_acl_team_link``.

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

    def is_note_shared(self):
        """
        Check if the union tag is ``note_shared``.

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

    def is_note_share_receive(self):
        """
        Check if the union tag is ``note_share_receive``.

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

    def is_open_note_shared(self):
        """
        Check if the union tag is ``open_note_shared``.

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

    def is_sf_add_group(self):
        """
        Check if the union tag is ``sf_add_group``.

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

    def is_sf_allow_non_members_to_view_shared_links(self):
        """
        Check if the union tag is ``sf_allow_non_members_to_view_shared_links``.

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

    def is_sf_invite_group(self):
        """
        Check if the union tag is ``sf_invite_group``.

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

    def is_sf_nest(self):
        """
        Check if the union tag is ``sf_nest``.

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

    def is_sf_team_decline(self):
        """
        Check if the union tag is ``sf_team_decline``.

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

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

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

    def is_shared_content_remove_link_expiry(self):
        """
        Check if the union tag is ``shared_content_remove_link_expiry``.

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

    def is_shared_content_remove_link_password(self):
        """
        Check if the union tag is ``shared_content_remove_link_password``.

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

    def is_shared_content_remove_member(self):
        """
        Check if the union tag is ``shared_content_remove_member``.

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

    def is_shared_content_request_access(self):
        """
        Check if the union tag is ``shared_content_request_access``.

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

    def is_shared_content_unshare(self):
        """
        Check if the union tag is ``shared_content_unshare``.

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

    def is_shared_content_view(self):
        """
        Check if the union tag is ``shared_content_view``.

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

    def is_shared_folder_change_confidentiality(self):
        """
        Check if the union tag is ``shared_folder_change_confidentiality``.

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

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

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

    def is_shared_folder_change_member_policy(self):
        """
        Check if the union tag is ``shared_folder_change_member_policy``.

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

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

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

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

    def is_shmodel_app_create(self):
        """
        Check if the union tag is ``shmodel_app_create``.

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

    def is_shmodel_create(self):
        """
        Check if the union tag is ``shmodel_create``.

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

    def is_shmodel_disable(self):
        """
        Check if the union tag is ``shmodel_disable``.

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

    def is_shmodel_fb_share(self):
        """
        Check if the union tag is ``shmodel_fb_share``.

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

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

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

    def is_shmodel_set_expiration(self):
        """
        Check if the union tag is ``shmodel_set_expiration``.

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

    def is_shmodel_team_copy(self):
        """
        Check if the union tag is ``shmodel_team_copy``.

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

    def is_shmodel_team_download(self):
        """
        Check if the union tag is ``shmodel_team_download``.

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

    def is_shmodel_team_share(self):
        """
        Check if the union tag is ``shmodel_team_share``.

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

    def is_shmodel_team_view(self):
        """
        Check if the union tag is ``shmodel_team_view``.

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

    def is_shmodel_visibility_password(self):
        """
        Check if the union tag is ``shmodel_visibility_password``.

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

    def is_shmodel_visibility_public(self):
        """
        Check if the union tag is ``shmodel_visibility_public``.

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

    def is_shmodel_visibility_team_only(self):
        """
        Check if the union tag is ``shmodel_visibility_team_only``.

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

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

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

    def is_data_placement_restriction_satisfy_policy(self):
        """
        Check if the union tag is ``data_placement_restriction_satisfy_policy``.

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

    def is_device_approvals_change_desktop_policy(self):
        """
        Check if the union tag is ``device_approvals_change_desktop_policy``.

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

    def is_device_approvals_change_mobile_policy(self):
        """
        Check if the union tag is ``device_approvals_change_mobile_policy``.

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

    def is_device_approvals_change_overage_action(self):
        """
        Check if the union tag is ``device_approvals_change_overage_action``.

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

    def is_device_approvals_change_unlink_action(self):
        """
        Check if the union tag is ``device_approvals_change_unlink_action``.

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

    def is_emm_add_exception(self):
        """
        Check if the union tag is ``emm_add_exception``.

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

    def is_emm_change_policy(self):
        """
        Check if the union tag is ``emm_change_policy``.

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

    def is_emm_remove_exception(self):
        """
        Check if the union tag is ``emm_remove_exception``.

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

    def is_extended_version_history_change_policy(self):
        """
        Check if the union tag is ``extended_version_history_change_policy``.

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

    def is_file_comments_change_policy(self):
        """
        Check if the union tag is ``file_comments_change_policy``.

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

    def is_file_requests_change_policy(self):
        """
        Check if the union tag is ``file_requests_change_policy``.

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

    def is_file_requests_emails_enabled(self):
        """
        Check if the union tag is ``file_requests_emails_enabled``.

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

    def is_file_requests_emails_restricted_to_team_only(self):
        """
        Check if the union tag is ``file_requests_emails_restricted_to_team_only``.

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

    def is_google_sso_change_policy(self):
        """
        Check if the union tag is ``google_sso_change_policy``.

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

    def is_group_user_management_change_policy(self):
        """
        Check if the union tag is ``group_user_management_change_policy``.

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

    def is_member_requests_change_policy(self):
        """
        Check if the union tag is ``member_requests_change_policy``.

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

    def is_member_space_limits_add_exception(self):
        """
        Check if the union tag is ``member_space_limits_add_exception``.

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

    def is_member_space_limits_change_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_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_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_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_tfa_change_policy(self):
        """
        Check if the union tag is ``tfa_change_policy``.

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

    def is_two_account_change_policy(self):
        """
        Check if the union tag is ``two_account_change_policy``.

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

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

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

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

EventType_validator = bv.Union(EventType)

class ExtendedVersionHistoryChangePolicyDetails(object):
    """
    Accepted or opted out of extended version history.

    :ivar new_value: New extended version history policy.
    :ivar 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 __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 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
    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_other(self):
        """
        Check if the union tag is ``other``.

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

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

ExtendedVersionHistoryPolicy_validator = bv.Union(ExtendedVersionHistoryPolicy)

class FailureDetailsLogInfo(object):
    """
    Provides details about a failure

    :ivar user_friendly_message: A user friendly explanation of the error. Might
        be missing due to historical data gap.
    :ivar 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 __repr__(self):
        return 'FailureDetailsLogInfo(user_friendly_message={!r}, technical_error_message={!r})'.format(
            self._user_friendly_message_value,
            self._technical_error_message_value,
        )

FailureDetailsLogInfo_validator = bv.Struct(FailureDetailsLogInfo)

class FileAddCommentDetails(object):
    """
    Added a file comment.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar comment_text: Comment text. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 comment_text=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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 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 __repr__(self):
        return 'FileAddCommentDetails(target_asset_index={!r}, comment_text={!r})'.format(
            self._target_asset_index_value,
            self._comment_text_value,
        )

FileAddCommentDetails_validator = bv.Struct(FileAddCommentDetails)

class FileAddDetails(object):
    """
    Added files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

FileAddDetails_validator = bv.Struct(FileAddDetails)

class FileChangeCommentSubscriptionDetails(object):
    """
    Subscribed to or unsubscribed from comment notifications for file.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar new_value: New file comment subscription.
    :ivar previous_value: Previous file comment subscription. Might be missing
        due to historical data gap.
    """

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

    _has_required_fields = True

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

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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 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 __repr__(self):
        return 'FileChangeCommentSubscriptionDetails(target_asset_index={!r}, new_value={!r}, previous_value={!r})'.format(
            self._target_asset_index_value,
            self._new_value_value,
            self._previous_value_value,
        )

FileChangeCommentSubscriptionDetails_validator = bv.Struct(FileChangeCommentSubscriptionDetails)

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 __repr__(self):
        return 'FileCommentNotificationPolicy(%r, %r)' % (self._tag, self._value)

FileCommentNotificationPolicy_validator = bv.Union(FileCommentNotificationPolicy)

class FileCommentsChangePolicyDetails(object):
    """
    Enabled or disabled commenting on team files.

    :ivar new_value: New commenting on team files policy.
    :ivar 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 __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 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 __repr__(self):
        return 'FileCommentsPolicy(%r, %r)' % (self._tag, self._value)

FileCommentsPolicy_validator = bv.Union(FileCommentsPolicy)

class FileCopyDetails(object):
    """
    Copied files and/or folders.

    :ivar 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 __repr__(self):
        return 'FileCopyDetails(relocate_action_details={!r})'.format(
            self._relocate_action_details_value,
        )

FileCopyDetails_validator = bv.Struct(FileCopyDetails)

class FileDeleteCommentDetails(object):
    """
    Deleted a file comment.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar comment_text: Comment text. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 comment_text=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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 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 __repr__(self):
        return 'FileDeleteCommentDetails(target_asset_index={!r}, comment_text={!r})'.format(
            self._target_asset_index_value,
            self._comment_text_value,
        )

FileDeleteCommentDetails_validator = bv.Struct(FileDeleteCommentDetails)

class FileDeleteDetails(object):
    """
    Deleted files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

FileDeleteDetails_validator = bv.Struct(FileDeleteDetails)

class FileDownloadDetails(object):
    """
    Downloaded files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

FileDownloadDetails_validator = bv.Struct(FileDownloadDetails)

class FileEditDetails(object):
    """
    Edited files.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

FileEditDetails_validator = bv.Struct(FileEditDetails)

class FileGetCopyReferenceDetails(object):
    """
    Create a copy reference to a file or folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

FileGetCopyReferenceDetails_validator = bv.Struct(FileGetCopyReferenceDetails)

class FileLikeCommentDetails(object):
    """
    Liked a file comment.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar comment_text: Comment text. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 comment_text=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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 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 __repr__(self):
        return 'FileLikeCommentDetails(target_asset_index={!r}, comment_text={!r})'.format(
            self._target_asset_index_value,
            self._comment_text_value,
        )

FileLikeCommentDetails_validator = bv.Struct(FileLikeCommentDetails)

class FileOrFolderLogInfo(object):
    """
    Generic information relevant both for files and folders

    :ivar path: Path relative to event context.
    :ivar display_name: Display name. Might be missing due to historical data
        gap.
    :ivar file_id: Unique ID. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_path_value',
        '_path_present',
        '_display_name_value',
        '_display_name_present',
        '_file_id_value',
        '_file_id_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 path=None,
                 display_name=None,
                 file_id=None):
        self._path_value = None
        self._path_present = False
        self._display_name_value = None
        self._display_name_present = False
        self._file_id_value = None
        self._file_id_present = False
        if path is not None:
            self.path = path
        if display_name is not None:
            self.display_name = display_name
        if file_id is not None:
            self.file_id = file_id

    @property
    def path(self):
        """
        Path relative to event context.

        :rtype: PathLogInfo
        """
        if self._path_present:
            return self._path_value
        else:
            raise AttributeError("missing required field 'path'")

    @path.setter
    def path(self, val):
        self._path_validator.validate_type_only(val)
        self._path_value = val
        self._path_present = True

    @path.deleter
    def path(self):
        self._path_value = None
        self._path_present = False

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

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

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

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

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

        :rtype: str
        """
        if self._file_id_present:
            return self._file_id_value
        else:
            return None

    @file_id.setter
    def file_id(self, val):
        if val is None:
            del self.file_id
            return
        val = self._file_id_validator.validate(val)
        self._file_id_value = val
        self._file_id_present = True

    @file_id.deleter
    def file_id(self):
        self._file_id_value = None
        self._file_id_present = False

    def __repr__(self):
        return 'FileOrFolderLogInfo(path={!r}, display_name={!r}, file_id={!r})'.format(
            self._path_value,
            self._display_name_value,
            self._file_id_value,
        )

FileOrFolderLogInfo_validator = bv.Struct(FileOrFolderLogInfo)

class FileLogInfo(FileOrFolderLogInfo):
    """
    File's logged information.
    """

    __slots__ = [
    ]

    _has_required_fields = True

    def __init__(self,
                 path=None,
                 display_name=None,
                 file_id=None):
        super(FileLogInfo, self).__init__(path,
                                          display_name,
                                          file_id)

    def __repr__(self):
        return 'FileLogInfo(path={!r}, display_name={!r}, file_id={!r})'.format(
            self._path_value,
            self._display_name_value,
            self._file_id_value,
        )

FileLogInfo_validator = bv.Struct(FileLogInfo)

class FileMoveDetails(object):
    """
    Moved files and/or folders.

    :ivar 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 __repr__(self):
        return 'FileMoveDetails(relocate_action_details={!r})'.format(
            self._relocate_action_details_value,
        )

FileMoveDetails_validator = bv.Struct(FileMoveDetails)

class FilePermanentlyDeleteDetails(object):
    """
    Permanently deleted files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

FilePermanentlyDeleteDetails_validator = bv.Struct(FilePermanentlyDeleteDetails)

class FilePreviewDetails(object):
    """
    Previewed files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

FilePreviewDetails_validator = bv.Struct(FilePreviewDetails)

class FileRenameDetails(object):
    """
    Renamed files and/or folders.

    :ivar 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 __repr__(self):
        return 'FileRenameDetails(relocate_action_details={!r})'.format(
            self._relocate_action_details_value,
        )

FileRenameDetails_validator = bv.Struct(FileRenameDetails)

class FileRequestAddDeadlineDetails(object):
    """
    Added a deadline to a file request.

    :ivar request_title: File request title.
    """

    __slots__ = [
        '_request_title_value',
        '_request_title_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 request_title=None):
        self._request_title_value = None
        self._request_title_present = False
        if request_title is not None:
            self.request_title = request_title

    @property
    def request_title(self):
        """
        File request title.

        :rtype: str
        """
        if self._request_title_present:
            return self._request_title_value
        else:
            return None

    @request_title.setter
    def request_title(self, val):
        if val is None:
            del self.request_title
            return
        val = self._request_title_validator.validate(val)
        self._request_title_value = val
        self._request_title_present = True

    @request_title.deleter
    def request_title(self):
        self._request_title_value = None
        self._request_title_present = False

    def __repr__(self):
        return 'FileRequestAddDeadlineDetails(request_title={!r})'.format(
            self._request_title_value,
        )

FileRequestAddDeadlineDetails_validator = bv.Struct(FileRequestAddDeadlineDetails)

class FileRequestChangeFolderDetails(object):
    """
    Changed the file request folder.

    :ivar request_title: File request title.
    """

    __slots__ = [
        '_request_title_value',
        '_request_title_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 request_title=None):
        self._request_title_value = None
        self._request_title_present = False
        if request_title is not None:
            self.request_title = request_title

    @property
    def request_title(self):
        """
        File request title.

        :rtype: str
        """
        if self._request_title_present:
            return self._request_title_value
        else:
            return None

    @request_title.setter
    def request_title(self, val):
        if val is None:
            del self.request_title
            return
        val = self._request_title_validator.validate(val)
        self._request_title_value = val
        self._request_title_present = True

    @request_title.deleter
    def request_title(self):
        self._request_title_value = None
        self._request_title_present = False

    def __repr__(self):
        return 'FileRequestChangeFolderDetails(request_title={!r})'.format(
            self._request_title_value,
        )

FileRequestChangeFolderDetails_validator = bv.Struct(FileRequestChangeFolderDetails)

class FileRequestChangeTitleDetails(object):
    """
    Change the file request title.

    :ivar request_title: File request title.
    """

    __slots__ = [
        '_request_title_value',
        '_request_title_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 request_title=None):
        self._request_title_value = None
        self._request_title_present = False
        if request_title is not None:
            self.request_title = request_title

    @property
    def request_title(self):
        """
        File request title.

        :rtype: str
        """
        if self._request_title_present:
            return self._request_title_value
        else:
            return None

    @request_title.setter
    def request_title(self, val):
        if val is None:
            del self.request_title
            return
        val = self._request_title_validator.validate(val)
        self._request_title_value = val
        self._request_title_present = True

    @request_title.deleter
    def request_title(self):
        self._request_title_value = None
        self._request_title_present = False

    def __repr__(self):
        return 'FileRequestChangeTitleDetails(request_title={!r})'.format(
            self._request_title_value,
        )

FileRequestChangeTitleDetails_validator = bv.Struct(FileRequestChangeTitleDetails)

class FileRequestCloseDetails(object):
    """
    Closed a file request.

    :ivar request_title: File request title.
    """

    __slots__ = [
        '_request_title_value',
        '_request_title_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 request_title=None):
        self._request_title_value = None
        self._request_title_present = False
        if request_title is not None:
            self.request_title = request_title

    @property
    def request_title(self):
        """
        File request title.

        :rtype: str
        """
        if self._request_title_present:
            return self._request_title_value
        else:
            return None

    @request_title.setter
    def request_title(self, val):
        if val is None:
            del self.request_title
            return
        val = self._request_title_validator.validate(val)
        self._request_title_value = val
        self._request_title_present = True

    @request_title.deleter
    def request_title(self):
        self._request_title_value = None
        self._request_title_present = False

    def __repr__(self):
        return 'FileRequestCloseDetails(request_title={!r})'.format(
            self._request_title_value,
        )

FileRequestCloseDetails_validator = bv.Struct(FileRequestCloseDetails)

class FileRequestCreateDetails(object):
    """
    Created a file request.

    :ivar request_title: File request title.
    """

    __slots__ = [
        '_request_title_value',
        '_request_title_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 request_title=None):
        self._request_title_value = None
        self._request_title_present = False
        if request_title is not None:
            self.request_title = request_title

    @property
    def request_title(self):
        """
        File request title.

        :rtype: str
        """
        if self._request_title_present:
            return self._request_title_value
        else:
            return None

    @request_title.setter
    def request_title(self, val):
        if val is None:
            del self.request_title
            return
        val = self._request_title_validator.validate(val)
        self._request_title_value = val
        self._request_title_present = True

    @request_title.deleter
    def request_title(self):
        self._request_title_value = None
        self._request_title_present = False

    def __repr__(self):
        return 'FileRequestCreateDetails(request_title={!r})'.format(
            self._request_title_value,
        )

FileRequestCreateDetails_validator = bv.Struct(FileRequestCreateDetails)

class FileRequestReceiveFileDetails(object):
    """
    Received files for a file request.

    :ivar request_title: File request title.
    :ivar submitted_file_names: Submitted file names.
    """

    __slots__ = [
        '_request_title_value',
        '_request_title_present',
        '_submitted_file_names_value',
        '_submitted_file_names_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 submitted_file_names=None,
                 request_title=None):
        self._request_title_value = None
        self._request_title_present = False
        self._submitted_file_names_value = None
        self._submitted_file_names_present = False
        if request_title is not None:
            self.request_title = request_title
        if submitted_file_names is not None:
            self.submitted_file_names = submitted_file_names

    @property
    def request_title(self):
        """
        File request title.

        :rtype: str
        """
        if self._request_title_present:
            return self._request_title_value
        else:
            return None

    @request_title.setter
    def request_title(self, val):
        if val is None:
            del self.request_title
            return
        val = self._request_title_validator.validate(val)
        self._request_title_value = val
        self._request_title_present = True

    @request_title.deleter
    def request_title(self):
        self._request_title_value = None
        self._request_title_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

    def __repr__(self):
        return 'FileRequestReceiveFileDetails(submitted_file_names={!r}, request_title={!r})'.format(
            self._submitted_file_names_value,
            self._request_title_value,
        )

FileRequestReceiveFileDetails_validator = bv.Struct(FileRequestReceiveFileDetails)

class FileRequestRemoveDeadlineDetails(object):
    """
    Removed the file request deadline.

    :ivar request_title: File request title.
    """

    __slots__ = [
        '_request_title_value',
        '_request_title_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 request_title=None):
        self._request_title_value = None
        self._request_title_present = False
        if request_title is not None:
            self.request_title = request_title

    @property
    def request_title(self):
        """
        File request title.

        :rtype: str
        """
        if self._request_title_present:
            return self._request_title_value
        else:
            return None

    @request_title.setter
    def request_title(self, val):
        if val is None:
            del self.request_title
            return
        val = self._request_title_validator.validate(val)
        self._request_title_value = val
        self._request_title_present = True

    @request_title.deleter
    def request_title(self):
        self._request_title_value = None
        self._request_title_present = False

    def __repr__(self):
        return 'FileRequestRemoveDeadlineDetails(request_title={!r})'.format(
            self._request_title_value,
        )

FileRequestRemoveDeadlineDetails_validator = bv.Struct(FileRequestRemoveDeadlineDetails)

class FileRequestSendDetails(object):
    """
    Sent file request to users via email.

    :ivar request_title: File request title.
    """

    __slots__ = [
        '_request_title_value',
        '_request_title_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 request_title=None):
        self._request_title_value = None
        self._request_title_present = False
        if request_title is not None:
            self.request_title = request_title

    @property
    def request_title(self):
        """
        File request title.

        :rtype: str
        """
        if self._request_title_present:
            return self._request_title_value
        else:
            return None

    @request_title.setter
    def request_title(self, val):
        if val is None:
            del self.request_title
            return
        val = self._request_title_validator.validate(val)
        self._request_title_value = val
        self._request_title_present = True

    @request_title.deleter
    def request_title(self):
        self._request_title_value = None
        self._request_title_present = False

    def __repr__(self):
        return 'FileRequestSendDetails(request_title={!r})'.format(
            self._request_title_value,
        )

FileRequestSendDetails_validator = bv.Struct(FileRequestSendDetails)

class FileRequestsChangePolicyDetails(object):
    """
    Enabled or disabled file requests.

    :ivar new_value: New file requests policy.
    :ivar 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 __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 FileRequestsEmailsEnabledDetails(object):
    """
    Enabled file request emails for everyone.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

FileRequestsEmailsEnabledDetails_validator = bv.Struct(FileRequestsEmailsEnabledDetails)

class FileRequestsEmailsRestrictedToTeamOnlyDetails(object):
    """
    Allowed file request emails for the team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

FileRequestsEmailsRestrictedToTeamOnlyDetails_validator = bv.Struct(FileRequestsEmailsRestrictedToTeamOnlyDetails)

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 __repr__(self):
        return 'FileRequestsPolicy(%r, %r)' % (self._tag, self._value)

FileRequestsPolicy_validator = bv.Union(FileRequestsPolicy)

class FileResolveCommentDetails(object):
    """
    Resolved a file comment.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar comment_text: Comment text. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 comment_text=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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 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 __repr__(self):
        return 'FileResolveCommentDetails(target_asset_index={!r}, comment_text={!r})'.format(
            self._target_asset_index_value,
            self._comment_text_value,
        )

FileResolveCommentDetails_validator = bv.Struct(FileResolveCommentDetails)

class FileRestoreDetails(object):
    """
    Restored deleted files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

FileRestoreDetails_validator = bv.Struct(FileRestoreDetails)

class FileRevertDetails(object):
    """
    Reverted files to a previous version.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

FileRevertDetails_validator = bv.Struct(FileRevertDetails)

class FileRollbackChangesDetails(object):
    """
    Rolled back file change location changes.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

FileRollbackChangesDetails_validator = bv.Struct(FileRollbackChangesDetails)

class FileSaveCopyReferenceDetails(object):
    """
    Save a file or folder using a copy reference.

    :ivar 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 __repr__(self):
        return 'FileSaveCopyReferenceDetails(relocate_action_details={!r})'.format(
            self._relocate_action_details_value,
        )

FileSaveCopyReferenceDetails_validator = bv.Struct(FileSaveCopyReferenceDetails)

class FileUnlikeCommentDetails(object):
    """
    Unliked a file comment.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar comment_text: Comment text. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 comment_text=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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 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 __repr__(self):
        return 'FileUnlikeCommentDetails(target_asset_index={!r}, comment_text={!r})'.format(
            self._target_asset_index_value,
            self._comment_text_value,
        )

FileUnlikeCommentDetails_validator = bv.Struct(FileUnlikeCommentDetails)

class FileUnresolveCommentDetails(object):
    """
    Unresolved a file comment.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar comment_text: Comment text. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 comment_text=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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 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 __repr__(self):
        return 'FileUnresolveCommentDetails(target_asset_index={!r}, comment_text={!r})'.format(
            self._target_asset_index_value,
            self._comment_text_value,
        )

FileUnresolveCommentDetails_validator = bv.Struct(FileUnresolveCommentDetails)

class FolderLogInfo(FileOrFolderLogInfo):
    """
    Folder's logged information.
    """

    __slots__ = [
    ]

    _has_required_fields = True

    def __init__(self,
                 path=None,
                 display_name=None,
                 file_id=None):
        super(FolderLogInfo, self).__init__(path,
                                            display_name,
                                            file_id)

    def __repr__(self):
        return 'FolderLogInfo(path={!r}, display_name={!r}, file_id={!r})'.format(
            self._path_value,
            self._display_name_value,
            self._file_id_value,
        )

FolderLogInfo_validator = bv.Struct(FolderLogInfo)

class GeoLocationLogInfo(object):
    """
    Geographic location details.

    :ivar city: City name.
    :ivar region: Region name.
    :ivar country: Country code.
    :ivar 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 __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(object):
    """
    :ivar limit: Number of results to return per call.
    :ivar account_id: Filter the events by account ID. Return ony events with
        this account_id as either Actor, Context, or Participants.
    :ivar time: Filter by time range.
    :ivar category: Filter the returned events to a single category.
    """

    __slots__ = [
        '_limit_value',
        '_limit_present',
        '_account_id_value',
        '_account_id_present',
        '_time_value',
        '_time_present',
        '_category_value',
        '_category_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 limit=None,
                 account_id=None,
                 time=None,
                 category=None):
        self._limit_value = None
        self._limit_present = False
        self._account_id_value = None
        self._account_id_present = False
        self._time_value = None
        self._time_present = False
        self._category_value = None
        self._category_present = False
        if limit is not None:
            self.limit = limit
        if account_id is not None:
            self.account_id = account_id
        if time is not None:
            self.time = time
        if category is not None:
            self.category = category

    @property
    def limit(self):
        """
        Number of results to return per call.

        :rtype: long
        """
        if self._limit_present:
            return self._limit_value
        else:
            return 1000

    @limit.setter
    def limit(self, val):
        val = self._limit_validator.validate(val)
        self._limit_value = val
        self._limit_present = True

    @limit.deleter
    def limit(self):
        self._limit_value = None
        self._limit_present = False

    @property
    def account_id(self):
        """
        Filter the events by account ID. Return ony events with this account_id
        as either Actor, Context, or Participants.

        :rtype: str
        """
        if self._account_id_present:
            return self._account_id_value
        else:
            return None

    @account_id.setter
    def account_id(self, val):
        if val is None:
            del self.account_id
            return
        val = self._account_id_validator.validate(val)
        self._account_id_value = val
        self._account_id_present = True

    @account_id.deleter
    def account_id(self):
        self._account_id_value = None
        self._account_id_present = False

    @property
    def time(self):
        """
        Filter by time range.

        :rtype: team_common.TimeRange_validator
        """
        if self._time_present:
            return self._time_value
        else:
            return None

    @time.setter
    def time(self, val):
        if val is None:
            del self.time
            return
        self._time_validator.validate_type_only(val)
        self._time_value = val
        self._time_present = True

    @time.deleter
    def time(self):
        self._time_value = None
        self._time_present = False

    @property
    def category(self):
        """
        Filter the returned events to a single category.

        :rtype: EventCategory
        """
        if self._category_present:
            return self._category_value
        else:
            return None

    @category.setter
    def category(self, val):
        if val is None:
            del self.category
            return
        self._category_validator.validate_type_only(val)
        self._category_value = val
        self._category_present = True

    @category.deleter
    def category(self):
        self._category_value = None
        self._category_present = False

    def __repr__(self):
        return 'GetTeamEventsArg(limit={!r}, account_id={!r}, time={!r}, category={!r})'.format(
            self._limit_value,
            self._account_id_value,
            self._time_value,
            self._category_value,
        )

GetTeamEventsArg_validator = bv.Struct(GetTeamEventsArg)

class GetTeamEventsContinueArg(object):
    """
    :ivar 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 __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 bad_cursor: Bad cursor.
    """

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

    def is_bad_cursor(self):
        """
        Check if the union tag is ``bad_cursor``.

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

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

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

    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 account_id_not_found: No user found matching the provided account_id.
    :ivar invalid_time_range: Invalid time range.
    """

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

    def is_account_id_not_found(self):
        """
        Check if the union tag is ``account_id_not_found``.

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

    def is_invalid_time_range(self):
        """
        Check if the union tag is ``invalid_time_range``.

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

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

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

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

GetTeamEventsError_validator = bv.Union(GetTeamEventsError)

class GetTeamEventsResult(object):
    """
    :ivar events: List of events.
    :ivar cursor: Pass the cursor into
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue` to obtain
        additional events.
    :ivar has_more: Is true if there are additional events that have not been
        returned yet. An additional call to
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue` can
        retrieve them.
    """

    __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.

        :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.

        :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 are additional events that have not been returned yet.
        An additional call to
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue` can
        retrieve them.

        :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 __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(object):
    """
    Enabled or disabled Google single sign-on for the team.

    :ivar new_value: New Google single sign-on policy.
    :ivar 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 __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 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 __repr__(self):
        return 'GoogleSsoPolicy(%r, %r)' % (self._tag, self._value)

GoogleSsoPolicy_validator = bv.Union(GoogleSsoPolicy)

class GroupAddExternalIdDetails(object):
    """
    Added an external ID for group.

    :ivar 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 __repr__(self):
        return 'GroupAddExternalIdDetails(new_value={!r})'.format(
            self._new_value_value,
        )

GroupAddExternalIdDetails_validator = bv.Struct(GroupAddExternalIdDetails)

class GroupAddMemberDetails(object):
    """
    Added team members to a group.

    :ivar 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 __repr__(self):
        return 'GroupAddMemberDetails(is_group_owner={!r})'.format(
            self._is_group_owner_value,
        )

GroupAddMemberDetails_validator = bv.Struct(GroupAddMemberDetails)

class GroupChangeExternalIdDetails(object):
    """
    Changed the external ID for group.

    :ivar new_value: Current external id.
    :ivar 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 __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 GroupChangeManagementTypeDetails(object):
    """
    Changed group management type.

    :ivar new_value: New group management type.
    :ivar 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_validator
        """
        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_validator
        """
        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 __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 GroupChangeMemberRoleDetails(object):
    """
    Changed the manager permissions belonging to a group member.

    :ivar 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 __repr__(self):
        return 'GroupChangeMemberRoleDetails(is_group_owner={!r})'.format(
            self._is_group_owner_value,
        )

GroupChangeMemberRoleDetails_validator = bv.Struct(GroupChangeMemberRoleDetails)

class GroupCreateDetails(object):
    """
    Created a group.

    :ivar is_company_managed: Is company managed group. Might be missing due to
        historical data gap.
    :ivar join_policy: Group join policy.
    """

    __slots__ = [
        '_is_company_managed_value',
        '_is_company_managed_present',
        '_join_policy_value',
        '_join_policy_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 join_policy=None,
                 is_company_managed=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:
            raise AttributeError("missing required field 'join_policy'")

    @join_policy.setter
    def join_policy(self, val):
        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 __repr__(self):
        return 'GroupCreateDetails(join_policy={!r}, is_company_managed={!r})'.format(
            self._join_policy_value,
            self._is_company_managed_value,
        )

GroupCreateDetails_validator = bv.Struct(GroupCreateDetails)

class GroupDeleteDetails(object):
    """
    Deleted a group.

    :ivar 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 __repr__(self):
        return 'GroupDeleteDetails(is_company_managed={!r})'.format(
            self._is_company_managed_value,
        )

GroupDeleteDetails_validator = bv.Struct(GroupDeleteDetails)

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 __repr__(self):
        return 'GroupJoinPolicy(%r, %r)' % (self._tag, self._value)

GroupJoinPolicy_validator = bv.Union(GroupJoinPolicy)

class GroupLogInfo(object):
    """
    Group's logged information.

    :ivar group_id: The unique id of this group. Might be missing due to
        historical data gap.
    :ivar display_name: The name of this group.
    :ivar 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 __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(object):
    """
    Moved a group.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

GroupMovedDetails_validator = bv.Struct(GroupMovedDetails)

class GroupRemoveExternalIdDetails(object):
    """
    Removed the external ID for group.

    :ivar 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 __repr__(self):
        return 'GroupRemoveExternalIdDetails(previous_value={!r})'.format(
            self._previous_value_value,
        )

GroupRemoveExternalIdDetails_validator = bv.Struct(GroupRemoveExternalIdDetails)

class GroupRemoveMemberDetails(object):
    """
    Removed team members from a group.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

GroupRemoveMemberDetails_validator = bv.Struct(GroupRemoveMemberDetails)

class GroupRenameDetails(object):
    """
    Renamed a group.

    :ivar previous_value: Previous display name.
    :ivar 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 __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 GroupUserManagementChangePolicyDetails(object):
    """
    Changed who can create groups.

    :ivar new_value: New group users management policy.
    :ivar 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: GroupUserManagementPolicy
        """
        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: GroupUserManagementPolicy
        """
        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 __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 GroupUserManagementPolicy(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
    admins_only = None
    # Attribute is overwritten below the class definition
    all_users = 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_all_users(self):
        """
        Check if the union tag is ``all_users``.

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

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

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

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

GroupUserManagementPolicy_validator = bv.Union(GroupUserManagementPolicy)

class HostLogInfo(object):
    """
    Host details.

    :ivar host_id: Host ID. Might be missing due to historical data gap.
    :ivar host_name: Host name. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_host_id_value',
        '_host_id_present',
        '_host_name_value',
        '_host_name_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 host_id=None,
                 host_name=None):
        self._host_id_value = None
        self._host_id_present = False
        self._host_name_value = None
        self._host_name_present = False
        if host_id is not None:
            self.host_id = host_id
        if host_name is not None:
            self.host_name = host_name

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

        :rtype: long
        """
        if self._host_id_present:
            return self._host_id_value
        else:
            return None

    @host_id.setter
    def host_id(self, val):
        if val is None:
            del self.host_id
            return
        val = self._host_id_validator.validate(val)
        self._host_id_value = val
        self._host_id_present = True

    @host_id.deleter
    def host_id(self):
        self._host_id_value = None
        self._host_id_present = False

    @property
    def host_name(self):
        """
        Host name. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._host_name_present:
            return self._host_name_value
        else:
            return None

    @host_name.setter
    def host_name(self, val):
        if val is None:
            del self.host_name
            return
        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

    def __repr__(self):
        return 'HostLogInfo(host_id={!r}, host_name={!r})'.format(
            self._host_id_value,
            self._host_name_value,
        )

HostLogInfo_validator = bv.Struct(HostLogInfo)

class JoinTeamDetails(object):
    """
    Additional information relevant when a new member joins the team.

    :ivar linked_apps: Linked applications.
    :ivar linked_devices: Linked devices.
    :ivar linked_shared_folders: Linked shared folders.
    """

    __slots__ = [
        '_linked_apps_value',
        '_linked_apps_present',
        '_linked_devices_value',
        '_linked_devices_present',
        '_linked_shared_folders_value',
        '_linked_shared_folders_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 linked_apps=None,
                 linked_devices=None,
                 linked_shared_folders=None):
        self._linked_apps_value = None
        self._linked_apps_present = False
        self._linked_devices_value = None
        self._linked_devices_present = False
        self._linked_shared_folders_value = None
        self._linked_shared_folders_present = False
        if linked_apps is not None:
            self.linked_apps = linked_apps
        if linked_devices is not None:
            self.linked_devices = linked_devices
        if linked_shared_folders is not None:
            self.linked_shared_folders = linked_shared_folders

    @property
    def linked_apps(self):
        """
        Linked applications.

        :rtype: list of [AppLogInfo]
        """
        if self._linked_apps_present:
            return self._linked_apps_value
        else:
            raise AttributeError("missing required field 'linked_apps'")

    @linked_apps.setter
    def linked_apps(self, val):
        val = self._linked_apps_validator.validate(val)
        self._linked_apps_value = val
        self._linked_apps_present = True

    @linked_apps.deleter
    def linked_apps(self):
        self._linked_apps_value = None
        self._linked_apps_present = False

    @property
    def linked_devices(self):
        """
        Linked devices.

        :rtype: list of [DeviceLogInfo]
        """
        if self._linked_devices_present:
            return self._linked_devices_value
        else:
            raise AttributeError("missing required field 'linked_devices'")

    @linked_devices.setter
    def linked_devices(self, val):
        val = self._linked_devices_validator.validate(val)
        self._linked_devices_value = val
        self._linked_devices_present = True

    @linked_devices.deleter
    def linked_devices(self):
        self._linked_devices_value = None
        self._linked_devices_present = False

    @property
    def linked_shared_folders(self):
        """
        Linked shared folders.

        :rtype: list of [FolderLogInfo]
        """
        if self._linked_shared_folders_present:
            return self._linked_shared_folders_value
        else:
            raise AttributeError("missing required field 'linked_shared_folders'")

    @linked_shared_folders.setter
    def linked_shared_folders(self, val):
        val = self._linked_shared_folders_validator.validate(val)
        self._linked_shared_folders_value = val
        self._linked_shared_folders_present = True

    @linked_shared_folders.deleter
    def linked_shared_folders(self):
        self._linked_shared_folders_value = None
        self._linked_shared_folders_present = False

    def __repr__(self):
        return 'JoinTeamDetails(linked_apps={!r}, linked_devices={!r}, linked_shared_folders={!r})'.format(
            self._linked_apps_value,
            self._linked_devices_value,
            self._linked_shared_folders_value,
        )

JoinTeamDetails_validator = bv.Struct(JoinTeamDetails)

class LinkAudience(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
    public = None
    # Attribute is overwritten below the class definition
    team = None
    # Attribute is overwritten below the class definition
    members = None
    # Attribute is overwritten below the class definition
    other = None

    def is_public(self):
        """
        Check if the union tag is ``public``.

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

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

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

    def is_members(self):
        """
        Check if the union tag is ``members``.

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

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

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

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

LinkAudience_validator = bv.Union(LinkAudience)

class LogoutDetails(object):
    """
    Signed out.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

LogoutDetails_validator = bv.Struct(LogoutDetails)

class MemberAddNameDetails(object):
    """
    Set team member name when joining team.

    :ivar value: User's name.
    """

    __slots__ = [
        '_value_value',
        '_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 value=None):
        self._value_value = None
        self._value_present = False
        if value is not None:
            self.value = value

    @property
    def value(self):
        """
        User's name.

        :rtype: UserNameLogInfo
        """
        if self._value_present:
            return self._value_value
        else:
            raise AttributeError("missing required field 'value'")

    @value.setter
    def value(self, val):
        self._value_validator.validate_type_only(val)
        self._value_value = val
        self._value_present = True

    @value.deleter
    def value(self):
        self._value_value = None
        self._value_present = False

    def __repr__(self):
        return 'MemberAddNameDetails(value={!r})'.format(
            self._value_value,
        )

MemberAddNameDetails_validator = bv.Struct(MemberAddNameDetails)

class MemberChangeAdminRoleDetails(object):
    """
    Change the admin role belonging to team member.

    :ivar 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 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 __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 MemberChangeEmailDetails(object):
    """
    Changed team member email address.

    :ivar new_value: New email.
    :ivar 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 __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 MemberChangeMembershipTypeDetails(object):
    """
    Changed the membership type (limited vs full) for team member.

    :ivar prev_value: Previous membership type.
    :ivar 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 __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 MemberChangeNameDetails(object):
    """
    Changed team member name.

    :ivar new_value: New user's name.
    :ivar 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 __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 MemberChangeStatusDetails(object):
    """
    Changed the membership status of a team member.

    :ivar previous_value: Previous member status. Might be missing due to
        historical data gap.
    :ivar new_value: New member status.
    :ivar team_join_details: Additional information relevant when a new member
        joins the team.
    """

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

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None,
                 team_join_details=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        self._team_join_details_value = None
        self._team_join_details_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_join_details is not None:
            self.team_join_details = team_join_details

    @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 team_join_details(self):
        """
        Additional information relevant when a new member joins the team.

        :rtype: JoinTeamDetails
        """
        if self._team_join_details_present:
            return self._team_join_details_value
        else:
            return None

    @team_join_details.setter
    def team_join_details(self, val):
        if val is None:
            del self.team_join_details
            return
        self._team_join_details_validator.validate_type_only(val)
        self._team_join_details_value = val
        self._team_join_details_present = True

    @team_join_details.deleter
    def team_join_details(self):
        self._team_join_details_value = None
        self._team_join_details_present = False

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

MemberChangeStatusDetails_validator = bv.Struct(MemberChangeStatusDetails)

class MemberPermanentlyDeleteAccountContentsDetails(object):
    """
    Permanently deleted contents of a removed team member account.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

MemberPermanentlyDeleteAccountContentsDetails_validator = bv.Struct(MemberPermanentlyDeleteAccountContentsDetails)

class MemberRequestsChangePolicyDetails(object):
    """
    Changed whether users can find the team when not invited.

    :ivar new_value: New member change requests policy.
    :ivar 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 __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 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 __repr__(self):
        return 'MemberRequestsPolicy(%r, %r)' % (self._tag, self._value)

MemberRequestsPolicy_validator = bv.Union(MemberRequestsPolicy)

class MemberSpaceLimitsAddExceptionDetails(object):
    """
    Added an exception for one or more team members to bypass space limits
    imposed by policy.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

MemberSpaceLimitsAddExceptionDetails_validator = bv.Struct(MemberSpaceLimitsAddExceptionDetails)

class MemberSpaceLimitsChangePolicyDetails(object):
    """
    Changed the storage limits applied to team members by policy.

    :ivar previous_value: Previous storage limits policy.
    :ivar new_value: New storage limits 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 storage limits policy.

        :rtype: SpaceLimitsLevel
        """
        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 limits policy.

        :rtype: SpaceLimitsLevel
        """
        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 __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 MemberSpaceLimitsChangeStatusDetails(object):
    """
    Changed the status with respect to whether the team member is under or over
    storage quota specified by policy.

    :ivar previous_value: Previous storage quota status.
    :ivar 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 __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 MemberSpaceLimitsRemoveExceptionDetails(object):
    """
    Removed an exception for one or more team members to bypass space limits
    imposed by policy.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

MemberSpaceLimitsRemoveExceptionDetails_validator = bv.Struct(MemberSpaceLimitsRemoveExceptionDetails)

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

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    not_joined = None
    # Attribute is overwritten below the class definition
    invited = None
    # Attribute is overwritten below the class definition
    active = None
    # Attribute is overwritten below the class definition
    suspended = None
    # Attribute is overwritten below the class definition
    removed = None
    # Attribute is overwritten below the class definition
    other = None

    def is_not_joined(self):
        """
        Check if the union tag is ``not_joined``.

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

    def is_invited(self):
        """
        Check if the union tag is ``invited``.

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

    def is_active(self):
        """
        Check if the union tag is ``active``.

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

    def is_suspended(self):
        """
        Check if the union tag is ``suspended``.

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

    def is_removed(self):
        """
        Check if the union tag is ``removed``.

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

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

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

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

MemberStatus_validator = bv.Union(MemberStatus)

class MemberSuggestDetails(object):
    """
    Suggested a new team member to be added to the team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

MemberSuggestDetails_validator = bv.Struct(MemberSuggestDetails)

class MemberSuggestionsChangePolicyDetails(object):
    """
    Enabled or disabled the option for team members to suggest new members to
    add to the team.

    :ivar new_value: New team member suggestions policy.
    :ivar 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 __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 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 __repr__(self):
        return 'MemberSuggestionsPolicy(%r, %r)' % (self._tag, self._value)

MemberSuggestionsPolicy_validator = bv.Union(MemberSuggestionsPolicy)

class MemberTransferAccountContentsDetails(object):
    """
    Transferred contents of a removed team member account to another member.

    :ivar src_participant_index: Source participant position in the Participants
        list.
    :ivar dest_participant_index: Destination participant position in the
        Participants list.
    """

    __slots__ = [
        '_src_participant_index_value',
        '_src_participant_index_present',
        '_dest_participant_index_value',
        '_dest_participant_index_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 src_participant_index=None,
                 dest_participant_index=None):
        self._src_participant_index_value = None
        self._src_participant_index_present = False
        self._dest_participant_index_value = None
        self._dest_participant_index_present = False
        if src_participant_index is not None:
            self.src_participant_index = src_participant_index
        if dest_participant_index is not None:
            self.dest_participant_index = dest_participant_index

    @property
    def src_participant_index(self):
        """
        Source participant position in the Participants list.

        :rtype: long
        """
        if self._src_participant_index_present:
            return self._src_participant_index_value
        else:
            raise AttributeError("missing required field 'src_participant_index'")

    @src_participant_index.setter
    def src_participant_index(self, val):
        val = self._src_participant_index_validator.validate(val)
        self._src_participant_index_value = val
        self._src_participant_index_present = True

    @src_participant_index.deleter
    def src_participant_index(self):
        self._src_participant_index_value = None
        self._src_participant_index_present = False

    @property
    def dest_participant_index(self):
        """
        Destination participant position in the Participants list.

        :rtype: long
        """
        if self._dest_participant_index_present:
            return self._dest_participant_index_value
        else:
            raise AttributeError("missing required field 'dest_participant_index'")

    @dest_participant_index.setter
    def dest_participant_index(self, val):
        val = self._dest_participant_index_validator.validate(val)
        self._dest_participant_index_value = val
        self._dest_participant_index_present = True

    @dest_participant_index.deleter
    def dest_participant_index(self):
        self._dest_participant_index_value = None
        self._dest_participant_index_present = False

    def __repr__(self):
        return 'MemberTransferAccountContentsDetails(src_participant_index={!r}, dest_participant_index={!r})'.format(
            self._src_participant_index_value,
            self._dest_participant_index_value,
        )

MemberTransferAccountContentsDetails_validator = bv.Struct(MemberTransferAccountContentsDetails)

class MicrosoftOfficeAddinChangePolicyDetails(object):
    """
    Enabled or disabled the Microsoft Office add-in, which lets team members
    save files to Dropbox directly from Microsoft Office.

    :ivar new_value: New Microsoft Office addin policy.
    :ivar 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 __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 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 __repr__(self):
        return 'MicrosoftOfficeAddinPolicy(%r, %r)' % (self._tag, self._value)

MicrosoftOfficeAddinPolicy_validator = bv.Union(MicrosoftOfficeAddinPolicy)

class MissingDetails(object):
    """
    An indication that an event was returned with missing details
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

MissingDetails_validator = bv.Struct(MissingDetails)

class MobileSessionLogInfo(SessionLogInfo):
    """
    Mobile session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

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

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

MobileSessionLogInfo_validator = bv.Struct(MobileSessionLogInfo)

class NamespaceRelativePathLogInfo(object):
    """
    Namespace relative path details.

    :ivar ns_id: Namespace ID. Might be missing due to historical data gap.
    :ivar relative_path: A path relative to the specified namespace ID. Might be
        missing due to historical data gap.
    """

    __slots__ = [
        '_ns_id_value',
        '_ns_id_present',
        '_relative_path_value',
        '_relative_path_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 ns_id=None,
                 relative_path=None):
        self._ns_id_value = None
        self._ns_id_present = False
        self._relative_path_value = None
        self._relative_path_present = False
        if ns_id is not None:
            self.ns_id = ns_id
        if relative_path is not None:
            self.relative_path = relative_path

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

        :rtype: str
        """
        if self._ns_id_present:
            return self._ns_id_value
        else:
            return None

    @ns_id.setter
    def ns_id(self, val):
        if val is None:
            del self.ns_id
            return
        val = self._ns_id_validator.validate(val)
        self._ns_id_value = val
        self._ns_id_present = True

    @ns_id.deleter
    def ns_id(self):
        self._ns_id_value = None
        self._ns_id_present = False

    @property
    def relative_path(self):
        """
        A path relative to the specified namespace ID. Might be missing due to
        historical data gap.

        :rtype: str
        """
        if self._relative_path_present:
            return self._relative_path_value
        else:
            return None

    @relative_path.setter
    def relative_path(self, val):
        if val is None:
            del self.relative_path
            return
        val = self._relative_path_validator.validate(val)
        self._relative_path_value = val
        self._relative_path_present = True

    @relative_path.deleter
    def relative_path(self):
        self._relative_path_value = None
        self._relative_path_present = False

    def __repr__(self):
        return 'NamespaceRelativePathLogInfo(ns_id={!r}, relative_path={!r})'.format(
            self._ns_id_value,
            self._relative_path_value,
        )

NamespaceRelativePathLogInfo_validator = bv.Struct(NamespaceRelativePathLogInfo)

class NetworkControlChangePolicyDetails(object):
    """
    Enabled or disabled network control.

    :ivar new_value: New network control policy.
    :ivar 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 __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 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 __repr__(self):
        return 'NetworkControlPolicy(%r, %r)' % (self._tag, self._value)

NetworkControlPolicy_validator = bv.Union(NetworkControlPolicy)

class UserLogInfo(object):
    """
    User's logged information.

    :ivar account_id: User unique ID. Might be missing due to historical data
        gap.
    :ivar display_name: User display name. Might be missing due to historical
        data gap.
    :ivar 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 __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 __repr__(self):
        return 'NonTeamMemberLogInfo(account_id={!r}, display_name={!r}, email={!r})'.format(
            self._account_id_value,
            self._display_name_value,
            self._email_value,
        )

NonTeamMemberLogInfo_validator = bv.Struct(NonTeamMemberLogInfo)

class NoteAclInviteOnlyDetails(object):
    """
    Changed a Paper document to be invite-only.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

NoteAclInviteOnlyDetails_validator = bv.Struct(NoteAclInviteOnlyDetails)

class NoteAclLinkDetails(object):
    """
    Changed a Paper document to be link accessible.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

NoteAclLinkDetails_validator = bv.Struct(NoteAclLinkDetails)

class NoteAclTeamLinkDetails(object):
    """
    Changed a Paper document to be link accessible for the team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

NoteAclTeamLinkDetails_validator = bv.Struct(NoteAclTeamLinkDetails)

class NoteShareReceiveDetails(object):
    """
    Shared Paper document received.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

NoteShareReceiveDetails_validator = bv.Struct(NoteShareReceiveDetails)

class NoteSharedDetails(object):
    """
    Shared a Paper doc.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

NoteSharedDetails_validator = bv.Struct(NoteSharedDetails)

class OpenNoteSharedDetails(object):
    """
    Opened a shared Paper doc.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

OpenNoteSharedDetails_validator = bv.Struct(OpenNoteSharedDetails)

class OriginLogInfo(object):
    """
    The origin from which the actor performed the action.

    :ivar geo_location: Geographic location details.
    :ivar host: Host details.
    :ivar access_method: The method that was used to perform the action.
    """

    __slots__ = [
        '_geo_location_value',
        '_geo_location_present',
        '_host_value',
        '_host_present',
        '_access_method_value',
        '_access_method_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 access_method=None,
                 geo_location=None,
                 host=None):
        self._geo_location_value = None
        self._geo_location_present = False
        self._host_value = None
        self._host_present = False
        self._access_method_value = None
        self._access_method_present = False
        if geo_location is not None:
            self.geo_location = geo_location
        if host is not None:
            self.host = host
        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 host(self):
        """
        Host details.

        :rtype: HostLogInfo
        """
        if self._host_present:
            return self._host_value
        else:
            return None

    @host.setter
    def host(self, val):
        if val is None:
            del self.host
            return
        self._host_validator.validate_type_only(val)
        self._host_value = val
        self._host_present = True

    @host.deleter
    def host(self):
        self._host_value = None
        self._host_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 __repr__(self):
        return 'OriginLogInfo(access_method={!r}, geo_location={!r}, host={!r})'.format(
            self._access_method_value,
            self._geo_location_value,
            self._host_value,
        )

OriginLogInfo_validator = bv.Struct(OriginLogInfo)

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

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

    def is_viewer(self):
        """
        Check if the union tag is ``viewer``.

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

    def is_commenter(self):
        """
        Check if the union tag is ``commenter``.

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

    def is_editor(self):
        """
        Check if the union tag is ``editor``.

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

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

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

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

PaperAccessType_validator = bv.Union(PaperAccessType)

class PaperAdminExportStartDetails(object):
    """
    Exported all Paper documents in the team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

PaperAdminExportStartDetails_validator = bv.Struct(PaperAdminExportStartDetails)

class PaperChangeDeploymentPolicyDetails(object):
    """
    Changed whether Dropbox Paper, when enabled, is deployed to all teams or to
    specific members of the team.

    :ivar new_value: New Dropbox Paper deployment policy.
    :ivar 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_validator
        """
        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_validator
        """
        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 __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 PaperChangeMemberLinkPolicyDetails(object):
    """
    Changed whether non team members can view Paper documents using a link.

    :ivar 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 __repr__(self):
        return 'PaperChangeMemberLinkPolicyDetails(new_value={!r})'.format(
            self._new_value_value,
        )

PaperChangeMemberLinkPolicyDetails_validator = bv.Struct(PaperChangeMemberLinkPolicyDetails)

class PaperChangeMemberPolicyDetails(object):
    """
    Changed whether team members can share Paper documents externally (i.e.
    outside the team), and if so, whether they should be accessible only by team
    members or anyone by default.

    :ivar new_value: New paper external accessibility policy.
    :ivar 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 __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 PaperChangePolicyDetails(object):
    """
    Enabled or disabled Dropbox Paper for the team.

    :ivar new_value: New Dropbox Paper policy.
    :ivar 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_validator
        """
        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_validator
        """
        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 __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 PaperContentAddMemberDetails(object):
    """
    Added users to the membership of a Paper doc or folder.

    :ivar 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 __repr__(self):
        return 'PaperContentAddMemberDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentAddMemberDetails_validator = bv.Struct(PaperContentAddMemberDetails)

class PaperContentAddToFolderDetails(object):
    """
    Added Paper doc or folder to a folder.

    :ivar event_uuid: Event unique identifier.
    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar 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: long
        """
        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: long
        """
        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 __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 PaperContentArchiveDetails(object):
    """
    Archived Paper doc or folder.

    :ivar 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 __repr__(self):
        return 'PaperContentArchiveDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentArchiveDetails_validator = bv.Struct(PaperContentArchiveDetails)

class PaperContentCreateDetails(object):
    """
    Created a Paper doc or folder.

    :ivar 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 __repr__(self):
        return 'PaperContentCreateDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentCreateDetails_validator = bv.Struct(PaperContentCreateDetails)

class PaperContentPermanentlyDeleteDetails(object):
    """
    Permanently deleted a Paper doc or folder.

    :ivar 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 __repr__(self):
        return 'PaperContentPermanentlyDeleteDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentPermanentlyDeleteDetails_validator = bv.Struct(PaperContentPermanentlyDeleteDetails)

class PaperContentRemoveFromFolderDetails(object):
    """
    Removed Paper doc or folder from a folder.

    :ivar 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 __repr__(self):
        return 'PaperContentRemoveFromFolderDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentRemoveFromFolderDetails_validator = bv.Struct(PaperContentRemoveFromFolderDetails)

class PaperContentRemoveMemberDetails(object):
    """
    Removed a user from the membership of a Paper doc or folder.

    :ivar 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 __repr__(self):
        return 'PaperContentRemoveMemberDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentRemoveMemberDetails_validator = bv.Struct(PaperContentRemoveMemberDetails)

class PaperContentRenameDetails(object):
    """
    Renamed Paper doc or folder.

    :ivar 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 __repr__(self):
        return 'PaperContentRenameDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentRenameDetails_validator = bv.Struct(PaperContentRenameDetails)

class PaperContentRestoreDetails(object):
    """
    Restored an archived Paper doc or folder.

    :ivar 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 __repr__(self):
        return 'PaperContentRestoreDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentRestoreDetails_validator = bv.Struct(PaperContentRestoreDetails)

class PaperDocAddCommentDetails(object):
    """
    Added a Paper doc comment.

    :ivar event_uuid: Event unique identifier.
    :ivar 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 __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 PaperDocChangeMemberRoleDetails(object):
    """
    Changed the access type of a Paper doc member.

    :ivar event_uuid: Event unique identifier.
    :ivar 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 __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 PaperDocChangeSharingPolicyDetails(object):
    """
    Changed the sharing policy for Paper doc.

    :ivar event_uuid: Event unique identifier.
    :ivar public_sharing_policy: Sharing policy with external users. Might be
        missing due to historical data gap.
    :ivar 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 __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 PaperDocChangeSubscriptionDetails(object):
    """
    Followed or unfollowed a Paper doc.

    :ivar event_uuid: Event unique identifier.
    :ivar new_subscription_level: New doc subscription level.
    :ivar 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 __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 PaperDocDeleteCommentDetails(object):
    """
    Deleted a Paper doc comment.

    :ivar event_uuid: Event unique identifier.
    :ivar 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 __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 PaperDocDeletedDetails(object):
    """
    Paper doc archived.

    :ivar 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 __repr__(self):
        return 'PaperDocDeletedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocDeletedDetails_validator = bv.Struct(PaperDocDeletedDetails)

class PaperDocDownloadDetails(object):
    """
    Downloaded a Paper doc in a particular output format.

    :ivar event_uuid: Event unique identifier.
    :ivar 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 __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 PaperDocEditCommentDetails(object):
    """
    Edited a Paper doc comment.

    :ivar event_uuid: Event unique identifier.
    :ivar 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 __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 PaperDocEditDetails(object):
    """
    Edited a Paper doc.

    :ivar 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 __repr__(self):
        return 'PaperDocEditDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocEditDetails_validator = bv.Struct(PaperDocEditDetails)

class PaperDocFollowedDetails(object):
    """
    Followed a Paper doc.

    :ivar 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 __repr__(self):
        return 'PaperDocFollowedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocFollowedDetails_validator = bv.Struct(PaperDocFollowedDetails)

class PaperDocMentionDetails(object):
    """
    Mentioned a member in a Paper doc.

    :ivar 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 __repr__(self):
        return 'PaperDocMentionDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocMentionDetails_validator = bv.Struct(PaperDocMentionDetails)

class PaperDocRequestAccessDetails(object):
    """
    Requested to be a member on a Paper doc.

    :ivar 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 __repr__(self):
        return 'PaperDocRequestAccessDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocRequestAccessDetails_validator = bv.Struct(PaperDocRequestAccessDetails)

class PaperDocResolveCommentDetails(object):
    """
    Paper doc comment resolved.

    :ivar event_uuid: Event unique identifier.
    :ivar 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 __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 PaperDocRevertDetails(object):
    """
    Restored a Paper doc to previous revision.

    :ivar 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 __repr__(self):
        return 'PaperDocRevertDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocRevertDetails_validator = bv.Struct(PaperDocRevertDetails)

class PaperDocSlackShareDetails(object):
    """
    Paper doc link shared via slack.

    :ivar 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 __repr__(self):
        return 'PaperDocSlackShareDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocSlackShareDetails_validator = bv.Struct(PaperDocSlackShareDetails)

class PaperDocTeamInviteDetails(object):
    """
    Paper doc shared with team member.

    :ivar 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 __repr__(self):
        return 'PaperDocTeamInviteDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocTeamInviteDetails_validator = bv.Struct(PaperDocTeamInviteDetails)

class PaperDocTrashedDetails(object):
    """
    Paper doc trashed.

    :ivar 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 __repr__(self):
        return 'PaperDocTrashedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocTrashedDetails_validator = bv.Struct(PaperDocTrashedDetails)

class PaperDocUnresolveCommentDetails(object):
    """
    Unresolved a Paper doc comment.

    :ivar event_uuid: Event unique identifier.
    :ivar 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 __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 PaperDocUntrashedDetails(object):
    """
    Paper doc untrashed.

    :ivar 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 __repr__(self):
        return 'PaperDocUntrashedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocUntrashedDetails_validator = bv.Struct(PaperDocUntrashedDetails)

class PaperDocViewDetails(object):
    """
    Viewed Paper doc.

    :ivar 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 __repr__(self):
        return 'PaperDocViewDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocViewDetails_validator = bv.Struct(PaperDocViewDetails)

class PaperDocumentLogInfo(object):
    """
    Paper document's logged information.

    :ivar doc_id: Papers document Id.
    :ivar 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 __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
    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_other(self):
        """
        Check if the union tag is ``other``.

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

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

PaperDownloadFormat_validator = bv.Union(PaperDownloadFormat)

class PaperEnabledUsersGroupAdditionDetails(object):
    """
    Users added to Paper enabled users list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

PaperEnabledUsersGroupAdditionDetails_validator = bv.Struct(PaperEnabledUsersGroupAdditionDetails)

class PaperEnabledUsersGroupRemovalDetails(object):
    """
    Users removed from Paper enabled users list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

PaperEnabledUsersGroupRemovalDetails_validator = bv.Struct(PaperEnabledUsersGroupRemovalDetails)

class PaperExternalViewAllowDetails(object):
    """
    Paper external sharing policy changed: anyone.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

PaperExternalViewAllowDetails_validator = bv.Struct(PaperExternalViewAllowDetails)

class PaperExternalViewDefaultTeamDetails(object):
    """
    Paper external sharing policy changed: default team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

PaperExternalViewDefaultTeamDetails_validator = bv.Struct(PaperExternalViewDefaultTeamDetails)

class PaperExternalViewForbidDetails(object):
    """
    Paper external sharing policy changed: team-only.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

PaperExternalViewForbidDetails_validator = bv.Struct(PaperExternalViewForbidDetails)

class PaperFolderChangeSubscriptionDetails(object):
    """
    Followed or unfollowed a Paper folder.

    :ivar event_uuid: Event unique identifier.
    :ivar new_subscription_level: New folder subscription level.
    :ivar 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 __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 PaperFolderDeletedDetails(object):
    """
    Paper folder archived.

    :ivar 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 __repr__(self):
        return 'PaperFolderDeletedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperFolderDeletedDetails_validator = bv.Struct(PaperFolderDeletedDetails)

class PaperFolderFollowedDetails(object):
    """
    Followed a Paper folder.

    :ivar 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 __repr__(self):
        return 'PaperFolderFollowedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperFolderFollowedDetails_validator = bv.Struct(PaperFolderFollowedDetails)

class PaperFolderLogInfo(object):
    """
    Paper folder's logged information.

    :ivar folder_id: Papers folder Id.
    :ivar 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 __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(object):
    """
    Paper folder shared with team member.

    :ivar 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 __repr__(self):
        return 'PaperFolderTeamInviteDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperFolderTeamInviteDetails_validator = bv.Struct(PaperFolderTeamInviteDetails)

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 __repr__(self):
        return 'PaperMemberPolicy(%r, %r)' % (self._tag, self._value)

PaperMemberPolicy_validator = bv.Union(PaperMemberPolicy)

class ParticipantLogInfo(bb.Union):
    """
    A user or group

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

    :ivar UserLogInfo user: User details.
    :ivar GroupLogInfo group: Group details.
    """

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

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

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

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

        :param GroupLogInfo val:
        :rtype: ParticipantLogInfo
        """
        return cls('group', val)

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

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

    def is_group(self):
        """
        Check if the union tag is ``group``.

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

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

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

    def get_user(self):
        """
        User details.

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

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

    def get_group(self):
        """
        Group details.

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

        :rtype: GroupLogInfo
        """
        if not self.is_group():
            raise AttributeError("tag 'group' not set")
        return self._value

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

ParticipantLogInfo_validator = bv.Union(ParticipantLogInfo)

class PasswordChangeDetails(object):
    """
    Changed password.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

PasswordChangeDetails_validator = bv.Struct(PasswordChangeDetails)

class PasswordLoginFailDetails(object):
    """
    Failed to sign in using a password.

    :ivar error_details: Login failure 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):
        """
        Login failure 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 __repr__(self):
        return 'PasswordLoginFailDetails(error_details={!r})'.format(
            self._error_details_value,
        )

PasswordLoginFailDetails_validator = bv.Struct(PasswordLoginFailDetails)

class PasswordLoginSuccessDetails(object):
    """
    Signed in using a password.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

PasswordLoginSuccessDetails_validator = bv.Struct(PasswordLoginSuccessDetails)

class PasswordResetAllDetails(object):
    """
    Reset all team member passwords.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

PasswordResetAllDetails_validator = bv.Struct(PasswordResetAllDetails)

class PasswordResetDetails(object):
    """
    Reset password.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

PasswordResetDetails_validator = bv.Struct(PasswordResetDetails)

class PathLogInfo(object):
    """
    Path's details.

    :ivar contextual: Fully qualified path relative to event's context. Might be
        missing due to historical data gap.
    :ivar 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 __repr__(self):
        return 'PathLogInfo(namespace_relative={!r}, contextual={!r})'.format(
            self._namespace_relative_value,
            self._contextual_value,
        )

PathLogInfo_validator = bv.Struct(PathLogInfo)

class PermanentDeleteChangePolicyDetails(object):
    """
    Enabled or disabled the ability of team members to permanently delete
    content.

    :ivar new_value: New permanent delete content policy.
    :ivar 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 __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 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
    europe_only = None
    # Attribute is overwritten below the class definition
    none = None
    # Attribute is overwritten below the class definition
    other = None

    def is_europe_only(self):
        """
        Check if the union tag is ``europe_only``.

        :rtype: bool
        """
        return self._tag == 'europe_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 __repr__(self):
        return 'PlacementRestriction(%r, %r)' % (self._tag, self._value)

PlacementRestriction_validator = bv.Union(PlacementRestriction)

class RelocateAssetReferencesLogInfo(object):
    """
    Provides the indices of the source asset and the destination asset for a
    relocate action.

    :ivar src_asset_index: Source asset position in the Assets list.
    :ivar 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: long
        """
        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: long
        """
        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 __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(object):
    """
    Reseller information.

    :ivar reseller_name: Reseller name.
    :ivar reseller_id: Reseller ID.
    """

    __slots__ = [
        '_reseller_name_value',
        '_reseller_name_present',
        '_reseller_id_value',
        '_reseller_id_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 reseller_name=None,
                 reseller_id=None):
        self._reseller_name_value = None
        self._reseller_name_present = False
        self._reseller_id_value = None
        self._reseller_id_present = False
        if reseller_name is not None:
            self.reseller_name = reseller_name
        if reseller_id is not None:
            self.reseller_id = reseller_id

    @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_id(self):
        """
        Reseller ID.

        :rtype: str
        """
        if self._reseller_id_present:
            return self._reseller_id_value
        else:
            raise AttributeError("missing required field 'reseller_id'")

    @reseller_id.setter
    def reseller_id(self, val):
        val = self._reseller_id_validator.validate(val)
        self._reseller_id_value = val
        self._reseller_id_present = True

    @reseller_id.deleter
    def reseller_id(self):
        self._reseller_id_value = None
        self._reseller_id_present = False

    def __repr__(self):
        return 'ResellerLogInfo(reseller_name={!r}, reseller_id={!r})'.format(
            self._reseller_name_value,
            self._reseller_id_value,
        )

ResellerLogInfo_validator = bv.Struct(ResellerLogInfo)

class ResellerSupportSessionEndDetails(object):
    """
    Ended reseller support session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

ResellerSupportSessionEndDetails_validator = bv.Struct(ResellerSupportSessionEndDetails)

class ResellerSupportSessionStartDetails(object):
    """
    Started reseller support session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

ResellerSupportSessionStartDetails_validator = bv.Struct(ResellerSupportSessionStartDetails)

class SfAddGroupDetails(object):
    """
    Added the team to a shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar sharing_permission: Sharing permission. Might be missing due to
        historical data gap.
    :ivar 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: long
        """
        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 __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 SfAllowNonMembersToViewSharedLinksDetails(object):
    """
    Allowed non collaborators to view links to files in a shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar 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: long
        """
        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 __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 SfExternalInviteWarnDetails(object):
    """
    Admin settings: team members see a warning before sharing folders outside
    the team (DEPRECATED FEATURE).
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

SfExternalInviteWarnDetails_validator = bv.Struct(SfExternalInviteWarnDetails)

class SfInviteGroupDetails(object):
    """
    Invited a group to a shared folder.

    :ivar 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: long
        """
        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 __repr__(self):
        return 'SfInviteGroupDetails(target_asset_index={!r})'.format(
            self._target_asset_index_value,
        )

SfInviteGroupDetails_validator = bv.Struct(SfInviteGroupDetails)

class SfNestDetails(object):
    """
    Changed parent of shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar prev_parent_ns_id: Previous parent namespace ID. Might be missing due
        to historical data gap.
    :ivar new_parent_ns_id: New parent namespace ID. 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',
        '_prev_parent_ns_id_value',
        '_prev_parent_ns_id_present',
        '_new_parent_ns_id_value',
        '_new_parent_ns_id_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 prev_parent_ns_id=None,
                 new_parent_ns_id=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._prev_parent_ns_id_value = None
        self._prev_parent_ns_id_present = False
        self._new_parent_ns_id_value = None
        self._new_parent_ns_id_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 prev_parent_ns_id is not None:
            self.prev_parent_ns_id = prev_parent_ns_id
        if new_parent_ns_id is not None:
            self.new_parent_ns_id = new_parent_ns_id

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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 prev_parent_ns_id(self):
        """
        Previous parent namespace ID. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._prev_parent_ns_id_present:
            return self._prev_parent_ns_id_value
        else:
            return None

    @prev_parent_ns_id.setter
    def prev_parent_ns_id(self, val):
        if val is None:
            del self.prev_parent_ns_id
            return
        val = self._prev_parent_ns_id_validator.validate(val)
        self._prev_parent_ns_id_value = val
        self._prev_parent_ns_id_present = True

    @prev_parent_ns_id.deleter
    def prev_parent_ns_id(self):
        self._prev_parent_ns_id_value = None
        self._prev_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

    def __repr__(self):
        return 'SfNestDetails(target_asset_index={!r}, original_folder_name={!r}, prev_parent_ns_id={!r}, new_parent_ns_id={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._prev_parent_ns_id_value,
            self._new_parent_ns_id_value,
        )

SfNestDetails_validator = bv.Struct(SfNestDetails)

class SfTeamDeclineDetails(object):
    """
    Declined a team member's invitation to a shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar 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: long
        """
        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 __repr__(self):
        return 'SfTeamDeclineDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SfTeamDeclineDetails_validator = bv.Struct(SfTeamDeclineDetails)

class SfTeamGrantAccessDetails(object):
    """
    Granted access to a shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar 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: long
        """
        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 __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 SfTeamInviteChangeRoleDetails(object):
    """
    Changed a team member's role in a shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar new_sharing_permission: New sharing permission. Might be missing due
        to historical data gap.
    :ivar 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: long
        """
        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 __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 SfTeamInviteDetails(object):
    """
    Invited team members to a shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar 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: long
        """
        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 __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 SfTeamJoinDetails(object):
    """
    Joined a team member's shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar 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: long
        """
        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 __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(object):
    """
    Joined a team member's shared folder from a link.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar token_key: Shared link token key.
    :ivar 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: long
        """
        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 __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 SfTeamUninviteDetails(object):
    """
    Unshared a folder with a team member.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar 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: long
        """
        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 __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 SharedContentAddInviteesDetails(object):
    """
    Sent an email invitation to the membership of a shared file or folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar 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: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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 __repr__(self):
        return 'SharedContentAddInviteesDetails(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,
        )

SharedContentAddInviteesDetails_validator = bv.Struct(SharedContentAddInviteesDetails)

class SharedContentAddLinkExpiryDetails(object):
    """
    Added an expiry to the link for the shared file or folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar shared_folder_type: Shared folder type. Might be missing due to
        historical data gap.
    :ivar expiration_start_date: Expiration starting date.
    :ivar expiration_days: The number of days from the starting expiration date
        after which the link will expire.
    """

    __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',
        '_expiration_start_date_value',
        '_expiration_start_date_present',
        '_expiration_days_value',
        '_expiration_days_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 expiration_start_date=None,
                 expiration_days=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
        self._expiration_start_date_value = None
        self._expiration_start_date_present = False
        self._expiration_days_value = None
        self._expiration_days_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
        if expiration_start_date is not None:
            self.expiration_start_date = expiration_start_date
        if expiration_days is not None:
            self.expiration_days = expiration_days

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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

    @property
    def expiration_start_date(self):
        """
        Expiration starting date.

        :rtype: str
        """
        if self._expiration_start_date_present:
            return self._expiration_start_date_value
        else:
            raise AttributeError("missing required field 'expiration_start_date'")

    @expiration_start_date.setter
    def expiration_start_date(self, val):
        val = self._expiration_start_date_validator.validate(val)
        self._expiration_start_date_value = val
        self._expiration_start_date_present = True

    @expiration_start_date.deleter
    def expiration_start_date(self):
        self._expiration_start_date_value = None
        self._expiration_start_date_present = False

    @property
    def expiration_days(self):
        """
        The number of days from the starting expiration date after which the
        link will expire.

        :rtype: long
        """
        if self._expiration_days_present:
            return self._expiration_days_value
        else:
            raise AttributeError("missing required field 'expiration_days'")

    @expiration_days.setter
    def expiration_days(self, val):
        val = self._expiration_days_validator.validate(val)
        self._expiration_days_value = val
        self._expiration_days_present = True

    @expiration_days.deleter
    def expiration_days(self):
        self._expiration_days_value = None
        self._expiration_days_present = False

    def __repr__(self):
        return 'SharedContentAddLinkExpiryDetails(target_asset_index={!r}, expiration_start_date={!r}, expiration_days={!r}, original_folder_name={!r}, shared_folder_type={!r})'.format(
            self._target_asset_index_value,
            self._expiration_start_date_value,
            self._expiration_days_value,
            self._original_folder_name_value,
            self._shared_folder_type_value,
        )

SharedContentAddLinkExpiryDetails_validator = bv.Struct(SharedContentAddLinkExpiryDetails)

class SharedContentAddLinkPasswordDetails(object):
    """
    Added a password to the link for the shared file or folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar 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: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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 __repr__(self):
        return 'SharedContentAddLinkPasswordDetails(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,
        )

SharedContentAddLinkPasswordDetails_validator = bv.Struct(SharedContentAddLinkPasswordDetails)

class SharedContentAddMemberDetails(object):
    """
    Added users and/or groups to the membership of a shared file or folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar sharing_permission: Sharing permission. Might be missing due to
        historical data gap.
    :ivar 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',
        '_sharing_permission_value',
        '_sharing_permission_present',
        '_shared_folder_type_value',
        '_shared_folder_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 sharing_permission=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._sharing_permission_value = None
        self._sharing_permission_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 sharing_permission is not None:
            self.sharing_permission = sharing_permission
        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: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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 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 __repr__(self):
        return 'SharedContentAddMemberDetails(target_asset_index={!r}, original_folder_name={!r}, sharing_permission={!r}, shared_folder_type={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._sharing_permission_value,
            self._shared_folder_type_value,
        )

SharedContentAddMemberDetails_validator = bv.Struct(SharedContentAddMemberDetails)

class SharedContentChangeDownloadsPolicyDetails(object):
    """
    Changed whether members can download the shared file or folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar shared_folder_type: Shared folder type. Might be missing due to
        historical data gap.
    :ivar new_value: New downlaod policy.
    :ivar previous_value: Previous downlaod policy. 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',
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 new_value=None,
                 original_folder_name=None,
                 shared_folder_type=None,
                 previous_value=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
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_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
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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

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

        :rtype: SharedContentDownloadsPolicy
        """
        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 downlaod policy. Might be missing due to historical data gap.

        :rtype: SharedContentDownloadsPolicy
        """
        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 __repr__(self):
        return 'SharedContentChangeDownloadsPolicyDetails(target_asset_index={!r}, new_value={!r}, original_folder_name={!r}, shared_folder_type={!r}, previous_value={!r})'.format(
            self._target_asset_index_value,
            self._new_value_value,
            self._original_folder_name_value,
            self._shared_folder_type_value,
            self._previous_value_value,
        )

SharedContentChangeDownloadsPolicyDetails_validator = bv.Struct(SharedContentChangeDownloadsPolicyDetails)

class SharedContentChangeInviteeRoleDetails(object):
    """
    Changed the access type of an invitee to a shared file or folder before the
    invitation was claimed.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar new_sharing_permission: New sharing permission. Might be missing due
        to historical data gap.
    :ivar 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: long
        """
        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 __repr__(self):
        return 'SharedContentChangeInviteeRoleDetails(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,
        )

SharedContentChangeInviteeRoleDetails_validator = bv.Struct(SharedContentChangeInviteeRoleDetails)

class SharedContentChangeLinkAudienceDetails(object):
    """
    Changed the audience of the link for a shared file or folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar shared_folder_type: Shared folder type. Might be missing due to
        historical data gap.
    :ivar new_value: New link audience value.
    :ivar previous_value: Previous link audience value. 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',
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 new_value=None,
                 original_folder_name=None,
                 shared_folder_type=None,
                 previous_value=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
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_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
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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

    @property
    def new_value(self):
        """
        New link audience value.

        :rtype: 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. Might be missing due to historical data
        gap.

        :rtype: 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 __repr__(self):
        return 'SharedContentChangeLinkAudienceDetails(target_asset_index={!r}, new_value={!r}, original_folder_name={!r}, shared_folder_type={!r}, previous_value={!r})'.format(
            self._target_asset_index_value,
            self._new_value_value,
            self._original_folder_name_value,
            self._shared_folder_type_value,
            self._previous_value_value,
        )

SharedContentChangeLinkAudienceDetails_validator = bv.Struct(SharedContentChangeLinkAudienceDetails)

class SharedContentChangeLinkExpiryDetails(object):
    """
    Changed the expiry of the link for the shared file or folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar shared_folder_type: Shared folder type. Might be missing due to
        historical data gap.
    :ivar expiration_start_date: Expiration starting date.
    :ivar expiration_days: The number of days from the starting expiration date
        after which the link will expire.
    """

    __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',
        '_expiration_start_date_value',
        '_expiration_start_date_present',
        '_expiration_days_value',
        '_expiration_days_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 expiration_start_date=None,
                 expiration_days=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
        self._expiration_start_date_value = None
        self._expiration_start_date_present = False
        self._expiration_days_value = None
        self._expiration_days_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
        if expiration_start_date is not None:
            self.expiration_start_date = expiration_start_date
        if expiration_days is not None:
            self.expiration_days = expiration_days

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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

    @property
    def expiration_start_date(self):
        """
        Expiration starting date.

        :rtype: str
        """
        if self._expiration_start_date_present:
            return self._expiration_start_date_value
        else:
            raise AttributeError("missing required field 'expiration_start_date'")

    @expiration_start_date.setter
    def expiration_start_date(self, val):
        val = self._expiration_start_date_validator.validate(val)
        self._expiration_start_date_value = val
        self._expiration_start_date_present = True

    @expiration_start_date.deleter
    def expiration_start_date(self):
        self._expiration_start_date_value = None
        self._expiration_start_date_present = False

    @property
    def expiration_days(self):
        """
        The number of days from the starting expiration date after which the
        link will expire.

        :rtype: long
        """
        if self._expiration_days_present:
            return self._expiration_days_value
        else:
            raise AttributeError("missing required field 'expiration_days'")

    @expiration_days.setter
    def expiration_days(self, val):
        val = self._expiration_days_validator.validate(val)
        self._expiration_days_value = val
        self._expiration_days_present = True

    @expiration_days.deleter
    def expiration_days(self):
        self._expiration_days_value = None
        self._expiration_days_present = False

    def __repr__(self):
        return 'SharedContentChangeLinkExpiryDetails(target_asset_index={!r}, expiration_start_date={!r}, expiration_days={!r}, original_folder_name={!r}, shared_folder_type={!r})'.format(
            self._target_asset_index_value,
            self._expiration_start_date_value,
            self._expiration_days_value,
            self._original_folder_name_value,
            self._shared_folder_type_value,
        )

SharedContentChangeLinkExpiryDetails_validator = bv.Struct(SharedContentChangeLinkExpiryDetails)

class SharedContentChangeLinkPasswordDetails(object):
    """
    Changed the password on the link for the shared file or folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar 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: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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 __repr__(self):
        return 'SharedContentChangeLinkPasswordDetails(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,
        )

SharedContentChangeLinkPasswordDetails_validator = bv.Struct(SharedContentChangeLinkPasswordDetails)

class SharedContentChangeMemberRoleDetails(object):
    """
    Changed the access type of a shared file or folder member.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar new_sharing_permission: New sharing permission. Might be missing due
        to historical data gap.
    :ivar previous_sharing_permission: Previous sharing permission. Might be
        missing due to historical data gap.
    :ivar 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',
        '_new_sharing_permission_value',
        '_new_sharing_permission_present',
        '_previous_sharing_permission_value',
        '_previous_sharing_permission_present',
        '_shared_folder_type_value',
        '_shared_folder_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 new_sharing_permission=None,
                 previous_sharing_permission=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._new_sharing_permission_value = None
        self._new_sharing_permission_present = False
        self._previous_sharing_permission_value = None
        self._previous_sharing_permission_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 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
        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: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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

    @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 __repr__(self):
        return 'SharedContentChangeMemberRoleDetails(target_asset_index={!r}, original_folder_name={!r}, new_sharing_permission={!r}, previous_sharing_permission={!r}, shared_folder_type={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._new_sharing_permission_value,
            self._previous_sharing_permission_value,
            self._shared_folder_type_value,
        )

SharedContentChangeMemberRoleDetails_validator = bv.Struct(SharedContentChangeMemberRoleDetails)

class SharedContentChangeViewerInfoPolicyDetails(object):
    """
    Changed whether members can see who viewed the shared file or folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar shared_folder_type: Shared folder type. Might be missing due to
        historical data gap.
    :ivar new_value: New viewer info policy.
    :ivar previous_value: Previous view info policy. 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',
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 new_value=None,
                 original_folder_name=None,
                 shared_folder_type=None,
                 previous_value=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
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_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
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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

    @property
    def new_value(self):
        """
        New viewer info policy.

        :rtype: SharedContentViewerInfoPolicy
        """
        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: SharedContentViewerInfoPolicy
        """
        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 __repr__(self):
        return 'SharedContentChangeViewerInfoPolicyDetails(target_asset_index={!r}, new_value={!r}, original_folder_name={!r}, shared_folder_type={!r}, previous_value={!r})'.format(
            self._target_asset_index_value,
            self._new_value_value,
            self._original_folder_name_value,
            self._shared_folder_type_value,
            self._previous_value_value,
        )

SharedContentChangeViewerInfoPolicyDetails_validator = bv.Struct(SharedContentChangeViewerInfoPolicyDetails)

class SharedContentClaimInvitationDetails(object):
    """
    Claimed membership to a team member's shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar shared_content_link: Shared content link.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
        '_shared_content_link_value',
        '_shared_content_link_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 shared_content_link=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_content_link_value = None
        self._shared_content_link_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_content_link is not None:
            self.shared_content_link = shared_content_link

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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_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 __repr__(self):
        return 'SharedContentClaimInvitationDetails(target_asset_index={!r}, original_folder_name={!r}, shared_content_link={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._shared_content_link_value,
        )

SharedContentClaimInvitationDetails_validator = bv.Struct(SharedContentClaimInvitationDetails)

class SharedContentCopyDetails(object):
    """
    Copied the shared file or folder to own Dropbox.

    :ivar shared_content_link: Shared content link.
    :ivar sharing_permission: Sharing permission. Might be missing due to
        historical data gap.
    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar relocate_action_details: Specifies the source and destination indices
        in the assets list.
    """

    __slots__ = [
        '_shared_content_link_value',
        '_shared_content_link_present',
        '_sharing_permission_value',
        '_sharing_permission_present',
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_relocate_action_details_value',
        '_relocate_action_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_link=None,
                 target_asset_index=None,
                 relocate_action_details=None,
                 sharing_permission=None):
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        self._sharing_permission_value = None
        self._sharing_permission_present = False
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link
        if sharing_permission is not None:
            self.sharing_permission = sharing_permission
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if relocate_action_details is not None:
            self.relocate_action_details = relocate_action_details

    @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 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 target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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 relocate_action_details(self):
        """
        Specifies the source and destination indices in the assets list.

        :rtype: 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):
        self._relocate_action_details_validator.validate_type_only(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 __repr__(self):
        return 'SharedContentCopyDetails(shared_content_link={!r}, target_asset_index={!r}, relocate_action_details={!r}, sharing_permission={!r})'.format(
            self._shared_content_link_value,
            self._target_asset_index_value,
            self._relocate_action_details_value,
            self._sharing_permission_value,
        )

SharedContentCopyDetails_validator = bv.Struct(SharedContentCopyDetails)

class SharedContentDownloadDetails(object):
    """
    Downloaded the shared file or folder.

    :ivar shared_content_link: Shared content link.
    :ivar sharing_permission: Sharing permission. Might be missing due to
        historical data gap.
    :ivar target_asset_index: Target asset position in the Assets list.
    """

    __slots__ = [
        '_shared_content_link_value',
        '_shared_content_link_present',
        '_sharing_permission_value',
        '_sharing_permission_present',
        '_target_asset_index_value',
        '_target_asset_index_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_link=None,
                 target_asset_index=None,
                 sharing_permission=None):
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        self._sharing_permission_value = None
        self._sharing_permission_present = False
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link
        if sharing_permission is not None:
            self.sharing_permission = sharing_permission
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index

    @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 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 target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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 __repr__(self):
        return 'SharedContentDownloadDetails(shared_content_link={!r}, target_asset_index={!r}, sharing_permission={!r})'.format(
            self._shared_content_link_value,
            self._target_asset_index_value,
            self._sharing_permission_value,
        )

SharedContentDownloadDetails_validator = bv.Struct(SharedContentDownloadDetails)

class SharedContentDownloadsPolicy(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
    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 __repr__(self):
        return 'SharedContentDownloadsPolicy(%r, %r)' % (self._tag, self._value)

SharedContentDownloadsPolicy_validator = bv.Union(SharedContentDownloadsPolicy)

class SharedContentRelinquishMembershipDetails(object):
    """
    Left the membership of a shared file or folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar 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: long
        """
        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 __repr__(self):
        return 'SharedContentRelinquishMembershipDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SharedContentRelinquishMembershipDetails_validator = bv.Struct(SharedContentRelinquishMembershipDetails)

class SharedContentRemoveInviteeDetails(object):
    """
    Removed an invitee from the membership of a shared file or folder before it
    was claimed.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar 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: long
        """
        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 __repr__(self):
        return 'SharedContentRemoveInviteeDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SharedContentRemoveInviteeDetails_validator = bv.Struct(SharedContentRemoveInviteeDetails)

class SharedContentRemoveLinkExpiryDetails(object):
    """
    Removed the expiry of the link for the shared file or folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar 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: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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 __repr__(self):
        return 'SharedContentRemoveLinkExpiryDetails(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,
        )

SharedContentRemoveLinkExpiryDetails_validator = bv.Struct(SharedContentRemoveLinkExpiryDetails)

class SharedContentRemoveLinkPasswordDetails(object):
    """
    Removed the password on the link for the shared file or folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar 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: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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 __repr__(self):
        return 'SharedContentRemoveLinkPasswordDetails(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,
        )

SharedContentRemoveLinkPasswordDetails_validator = bv.Struct(SharedContentRemoveLinkPasswordDetails)

class SharedContentRemoveMemberDetails(object):
    """
    Removed a user or a group from the membership of a shared file or folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar sharing_permission: Sharing permission. Might be missing due to
        historical data gap.
    :ivar 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',
        '_sharing_permission_value',
        '_sharing_permission_present',
        '_shared_folder_type_value',
        '_shared_folder_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 sharing_permission=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._sharing_permission_value = None
        self._sharing_permission_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 sharing_permission is not None:
            self.sharing_permission = sharing_permission
        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: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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 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 __repr__(self):
        return 'SharedContentRemoveMemberDetails(target_asset_index={!r}, original_folder_name={!r}, sharing_permission={!r}, shared_folder_type={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._sharing_permission_value,
            self._shared_folder_type_value,
        )

SharedContentRemoveMemberDetails_validator = bv.Struct(SharedContentRemoveMemberDetails)

class SharedContentRequestAccessDetails(object):
    """
    Requested to be on the membership of a shared file or folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar shared_content_link: Shared content link.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
        '_shared_content_link_value',
        '_shared_content_link_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 shared_content_link=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_content_link_value = None
        self._shared_content_link_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_content_link is not None:
            self.shared_content_link = shared_content_link

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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_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 __repr__(self):
        return 'SharedContentRequestAccessDetails(target_asset_index={!r}, original_folder_name={!r}, shared_content_link={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._shared_content_link_value,
        )

SharedContentRequestAccessDetails_validator = bv.Struct(SharedContentRequestAccessDetails)

class SharedContentUnshareDetails(object):
    """
    Unshared a shared file or folder by clearing its membership and turning off
    its link.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar 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: long
        """
        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:
            return None

    @original_folder_name.setter
    def original_folder_name(self, val):
        if val is None:
            del self.original_folder_name
            return
        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 __repr__(self):
        return 'SharedContentUnshareDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SharedContentUnshareDetails_validator = bv.Struct(SharedContentUnshareDetails)

class SharedContentViewDetails(object):
    """
    Previewed the shared file or folder.

    :ivar shared_content_link: Shared content link.
    :ivar sharing_permission: Sharing permission. Might be missing due to
        historical data gap.
    :ivar target_asset_index: Target asset position in the Assets list.
    """

    __slots__ = [
        '_shared_content_link_value',
        '_shared_content_link_present',
        '_sharing_permission_value',
        '_sharing_permission_present',
        '_target_asset_index_value',
        '_target_asset_index_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_link=None,
                 target_asset_index=None,
                 sharing_permission=None):
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        self._sharing_permission_value = None
        self._sharing_permission_present = False
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link
        if sharing_permission is not None:
            self.sharing_permission = sharing_permission
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index

    @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 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 target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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 __repr__(self):
        return 'SharedContentViewDetails(shared_content_link={!r}, target_asset_index={!r}, sharing_permission={!r})'.format(
            self._shared_content_link_value,
            self._target_asset_index_value,
            self._sharing_permission_value,
        )

SharedContentViewDetails_validator = bv.Struct(SharedContentViewDetails)

class SharedContentViewerInfoPolicy(bb.Union):
    """
    Shared content viewer info 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 __repr__(self):
        return 'SharedContentViewerInfoPolicy(%r, %r)' % (self._tag, self._value)

SharedContentViewerInfoPolicy_validator = bv.Union(SharedContentViewerInfoPolicy)

class SharedFolderChangeConfidentialityDetails(object):
    """
    Set or unset the confidential flag on a shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar new_value: New confidentiality value.
    :ivar previous_value: Previous confidentiality value. 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_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 new_value=None,
                 previous_value=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_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_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_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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_value(self):
        """
        New confidentiality value.

        :rtype: Confidentiality
        """
        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 confidentiality value. Might be missing due to historical data
        gap.

        :rtype: Confidentiality
        """
        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 __repr__(self):
        return 'SharedFolderChangeConfidentialityDetails(target_asset_index={!r}, original_folder_name={!r}, new_value={!r}, previous_value={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._new_value_value,
            self._previous_value_value,
        )

SharedFolderChangeConfidentialityDetails_validator = bv.Struct(SharedFolderChangeConfidentialityDetails)

class SharedFolderChangeLinkPolicyDetails(object):
    """
    Changed who can access the shared folder via a link.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar shared_folder_type: Shared folder type. Might be missing due to
        historical data gap.
    :ivar new_value: New shared folder link policy.
    :ivar previous_value: Previous shared folder link policy. 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',
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 new_value=None,
                 shared_folder_type=None,
                 previous_value=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
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_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
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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

    @property
    def new_value(self):
        """
        New shared folder link policy.

        :rtype: SharedFolderLinkPolicy
        """
        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: SharedFolderLinkPolicy
        """
        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 __repr__(self):
        return 'SharedFolderChangeLinkPolicyDetails(target_asset_index={!r}, original_folder_name={!r}, new_value={!r}, shared_folder_type={!r}, previous_value={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._new_value_value,
            self._shared_folder_type_value,
            self._previous_value_value,
        )

SharedFolderChangeLinkPolicyDetails_validator = bv.Struct(SharedFolderChangeLinkPolicyDetails)

class SharedFolderChangeMemberManagementPolicyDetails(object):
    """
    Changed who can manage the membership of a shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar shared_folder_type: Shared folder type. Might be missing due to
        historical data gap.
    :ivar new_value: New membership management policy.
    :ivar previous_value: Previous membership management policy. 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',
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 new_value=None,
                 shared_folder_type=None,
                 previous_value=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
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_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
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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

    @property
    def new_value(self):
        """
        New membership management policy.

        :rtype: SharedFolderMembershipManagementPolicy
        """
        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 membership management policy. Might be missing due to
        historical data gap.

        :rtype: SharedFolderMembershipManagementPolicy
        """
        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 __repr__(self):
        return 'SharedFolderChangeMemberManagementPolicyDetails(target_asset_index={!r}, original_folder_name={!r}, new_value={!r}, shared_folder_type={!r}, previous_value={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._new_value_value,
            self._shared_folder_type_value,
            self._previous_value_value,
        )

SharedFolderChangeMemberManagementPolicyDetails_validator = bv.Struct(SharedFolderChangeMemberManagementPolicyDetails)

class SharedFolderChangeMemberPolicyDetails(object):
    """
    Changed who can become a member of the shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar shared_folder_type: Shared folder type. Might be missing due to
        historical data gap.
    :ivar new_value: New external invite policy.
    :ivar previous_value: Previous external invite policy. 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',
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 new_value=None,
                 shared_folder_type=None,
                 previous_value=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
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_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
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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

    @property
    def new_value(self):
        """
        New external invite policy.

        :rtype: SharedFolderMemberPolicy
        """
        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: SharedFolderMemberPolicy
        """
        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 __repr__(self):
        return 'SharedFolderChangeMemberPolicyDetails(target_asset_index={!r}, original_folder_name={!r}, new_value={!r}, shared_folder_type={!r}, previous_value={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._new_value_value,
            self._shared_folder_type_value,
            self._previous_value_value,
        )

SharedFolderChangeMemberPolicyDetails_validator = bv.Struct(SharedFolderChangeMemberPolicyDetails)

class SharedFolderCreateDetails(object):
    """
    Created a shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar parent_ns_id: Parent namespace ID. Might be missing due to historical
        data gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_parent_ns_id_value',
        '_parent_ns_id_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 parent_ns_id=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._parent_ns_id_value = None
        self._parent_ns_id_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if parent_ns_id is not None:
            self.parent_ns_id = parent_ns_id

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: long
        """
        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_ns_id(self):
        """
        Parent namespace ID. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._parent_ns_id_present:
            return self._parent_ns_id_value
        else:
            return None

    @parent_ns_id.setter
    def parent_ns_id(self, val):
        if val is None:
            del self.parent_ns_id
            return
        val = self._parent_ns_id_validator.validate(val)
        self._parent_ns_id_value = val
        self._parent_ns_id_present = True

    @parent_ns_id.deleter
    def parent_ns_id(self):
        self._parent_ns_id_value = None
        self._parent_ns_id_present = False

    def __repr__(self):
        return 'SharedFolderCreateDetails(target_asset_index={!r}, parent_ns_id={!r})'.format(
            self._target_asset_index_value,
            self._parent_ns_id_value,
        )

SharedFolderCreateDetails_validator = bv.Struct(SharedFolderCreateDetails)

class SharedFolderLinkPolicy(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
    members_only = None
    # Attribute is overwritten below the class definition
    members_and_team = None
    # Attribute is overwritten below the class definition
    anyone = None
    # Attribute is overwritten below the class definition
    other = None

    def is_members_only(self):
        """
        Check if the union tag is ``members_only``.

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

    def is_members_and_team(self):
        """
        Check if the union tag is ``members_and_team``.

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

    def is_anyone(self):
        """
        Check if the union tag is ``anyone``.

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

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

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

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

SharedFolderLinkPolicy_validator = bv.Union(SharedFolderLinkPolicy)

class SharedFolderMemberPolicy(bb.Union):
    """
    Policy for controlling who can become a member of a shared 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
    team_only = None
    # Attribute is overwritten below the class definition
    anyone = None
    # Attribute is overwritten below the class definition
    other = None

    def is_team_only(self):
        """
        Check if the union tag is ``team_only``.

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

    def is_anyone(self):
        """
        Check if the union tag is ``anyone``.

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

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

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

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

SharedFolderMemberPolicy_validator = bv.Union(SharedFolderMemberPolicy)

class SharedFolderMembershipManagementPolicy(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
    owner = None
    # Attribute is overwritten below the class definition
    editors = None
    # Attribute is overwritten below the class definition
    other = None

    def is_owner(self):
        """
        Check if the union tag is ``owner``.

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

    def is_editors(self):
        """
        Check if the union tag is ``editors``.

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

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

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

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

SharedFolderMembershipManagementPolicy_validator = bv.Union(SharedFolderMembershipManagementPolicy)

class SharedFolderMountDetails(object):
    """
    Added a shared folder to own Dropbox.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar 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: long
        """
        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 __repr__(self):
        return 'SharedFolderMountDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SharedFolderMountDetails_validator = bv.Struct(SharedFolderMountDetails)

class SharedFolderTransferOwnershipDetails(object):
    """
    Transferred the ownership of a shared folder to another member.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar 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: long
        """
        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 __repr__(self):
        return 'SharedFolderTransferOwnershipDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SharedFolderTransferOwnershipDetails_validator = bv.Struct(SharedFolderTransferOwnershipDetails)

class SharedFolderUnmountDetails(object):
    """
    Deleted a shared folder from Dropbox.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar 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: long
        """
        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 __repr__(self):
        return 'SharedFolderUnmountDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SharedFolderUnmountDetails_validator = bv.Struct(SharedFolderUnmountDetails)

class SharedNoteOpenedDetails(object):
    """
    Shared Paper document was opened.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

SharedNoteOpenedDetails_validator = bv.Struct(SharedNoteOpenedDetails)

class SharingChangeFolderJoinPolicyDetails(object):
    """
    Changed whether team members can join shared folders owned externally (i.e.
    outside the team).

    :ivar new_value: New external join policy.
    :ivar 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 __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 SharingChangeLinkPolicyDetails(object):
    """
    Changed whether team members can share links externally (i.e. outside the
    team), and if so, whether links should be accessible only by team members or
    anyone by default.

    :ivar new_value: New external link accessibility policy.
    :ivar 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 __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 SharingChangeMemberPolicyDetails(object):
    """
    Changed whether team members can share files and folders externally (i.e.
    outside the team).

    :ivar new_value: New external invite policy.
    :ivar 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 __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 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 __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 __repr__(self):
        return 'SharingLinkPolicy(%r, %r)' % (self._tag, self._value)

SharingLinkPolicy_validator = bv.Union(SharingLinkPolicy)

class SharingMemberPolicy(bb.Union):
    """
    External sharing policy

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

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

    def is_allow(self):
        """
        Check if the union tag is ``allow``.

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

    def is_forbid(self):
        """
        Check if the union tag is ``forbid``.

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

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

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

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

SharingMemberPolicy_validator = bv.Union(SharingMemberPolicy)

class ShmodelAppCreateDetails(object):
    """
    Created a link to a file using an app.

    :ivar sharing_permission: Sharing permission. Might be missing due to
        historical data gap.
    :ivar token_key: Shared link token key.
    """

    __slots__ = [
        '_sharing_permission_value',
        '_sharing_permission_present',
        '_token_key_value',
        '_token_key_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 sharing_permission=None,
                 token_key=None):
        self._sharing_permission_value = None
        self._sharing_permission_present = False
        self._token_key_value = None
        self._token_key_present = False
        if sharing_permission is not None:
            self.sharing_permission = sharing_permission
        if token_key is not None:
            self.token_key = token_key

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

    def __repr__(self):
        return 'ShmodelAppCreateDetails(sharing_permission={!r}, token_key={!r})'.format(
            self._sharing_permission_value,
            self._token_key_value,
        )

ShmodelAppCreateDetails_validator = bv.Struct(ShmodelAppCreateDetails)

class ShmodelCreateDetails(object):
    """
    Created a new link.

    :ivar sharing_permission: Sharing permission. Might be missing due to
        historical data gap.
    :ivar token_key: Shared link token key.
    """

    __slots__ = [
        '_sharing_permission_value',
        '_sharing_permission_present',
        '_token_key_value',
        '_token_key_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 sharing_permission=None,
                 token_key=None):
        self._sharing_permission_value = None
        self._sharing_permission_present = False
        self._token_key_value = None
        self._token_key_present = False
        if sharing_permission is not None:
            self.sharing_permission = sharing_permission
        if token_key is not None:
            self.token_key = token_key

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

    def __repr__(self):
        return 'ShmodelCreateDetails(sharing_permission={!r}, token_key={!r})'.format(
            self._sharing_permission_value,
            self._token_key_value,
        )

ShmodelCreateDetails_validator = bv.Struct(ShmodelCreateDetails)

class ShmodelDisableDetails(object):
    """
    Removed a link.

    :ivar sharing_permission: Sharing permission. Might be missing due to
        historical data gap.
    :ivar token_key: Shared link token key.
    """

    __slots__ = [
        '_sharing_permission_value',
        '_sharing_permission_present',
        '_token_key_value',
        '_token_key_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 sharing_permission=None,
                 token_key=None):
        self._sharing_permission_value = None
        self._sharing_permission_present = False
        self._token_key_value = None
        self._token_key_present = False
        if sharing_permission is not None:
            self.sharing_permission = sharing_permission
        if token_key is not None:
            self.token_key = token_key

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

    def __repr__(self):
        return 'ShmodelDisableDetails(sharing_permission={!r}, token_key={!r})'.format(
            self._sharing_permission_value,
            self._token_key_value,
        )

ShmodelDisableDetails_validator = bv.Struct(ShmodelDisableDetails)

class ShmodelFbShareDetails(object):
    """
    Shared a link with Facebook users.

    :ivar sharing_non_member_recipients: Sharing non member recipients.
    """

    __slots__ = [
        '_sharing_non_member_recipients_value',
        '_sharing_non_member_recipients_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 sharing_non_member_recipients=None):
        self._sharing_non_member_recipients_value = None
        self._sharing_non_member_recipients_present = False
        if sharing_non_member_recipients is not None:
            self.sharing_non_member_recipients = sharing_non_member_recipients

    @property
    def sharing_non_member_recipients(self):
        """
        Sharing non member recipients.

        :rtype: list of [NonTeamMemberLogInfo]
        """
        if self._sharing_non_member_recipients_present:
            return self._sharing_non_member_recipients_value
        else:
            raise AttributeError("missing required field 'sharing_non_member_recipients'")

    @sharing_non_member_recipients.setter
    def sharing_non_member_recipients(self, val):
        val = self._sharing_non_member_recipients_validator.validate(val)
        self._sharing_non_member_recipients_value = val
        self._sharing_non_member_recipients_present = True

    @sharing_non_member_recipients.deleter
    def sharing_non_member_recipients(self):
        self._sharing_non_member_recipients_value = None
        self._sharing_non_member_recipients_present = False

    def __repr__(self):
        return 'ShmodelFbShareDetails(sharing_non_member_recipients={!r})'.format(
            self._sharing_non_member_recipients_value,
        )

ShmodelFbShareDetails_validator = bv.Struct(ShmodelFbShareDetails)

class ShmodelGroupShareDetails(object):
    """
    Shared a link with a group.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

ShmodelGroupShareDetails_validator = bv.Struct(ShmodelGroupShareDetails)

class ShmodelRemoveExpirationDetails(object):
    """
    Removed the expiration date from a link.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

ShmodelRemoveExpirationDetails_validator = bv.Struct(ShmodelRemoveExpirationDetails)

class ShmodelSetExpirationDetails(object):
    """
    Added an expiration date to a link.

    :ivar expiration_start_date: Expiration starting date.
    :ivar expiration_days: The number of days from the starting expiration date
        after which the link will expire.
    """

    __slots__ = [
        '_expiration_start_date_value',
        '_expiration_start_date_present',
        '_expiration_days_value',
        '_expiration_days_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 expiration_start_date=None,
                 expiration_days=None):
        self._expiration_start_date_value = None
        self._expiration_start_date_present = False
        self._expiration_days_value = None
        self._expiration_days_present = False
        if expiration_start_date is not None:
            self.expiration_start_date = expiration_start_date
        if expiration_days is not None:
            self.expiration_days = expiration_days

    @property
    def expiration_start_date(self):
        """
        Expiration starting date.

        :rtype: str
        """
        if self._expiration_start_date_present:
            return self._expiration_start_date_value
        else:
            raise AttributeError("missing required field 'expiration_start_date'")

    @expiration_start_date.setter
    def expiration_start_date(self, val):
        val = self._expiration_start_date_validator.validate(val)
        self._expiration_start_date_value = val
        self._expiration_start_date_present = True

    @expiration_start_date.deleter
    def expiration_start_date(self):
        self._expiration_start_date_value = None
        self._expiration_start_date_present = False

    @property
    def expiration_days(self):
        """
        The number of days from the starting expiration date after which the
        link will expire.

        :rtype: long
        """
        if self._expiration_days_present:
            return self._expiration_days_value
        else:
            raise AttributeError("missing required field 'expiration_days'")

    @expiration_days.setter
    def expiration_days(self, val):
        val = self._expiration_days_validator.validate(val)
        self._expiration_days_value = val
        self._expiration_days_present = True

    @expiration_days.deleter
    def expiration_days(self):
        self._expiration_days_value = None
        self._expiration_days_present = False

    def __repr__(self):
        return 'ShmodelSetExpirationDetails(expiration_start_date={!r}, expiration_days={!r})'.format(
            self._expiration_start_date_value,
            self._expiration_days_value,
        )

ShmodelSetExpirationDetails_validator = bv.Struct(ShmodelSetExpirationDetails)

class ShmodelTeamCopyDetails(object):
    """
    Added a team member's file/folder to their Dropbox from a link.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

ShmodelTeamCopyDetails_validator = bv.Struct(ShmodelTeamCopyDetails)

class ShmodelTeamDownloadDetails(object):
    """
    Downloaded a team member's file/folder from a link.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

ShmodelTeamDownloadDetails_validator = bv.Struct(ShmodelTeamDownloadDetails)

class ShmodelTeamShareDetails(object):
    """
    Shared a link with team members.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

ShmodelTeamShareDetails_validator = bv.Struct(ShmodelTeamShareDetails)

class ShmodelTeamViewDetails(object):
    """
    Opened a team member's link.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

ShmodelTeamViewDetails_validator = bv.Struct(ShmodelTeamViewDetails)

class ShmodelVisibilityPasswordDetails(object):
    """
    Password-protected a link.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

ShmodelVisibilityPasswordDetails_validator = bv.Struct(ShmodelVisibilityPasswordDetails)

class ShmodelVisibilityPublicDetails(object):
    """
    Made a file/folder visible to anyone with the link.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

ShmodelVisibilityPublicDetails_validator = bv.Struct(ShmodelVisibilityPublicDetails)

class ShmodelVisibilityTeamOnlyDetails(object):
    """
    Made a file/folder visible only to team members with the link.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

ShmodelVisibilityTeamOnlyDetails_validator = bv.Struct(ShmodelVisibilityTeamOnlyDetails)

class SignInAsSessionEndDetails(object):
    """
    Ended admin sign-in-as session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

SignInAsSessionEndDetails_validator = bv.Struct(SignInAsSessionEndDetails)

class SignInAsSessionStartDetails(object):
    """
    Started admin sign-in-as session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

SignInAsSessionStartDetails_validator = bv.Struct(SignInAsSessionStartDetails)

class SmartSyncChangePolicyDetails(object):
    """
    Changed the default Smart Sync policy for team members.

    :ivar new_value: New smart sync policy.
    :ivar previous_value: Previous smart sync 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 smart sync policy.

        :rtype: SmartSyncPolicy
        """
        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 smart sync policy. Might be missing due to historical data gap.

        :rtype: 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 __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 SmartSyncCreateAdminPrivilegeReportDetails(object):
    """
    Smart Sync non-admin devices report created.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

SmartSyncCreateAdminPrivilegeReportDetails_validator = bv.Struct(SmartSyncCreateAdminPrivilegeReportDetails)

class SmartSyncNotOptOutDetails(object):
    """
    Opted team into Smart Sync.

    :ivar previous_value: Previous Smart Sync opt out policy.
    :ivar 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 __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 SmartSyncOptOutDetails(object):
    """
    Opted team out of Smart Sync.

    :ivar previous_value: Previous Smart Sync opt out policy.
    :ivar 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 __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 __repr__(self):
        return 'SmartSyncOptOutPolicy(%r, %r)' % (self._tag, self._value)

SmartSyncOptOutPolicy_validator = bv.Union(SmartSyncOptOutPolicy)

class SmartSyncPolicy(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
    local_only = None
    # Attribute is overwritten below the class definition
    synced = None
    # Attribute is overwritten below the class definition
    other = None

    def is_local_only(self):
        """
        Check if the union tag is ``local_only``.

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

    def is_synced(self):
        """
        Check if the union tag is ``synced``.

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

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

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

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

SmartSyncPolicy_validator = bv.Union(SmartSyncPolicy)

class SpaceLimitsLevel(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
    generous = None
    # Attribute is overwritten below the class definition
    moderate = None
    # Attribute is overwritten below the class definition
    no_limit = None
    # Attribute is overwritten below the class definition
    strict = None
    # Attribute is overwritten below the class definition
    other = None

    def is_generous(self):
        """
        Check if the union tag is ``generous``.

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

    def is_moderate(self):
        """
        Check if the union tag is ``moderate``.

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

    def is_no_limit(self):
        """
        Check if the union tag is ``no_limit``.

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

    def is_strict(self):
        """
        Check if the union tag is ``strict``.

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

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

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

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

SpaceLimitsLevel_validator = bv.Union(SpaceLimitsLevel)

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

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

    def is_within_quota(self):
        """
        Check if the union tag is ``within_quota``.

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

    def is_near_quota(self):
        """
        Check if the union tag is ``near_quota``.

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

    def is_over_quota(self):
        """
        Check if the union tag is ``over_quota``.

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

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

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

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

SpaceLimitsStatus_validator = bv.Union(SpaceLimitsStatus)

class SsoAddCertDetails(object):
    """
    Added the X.509 certificate for SSO.

    :ivar 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 __repr__(self):
        return 'SsoAddCertDetails(certificate_details={!r})'.format(
            self._certificate_details_value,
        )

SsoAddCertDetails_validator = bv.Struct(SsoAddCertDetails)

class SsoAddLoginUrlDetails(object):
    """
    Added sign-in URL for SSO.

    :ivar 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 __repr__(self):
        return 'SsoAddLoginUrlDetails(new_value={!r})'.format(
            self._new_value_value,
        )

SsoAddLoginUrlDetails_validator = bv.Struct(SsoAddLoginUrlDetails)

class SsoAddLogoutUrlDetails(object):
    """
    Added sign-out URL for SSO.

    :ivar 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 __repr__(self):
        return 'SsoAddLogoutUrlDetails(new_value={!r})'.format(
            self._new_value_value,
        )

SsoAddLogoutUrlDetails_validator = bv.Struct(SsoAddLogoutUrlDetails)

class SsoChangeCertDetails(object):
    """
    Changed the X.509 certificate for SSO.

    :ivar previous_certificate_details: Previous SSO certificate details.
    :ivar 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.

        :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 __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 SsoChangeLoginUrlDetails(object):
    """
    Changed the sign-in URL for SSO.

    :ivar previous_value: Previous single sign-on login URL.
    :ivar 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 __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 SsoChangeLogoutUrlDetails(object):
    """
    Changed the sign-out URL for SSO.

    :ivar previous_value: Previous single sign-on logout URL. Might be missing
        due to historical data gap.
    :ivar 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 __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 SsoChangePolicyDetails(object):
    """
    Change the single sign-on policy for the team.

    :ivar new_value: New single sign-on policy.
    :ivar 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_validator
        """
        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_validator
        """
        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 __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 SsoChangeSamlIdentityModeDetails(object):
    """
    Changed the SAML identity mode for SSO.

    :ivar previous_value: Previous single sign-on identity mode.
    :ivar 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: long
        """
        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: long
        """
        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 __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 SsoLoginFailDetails(object):
    """
    Failed to sign in using SSO.

    :ivar error_details: Login failure 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):
        """
        Login failure 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 __repr__(self):
        return 'SsoLoginFailDetails(error_details={!r})'.format(
            self._error_details_value,
        )

SsoLoginFailDetails_validator = bv.Struct(SsoLoginFailDetails)

class SsoRemoveCertDetails(object):
    """
    Removed the X.509 certificate for SSO.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

SsoRemoveCertDetails_validator = bv.Struct(SsoRemoveCertDetails)

class SsoRemoveLoginUrlDetails(object):
    """
    Removed the sign-in URL for SSO.

    :ivar 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 __repr__(self):
        return 'SsoRemoveLoginUrlDetails(previous_value={!r})'.format(
            self._previous_value_value,
        )

SsoRemoveLoginUrlDetails_validator = bv.Struct(SsoRemoveLoginUrlDetails)

class SsoRemoveLogoutUrlDetails(object):
    """
    Removed single sign-on logout URL.

    :ivar 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 __repr__(self):
        return 'SsoRemoveLogoutUrlDetails(previous_value={!r})'.format(
            self._previous_value_value,
        )

SsoRemoveLogoutUrlDetails_validator = bv.Struct(SsoRemoveLogoutUrlDetails)

class TeamActivityCreateReportDetails(object):
    """
    Created a team activity report.

    :ivar start_date: Report start date.
    :ivar 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 __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 TeamEvent(object):
    """
    An audit log event.

    :ivar timestamp: The Dropbox timestamp representing when the action was
        taken.
    :ivar event_category: The category that this type of action belongs to.
    :ivar actor: The entity who actually performed the action.
    :ivar 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 involve_non_team_member: True if the action involved a non team member
        either as the actor or as one of the affected users.
    :ivar context: The user or team on whose behalf the actor performed the
        action.
    :ivar 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 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 event_type: The particular type of action taken.
    :ivar 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,
                 actor=None,
                 involve_non_team_member=None,
                 context=None,
                 event_type=None,
                 details=None,
                 origin=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.

        :rtype: ActorLogInfo
        """
        if self._actor_present:
            return self._actor_value
        else:
            raise AttributeError("missing required field 'actor'")

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

        :rtype: bool
        """
        if self._involve_non_team_member_present:
            return self._involve_non_team_member_value
        else:
            raise AttributeError("missing required field 'involve_non_team_member'")

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

        :rtype: ContextLogInfo
        """
        if self._context_present:
            return self._context_value
        else:
            raise AttributeError("missing required field 'context'")

    @context.setter
    def context(self, val):
        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 __repr__(self):
        return 'TeamEvent(timestamp={!r}, event_category={!r}, actor={!r}, involve_non_team_member={!r}, context={!r}, event_type={!r}, details={!r}, origin={!r}, participants={!r}, assets={!r})'.format(
            self._timestamp_value,
            self._event_category_value,
            self._actor_value,
            self._involve_non_team_member_value,
            self._context_value,
            self._event_type_value,
            self._details_value,
            self._origin_value,
            self._participants_value,
            self._assets_value,
        )

TeamEvent_validator = bv.Struct(TeamEvent)

class TeamFolderChangeStatusDetails(object):
    """
    Changed the archival status of a team folder.

    :ivar new_value: New team folder status.
    :ivar 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: 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: 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 __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 TeamFolderCreateDetails(object):
    """
    Created a new team folder in active status.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

TeamFolderCreateDetails_validator = bv.Struct(TeamFolderCreateDetails)

class TeamFolderDowngradeDetails(object):
    """
    Downgraded a team folder to a regular shared folder.

    :ivar 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: long
        """
        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 __repr__(self):
        return 'TeamFolderDowngradeDetails(target_asset_index={!r})'.format(
            self._target_asset_index_value,
        )

TeamFolderDowngradeDetails_validator = bv.Struct(TeamFolderDowngradeDetails)

class TeamFolderPermanentlyDeleteDetails(object):
    """
    Permanently deleted an archived team folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

TeamFolderPermanentlyDeleteDetails_validator = bv.Struct(TeamFolderPermanentlyDeleteDetails)

class TeamFolderRenameDetails(object):
    """
    Renamed an active or archived team folder.

    :ivar relocate_action_details: Specifies the source and destination indices
        in the assets list.
    """

    __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):
        """
        Specifies the source and destination indices in the assets list.

        :rtype: 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):
        self._relocate_action_details_validator.validate_type_only(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 __repr__(self):
        return 'TeamFolderRenameDetails(relocate_action_details={!r})'.format(
            self._relocate_action_details_value,
        )

TeamFolderRenameDetails_validator = bv.Struct(TeamFolderRenameDetails)

class TeamFolderStatus(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
    archive = None
    # Attribute is overwritten below the class definition
    unarchive = None
    # Attribute is overwritten below the class definition
    other = None

    def is_archive(self):
        """
        Check if the union tag is ``archive``.

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

    def is_unarchive(self):
        """
        Check if the union tag is ``unarchive``.

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

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

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

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

TeamFolderStatus_validator = bv.Union(TeamFolderStatus)

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 __repr__(self):
        return 'TeamLinkedAppLogInfo(app_id={!r}, display_name={!r})'.format(
            self._app_id_value,
            self._display_name_value,
        )

TeamLinkedAppLogInfo_validator = bv.Struct(TeamLinkedAppLogInfo)

class TeamMemberLogInfo(UserLogInfo):
    """
    Team member's logged information.

    :ivar team_member_id: Team member ID. Might be missing due to historical
        data gap.
    :ivar member_external_id: Team member external ID.
    """

    __slots__ = [
        '_team_member_id_value',
        '_team_member_id_present',
        '_member_external_id_value',
        '_member_external_id_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 account_id=None,
                 display_name=None,
                 email=None,
                 team_member_id=None,
                 member_external_id=None):
        super(TeamMemberLogInfo, self).__init__(account_id,
                                                display_name,
                                                email)
        self._team_member_id_value = None
        self._team_member_id_present = False
        self._member_external_id_value = None
        self._member_external_id_present = False
        if team_member_id is not None:
            self.team_member_id = team_member_id
        if member_external_id is not None:
            self.member_external_id = member_external_id

    @property
    def team_member_id(self):
        """
        Team member ID. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._team_member_id_present:
            return self._team_member_id_value
        else:
            return None

    @team_member_id.setter
    def team_member_id(self, val):
        if val is None:
            del self.team_member_id
            return
        val = self._team_member_id_validator.validate(val)
        self._team_member_id_value = val
        self._team_member_id_present = True

    @team_member_id.deleter
    def team_member_id(self):
        self._team_member_id_value = None
        self._team_member_id_present = False

    @property
    def member_external_id(self):
        """
        Team member external ID.

        :rtype: str
        """
        if self._member_external_id_present:
            return self._member_external_id_value
        else:
            return None

    @member_external_id.setter
    def member_external_id(self, val):
        if val is None:
            del self.member_external_id
            return
        val = self._member_external_id_validator.validate(val)
        self._member_external_id_value = val
        self._member_external_id_present = True

    @member_external_id.deleter
    def member_external_id(self):
        self._member_external_id_value = None
        self._member_external_id_present = False

    def __repr__(self):
        return 'TeamMemberLogInfo(account_id={!r}, display_name={!r}, email={!r}, team_member_id={!r}, member_external_id={!r})'.format(
            self._account_id_value,
            self._display_name_value,
            self._email_value,
            self._team_member_id_value,
            self._member_external_id_value,
        )

TeamMemberLogInfo_validator = bv.Struct(TeamMemberLogInfo)

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

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

    def is_free(self):
        """
        Check if the union tag is ``free``.

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

    def is_full(self):
        """
        Check if the union tag is ``full``.

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

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

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

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

TeamMembershipType_validator = bv.Union(TeamMembershipType)

class TeamMergeFromDetails(object):
    """
    Merged another team into this team.

    :ivar 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 __repr__(self):
        return 'TeamMergeFromDetails(team_name={!r})'.format(
            self._team_name_value,
        )

TeamMergeFromDetails_validator = bv.Struct(TeamMergeFromDetails)

class TeamMergeToDetails(object):
    """
    Merged this team into another team.

    :ivar 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 __repr__(self):
        return 'TeamMergeToDetails(team_name={!r})'.format(
            self._team_name_value,
        )

TeamMergeToDetails_validator = bv.Struct(TeamMergeToDetails)

class TeamName(object):
    """
    Team name details

    :ivar team_display_name: Team's display name.
    :ivar 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 __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(object):
    """
    Added a team logo to be displayed on shared link headers.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

TeamProfileAddLogoDetails_validator = bv.Struct(TeamProfileAddLogoDetails)

class TeamProfileChangeDefaultLanguageDetails(object):
    """
    Changed the default language for the team.

    :ivar new_value: New team's default language.
    :ivar 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 __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 TeamProfileChangeLogoDetails(object):
    """
    Changed the team logo to be displayed on shared link headers.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

TeamProfileChangeLogoDetails_validator = bv.Struct(TeamProfileChangeLogoDetails)

class TeamProfileChangeNameDetails(object):
    """
    Changed the team name.

    :ivar previous_value: Previous teams name. Might be missing due to
        historical data gap.
    :ivar 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 __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 TeamProfileRemoveLogoDetails(object):
    """
    Removed the team logo to be displayed on shared link headers.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

TeamProfileRemoveLogoDetails_validator = bv.Struct(TeamProfileRemoveLogoDetails)

class TfaAddBackupPhoneDetails(object):
    """
    Added a backup phone for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

TfaAddBackupPhoneDetails_validator = bv.Struct(TfaAddBackupPhoneDetails)

class TfaAddSecurityKeyDetails(object):
    """
    Added a security key for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

TfaAddSecurityKeyDetails_validator = bv.Struct(TfaAddSecurityKeyDetails)

class TfaChangeBackupPhoneDetails(object):
    """
    Changed the backup phone for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

TfaChangeBackupPhoneDetails_validator = bv.Struct(TfaChangeBackupPhoneDetails)

class TfaChangePolicyDetails(object):
    """
    Change two-step verification policy for the team.

    :ivar new_value: New change policy.
    :ivar 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_validator
        """
        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_validator
        """
        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 __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 TfaChangeStatusDetails(object):
    """
    Enabled, disabled or changed the configuration for two-step verification.

    :ivar new_value: The new two factor authentication configuration.
    :ivar previous_value: The previous two factor authentication configuration.
        Might be missing due to historical data gap.
    :ivar 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 __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 TfaConfiguration(bb.Union):
    """
    Two factor authentication configuration. Note: the enabled option is
    deprecated.

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

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

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

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

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

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

    def is_sms(self):
        """
        Check if the union tag is ``sms``.

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

    def is_authenticator(self):
        """
        Check if the union tag is ``authenticator``.

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

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

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

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

TfaConfiguration_validator = bv.Union(TfaConfiguration)

class TfaRemoveBackupPhoneDetails(object):
    """
    Removed the backup phone for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

TfaRemoveBackupPhoneDetails_validator = bv.Struct(TfaRemoveBackupPhoneDetails)

class TfaRemoveSecurityKeyDetails(object):
    """
    Removed a security key for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

TfaRemoveSecurityKeyDetails_validator = bv.Struct(TfaRemoveSecurityKeyDetails)

class TfaResetDetails(object):
    """
    Reset two-step verification for team member.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

TfaResetDetails_validator = bv.Struct(TfaResetDetails)

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

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    milliseconds = None
    # Attribute is overwritten below the class definition
    seconds = None
    # Attribute is overwritten below the class definition
    minutes = None
    # Attribute is overwritten below the class definition
    hours = None
    # Attribute is overwritten below the class definition
    days = None
    # Attribute is overwritten below the class definition
    weeks = None
    # Attribute is overwritten below the class definition
    months = None
    # Attribute is overwritten below the class definition
    years = None
    # Attribute is overwritten below the class definition
    other = None

    def is_milliseconds(self):
        """
        Check if the union tag is ``milliseconds``.

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

    def is_seconds(self):
        """
        Check if the union tag is ``seconds``.

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

    def is_minutes(self):
        """
        Check if the union tag is ``minutes``.

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

    def is_hours(self):
        """
        Check if the union tag is ``hours``.

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

    def is_days(self):
        """
        Check if the union tag is ``days``.

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

    def is_weeks(self):
        """
        Check if the union tag is ``weeks``.

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

    def is_months(self):
        """
        Check if the union tag is ``months``.

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

    def is_years(self):
        """
        Check if the union tag is ``years``.

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

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

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

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

TimeUnit_validator = bv.Union(TimeUnit)

class TwoAccountChangePolicyDetails(object):
    """
    Enabled or disabled the option for team members to link a personal Dropbox
    account in addition to their work account to the same computer.

    :ivar new_value: New two account policy.
    :ivar 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 __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 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 __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 __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(object):
    """
    User's name logged information

    :ivar given_name: Given name.
    :ivar surname: Surname.
    :ivar 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 __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 __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 WebSessionLogInfo(SessionLogInfo):
    """
    Web session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

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

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

WebSessionLogInfo_validator = bv.Struct(WebSessionLogInfo)

class WebSessionsChangeFixedLengthPolicyDetails(object):
    """
    Changed how long team members can stay signed in to Dropbox on the web.

    :ivar new_value: New session length policy. Might be missing due to
        historical data gap.
    :ivar 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 __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 WebSessionsChangeIdleLengthPolicyDetails(object):
    """
    Changed how long team members can be idle while signed in to Dropbox on the
    web.

    :ivar new_value: New idle length policy. Might be missing due to historical
        data gap.
    :ivar 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 __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 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 defined: Defined fixed session length.
    :ivar 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 __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 defined: Defined idle session length.
    :ivar 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 __repr__(self):
        return 'WebSessionsIdleLengthPolicy(%r, %r)' % (self._tag, self._value)

WebSessionsIdleLengthPolicy_validator = bv.Union(WebSessionsIdleLengthPolicy)

AppId_validator = bv.String()
IpAddress_validator = bv.String()
RequestId_validator = bv.String()
TeamEventList_validator = bv.List(TeamEvent_validator)
AccessMethodLogInfo._end_user_validator = SessionLogInfo_validator
AccessMethodLogInfo._sign_in_as_validator = WebSessionLogInfo_validator
AccessMethodLogInfo._content_manager_validator = WebSessionLogInfo_validator
AccessMethodLogInfo._admin_console_validator = WebSessionLogInfo_validator
AccessMethodLogInfo._api_validator = ApiSessionLogInfo_validator
AccessMethodLogInfo._other_validator = bv.Void()
AccessMethodLogInfo._tagmap = {
    'end_user': AccessMethodLogInfo._end_user_validator,
    'sign_in_as': AccessMethodLogInfo._sign_in_as_validator,
    'content_manager': AccessMethodLogInfo._content_manager_validator,
    'admin_console': AccessMethodLogInfo._admin_console_validator,
    'api': AccessMethodLogInfo._api_validator,
    'other': AccessMethodLogInfo._other_validator,
}

AccessMethodLogInfo.other = AccessMethodLogInfo('other')

AccountCaptureAvailability._unavailable_validator = bv.Void()
AccountCaptureAvailability._available_validator = bv.Void()
AccountCaptureAvailability._other_validator = bv.Void()
AccountCaptureAvailability._tagmap = {
    'unavailable': AccountCaptureAvailability._unavailable_validator,
    'available': AccountCaptureAvailability._available_validator,
    'other': AccountCaptureAvailability._other_validator,
}

AccountCaptureAvailability.unavailable = AccountCaptureAvailability('unavailable')
AccountCaptureAvailability.available = AccountCaptureAvailability('available')
AccountCaptureAvailability.other = AccountCaptureAvailability('other')

AccountCaptureChangeAvailabilityDetails._new_value_validator = AccountCaptureAvailability_validator
AccountCaptureChangeAvailabilityDetails._previous_value_validator = bv.Nullable(AccountCaptureAvailability_validator)
AccountCaptureChangeAvailabilityDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
AccountCaptureChangeAvailabilityDetails._all_fields_ = [
    ('new_value', AccountCaptureChangeAvailabilityDetails._new_value_validator),
    ('previous_value', AccountCaptureChangeAvailabilityDetails._previous_value_validator),
]

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),
]

AccountCaptureMigrateAccountDetails._domain_name_validator = bv.String()
AccountCaptureMigrateAccountDetails._all_field_names_ = set(['domain_name'])
AccountCaptureMigrateAccountDetails._all_fields_ = [('domain_name', AccountCaptureMigrateAccountDetails._domain_name_validator)]

AccountCapturePolicy._disabled_validator = bv.Void()
AccountCapturePolicy._invited_users_validator = bv.Void()
AccountCapturePolicy._all_users_validator = bv.Void()
AccountCapturePolicy._other_validator = bv.Void()
AccountCapturePolicy._tagmap = {
    'disabled': AccountCapturePolicy._disabled_validator,
    'invited_users': AccountCapturePolicy._invited_users_validator,
    'all_users': AccountCapturePolicy._all_users_validator,
    'other': AccountCapturePolicy._other_validator,
}

AccountCapturePolicy.disabled = AccountCapturePolicy('disabled')
AccountCapturePolicy.invited_users = AccountCapturePolicy('invited_users')
AccountCapturePolicy.all_users = AccountCapturePolicy('all_users')
AccountCapturePolicy.other = AccountCapturePolicy('other')

AccountCaptureRelinquishAccountDetails._domain_name_validator = bv.String()
AccountCaptureRelinquishAccountDetails._all_field_names_ = set(['domain_name'])
AccountCaptureRelinquishAccountDetails._all_fields_ = [('domain_name', AccountCaptureRelinquishAccountDetails._domain_name_validator)]

ActorLogInfo._user_validator = UserLogInfo_validator
ActorLogInfo._admin_validator = UserLogInfo_validator
ActorLogInfo._app_validator = AppLogInfo_validator
ActorLogInfo._reseller_validator = ResellerLogInfo_validator
ActorLogInfo._dropbox_validator = bv.Void()
ActorLogInfo._other_validator = bv.Void()
ActorLogInfo._tagmap = {
    'user': ActorLogInfo._user_validator,
    'admin': ActorLogInfo._admin_validator,
    'app': ActorLogInfo._app_validator,
    'reseller': ActorLogInfo._reseller_validator,
    'dropbox': ActorLogInfo._dropbox_validator,
    'other': ActorLogInfo._other_validator,
}

ActorLogInfo.dropbox = ActorLogInfo('dropbox')
ActorLogInfo.other = ActorLogInfo('other')

AdminRole._user_validator = bv.Void()
AdminRole._limited_admin_validator = bv.Void()
AdminRole._support_admin_validator = bv.Void()
AdminRole._user_management_admin_validator = bv.Void()
AdminRole._team_admin_validator = bv.Void()
AdminRole._other_validator = bv.Void()
AdminRole._tagmap = {
    'user': AdminRole._user_validator,
    'limited_admin': AdminRole._limited_admin_validator,
    'support_admin': AdminRole._support_admin_validator,
    'user_management_admin': AdminRole._user_management_admin_validator,
    'team_admin': AdminRole._team_admin_validator,
    'other': AdminRole._other_validator,
}

AdminRole.user = AdminRole('user')
AdminRole.limited_admin = AdminRole('limited_admin')
AdminRole.support_admin = AdminRole('support_admin')
AdminRole.user_management_admin = AdminRole('user_management_admin')
AdminRole.team_admin = AdminRole('team_admin')
AdminRole.other = AdminRole('other')

AllowDownloadDisabledDetails._all_field_names_ = set([])
AllowDownloadDisabledDetails._all_fields_ = []

AllowDownloadEnabledDetails._all_field_names_ = set([])
AllowDownloadEnabledDetails._all_fields_ = []

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)]

AppLinkUserDetails._app_info_validator = AppLogInfo_validator
AppLinkUserDetails._all_field_names_ = set(['app_info'])
AppLinkUserDetails._all_fields_ = [('app_info', AppLinkUserDetails._app_info_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)]

AppUnlinkUserDetails._app_info_validator = AppLogInfo_validator
AppUnlinkUserDetails._all_field_names_ = set(['app_info'])
AppUnlinkUserDetails._all_fields_ = [('app_info', AppUnlinkUserDetails._app_info_validator)]

AssetLogInfo._file_validator = FileLogInfo_validator
AssetLogInfo._folder_validator = FolderLogInfo_validator
AssetLogInfo._paper_document_validator = PaperDocumentLogInfo_validator
AssetLogInfo._paper_folder_validator = PaperFolderLogInfo_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,
    'other': AssetLogInfo._other_validator,
}

AssetLogInfo.other = AssetLogInfo('other')

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.String()
Certificate._all_field_names_ = set([
    'subject',
    'issuer',
    'issue_date',
    'expiration_date',
    'serial_number',
    'sha1_fingerprint',
    'common_name',
])
Certificate._all_fields_ = [
    ('subject', Certificate._subject_validator),
    ('issuer', Certificate._issuer_validator),
    ('issue_date', Certificate._issue_date_validator),
    ('expiration_date', Certificate._expiration_date_validator),
    ('serial_number', Certificate._serial_number_validator),
    ('sha1_fingerprint', Certificate._sha1_fingerprint_validator),
    ('common_name', Certificate._common_name_validator),
]

CollectionShareDetails._album_name_validator = bv.String()
CollectionShareDetails._all_field_names_ = set(['album_name'])
CollectionShareDetails._all_fields_ = [('album_name', CollectionShareDetails._album_name_validator)]

Confidentiality._confidential_validator = bv.Void()
Confidentiality._non_confidential_validator = bv.Void()
Confidentiality._other_validator = bv.Void()
Confidentiality._tagmap = {
    'confidential': Confidentiality._confidential_validator,
    'non_confidential': Confidentiality._non_confidential_validator,
    'other': Confidentiality._other_validator,
}

Confidentiality.confidential = Confidentiality('confidential')
Confidentiality.non_confidential = Confidentiality('non_confidential')
Confidentiality.other = Confidentiality('other')

ContentPermanentDeletePolicy._disabled_validator = bv.Void()
ContentPermanentDeletePolicy._enabled_validator = bv.Void()
ContentPermanentDeletePolicy._other_validator = bv.Void()
ContentPermanentDeletePolicy._tagmap = {
    'disabled': ContentPermanentDeletePolicy._disabled_validator,
    'enabled': ContentPermanentDeletePolicy._enabled_validator,
    'other': ContentPermanentDeletePolicy._other_validator,
}

ContentPermanentDeletePolicy.disabled = ContentPermanentDeletePolicy('disabled')
ContentPermanentDeletePolicy.enabled = ContentPermanentDeletePolicy('enabled')
ContentPermanentDeletePolicy.other = ContentPermanentDeletePolicy('other')

ContextLogInfo._team_member_validator = TeamMemberLogInfo_validator
ContextLogInfo._non_team_member_validator = NonTeamMemberLogInfo_validator
ContextLogInfo._team_validator = bv.Void()
ContextLogInfo._other_validator = bv.Void()
ContextLogInfo._tagmap = {
    'team_member': ContextLogInfo._team_member_validator,
    'non_team_member': ContextLogInfo._non_team_member_validator,
    'team': ContextLogInfo._team_validator,
    'other': ContextLogInfo._other_validator,
}

ContextLogInfo.team = ContextLogInfo('team')
ContextLogInfo.other = ContextLogInfo('other')

CreateFolderDetails._all_field_names_ = set([])
CreateFolderDetails._all_fields_ = []

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),
]

DataPlacementRestrictionSatisfyPolicyDetails._placement_restriction_validator = PlacementRestriction_validator
DataPlacementRestrictionSatisfyPolicyDetails._all_field_names_ = set(['placement_restriction'])
DataPlacementRestrictionSatisfyPolicyDetails._all_fields_ = [('placement_restriction', DataPlacementRestrictionSatisfyPolicyDetails._placement_restriction_validator)]

SessionLogInfo._session_id_validator = bv.Nullable(common.SessionId_validator)
SessionLogInfo._field_names_ = set(['session_id'])
SessionLogInfo._all_field_names_ = SessionLogInfo._field_names_
SessionLogInfo._fields_ = [('session_id', SessionLogInfo._session_id_validator)]
SessionLogInfo._all_fields_ = SessionLogInfo._fields_

SessionLogInfo._tag_to_subtype_ = {
    (u'web',): WebSessionLogInfo_validator,
    (u'desktop',): DesktopSessionLogInfo_validator,
    (u'mobile',): MobileSessionLogInfo_validator,
}
SessionLogInfo._pytype_to_tag_and_subtype_ = {
    WebSessionLogInfo: ((u'web',), WebSessionLogInfo_validator),
    DesktopSessionLogInfo: ((u'desktop',), DesktopSessionLogInfo_validator),
    MobileSessionLogInfo: ((u'mobile',), MobileSessionLogInfo_validator),
}
SessionLogInfo._is_catch_all_ = True

DesktopSessionLogInfo._field_names_ = set([])
DesktopSessionLogInfo._all_field_names_ = SessionLogInfo._all_field_names_.union(DesktopSessionLogInfo._field_names_)
DesktopSessionLogInfo._fields_ = []
DesktopSessionLogInfo._all_fields_ = SessionLogInfo._all_fields_ + DesktopSessionLogInfo._fields_

DeviceApprovalsChangeDesktopPolicyDetails._new_value_validator = bv.Nullable(DeviceApprovalsPolicy_validator)
DeviceApprovalsChangeDesktopPolicyDetails._previous_value_validator = bv.Nullable(DeviceApprovalsPolicy_validator)
DeviceApprovalsChangeDesktopPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
DeviceApprovalsChangeDesktopPolicyDetails._all_fields_ = [
    ('new_value', DeviceApprovalsChangeDesktopPolicyDetails._new_value_validator),
    ('previous_value', DeviceApprovalsChangeDesktopPolicyDetails._previous_value_validator),
]

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),
]

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),
]

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),
]

DeviceApprovalsPolicy._unlimited_validator = bv.Void()
DeviceApprovalsPolicy._limited_validator = bv.Void()
DeviceApprovalsPolicy._other_validator = bv.Void()
DeviceApprovalsPolicy._tagmap = {
    'unlimited': DeviceApprovalsPolicy._unlimited_validator,
    'limited': DeviceApprovalsPolicy._limited_validator,
    'other': DeviceApprovalsPolicy._other_validator,
}

DeviceApprovalsPolicy.unlimited = DeviceApprovalsPolicy('unlimited')
DeviceApprovalsPolicy.limited = DeviceApprovalsPolicy('limited')
DeviceApprovalsPolicy.other = DeviceApprovalsPolicy('other')

DeviceChangeIpDesktopDetails._device_info_validator = DeviceLogInfo_validator
DeviceChangeIpDesktopDetails._all_field_names_ = set(['device_info'])
DeviceChangeIpDesktopDetails._all_fields_ = [('device_info', DeviceChangeIpDesktopDetails._device_info_validator)]

DeviceChangeIpMobileDetails._device_info_validator = DeviceLogInfo_validator
DeviceChangeIpMobileDetails._all_field_names_ = set(['device_info'])
DeviceChangeIpMobileDetails._all_fields_ = [('device_info', DeviceChangeIpMobileDetails._device_info_validator)]

DeviceChangeIpWebDetails._device_info_validator = bv.Nullable(DeviceLogInfo_validator)
DeviceChangeIpWebDetails._user_agent_validator = bv.String()
DeviceChangeIpWebDetails._all_field_names_ = set([
    'device_info',
    'user_agent',
])
DeviceChangeIpWebDetails._all_fields_ = [
    ('device_info', DeviceChangeIpWebDetails._device_info_validator),
    ('user_agent', DeviceChangeIpWebDetails._user_agent_validator),
]

DeviceDeleteOnUnlinkFailDetails._device_info_validator = DeviceLogInfo_validator
DeviceDeleteOnUnlinkFailDetails._num_failures_validator = bv.Int64()
DeviceDeleteOnUnlinkFailDetails._all_field_names_ = set([
    'device_info',
    'num_failures',
])
DeviceDeleteOnUnlinkFailDetails._all_fields_ = [
    ('device_info', DeviceDeleteOnUnlinkFailDetails._device_info_validator),
    ('num_failures', DeviceDeleteOnUnlinkFailDetails._num_failures_validator),
]

DeviceDeleteOnUnlinkSuccessDetails._device_info_validator = DeviceLogInfo_validator
DeviceDeleteOnUnlinkSuccessDetails._all_field_names_ = set(['device_info'])
DeviceDeleteOnUnlinkSuccessDetails._all_fields_ = [('device_info', DeviceDeleteOnUnlinkSuccessDetails._device_info_validator)]

DeviceLinkFailDetails._device_info_validator = bv.Nullable(DeviceLogInfo_validator)
DeviceLinkFailDetails._device_type_validator = DeviceType_validator
DeviceLinkFailDetails._all_field_names_ = set([
    'device_info',
    'device_type',
])
DeviceLinkFailDetails._all_fields_ = [
    ('device_info', DeviceLinkFailDetails._device_info_validator),
    ('device_type', DeviceLinkFailDetails._device_type_validator),
]

DeviceLinkSuccessDetails._device_info_validator = DeviceLogInfo_validator
DeviceLinkSuccessDetails._all_field_names_ = set(['device_info'])
DeviceLinkSuccessDetails._all_fields_ = [('device_info', DeviceLinkSuccessDetails._device_info_validator)]

DeviceLogInfo._device_id_validator = bv.Nullable(bv.String())
DeviceLogInfo._display_name_validator = bv.Nullable(bv.String())
DeviceLogInfo._is_emm_managed_validator = bv.Nullable(bv.Boolean())
DeviceLogInfo._platform_validator = bv.Nullable(bv.String())
DeviceLogInfo._mac_address_validator = bv.Nullable(bv.String())
DeviceLogInfo._os_version_validator = bv.Nullable(bv.String())
DeviceLogInfo._device_type_validator = bv.Nullable(bv.String())
DeviceLogInfo._ip_address_validator = bv.Nullable(IpAddress_validator)
DeviceLogInfo._last_activity_validator = bv.Nullable(bv.String())
DeviceLogInfo._app_version_validator = bv.Nullable(bv.String())
DeviceLogInfo._all_field_names_ = set([
    'device_id',
    'display_name',
    'is_emm_managed',
    'platform',
    'mac_address',
    'os_version',
    'device_type',
    'ip_address',
    'last_activity',
    'app_version',
])
DeviceLogInfo._all_fields_ = [
    ('device_id', DeviceLogInfo._device_id_validator),
    ('display_name', DeviceLogInfo._display_name_validator),
    ('is_emm_managed', DeviceLogInfo._is_emm_managed_validator),
    ('platform', DeviceLogInfo._platform_validator),
    ('mac_address', DeviceLogInfo._mac_address_validator),
    ('os_version', DeviceLogInfo._os_version_validator),
    ('device_type', DeviceLogInfo._device_type_validator),
    ('ip_address', DeviceLogInfo._ip_address_validator),
    ('last_activity', DeviceLogInfo._last_activity_validator),
    ('app_version', DeviceLogInfo._app_version_validator),
]

DeviceManagementDisabledDetails._all_field_names_ = set([])
DeviceManagementDisabledDetails._all_fields_ = []

DeviceManagementEnabledDetails._all_field_names_ = set([])
DeviceManagementEnabledDetails._all_fields_ = []

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._device_info_validator = DeviceLogInfo_validator
DeviceUnlinkDetails._delete_data_validator = bv.Boolean()
DeviceUnlinkDetails._all_field_names_ = set([
    'device_info',
    'delete_data',
])
DeviceUnlinkDetails._all_fields_ = [
    ('device_info', DeviceUnlinkDetails._device_info_validator),
    ('delete_data', DeviceUnlinkDetails._delete_data_validator),
]

DeviceUnlinkPolicy._remove_validator = bv.Void()
DeviceUnlinkPolicy._keep_validator = bv.Void()
DeviceUnlinkPolicy._other_validator = bv.Void()
DeviceUnlinkPolicy._tagmap = {
    'remove': DeviceUnlinkPolicy._remove_validator,
    'keep': DeviceUnlinkPolicy._keep_validator,
    'other': DeviceUnlinkPolicy._other_validator,
}

DeviceUnlinkPolicy.remove = DeviceUnlinkPolicy('remove')
DeviceUnlinkPolicy.keep = DeviceUnlinkPolicy('keep')
DeviceUnlinkPolicy.other = DeviceUnlinkPolicy('other')

DisabledDomainInvitesDetails._all_field_names_ = set([])
DisabledDomainInvitesDetails._all_fields_ = []

DomainInvitesApproveRequestToJoinTeamDetails._all_field_names_ = set([])
DomainInvitesApproveRequestToJoinTeamDetails._all_fields_ = []

DomainInvitesDeclineRequestToJoinTeamDetails._all_field_names_ = set([])
DomainInvitesDeclineRequestToJoinTeamDetails._all_fields_ = []

DomainInvitesEmailExistingUsersDetails._domain_name_validator = bv.List(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),
]

DomainInvitesRequestToJoinTeamDetails._all_field_names_ = set([])
DomainInvitesRequestToJoinTeamDetails._all_fields_ = []

DomainInvitesSetInviteNewUserPrefToNoDetails._all_field_names_ = set([])
DomainInvitesSetInviteNewUserPrefToNoDetails._all_fields_ = []

DomainInvitesSetInviteNewUserPrefToYesDetails._all_field_names_ = set([])
DomainInvitesSetInviteNewUserPrefToYesDetails._all_fields_ = []

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),
]

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),
]

DomainVerificationRemoveDomainDetails._domain_names_validator = bv.List(bv.String())
DomainVerificationRemoveDomainDetails._all_field_names_ = set(['domain_names'])
DomainVerificationRemoveDomainDetails._all_fields_ = [('domain_names', DomainVerificationRemoveDomainDetails._domain_names_validator)]

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_ = []

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),
]

EmmCreateExceptionsReportDetails._all_field_names_ = set([])
EmmCreateExceptionsReportDetails._all_fields_ = []

EmmCreateUsageReportDetails._all_field_names_ = set([])
EmmCreateUsageReportDetails._all_fields_ = []

EmmLoginSuccessDetails._all_field_names_ = set([])
EmmLoginSuccessDetails._all_fields_ = []

EmmRefreshAuthTokenDetails._all_field_names_ = set([])
EmmRefreshAuthTokenDetails._all_fields_ = []

EmmRemoveExceptionDetails._all_field_names_ = set([])
EmmRemoveExceptionDetails._all_fields_ = []

EnabledDomainInvitesDetails._all_field_names_ = set([])
EnabledDomainInvitesDetails._all_fields_ = []

EventCategory._account_capture_validator = bv.Void()
EventCategory._administration_validator = bv.Void()
EventCategory._apps_validator = bv.Void()
EventCategory._authentication_validator = bv.Void()
EventCategory._comments_validator = bv.Void()
EventCategory._content_access_validator = bv.Void()
EventCategory._devices_validator = bv.Void()
EventCategory._device_approvals_validator = bv.Void()
EventCategory._domains_validator = bv.Void()
EventCategory._emm_validator = bv.Void()
EventCategory._errors_validator = bv.Void()
EventCategory._files_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._sessions_validator = bv.Void()
EventCategory._shared_files_validator = bv.Void()
EventCategory._shared_folders_validator = bv.Void()
EventCategory._shared_links_validator = bv.Void()
EventCategory._sharing_validator = bv.Void()
EventCategory._sharing_policies_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._other_validator = bv.Void()
EventCategory._tagmap = {
    'account_capture': EventCategory._account_capture_validator,
    'administration': EventCategory._administration_validator,
    'apps': EventCategory._apps_validator,
    'authentication': EventCategory._authentication_validator,
    'comments': EventCategory._comments_validator,
    'content_access': EventCategory._content_access_validator,
    'devices': EventCategory._devices_validator,
    'device_approvals': EventCategory._device_approvals_validator,
    'domains': EventCategory._domains_validator,
    'emm': EventCategory._emm_validator,
    'errors': EventCategory._errors_validator,
    'files': EventCategory._files_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,
    'sessions': EventCategory._sessions_validator,
    'shared_files': EventCategory._shared_files_validator,
    'shared_folders': EventCategory._shared_folders_validator,
    'shared_links': EventCategory._shared_links_validator,
    'sharing': EventCategory._sharing_validator,
    'sharing_policies': EventCategory._sharing_policies_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,
    'other': EventCategory._other_validator,
}

EventCategory.account_capture = EventCategory('account_capture')
EventCategory.administration = EventCategory('administration')
EventCategory.apps = EventCategory('apps')
EventCategory.authentication = EventCategory('authentication')
EventCategory.comments = EventCategory('comments')
EventCategory.content_access = EventCategory('content_access')
EventCategory.devices = EventCategory('devices')
EventCategory.device_approvals = EventCategory('device_approvals')
EventCategory.domains = EventCategory('domains')
EventCategory.emm = EventCategory('emm')
EventCategory.errors = EventCategory('errors')
EventCategory.files = EventCategory('files')
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.sessions = EventCategory('sessions')
EventCategory.shared_files = EventCategory('shared_files')
EventCategory.shared_folders = EventCategory('shared_folders')
EventCategory.shared_links = EventCategory('shared_links')
EventCategory.sharing = EventCategory('sharing')
EventCategory.sharing_policies = EventCategory('sharing_policies')
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.other = EventCategory('other')

EventDetails._member_change_membership_type_details_validator = MemberChangeMembershipTypeDetails_validator
EventDetails._member_permanently_delete_account_contents_details_validator = MemberPermanentlyDeleteAccountContentsDetails_validator
EventDetails._member_space_limits_change_status_details_validator = MemberSpaceLimitsChangeStatusDetails_validator
EventDetails._member_transfer_account_contents_details_validator = MemberTransferAccountContentsDetails_validator
EventDetails._paper_admin_export_start_details_validator = PaperAdminExportStartDetails_validator
EventDetails._paper_enabled_users_group_addition_details_validator = PaperEnabledUsersGroupAdditionDetails_validator
EventDetails._paper_enabled_users_group_removal_details_validator = PaperEnabledUsersGroupRemovalDetails_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._sf_external_invite_warn_details_validator = SfExternalInviteWarnDetails_validator
EventDetails._team_merge_from_details_validator = TeamMergeFromDetails_validator
EventDetails._team_merge_to_details_validator = TeamMergeToDetails_validator
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._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_like_comment_details_validator = FileLikeCommentDetails_validator
EventDetails._file_resolve_comment_details_validator = FileResolveCommentDetails_validator
EventDetails._file_unlike_comment_details_validator = FileUnlikeCommentDetails_validator
EventDetails._file_unresolve_comment_details_validator = FileUnresolveCommentDetails_validator
EventDetails._device_change_ip_desktop_details_validator = DeviceChangeIpDesktopDetails_validator
EventDetails._device_change_ip_mobile_details_validator = DeviceChangeIpMobileDetails_validator
EventDetails._device_change_ip_web_details_validator = DeviceChangeIpWebDetails_validator
EventDetails._device_delete_on_unlink_fail_details_validator = DeviceDeleteOnUnlinkFailDetails_validator
EventDetails._device_delete_on_unlink_success_details_validator = DeviceDeleteOnUnlinkSuccessDetails_validator
EventDetails._device_link_fail_details_validator = DeviceLinkFailDetails_validator
EventDetails._device_link_success_details_validator = DeviceLinkSuccessDetails_validator
EventDetails._device_management_disabled_details_validator = DeviceManagementDisabledDetails_validator
EventDetails._device_management_enabled_details_validator = DeviceManagementEnabledDetails_validator
EventDetails._device_unlink_details_validator = DeviceUnlinkDetails_validator
EventDetails._emm_refresh_auth_token_details_validator = EmmRefreshAuthTokenDetails_validator
EventDetails._account_capture_change_availability_details_validator = AccountCaptureChangeAvailabilityDetails_validator
EventDetails._account_capture_migrate_account_details_validator = AccountCaptureMigrateAccountDetails_validator
EventDetails._account_capture_relinquish_account_details_validator = AccountCaptureRelinquishAccountDetails_validator
EventDetails._disabled_domain_invites_details_validator = DisabledDomainInvitesDetails_validator
EventDetails._domain_invites_approve_request_to_join_team_details_validator = DomainInvitesApproveRequestToJoinTeamDetails_validator
EventDetails._domain_invites_decline_request_to_join_team_details_validator = DomainInvitesDeclineRequestToJoinTeamDetails_validator
EventDetails._domain_invites_email_existing_users_details_validator = DomainInvitesEmailExistingUsersDetails_validator
EventDetails._domain_invites_request_to_join_team_details_validator = DomainInvitesRequestToJoinTeamDetails_validator
EventDetails._domain_invites_set_invite_new_user_pref_to_no_details_validator = DomainInvitesSetInviteNewUserPrefToNoDetails_validator
EventDetails._domain_invites_set_invite_new_user_pref_to_yes_details_validator = DomainInvitesSetInviteNewUserPrefToYesDetails_validator
EventDetails._domain_verification_add_domain_fail_details_validator = DomainVerificationAddDomainFailDetails_validator
EventDetails._domain_verification_add_domain_success_details_validator = DomainVerificationAddDomainSuccessDetails_validator
EventDetails._domain_verification_remove_domain_details_validator = DomainVerificationRemoveDomainDetails_validator
EventDetails._enabled_domain_invites_details_validator = EnabledDomainInvitesDetails_validator
EventDetails._create_folder_details_validator = CreateFolderDetails_validator
EventDetails._file_add_details_validator = FileAddDetails_validator
EventDetails._file_copy_details_validator = FileCopyDetails_validator
EventDetails._file_delete_details_validator = FileDeleteDetails_validator
EventDetails._file_download_details_validator = FileDownloadDetails_validator
EventDetails._file_edit_details_validator = FileEditDetails_validator
EventDetails._file_get_copy_reference_details_validator = FileGetCopyReferenceDetails_validator
EventDetails._file_move_details_validator = FileMoveDetails_validator
EventDetails._file_permanently_delete_details_validator = FilePermanentlyDeleteDetails_validator
EventDetails._file_preview_details_validator = FilePreviewDetails_validator
EventDetails._file_rename_details_validator = FileRenameDetails_validator
EventDetails._file_restore_details_validator = FileRestoreDetails_validator
EventDetails._file_revert_details_validator = FileRevertDetails_validator
EventDetails._file_rollback_changes_details_validator = FileRollbackChangesDetails_validator
EventDetails._file_save_copy_reference_details_validator = FileSaveCopyReferenceDetails_validator
EventDetails._file_request_add_deadline_details_validator = FileRequestAddDeadlineDetails_validator
EventDetails._file_request_change_folder_details_validator = FileRequestChangeFolderDetails_validator
EventDetails._file_request_change_title_details_validator = FileRequestChangeTitleDetails_validator
EventDetails._file_request_close_details_validator = FileRequestCloseDetails_validator
EventDetails._file_request_create_details_validator = FileRequestCreateDetails_validator
EventDetails._file_request_receive_file_details_validator = FileRequestReceiveFileDetails_validator
EventDetails._file_request_remove_deadline_details_validator = FileRequestRemoveDeadlineDetails_validator
EventDetails._file_request_send_details_validator = FileRequestSendDetails_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_moved_details_validator = GroupMovedDetails_validator
EventDetails._group_remove_external_id_details_validator = GroupRemoveExternalIdDetails_validator
EventDetails._group_remove_member_details_validator = GroupRemoveMemberDetails_validator
EventDetails._group_rename_details_validator = GroupRenameDetails_validator
EventDetails._emm_login_success_details_validator = EmmLoginSuccessDetails_validator
EventDetails._logout_details_validator = LogoutDetails_validator
EventDetails._password_login_fail_details_validator = PasswordLoginFailDetails_validator
EventDetails._password_login_success_details_validator = PasswordLoginSuccessDetails_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_login_fail_details_validator = SsoLoginFailDetails_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_name_details_validator = MemberChangeNameDetails_validator
EventDetails._member_change_status_details_validator = MemberChangeStatusDetails_validator
EventDetails._member_suggest_details_validator = MemberSuggestDetails_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_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_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._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._smart_sync_create_admin_privilege_report_details_validator = SmartSyncCreateAdminPrivilegeReportDetails_validator
EventDetails._team_activity_create_report_details_validator = TeamActivityCreateReportDetails_validator
EventDetails._collection_share_details_validator = CollectionShareDetails_validator
EventDetails._note_acl_invite_only_details_validator = NoteAclInviteOnlyDetails_validator
EventDetails._note_acl_link_details_validator = NoteAclLinkDetails_validator
EventDetails._note_acl_team_link_details_validator = NoteAclTeamLinkDetails_validator
EventDetails._note_shared_details_validator = NoteSharedDetails_validator
EventDetails._note_share_receive_details_validator = NoteShareReceiveDetails_validator
EventDetails._open_note_shared_details_validator = OpenNoteSharedDetails_validator
EventDetails._sf_add_group_details_validator = SfAddGroupDetails_validator
EventDetails._sf_allow_non_members_to_view_shared_links_details_validator = SfAllowNonMembersToViewSharedLinksDetails_validator
EventDetails._sf_invite_group_details_validator = SfInviteGroupDetails_validator
EventDetails._sf_nest_details_validator = SfNestDetails_validator
EventDetails._sf_team_decline_details_validator = SfTeamDeclineDetails_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_invitee_details_validator = SharedContentRemoveInviteeDetails_validator
EventDetails._shared_content_remove_link_expiry_details_validator = SharedContentRemoveLinkExpiryDetails_validator
EventDetails._shared_content_remove_link_password_details_validator = SharedContentRemoveLinkPasswordDetails_validator
EventDetails._shared_content_remove_member_details_validator = SharedContentRemoveMemberDetails_validator
EventDetails._shared_content_request_access_details_validator = SharedContentRequestAccessDetails_validator
EventDetails._shared_content_unshare_details_validator = SharedContentUnshareDetails_validator
EventDetails._shared_content_view_details_validator = SharedContentViewDetails_validator
EventDetails._shared_folder_change_confidentiality_details_validator = SharedFolderChangeConfidentialityDetails_validator
EventDetails._shared_folder_change_link_policy_details_validator = SharedFolderChangeLinkPolicyDetails_validator
EventDetails._shared_folder_change_member_management_policy_details_validator = SharedFolderChangeMemberManagementPolicyDetails_validator
EventDetails._shared_folder_change_member_policy_details_validator = SharedFolderChangeMemberPolicyDetails_validator
EventDetails._shared_folder_create_details_validator = SharedFolderCreateDetails_validator
EventDetails._shared_folder_mount_details_validator = SharedFolderMountDetails_validator
EventDetails._shared_folder_transfer_ownership_details_validator = SharedFolderTransferOwnershipDetails_validator
EventDetails._shared_folder_unmount_details_validator = SharedFolderUnmountDetails_validator
EventDetails._shared_note_opened_details_validator = SharedNoteOpenedDetails_validator
EventDetails._shmodel_app_create_details_validator = ShmodelAppCreateDetails_validator
EventDetails._shmodel_create_details_validator = ShmodelCreateDetails_validator
EventDetails._shmodel_disable_details_validator = ShmodelDisableDetails_validator
EventDetails._shmodel_fb_share_details_validator = ShmodelFbShareDetails_validator
EventDetails._shmodel_group_share_details_validator = ShmodelGroupShareDetails_validator
EventDetails._shmodel_remove_expiration_details_validator = ShmodelRemoveExpirationDetails_validator
EventDetails._shmodel_set_expiration_details_validator = ShmodelSetExpirationDetails_validator
EventDetails._shmodel_team_copy_details_validator = ShmodelTeamCopyDetails_validator
EventDetails._shmodel_team_download_details_validator = ShmodelTeamDownloadDetails_validator
EventDetails._shmodel_team_share_details_validator = ShmodelTeamShareDetails_validator
EventDetails._shmodel_team_view_details_validator = ShmodelTeamViewDetails_validator
EventDetails._shmodel_visibility_password_details_validator = ShmodelVisibilityPasswordDetails_validator
EventDetails._shmodel_visibility_public_details_validator = ShmodelVisibilityPublicDetails_validator
EventDetails._shmodel_visibility_team_only_details_validator = ShmodelVisibilityTeamOnlyDetails_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._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._data_placement_restriction_change_policy_details_validator = DataPlacementRestrictionChangePolicyDetails_validator
EventDetails._data_placement_restriction_satisfy_policy_details_validator = DataPlacementRestrictionSatisfyPolicyDetails_validator
EventDetails._device_approvals_change_desktop_policy_details_validator = DeviceApprovalsChangeDesktopPolicyDetails_validator
EventDetails._device_approvals_change_mobile_policy_details_validator = DeviceApprovalsChangeMobilePolicyDetails_validator
EventDetails._device_approvals_change_overage_action_details_validator = DeviceApprovalsChangeOverageActionDetails_validator
EventDetails._device_approvals_change_unlink_action_details_validator = DeviceApprovalsChangeUnlinkActionDetails_validator
EventDetails._emm_add_exception_details_validator = EmmAddExceptionDetails_validator
EventDetails._emm_change_policy_details_validator = EmmChangePolicyDetails_validator
EventDetails._emm_remove_exception_details_validator = EmmRemoveExceptionDetails_validator
EventDetails._extended_version_history_change_policy_details_validator = ExtendedVersionHistoryChangePolicyDetails_validator
EventDetails._file_comments_change_policy_details_validator = FileCommentsChangePolicyDetails_validator
EventDetails._file_requests_change_policy_details_validator = FileRequestsChangePolicyDetails_validator
EventDetails._file_requests_emails_enabled_details_validator = FileRequestsEmailsEnabledDetails_validator
EventDetails._file_requests_emails_restricted_to_team_only_details_validator = FileRequestsEmailsRestrictedToTeamOnlyDetails_validator
EventDetails._google_sso_change_policy_details_validator = GoogleSsoChangePolicyDetails_validator
EventDetails._group_user_management_change_policy_details_validator = GroupUserManagementChangePolicyDetails_validator
EventDetails._member_requests_change_policy_details_validator = MemberRequestsChangePolicyDetails_validator
EventDetails._member_space_limits_add_exception_details_validator = MemberSpaceLimitsAddExceptionDetails_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._permanent_delete_change_policy_details_validator = PermanentDeleteChangePolicyDetails_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._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._tfa_change_policy_details_validator = TfaChangePolicyDetails_validator
EventDetails._two_account_change_policy_details_validator = TwoAccountChangePolicyDetails_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_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._missing_details_validator = MissingDetails_validator
EventDetails._other_validator = bv.Void()
EventDetails._tagmap = {
    'member_change_membership_type_details': EventDetails._member_change_membership_type_details_validator,
    'member_permanently_delete_account_contents_details': EventDetails._member_permanently_delete_account_contents_details_validator,
    'member_space_limits_change_status_details': EventDetails._member_space_limits_change_status_details_validator,
    'member_transfer_account_contents_details': EventDetails._member_transfer_account_contents_details_validator,
    'paper_admin_export_start_details': EventDetails._paper_admin_export_start_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,
    '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,
    'sf_external_invite_warn_details': EventDetails._sf_external_invite_warn_details_validator,
    'team_merge_from_details': EventDetails._team_merge_from_details_validator,
    'team_merge_to_details': EventDetails._team_merge_to_details_validator,
    '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,
    '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_like_comment_details': EventDetails._file_like_comment_details_validator,
    'file_resolve_comment_details': EventDetails._file_resolve_comment_details_validator,
    'file_unlike_comment_details': EventDetails._file_unlike_comment_details_validator,
    'file_unresolve_comment_details': EventDetails._file_unresolve_comment_details_validator,
    'device_change_ip_desktop_details': EventDetails._device_change_ip_desktop_details_validator,
    'device_change_ip_mobile_details': EventDetails._device_change_ip_mobile_details_validator,
    'device_change_ip_web_details': EventDetails._device_change_ip_web_details_validator,
    'device_delete_on_unlink_fail_details': EventDetails._device_delete_on_unlink_fail_details_validator,
    'device_delete_on_unlink_success_details': EventDetails._device_delete_on_unlink_success_details_validator,
    'device_link_fail_details': EventDetails._device_link_fail_details_validator,
    'device_link_success_details': EventDetails._device_link_success_details_validator,
    'device_management_disabled_details': EventDetails._device_management_disabled_details_validator,
    'device_management_enabled_details': EventDetails._device_management_enabled_details_validator,
    'device_unlink_details': EventDetails._device_unlink_details_validator,
    'emm_refresh_auth_token_details': EventDetails._emm_refresh_auth_token_details_validator,
    'account_capture_change_availability_details': EventDetails._account_capture_change_availability_details_validator,
    'account_capture_migrate_account_details': EventDetails._account_capture_migrate_account_details_validator,
    'account_capture_relinquish_account_details': EventDetails._account_capture_relinquish_account_details_validator,
    'disabled_domain_invites_details': EventDetails._disabled_domain_invites_details_validator,
    'domain_invites_approve_request_to_join_team_details': EventDetails._domain_invites_approve_request_to_join_team_details_validator,
    'domain_invites_decline_request_to_join_team_details': EventDetails._domain_invites_decline_request_to_join_team_details_validator,
    'domain_invites_email_existing_users_details': EventDetails._domain_invites_email_existing_users_details_validator,
    'domain_invites_request_to_join_team_details': EventDetails._domain_invites_request_to_join_team_details_validator,
    'domain_invites_set_invite_new_user_pref_to_no_details': EventDetails._domain_invites_set_invite_new_user_pref_to_no_details_validator,
    'domain_invites_set_invite_new_user_pref_to_yes_details': EventDetails._domain_invites_set_invite_new_user_pref_to_yes_details_validator,
    'domain_verification_add_domain_fail_details': EventDetails._domain_verification_add_domain_fail_details_validator,
    'domain_verification_add_domain_success_details': EventDetails._domain_verification_add_domain_success_details_validator,
    'domain_verification_remove_domain_details': EventDetails._domain_verification_remove_domain_details_validator,
    'enabled_domain_invites_details': EventDetails._enabled_domain_invites_details_validator,
    'create_folder_details': EventDetails._create_folder_details_validator,
    'file_add_details': EventDetails._file_add_details_validator,
    'file_copy_details': EventDetails._file_copy_details_validator,
    'file_delete_details': EventDetails._file_delete_details_validator,
    'file_download_details': EventDetails._file_download_details_validator,
    'file_edit_details': EventDetails._file_edit_details_validator,
    'file_get_copy_reference_details': EventDetails._file_get_copy_reference_details_validator,
    'file_move_details': EventDetails._file_move_details_validator,
    'file_permanently_delete_details': EventDetails._file_permanently_delete_details_validator,
    'file_preview_details': EventDetails._file_preview_details_validator,
    'file_rename_details': EventDetails._file_rename_details_validator,
    'file_restore_details': EventDetails._file_restore_details_validator,
    'file_revert_details': EventDetails._file_revert_details_validator,
    'file_rollback_changes_details': EventDetails._file_rollback_changes_details_validator,
    'file_save_copy_reference_details': EventDetails._file_save_copy_reference_details_validator,
    'file_request_add_deadline_details': EventDetails._file_request_add_deadline_details_validator,
    'file_request_change_folder_details': EventDetails._file_request_change_folder_details_validator,
    'file_request_change_title_details': EventDetails._file_request_change_title_details_validator,
    'file_request_close_details': EventDetails._file_request_close_details_validator,
    'file_request_create_details': EventDetails._file_request_create_details_validator,
    'file_request_receive_file_details': EventDetails._file_request_receive_file_details_validator,
    'file_request_remove_deadline_details': EventDetails._file_request_remove_deadline_details_validator,
    'file_request_send_details': EventDetails._file_request_send_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_moved_details': EventDetails._group_moved_details_validator,
    'group_remove_external_id_details': EventDetails._group_remove_external_id_details_validator,
    'group_remove_member_details': EventDetails._group_remove_member_details_validator,
    'group_rename_details': EventDetails._group_rename_details_validator,
    'emm_login_success_details': EventDetails._emm_login_success_details_validator,
    'logout_details': EventDetails._logout_details_validator,
    'password_login_fail_details': EventDetails._password_login_fail_details_validator,
    'password_login_success_details': EventDetails._password_login_success_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_login_fail_details': EventDetails._sso_login_fail_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_name_details': EventDetails._member_change_name_details_validator,
    'member_change_status_details': EventDetails._member_change_status_details_validator,
    'member_suggest_details': EventDetails._member_suggest_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_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_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,
    '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,
    '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,
    'collection_share_details': EventDetails._collection_share_details_validator,
    'note_acl_invite_only_details': EventDetails._note_acl_invite_only_details_validator,
    'note_acl_link_details': EventDetails._note_acl_link_details_validator,
    'note_acl_team_link_details': EventDetails._note_acl_team_link_details_validator,
    'note_shared_details': EventDetails._note_shared_details_validator,
    'note_share_receive_details': EventDetails._note_share_receive_details_validator,
    'open_note_shared_details': EventDetails._open_note_shared_details_validator,
    'sf_add_group_details': EventDetails._sf_add_group_details_validator,
    'sf_allow_non_members_to_view_shared_links_details': EventDetails._sf_allow_non_members_to_view_shared_links_details_validator,
    'sf_invite_group_details': EventDetails._sf_invite_group_details_validator,
    'sf_nest_details': EventDetails._sf_nest_details_validator,
    'sf_team_decline_details': EventDetails._sf_team_decline_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_invitee_details': EventDetails._shared_content_remove_invitee_details_validator,
    'shared_content_remove_link_expiry_details': EventDetails._shared_content_remove_link_expiry_details_validator,
    'shared_content_remove_link_password_details': EventDetails._shared_content_remove_link_password_details_validator,
    'shared_content_remove_member_details': EventDetails._shared_content_remove_member_details_validator,
    'shared_content_request_access_details': EventDetails._shared_content_request_access_details_validator,
    'shared_content_unshare_details': EventDetails._shared_content_unshare_details_validator,
    'shared_content_view_details': EventDetails._shared_content_view_details_validator,
    'shared_folder_change_confidentiality_details': EventDetails._shared_folder_change_confidentiality_details_validator,
    'shared_folder_change_link_policy_details': EventDetails._shared_folder_change_link_policy_details_validator,
    'shared_folder_change_member_management_policy_details': EventDetails._shared_folder_change_member_management_policy_details_validator,
    'shared_folder_change_member_policy_details': EventDetails._shared_folder_change_member_policy_details_validator,
    'shared_folder_create_details': EventDetails._shared_folder_create_details_validator,
    'shared_folder_mount_details': EventDetails._shared_folder_mount_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_note_opened_details': EventDetails._shared_note_opened_details_validator,
    'shmodel_app_create_details': EventDetails._shmodel_app_create_details_validator,
    'shmodel_create_details': EventDetails._shmodel_create_details_validator,
    'shmodel_disable_details': EventDetails._shmodel_disable_details_validator,
    'shmodel_fb_share_details': EventDetails._shmodel_fb_share_details_validator,
    'shmodel_group_share_details': EventDetails._shmodel_group_share_details_validator,
    'shmodel_remove_expiration_details': EventDetails._shmodel_remove_expiration_details_validator,
    'shmodel_set_expiration_details': EventDetails._shmodel_set_expiration_details_validator,
    'shmodel_team_copy_details': EventDetails._shmodel_team_copy_details_validator,
    'shmodel_team_download_details': EventDetails._shmodel_team_download_details_validator,
    'shmodel_team_share_details': EventDetails._shmodel_team_share_details_validator,
    'shmodel_team_view_details': EventDetails._shmodel_team_view_details_validator,
    'shmodel_visibility_password_details': EventDetails._shmodel_visibility_password_details_validator,
    'shmodel_visibility_public_details': EventDetails._shmodel_visibility_public_details_validator,
    'shmodel_visibility_team_only_details': EventDetails._shmodel_visibility_team_only_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,
    '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,
    'data_placement_restriction_change_policy_details': EventDetails._data_placement_restriction_change_policy_details_validator,
    'data_placement_restriction_satisfy_policy_details': EventDetails._data_placement_restriction_satisfy_policy_details_validator,
    'device_approvals_change_desktop_policy_details': EventDetails._device_approvals_change_desktop_policy_details_validator,
    'device_approvals_change_mobile_policy_details': EventDetails._device_approvals_change_mobile_policy_details_validator,
    'device_approvals_change_overage_action_details': EventDetails._device_approvals_change_overage_action_details_validator,
    'device_approvals_change_unlink_action_details': EventDetails._device_approvals_change_unlink_action_details_validator,
    'emm_add_exception_details': EventDetails._emm_add_exception_details_validator,
    'emm_change_policy_details': EventDetails._emm_change_policy_details_validator,
    'emm_remove_exception_details': EventDetails._emm_remove_exception_details_validator,
    'extended_version_history_change_policy_details': EventDetails._extended_version_history_change_policy_details_validator,
    'file_comments_change_policy_details': EventDetails._file_comments_change_policy_details_validator,
    'file_requests_change_policy_details': EventDetails._file_requests_change_policy_details_validator,
    'file_requests_emails_enabled_details': EventDetails._file_requests_emails_enabled_details_validator,
    'file_requests_emails_restricted_to_team_only_details': EventDetails._file_requests_emails_restricted_to_team_only_details_validator,
    'google_sso_change_policy_details': EventDetails._google_sso_change_policy_details_validator,
    'group_user_management_change_policy_details': EventDetails._group_user_management_change_policy_details_validator,
    'member_requests_change_policy_details': EventDetails._member_requests_change_policy_details_validator,
    'member_space_limits_add_exception_details': EventDetails._member_space_limits_add_exception_details_validator,
    'member_space_limits_change_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,
    'permanent_delete_change_policy_details': EventDetails._permanent_delete_change_policy_details_validator,
    'sharing_change_folder_join_policy_details': EventDetails._sharing_change_folder_join_policy_details_validator,
    'sharing_change_link_policy_details': EventDetails._sharing_change_link_policy_details_validator,
    'sharing_change_member_policy_details': EventDetails._sharing_change_member_policy_details_validator,
    '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,
    'tfa_change_policy_details': EventDetails._tfa_change_policy_details_validator,
    'two_account_change_policy_details': EventDetails._two_account_change_policy_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_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,
    'missing_details': EventDetails._missing_details_validator,
    'other': EventDetails._other_validator,
}

EventDetails.other = EventDetails('other')

EventType._member_change_membership_type_validator = bv.Void()
EventType._member_permanently_delete_account_contents_validator = bv.Void()
EventType._member_space_limits_change_status_validator = bv.Void()
EventType._member_transfer_account_contents_validator = bv.Void()
EventType._paper_admin_export_start_validator = bv.Void()
EventType._paper_enabled_users_group_addition_validator = bv.Void()
EventType._paper_enabled_users_group_removal_validator = bv.Void()
EventType._paper_external_view_allow_validator = bv.Void()
EventType._paper_external_view_default_team_validator = bv.Void()
EventType._paper_external_view_forbid_validator = bv.Void()
EventType._sf_external_invite_warn_validator = bv.Void()
EventType._team_merge_from_validator = bv.Void()
EventType._team_merge_to_validator = bv.Void()
EventType._app_link_team_validator = bv.Void()
EventType._app_link_user_validator = bv.Void()
EventType._app_unlink_team_validator = bv.Void()
EventType._app_unlink_user_validator = bv.Void()
EventType._file_add_comment_validator = bv.Void()
EventType._file_change_comment_subscription_validator = bv.Void()
EventType._file_delete_comment_validator = bv.Void()
EventType._file_like_comment_validator = bv.Void()
EventType._file_resolve_comment_validator = bv.Void()
EventType._file_unlike_comment_validator = bv.Void()
EventType._file_unresolve_comment_validator = bv.Void()
EventType._device_change_ip_desktop_validator = bv.Void()
EventType._device_change_ip_mobile_validator = bv.Void()
EventType._device_change_ip_web_validator = bv.Void()
EventType._device_delete_on_unlink_fail_validator = bv.Void()
EventType._device_delete_on_unlink_success_validator = bv.Void()
EventType._device_link_fail_validator = bv.Void()
EventType._device_link_success_validator = bv.Void()
EventType._device_management_disabled_validator = bv.Void()
EventType._device_management_enabled_validator = bv.Void()
EventType._device_unlink_validator = bv.Void()
EventType._emm_refresh_auth_token_validator = bv.Void()
EventType._account_capture_change_availability_validator = bv.Void()
EventType._account_capture_migrate_account_validator = bv.Void()
EventType._account_capture_relinquish_account_validator = bv.Void()
EventType._disabled_domain_invites_validator = bv.Void()
EventType._domain_invites_approve_request_to_join_team_validator = bv.Void()
EventType._domain_invites_decline_request_to_join_team_validator = bv.Void()
EventType._domain_invites_email_existing_users_validator = bv.Void()
EventType._domain_invites_request_to_join_team_validator = bv.Void()
EventType._domain_invites_set_invite_new_user_pref_to_no_validator = bv.Void()
EventType._domain_invites_set_invite_new_user_pref_to_yes_validator = bv.Void()
EventType._domain_verification_add_domain_fail_validator = bv.Void()
EventType._domain_verification_add_domain_success_validator = bv.Void()
EventType._domain_verification_remove_domain_validator = bv.Void()
EventType._enabled_domain_invites_validator = bv.Void()
EventType._create_folder_validator = bv.Void()
EventType._file_add_validator = bv.Void()
EventType._file_copy_validator = bv.Void()
EventType._file_delete_validator = bv.Void()
EventType._file_download_validator = bv.Void()
EventType._file_edit_validator = bv.Void()
EventType._file_get_copy_reference_validator = bv.Void()
EventType._file_move_validator = bv.Void()
EventType._file_permanently_delete_validator = bv.Void()
EventType._file_preview_validator = bv.Void()
EventType._file_rename_validator = bv.Void()
EventType._file_restore_validator = bv.Void()
EventType._file_revert_validator = bv.Void()
EventType._file_rollback_changes_validator = bv.Void()
EventType._file_save_copy_reference_validator = bv.Void()
EventType._file_request_add_deadline_validator = bv.Void()
EventType._file_request_change_folder_validator = bv.Void()
EventType._file_request_change_title_validator = bv.Void()
EventType._file_request_close_validator = bv.Void()
EventType._file_request_create_validator = bv.Void()
EventType._file_request_receive_file_validator = bv.Void()
EventType._file_request_remove_deadline_validator = bv.Void()
EventType._file_request_send_validator = bv.Void()
EventType._group_add_external_id_validator = bv.Void()
EventType._group_add_member_validator = bv.Void()
EventType._group_change_external_id_validator = bv.Void()
EventType._group_change_management_type_validator = bv.Void()
EventType._group_change_member_role_validator = bv.Void()
EventType._group_create_validator = bv.Void()
EventType._group_delete_validator = bv.Void()
EventType._group_moved_validator = bv.Void()
EventType._group_remove_external_id_validator = bv.Void()
EventType._group_remove_member_validator = bv.Void()
EventType._group_rename_validator = bv.Void()
EventType._emm_login_success_validator = bv.Void()
EventType._logout_validator = bv.Void()
EventType._password_login_fail_validator = bv.Void()
EventType._password_login_success_validator = bv.Void()
EventType._reseller_support_session_end_validator = bv.Void()
EventType._reseller_support_session_start_validator = bv.Void()
EventType._sign_in_as_session_end_validator = bv.Void()
EventType._sign_in_as_session_start_validator = bv.Void()
EventType._sso_login_fail_validator = bv.Void()
EventType._member_add_name_validator = bv.Void()
EventType._member_change_admin_role_validator = bv.Void()
EventType._member_change_email_validator = bv.Void()
EventType._member_change_name_validator = bv.Void()
EventType._member_change_status_validator = bv.Void()
EventType._member_suggest_validator = bv.Void()
EventType._paper_content_add_member_validator = bv.Void()
EventType._paper_content_add_to_folder_validator = bv.Void()
EventType._paper_content_archive_validator = bv.Void()
EventType._paper_content_create_validator = bv.Void()
EventType._paper_content_permanently_delete_validator = bv.Void()
EventType._paper_content_remove_from_folder_validator = bv.Void()
EventType._paper_content_remove_member_validator = bv.Void()
EventType._paper_content_rename_validator = bv.Void()
EventType._paper_content_restore_validator = bv.Void()
EventType._paper_doc_add_comment_validator = bv.Void()
EventType._paper_doc_change_member_role_validator = bv.Void()
EventType._paper_doc_change_sharing_policy_validator = bv.Void()
EventType._paper_doc_change_subscription_validator = bv.Void()
EventType._paper_doc_deleted_validator = bv.Void()
EventType._paper_doc_delete_comment_validator = bv.Void()
EventType._paper_doc_download_validator = bv.Void()
EventType._paper_doc_edit_validator = bv.Void()
EventType._paper_doc_edit_comment_validator = bv.Void()
EventType._paper_doc_followed_validator = bv.Void()
EventType._paper_doc_mention_validator = bv.Void()
EventType._paper_doc_request_access_validator = bv.Void()
EventType._paper_doc_resolve_comment_validator = bv.Void()
EventType._paper_doc_revert_validator = bv.Void()
EventType._paper_doc_slack_share_validator = bv.Void()
EventType._paper_doc_team_invite_validator = bv.Void()
EventType._paper_doc_trashed_validator = bv.Void()
EventType._paper_doc_unresolve_comment_validator = bv.Void()
EventType._paper_doc_untrashed_validator = bv.Void()
EventType._paper_doc_view_validator = bv.Void()
EventType._paper_folder_change_subscription_validator = bv.Void()
EventType._paper_folder_deleted_validator = bv.Void()
EventType._paper_folder_followed_validator = bv.Void()
EventType._paper_folder_team_invite_validator = bv.Void()
EventType._password_change_validator = bv.Void()
EventType._password_reset_validator = bv.Void()
EventType._password_reset_all_validator = bv.Void()
EventType._emm_create_exceptions_report_validator = bv.Void()
EventType._emm_create_usage_report_validator = bv.Void()
EventType._smart_sync_create_admin_privilege_report_validator = bv.Void()
EventType._team_activity_create_report_validator = bv.Void()
EventType._collection_share_validator = bv.Void()
EventType._note_acl_invite_only_validator = bv.Void()
EventType._note_acl_link_validator = bv.Void()
EventType._note_acl_team_link_validator = bv.Void()
EventType._note_shared_validator = bv.Void()
EventType._note_share_receive_validator = bv.Void()
EventType._open_note_shared_validator = bv.Void()
EventType._sf_add_group_validator = bv.Void()
EventType._sf_allow_non_members_to_view_shared_links_validator = bv.Void()
EventType._sf_invite_group_validator = bv.Void()
EventType._sf_nest_validator = bv.Void()
EventType._sf_team_decline_validator = bv.Void()
EventType._sf_team_grant_access_validator = bv.Void()
EventType._sf_team_invite_validator = bv.Void()
EventType._sf_team_invite_change_role_validator = bv.Void()
EventType._sf_team_join_validator = bv.Void()
EventType._sf_team_join_from_oob_link_validator = bv.Void()
EventType._sf_team_uninvite_validator = bv.Void()
EventType._shared_content_add_invitees_validator = bv.Void()
EventType._shared_content_add_link_expiry_validator = bv.Void()
EventType._shared_content_add_link_password_validator = bv.Void()
EventType._shared_content_add_member_validator = bv.Void()
EventType._shared_content_change_downloads_policy_validator = bv.Void()
EventType._shared_content_change_invitee_role_validator = bv.Void()
EventType._shared_content_change_link_audience_validator = bv.Void()
EventType._shared_content_change_link_expiry_validator = bv.Void()
EventType._shared_content_change_link_password_validator = bv.Void()
EventType._shared_content_change_member_role_validator = bv.Void()
EventType._shared_content_change_viewer_info_policy_validator = bv.Void()
EventType._shared_content_claim_invitation_validator = bv.Void()
EventType._shared_content_copy_validator = bv.Void()
EventType._shared_content_download_validator = bv.Void()
EventType._shared_content_relinquish_membership_validator = bv.Void()
EventType._shared_content_remove_invitee_validator = bv.Void()
EventType._shared_content_remove_link_expiry_validator = bv.Void()
EventType._shared_content_remove_link_password_validator = bv.Void()
EventType._shared_content_remove_member_validator = bv.Void()
EventType._shared_content_request_access_validator = bv.Void()
EventType._shared_content_unshare_validator = bv.Void()
EventType._shared_content_view_validator = bv.Void()
EventType._shared_folder_change_confidentiality_validator = bv.Void()
EventType._shared_folder_change_link_policy_validator = bv.Void()
EventType._shared_folder_change_member_management_policy_validator = bv.Void()
EventType._shared_folder_change_member_policy_validator = bv.Void()
EventType._shared_folder_create_validator = bv.Void()
EventType._shared_folder_mount_validator = bv.Void()
EventType._shared_folder_transfer_ownership_validator = bv.Void()
EventType._shared_folder_unmount_validator = bv.Void()
EventType._shared_note_opened_validator = bv.Void()
EventType._shmodel_app_create_validator = bv.Void()
EventType._shmodel_create_validator = bv.Void()
EventType._shmodel_disable_validator = bv.Void()
EventType._shmodel_fb_share_validator = bv.Void()
EventType._shmodel_group_share_validator = bv.Void()
EventType._shmodel_remove_expiration_validator = bv.Void()
EventType._shmodel_set_expiration_validator = bv.Void()
EventType._shmodel_team_copy_validator = bv.Void()
EventType._shmodel_team_download_validator = bv.Void()
EventType._shmodel_team_share_validator = bv.Void()
EventType._shmodel_team_view_validator = bv.Void()
EventType._shmodel_visibility_password_validator = bv.Void()
EventType._shmodel_visibility_public_validator = bv.Void()
EventType._shmodel_visibility_team_only_validator = bv.Void()
EventType._sso_add_cert_validator = bv.Void()
EventType._sso_add_login_url_validator = bv.Void()
EventType._sso_add_logout_url_validator = bv.Void()
EventType._sso_change_cert_validator = bv.Void()
EventType._sso_change_login_url_validator = bv.Void()
EventType._sso_change_logout_url_validator = bv.Void()
EventType._sso_change_saml_identity_mode_validator = bv.Void()
EventType._sso_remove_cert_validator = bv.Void()
EventType._sso_remove_login_url_validator = bv.Void()
EventType._sso_remove_logout_url_validator = bv.Void()
EventType._team_folder_change_status_validator = bv.Void()
EventType._team_folder_create_validator = bv.Void()
EventType._team_folder_downgrade_validator = bv.Void()
EventType._team_folder_permanently_delete_validator = bv.Void()
EventType._team_folder_rename_validator = bv.Void()
EventType._account_capture_change_policy_validator = bv.Void()
EventType._allow_download_disabled_validator = bv.Void()
EventType._allow_download_enabled_validator = bv.Void()
EventType._data_placement_restriction_change_policy_validator = bv.Void()
EventType._data_placement_restriction_satisfy_policy_validator = bv.Void()
EventType._device_approvals_change_desktop_policy_validator = bv.Void()
EventType._device_approvals_change_mobile_policy_validator = bv.Void()
EventType._device_approvals_change_overage_action_validator = bv.Void()
EventType._device_approvals_change_unlink_action_validator = bv.Void()
EventType._emm_add_exception_validator = bv.Void()
EventType._emm_change_policy_validator = bv.Void()
EventType._emm_remove_exception_validator = bv.Void()
EventType._extended_version_history_change_policy_validator = bv.Void()
EventType._file_comments_change_policy_validator = bv.Void()
EventType._file_requests_change_policy_validator = bv.Void()
EventType._file_requests_emails_enabled_validator = bv.Void()
EventType._file_requests_emails_restricted_to_team_only_validator = bv.Void()
EventType._google_sso_change_policy_validator = bv.Void()
EventType._group_user_management_change_policy_validator = bv.Void()
EventType._member_requests_change_policy_validator = bv.Void()
EventType._member_space_limits_add_exception_validator = bv.Void()
EventType._member_space_limits_change_policy_validator = bv.Void()
EventType._member_space_limits_remove_exception_validator = bv.Void()
EventType._member_suggestions_change_policy_validator = bv.Void()
EventType._microsoft_office_addin_change_policy_validator = bv.Void()
EventType._network_control_change_policy_validator = bv.Void()
EventType._paper_change_deployment_policy_validator = bv.Void()
EventType._paper_change_member_link_policy_validator = bv.Void()
EventType._paper_change_member_policy_validator = bv.Void()
EventType._paper_change_policy_validator = bv.Void()
EventType._permanent_delete_change_policy_validator = bv.Void()
EventType._sharing_change_folder_join_policy_validator = bv.Void()
EventType._sharing_change_link_policy_validator = bv.Void()
EventType._sharing_change_member_policy_validator = bv.Void()
EventType._smart_sync_change_policy_validator = bv.Void()
EventType._smart_sync_not_opt_out_validator = bv.Void()
EventType._smart_sync_opt_out_validator = bv.Void()
EventType._sso_change_policy_validator = bv.Void()
EventType._tfa_change_policy_validator = bv.Void()
EventType._two_account_change_policy_validator = bv.Void()
EventType._web_sessions_change_fixed_length_policy_validator = bv.Void()
EventType._web_sessions_change_idle_length_policy_validator = bv.Void()
EventType._team_profile_add_logo_validator = bv.Void()
EventType._team_profile_change_default_language_validator = bv.Void()
EventType._team_profile_change_logo_validator = bv.Void()
EventType._team_profile_change_name_validator = bv.Void()
EventType._team_profile_remove_logo_validator = bv.Void()
EventType._tfa_add_backup_phone_validator = bv.Void()
EventType._tfa_add_security_key_validator = bv.Void()
EventType._tfa_change_backup_phone_validator = bv.Void()
EventType._tfa_change_status_validator = bv.Void()
EventType._tfa_remove_backup_phone_validator = bv.Void()
EventType._tfa_remove_security_key_validator = bv.Void()
EventType._tfa_reset_validator = bv.Void()
EventType._other_validator = bv.Void()
EventType._tagmap = {
    'member_change_membership_type': EventType._member_change_membership_type_validator,
    'member_permanently_delete_account_contents': EventType._member_permanently_delete_account_contents_validator,
    'member_space_limits_change_status': EventType._member_space_limits_change_status_validator,
    'member_transfer_account_contents': EventType._member_transfer_account_contents_validator,
    'paper_admin_export_start': EventType._paper_admin_export_start_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,
    '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,
    'sf_external_invite_warn': EventType._sf_external_invite_warn_validator,
    'team_merge_from': EventType._team_merge_from_validator,
    'team_merge_to': EventType._team_merge_to_validator,
    '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,
    '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_like_comment': EventType._file_like_comment_validator,
    'file_resolve_comment': EventType._file_resolve_comment_validator,
    'file_unlike_comment': EventType._file_unlike_comment_validator,
    'file_unresolve_comment': EventType._file_unresolve_comment_validator,
    'device_change_ip_desktop': EventType._device_change_ip_desktop_validator,
    'device_change_ip_mobile': EventType._device_change_ip_mobile_validator,
    'device_change_ip_web': EventType._device_change_ip_web_validator,
    'device_delete_on_unlink_fail': EventType._device_delete_on_unlink_fail_validator,
    'device_delete_on_unlink_success': EventType._device_delete_on_unlink_success_validator,
    'device_link_fail': EventType._device_link_fail_validator,
    'device_link_success': EventType._device_link_success_validator,
    'device_management_disabled': EventType._device_management_disabled_validator,
    'device_management_enabled': EventType._device_management_enabled_validator,
    'device_unlink': EventType._device_unlink_validator,
    'emm_refresh_auth_token': EventType._emm_refresh_auth_token_validator,
    'account_capture_change_availability': EventType._account_capture_change_availability_validator,
    'account_capture_migrate_account': EventType._account_capture_migrate_account_validator,
    'account_capture_relinquish_account': EventType._account_capture_relinquish_account_validator,
    'disabled_domain_invites': EventType._disabled_domain_invites_validator,
    'domain_invites_approve_request_to_join_team': EventType._domain_invites_approve_request_to_join_team_validator,
    'domain_invites_decline_request_to_join_team': EventType._domain_invites_decline_request_to_join_team_validator,
    'domain_invites_email_existing_users': EventType._domain_invites_email_existing_users_validator,
    'domain_invites_request_to_join_team': EventType._domain_invites_request_to_join_team_validator,
    'domain_invites_set_invite_new_user_pref_to_no': EventType._domain_invites_set_invite_new_user_pref_to_no_validator,
    'domain_invites_set_invite_new_user_pref_to_yes': EventType._domain_invites_set_invite_new_user_pref_to_yes_validator,
    'domain_verification_add_domain_fail': EventType._domain_verification_add_domain_fail_validator,
    'domain_verification_add_domain_success': EventType._domain_verification_add_domain_success_validator,
    'domain_verification_remove_domain': EventType._domain_verification_remove_domain_validator,
    'enabled_domain_invites': EventType._enabled_domain_invites_validator,
    'create_folder': EventType._create_folder_validator,
    'file_add': EventType._file_add_validator,
    'file_copy': EventType._file_copy_validator,
    'file_delete': EventType._file_delete_validator,
    'file_download': EventType._file_download_validator,
    'file_edit': EventType._file_edit_validator,
    'file_get_copy_reference': EventType._file_get_copy_reference_validator,
    'file_move': EventType._file_move_validator,
    'file_permanently_delete': EventType._file_permanently_delete_validator,
    'file_preview': EventType._file_preview_validator,
    'file_rename': EventType._file_rename_validator,
    'file_restore': EventType._file_restore_validator,
    'file_revert': EventType._file_revert_validator,
    'file_rollback_changes': EventType._file_rollback_changes_validator,
    'file_save_copy_reference': EventType._file_save_copy_reference_validator,
    'file_request_add_deadline': EventType._file_request_add_deadline_validator,
    'file_request_change_folder': EventType._file_request_change_folder_validator,
    'file_request_change_title': EventType._file_request_change_title_validator,
    'file_request_close': EventType._file_request_close_validator,
    'file_request_create': EventType._file_request_create_validator,
    'file_request_receive_file': EventType._file_request_receive_file_validator,
    'file_request_remove_deadline': EventType._file_request_remove_deadline_validator,
    'file_request_send': EventType._file_request_send_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_moved': EventType._group_moved_validator,
    'group_remove_external_id': EventType._group_remove_external_id_validator,
    'group_remove_member': EventType._group_remove_member_validator,
    'group_rename': EventType._group_rename_validator,
    'emm_login_success': EventType._emm_login_success_validator,
    'logout': EventType._logout_validator,
    'password_login_fail': EventType._password_login_fail_validator,
    'password_login_success': EventType._password_login_success_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_login_fail': EventType._sso_login_fail_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_name': EventType._member_change_name_validator,
    'member_change_status': EventType._member_change_status_validator,
    'member_suggest': EventType._member_suggest_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_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_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,
    '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,
    'smart_sync_create_admin_privilege_report': EventType._smart_sync_create_admin_privilege_report_validator,
    'team_activity_create_report': EventType._team_activity_create_report_validator,
    'collection_share': EventType._collection_share_validator,
    'note_acl_invite_only': EventType._note_acl_invite_only_validator,
    'note_acl_link': EventType._note_acl_link_validator,
    'note_acl_team_link': EventType._note_acl_team_link_validator,
    'note_shared': EventType._note_shared_validator,
    'note_share_receive': EventType._note_share_receive_validator,
    'open_note_shared': EventType._open_note_shared_validator,
    'sf_add_group': EventType._sf_add_group_validator,
    'sf_allow_non_members_to_view_shared_links': EventType._sf_allow_non_members_to_view_shared_links_validator,
    'sf_invite_group': EventType._sf_invite_group_validator,
    'sf_nest': EventType._sf_nest_validator,
    'sf_team_decline': EventType._sf_team_decline_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_invitee': EventType._shared_content_remove_invitee_validator,
    'shared_content_remove_link_expiry': EventType._shared_content_remove_link_expiry_validator,
    'shared_content_remove_link_password': EventType._shared_content_remove_link_password_validator,
    'shared_content_remove_member': EventType._shared_content_remove_member_validator,
    'shared_content_request_access': EventType._shared_content_request_access_validator,
    'shared_content_unshare': EventType._shared_content_unshare_validator,
    'shared_content_view': EventType._shared_content_view_validator,
    'shared_folder_change_confidentiality': EventType._shared_folder_change_confidentiality_validator,
    'shared_folder_change_link_policy': EventType._shared_folder_change_link_policy_validator,
    'shared_folder_change_member_management_policy': EventType._shared_folder_change_member_management_policy_validator,
    'shared_folder_change_member_policy': EventType._shared_folder_change_member_policy_validator,
    'shared_folder_create': EventType._shared_folder_create_validator,
    'shared_folder_mount': EventType._shared_folder_mount_validator,
    'shared_folder_transfer_ownership': EventType._shared_folder_transfer_ownership_validator,
    'shared_folder_unmount': EventType._shared_folder_unmount_validator,
    'shared_note_opened': EventType._shared_note_opened_validator,
    'shmodel_app_create': EventType._shmodel_app_create_validator,
    'shmodel_create': EventType._shmodel_create_validator,
    'shmodel_disable': EventType._shmodel_disable_validator,
    'shmodel_fb_share': EventType._shmodel_fb_share_validator,
    'shmodel_group_share': EventType._shmodel_group_share_validator,
    'shmodel_remove_expiration': EventType._shmodel_remove_expiration_validator,
    'shmodel_set_expiration': EventType._shmodel_set_expiration_validator,
    'shmodel_team_copy': EventType._shmodel_team_copy_validator,
    'shmodel_team_download': EventType._shmodel_team_download_validator,
    'shmodel_team_share': EventType._shmodel_team_share_validator,
    'shmodel_team_view': EventType._shmodel_team_view_validator,
    'shmodel_visibility_password': EventType._shmodel_visibility_password_validator,
    'shmodel_visibility_public': EventType._shmodel_visibility_public_validator,
    'shmodel_visibility_team_only': EventType._shmodel_visibility_team_only_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,
    '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,
    'data_placement_restriction_change_policy': EventType._data_placement_restriction_change_policy_validator,
    'data_placement_restriction_satisfy_policy': EventType._data_placement_restriction_satisfy_policy_validator,
    'device_approvals_change_desktop_policy': EventType._device_approvals_change_desktop_policy_validator,
    'device_approvals_change_mobile_policy': EventType._device_approvals_change_mobile_policy_validator,
    'device_approvals_change_overage_action': EventType._device_approvals_change_overage_action_validator,
    'device_approvals_change_unlink_action': EventType._device_approvals_change_unlink_action_validator,
    'emm_add_exception': EventType._emm_add_exception_validator,
    'emm_change_policy': EventType._emm_change_policy_validator,
    'emm_remove_exception': EventType._emm_remove_exception_validator,
    'extended_version_history_change_policy': EventType._extended_version_history_change_policy_validator,
    'file_comments_change_policy': EventType._file_comments_change_policy_validator,
    'file_requests_change_policy': EventType._file_requests_change_policy_validator,
    'file_requests_emails_enabled': EventType._file_requests_emails_enabled_validator,
    'file_requests_emails_restricted_to_team_only': EventType._file_requests_emails_restricted_to_team_only_validator,
    'google_sso_change_policy': EventType._google_sso_change_policy_validator,
    'group_user_management_change_policy': EventType._group_user_management_change_policy_validator,
    'member_requests_change_policy': EventType._member_requests_change_policy_validator,
    'member_space_limits_add_exception': EventType._member_space_limits_add_exception_validator,
    'member_space_limits_change_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,
    'permanent_delete_change_policy': EventType._permanent_delete_change_policy_validator,
    'sharing_change_folder_join_policy': EventType._sharing_change_folder_join_policy_validator,
    'sharing_change_link_policy': EventType._sharing_change_link_policy_validator,
    'sharing_change_member_policy': EventType._sharing_change_member_policy_validator,
    '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,
    'tfa_change_policy': EventType._tfa_change_policy_validator,
    'two_account_change_policy': EventType._two_account_change_policy_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_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,
    'other': EventType._other_validator,
}

EventType.member_change_membership_type = EventType('member_change_membership_type')
EventType.member_permanently_delete_account_contents = EventType('member_permanently_delete_account_contents')
EventType.member_space_limits_change_status = EventType('member_space_limits_change_status')
EventType.member_transfer_account_contents = EventType('member_transfer_account_contents')
EventType.paper_admin_export_start = EventType('paper_admin_export_start')
EventType.paper_enabled_users_group_addition = EventType('paper_enabled_users_group_addition')
EventType.paper_enabled_users_group_removal = EventType('paper_enabled_users_group_removal')
EventType.paper_external_view_allow = EventType('paper_external_view_allow')
EventType.paper_external_view_default_team = EventType('paper_external_view_default_team')
EventType.paper_external_view_forbid = EventType('paper_external_view_forbid')
EventType.sf_external_invite_warn = EventType('sf_external_invite_warn')
EventType.team_merge_from = EventType('team_merge_from')
EventType.team_merge_to = EventType('team_merge_to')
EventType.app_link_team = EventType('app_link_team')
EventType.app_link_user = EventType('app_link_user')
EventType.app_unlink_team = EventType('app_unlink_team')
EventType.app_unlink_user = EventType('app_unlink_user')
EventType.file_add_comment = EventType('file_add_comment')
EventType.file_change_comment_subscription = EventType('file_change_comment_subscription')
EventType.file_delete_comment = EventType('file_delete_comment')
EventType.file_like_comment = EventType('file_like_comment')
EventType.file_resolve_comment = EventType('file_resolve_comment')
EventType.file_unlike_comment = EventType('file_unlike_comment')
EventType.file_unresolve_comment = EventType('file_unresolve_comment')
EventType.device_change_ip_desktop = EventType('device_change_ip_desktop')
EventType.device_change_ip_mobile = EventType('device_change_ip_mobile')
EventType.device_change_ip_web = EventType('device_change_ip_web')
EventType.device_delete_on_unlink_fail = EventType('device_delete_on_unlink_fail')
EventType.device_delete_on_unlink_success = EventType('device_delete_on_unlink_success')
EventType.device_link_fail = EventType('device_link_fail')
EventType.device_link_success = EventType('device_link_success')
EventType.device_management_disabled = EventType('device_management_disabled')
EventType.device_management_enabled = EventType('device_management_enabled')
EventType.device_unlink = EventType('device_unlink')
EventType.emm_refresh_auth_token = EventType('emm_refresh_auth_token')
EventType.account_capture_change_availability = EventType('account_capture_change_availability')
EventType.account_capture_migrate_account = EventType('account_capture_migrate_account')
EventType.account_capture_relinquish_account = EventType('account_capture_relinquish_account')
EventType.disabled_domain_invites = EventType('disabled_domain_invites')
EventType.domain_invites_approve_request_to_join_team = EventType('domain_invites_approve_request_to_join_team')
EventType.domain_invites_decline_request_to_join_team = EventType('domain_invites_decline_request_to_join_team')
EventType.domain_invites_email_existing_users = EventType('domain_invites_email_existing_users')
EventType.domain_invites_request_to_join_team = EventType('domain_invites_request_to_join_team')
EventType.domain_invites_set_invite_new_user_pref_to_no = EventType('domain_invites_set_invite_new_user_pref_to_no')
EventType.domain_invites_set_invite_new_user_pref_to_yes = EventType('domain_invites_set_invite_new_user_pref_to_yes')
EventType.domain_verification_add_domain_fail = EventType('domain_verification_add_domain_fail')
EventType.domain_verification_add_domain_success = EventType('domain_verification_add_domain_success')
EventType.domain_verification_remove_domain = EventType('domain_verification_remove_domain')
EventType.enabled_domain_invites = EventType('enabled_domain_invites')
EventType.create_folder = EventType('create_folder')
EventType.file_add = EventType('file_add')
EventType.file_copy = EventType('file_copy')
EventType.file_delete = EventType('file_delete')
EventType.file_download = EventType('file_download')
EventType.file_edit = EventType('file_edit')
EventType.file_get_copy_reference = EventType('file_get_copy_reference')
EventType.file_move = EventType('file_move')
EventType.file_permanently_delete = EventType('file_permanently_delete')
EventType.file_preview = EventType('file_preview')
EventType.file_rename = EventType('file_rename')
EventType.file_restore = EventType('file_restore')
EventType.file_revert = EventType('file_revert')
EventType.file_rollback_changes = EventType('file_rollback_changes')
EventType.file_save_copy_reference = EventType('file_save_copy_reference')
EventType.file_request_add_deadline = EventType('file_request_add_deadline')
EventType.file_request_change_folder = EventType('file_request_change_folder')
EventType.file_request_change_title = EventType('file_request_change_title')
EventType.file_request_close = EventType('file_request_close')
EventType.file_request_create = EventType('file_request_create')
EventType.file_request_receive_file = EventType('file_request_receive_file')
EventType.file_request_remove_deadline = EventType('file_request_remove_deadline')
EventType.file_request_send = EventType('file_request_send')
EventType.group_add_external_id = EventType('group_add_external_id')
EventType.group_add_member = EventType('group_add_member')
EventType.group_change_external_id = EventType('group_change_external_id')
EventType.group_change_management_type = EventType('group_change_management_type')
EventType.group_change_member_role = EventType('group_change_member_role')
EventType.group_create = EventType('group_create')
EventType.group_delete = EventType('group_delete')
EventType.group_moved = EventType('group_moved')
EventType.group_remove_external_id = EventType('group_remove_external_id')
EventType.group_remove_member = EventType('group_remove_member')
EventType.group_rename = EventType('group_rename')
EventType.emm_login_success = EventType('emm_login_success')
EventType.logout = EventType('logout')
EventType.password_login_fail = EventType('password_login_fail')
EventType.password_login_success = EventType('password_login_success')
EventType.reseller_support_session_end = EventType('reseller_support_session_end')
EventType.reseller_support_session_start = EventType('reseller_support_session_start')
EventType.sign_in_as_session_end = EventType('sign_in_as_session_end')
EventType.sign_in_as_session_start = EventType('sign_in_as_session_start')
EventType.sso_login_fail = EventType('sso_login_fail')
EventType.member_add_name = EventType('member_add_name')
EventType.member_change_admin_role = EventType('member_change_admin_role')
EventType.member_change_email = EventType('member_change_email')
EventType.member_change_name = EventType('member_change_name')
EventType.member_change_status = EventType('member_change_status')
EventType.member_suggest = EventType('member_suggest')
EventType.paper_content_add_member = EventType('paper_content_add_member')
EventType.paper_content_add_to_folder = EventType('paper_content_add_to_folder')
EventType.paper_content_archive = EventType('paper_content_archive')
EventType.paper_content_create = EventType('paper_content_create')
EventType.paper_content_permanently_delete = EventType('paper_content_permanently_delete')
EventType.paper_content_remove_from_folder = EventType('paper_content_remove_from_folder')
EventType.paper_content_remove_member = EventType('paper_content_remove_member')
EventType.paper_content_rename = EventType('paper_content_rename')
EventType.paper_content_restore = EventType('paper_content_restore')
EventType.paper_doc_add_comment = EventType('paper_doc_add_comment')
EventType.paper_doc_change_member_role = EventType('paper_doc_change_member_role')
EventType.paper_doc_change_sharing_policy = EventType('paper_doc_change_sharing_policy')
EventType.paper_doc_change_subscription = EventType('paper_doc_change_subscription')
EventType.paper_doc_deleted = EventType('paper_doc_deleted')
EventType.paper_doc_delete_comment = EventType('paper_doc_delete_comment')
EventType.paper_doc_download = EventType('paper_doc_download')
EventType.paper_doc_edit = EventType('paper_doc_edit')
EventType.paper_doc_edit_comment = EventType('paper_doc_edit_comment')
EventType.paper_doc_followed = EventType('paper_doc_followed')
EventType.paper_doc_mention = EventType('paper_doc_mention')
EventType.paper_doc_request_access = EventType('paper_doc_request_access')
EventType.paper_doc_resolve_comment = EventType('paper_doc_resolve_comment')
EventType.paper_doc_revert = EventType('paper_doc_revert')
EventType.paper_doc_slack_share = EventType('paper_doc_slack_share')
EventType.paper_doc_team_invite = EventType('paper_doc_team_invite')
EventType.paper_doc_trashed = EventType('paper_doc_trashed')
EventType.paper_doc_unresolve_comment = EventType('paper_doc_unresolve_comment')
EventType.paper_doc_untrashed = EventType('paper_doc_untrashed')
EventType.paper_doc_view = EventType('paper_doc_view')
EventType.paper_folder_change_subscription = EventType('paper_folder_change_subscription')
EventType.paper_folder_deleted = EventType('paper_folder_deleted')
EventType.paper_folder_followed = EventType('paper_folder_followed')
EventType.paper_folder_team_invite = EventType('paper_folder_team_invite')
EventType.password_change = EventType('password_change')
EventType.password_reset = EventType('password_reset')
EventType.password_reset_all = EventType('password_reset_all')
EventType.emm_create_exceptions_report = EventType('emm_create_exceptions_report')
EventType.emm_create_usage_report = EventType('emm_create_usage_report')
EventType.smart_sync_create_admin_privilege_report = EventType('smart_sync_create_admin_privilege_report')
EventType.team_activity_create_report = EventType('team_activity_create_report')
EventType.collection_share = EventType('collection_share')
EventType.note_acl_invite_only = EventType('note_acl_invite_only')
EventType.note_acl_link = EventType('note_acl_link')
EventType.note_acl_team_link = EventType('note_acl_team_link')
EventType.note_shared = EventType('note_shared')
EventType.note_share_receive = EventType('note_share_receive')
EventType.open_note_shared = EventType('open_note_shared')
EventType.sf_add_group = EventType('sf_add_group')
EventType.sf_allow_non_members_to_view_shared_links = EventType('sf_allow_non_members_to_view_shared_links')
EventType.sf_invite_group = EventType('sf_invite_group')
EventType.sf_nest = EventType('sf_nest')
EventType.sf_team_decline = EventType('sf_team_decline')
EventType.sf_team_grant_access = EventType('sf_team_grant_access')
EventType.sf_team_invite = EventType('sf_team_invite')
EventType.sf_team_invite_change_role = EventType('sf_team_invite_change_role')
EventType.sf_team_join = EventType('sf_team_join')
EventType.sf_team_join_from_oob_link = EventType('sf_team_join_from_oob_link')
EventType.sf_team_uninvite = EventType('sf_team_uninvite')
EventType.shared_content_add_invitees = EventType('shared_content_add_invitees')
EventType.shared_content_add_link_expiry = EventType('shared_content_add_link_expiry')
EventType.shared_content_add_link_password = EventType('shared_content_add_link_password')
EventType.shared_content_add_member = EventType('shared_content_add_member')
EventType.shared_content_change_downloads_policy = EventType('shared_content_change_downloads_policy')
EventType.shared_content_change_invitee_role = EventType('shared_content_change_invitee_role')
EventType.shared_content_change_link_audience = EventType('shared_content_change_link_audience')
EventType.shared_content_change_link_expiry = EventType('shared_content_change_link_expiry')
EventType.shared_content_change_link_password = EventType('shared_content_change_link_password')
EventType.shared_content_change_member_role = EventType('shared_content_change_member_role')
EventType.shared_content_change_viewer_info_policy = EventType('shared_content_change_viewer_info_policy')
EventType.shared_content_claim_invitation = EventType('shared_content_claim_invitation')
EventType.shared_content_copy = EventType('shared_content_copy')
EventType.shared_content_download = EventType('shared_content_download')
EventType.shared_content_relinquish_membership = EventType('shared_content_relinquish_membership')
EventType.shared_content_remove_invitee = EventType('shared_content_remove_invitee')
EventType.shared_content_remove_link_expiry = EventType('shared_content_remove_link_expiry')
EventType.shared_content_remove_link_password = EventType('shared_content_remove_link_password')
EventType.shared_content_remove_member = EventType('shared_content_remove_member')
EventType.shared_content_request_access = EventType('shared_content_request_access')
EventType.shared_content_unshare = EventType('shared_content_unshare')
EventType.shared_content_view = EventType('shared_content_view')
EventType.shared_folder_change_confidentiality = EventType('shared_folder_change_confidentiality')
EventType.shared_folder_change_link_policy = EventType('shared_folder_change_link_policy')
EventType.shared_folder_change_member_management_policy = EventType('shared_folder_change_member_management_policy')
EventType.shared_folder_change_member_policy = EventType('shared_folder_change_member_policy')
EventType.shared_folder_create = EventType('shared_folder_create')
EventType.shared_folder_mount = EventType('shared_folder_mount')
EventType.shared_folder_transfer_ownership = EventType('shared_folder_transfer_ownership')
EventType.shared_folder_unmount = EventType('shared_folder_unmount')
EventType.shared_note_opened = EventType('shared_note_opened')
EventType.shmodel_app_create = EventType('shmodel_app_create')
EventType.shmodel_create = EventType('shmodel_create')
EventType.shmodel_disable = EventType('shmodel_disable')
EventType.shmodel_fb_share = EventType('shmodel_fb_share')
EventType.shmodel_group_share = EventType('shmodel_group_share')
EventType.shmodel_remove_expiration = EventType('shmodel_remove_expiration')
EventType.shmodel_set_expiration = EventType('shmodel_set_expiration')
EventType.shmodel_team_copy = EventType('shmodel_team_copy')
EventType.shmodel_team_download = EventType('shmodel_team_download')
EventType.shmodel_team_share = EventType('shmodel_team_share')
EventType.shmodel_team_view = EventType('shmodel_team_view')
EventType.shmodel_visibility_password = EventType('shmodel_visibility_password')
EventType.shmodel_visibility_public = EventType('shmodel_visibility_public')
EventType.shmodel_visibility_team_only = EventType('shmodel_visibility_team_only')
EventType.sso_add_cert = EventType('sso_add_cert')
EventType.sso_add_login_url = EventType('sso_add_login_url')
EventType.sso_add_logout_url = EventType('sso_add_logout_url')
EventType.sso_change_cert = EventType('sso_change_cert')
EventType.sso_change_login_url = EventType('sso_change_login_url')
EventType.sso_change_logout_url = EventType('sso_change_logout_url')
EventType.sso_change_saml_identity_mode = EventType('sso_change_saml_identity_mode')
EventType.sso_remove_cert = EventType('sso_remove_cert')
EventType.sso_remove_login_url = EventType('sso_remove_login_url')
EventType.sso_remove_logout_url = EventType('sso_remove_logout_url')
EventType.team_folder_change_status = EventType('team_folder_change_status')
EventType.team_folder_create = EventType('team_folder_create')
EventType.team_folder_downgrade = EventType('team_folder_downgrade')
EventType.team_folder_permanently_delete = EventType('team_folder_permanently_delete')
EventType.team_folder_rename = EventType('team_folder_rename')
EventType.account_capture_change_policy = EventType('account_capture_change_policy')
EventType.allow_download_disabled = EventType('allow_download_disabled')
EventType.allow_download_enabled = EventType('allow_download_enabled')
EventType.data_placement_restriction_change_policy = EventType('data_placement_restriction_change_policy')
EventType.data_placement_restriction_satisfy_policy = EventType('data_placement_restriction_satisfy_policy')
EventType.device_approvals_change_desktop_policy = EventType('device_approvals_change_desktop_policy')
EventType.device_approvals_change_mobile_policy = EventType('device_approvals_change_mobile_policy')
EventType.device_approvals_change_overage_action = EventType('device_approvals_change_overage_action')
EventType.device_approvals_change_unlink_action = EventType('device_approvals_change_unlink_action')
EventType.emm_add_exception = EventType('emm_add_exception')
EventType.emm_change_policy = EventType('emm_change_policy')
EventType.emm_remove_exception = EventType('emm_remove_exception')
EventType.extended_version_history_change_policy = EventType('extended_version_history_change_policy')
EventType.file_comments_change_policy = EventType('file_comments_change_policy')
EventType.file_requests_change_policy = EventType('file_requests_change_policy')
EventType.file_requests_emails_enabled = EventType('file_requests_emails_enabled')
EventType.file_requests_emails_restricted_to_team_only = EventType('file_requests_emails_restricted_to_team_only')
EventType.google_sso_change_policy = EventType('google_sso_change_policy')
EventType.group_user_management_change_policy = EventType('group_user_management_change_policy')
EventType.member_requests_change_policy = EventType('member_requests_change_policy')
EventType.member_space_limits_add_exception = EventType('member_space_limits_add_exception')
EventType.member_space_limits_change_policy = EventType('member_space_limits_change_policy')
EventType.member_space_limits_remove_exception = EventType('member_space_limits_remove_exception')
EventType.member_suggestions_change_policy = EventType('member_suggestions_change_policy')
EventType.microsoft_office_addin_change_policy = EventType('microsoft_office_addin_change_policy')
EventType.network_control_change_policy = EventType('network_control_change_policy')
EventType.paper_change_deployment_policy = EventType('paper_change_deployment_policy')
EventType.paper_change_member_link_policy = EventType('paper_change_member_link_policy')
EventType.paper_change_member_policy = EventType('paper_change_member_policy')
EventType.paper_change_policy = EventType('paper_change_policy')
EventType.permanent_delete_change_policy = EventType('permanent_delete_change_policy')
EventType.sharing_change_folder_join_policy = EventType('sharing_change_folder_join_policy')
EventType.sharing_change_link_policy = EventType('sharing_change_link_policy')
EventType.sharing_change_member_policy = EventType('sharing_change_member_policy')
EventType.smart_sync_change_policy = EventType('smart_sync_change_policy')
EventType.smart_sync_not_opt_out = EventType('smart_sync_not_opt_out')
EventType.smart_sync_opt_out = EventType('smart_sync_opt_out')
EventType.sso_change_policy = EventType('sso_change_policy')
EventType.tfa_change_policy = EventType('tfa_change_policy')
EventType.two_account_change_policy = EventType('two_account_change_policy')
EventType.web_sessions_change_fixed_length_policy = EventType('web_sessions_change_fixed_length_policy')
EventType.web_sessions_change_idle_length_policy = EventType('web_sessions_change_idle_length_policy')
EventType.team_profile_add_logo = EventType('team_profile_add_logo')
EventType.team_profile_change_default_language = EventType('team_profile_change_default_language')
EventType.team_profile_change_logo = EventType('team_profile_change_logo')
EventType.team_profile_change_name = EventType('team_profile_change_name')
EventType.team_profile_remove_logo = EventType('team_profile_remove_logo')
EventType.tfa_add_backup_phone = EventType('tfa_add_backup_phone')
EventType.tfa_add_security_key = EventType('tfa_add_security_key')
EventType.tfa_change_backup_phone = EventType('tfa_change_backup_phone')
EventType.tfa_change_status = EventType('tfa_change_status')
EventType.tfa_remove_backup_phone = EventType('tfa_remove_backup_phone')
EventType.tfa_remove_security_key = EventType('tfa_remove_security_key')
EventType.tfa_reset = EventType('tfa_reset')
EventType.other = EventType('other')

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),
]

ExtendedVersionHistoryPolicy._explicitly_limited_validator = bv.Void()
ExtendedVersionHistoryPolicy._explicitly_unlimited_validator = bv.Void()
ExtendedVersionHistoryPolicy._implicitly_limited_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,
    'other': ExtendedVersionHistoryPolicy._other_validator,
}

ExtendedVersionHistoryPolicy.explicitly_limited = ExtendedVersionHistoryPolicy('explicitly_limited')
ExtendedVersionHistoryPolicy.explicitly_unlimited = ExtendedVersionHistoryPolicy('explicitly_unlimited')
ExtendedVersionHistoryPolicy.implicitly_limited = ExtendedVersionHistoryPolicy('implicitly_limited')
ExtendedVersionHistoryPolicy.other = ExtendedVersionHistoryPolicy('other')

FailureDetailsLogInfo._user_friendly_message_validator = bv.Nullable(bv.String())
FailureDetailsLogInfo._technical_error_message_validator = bv.Nullable(bv.String())
FailureDetailsLogInfo._all_field_names_ = set([
    'user_friendly_message',
    'technical_error_message',
])
FailureDetailsLogInfo._all_fields_ = [
    ('user_friendly_message', FailureDetailsLogInfo._user_friendly_message_validator),
    ('technical_error_message', FailureDetailsLogInfo._technical_error_message_validator),
]

FileAddCommentDetails._target_asset_index_validator = bv.UInt64()
FileAddCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileAddCommentDetails._all_field_names_ = set([
    'target_asset_index',
    'comment_text',
])
FileAddCommentDetails._all_fields_ = [
    ('target_asset_index', FileAddCommentDetails._target_asset_index_validator),
    ('comment_text', FileAddCommentDetails._comment_text_validator),
]

FileAddDetails._all_field_names_ = set([])
FileAddDetails._all_fields_ = []

FileChangeCommentSubscriptionDetails._target_asset_index_validator = bv.UInt64()
FileChangeCommentSubscriptionDetails._new_value_validator = FileCommentNotificationPolicy_validator
FileChangeCommentSubscriptionDetails._previous_value_validator = bv.Nullable(FileCommentNotificationPolicy_validator)
FileChangeCommentSubscriptionDetails._all_field_names_ = set([
    'target_asset_index',
    'new_value',
    'previous_value',
])
FileChangeCommentSubscriptionDetails._all_fields_ = [
    ('target_asset_index', FileChangeCommentSubscriptionDetails._target_asset_index_validator),
    ('new_value', FileChangeCommentSubscriptionDetails._new_value_validator),
    ('previous_value', FileChangeCommentSubscriptionDetails._previous_value_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),
]

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)]

FileDeleteCommentDetails._target_asset_index_validator = bv.UInt64()
FileDeleteCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileDeleteCommentDetails._all_field_names_ = set([
    'target_asset_index',
    'comment_text',
])
FileDeleteCommentDetails._all_fields_ = [
    ('target_asset_index', FileDeleteCommentDetails._target_asset_index_validator),
    ('comment_text', FileDeleteCommentDetails._comment_text_validator),
]

FileDeleteDetails._all_field_names_ = set([])
FileDeleteDetails._all_fields_ = []

FileDownloadDetails._all_field_names_ = set([])
FileDownloadDetails._all_fields_ = []

FileEditDetails._all_field_names_ = set([])
FileEditDetails._all_fields_ = []

FileGetCopyReferenceDetails._all_field_names_ = set([])
FileGetCopyReferenceDetails._all_fields_ = []

FileLikeCommentDetails._target_asset_index_validator = bv.UInt64()
FileLikeCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileLikeCommentDetails._all_field_names_ = set([
    'target_asset_index',
    'comment_text',
])
FileLikeCommentDetails._all_fields_ = [
    ('target_asset_index', FileLikeCommentDetails._target_asset_index_validator),
    ('comment_text', FileLikeCommentDetails._comment_text_validator),
]

FileOrFolderLogInfo._path_validator = PathLogInfo_validator
FileOrFolderLogInfo._display_name_validator = bv.Nullable(bv.String())
FileOrFolderLogInfo._file_id_validator = bv.Nullable(bv.String())
FileOrFolderLogInfo._all_field_names_ = set([
    'path',
    'display_name',
    'file_id',
])
FileOrFolderLogInfo._all_fields_ = [
    ('path', FileOrFolderLogInfo._path_validator),
    ('display_name', FileOrFolderLogInfo._display_name_validator),
    ('file_id', FileOrFolderLogInfo._file_id_validator),
]

FileLogInfo._all_field_names_ = FileOrFolderLogInfo._all_field_names_.union(set([]))
FileLogInfo._all_fields_ = FileOrFolderLogInfo._all_fields_ + []

FileMoveDetails._relocate_action_details_validator = bv.List(RelocateAssetReferencesLogInfo_validator)
FileMoveDetails._all_field_names_ = set(['relocate_action_details'])
FileMoveDetails._all_fields_ = [('relocate_action_details', FileMoveDetails._relocate_action_details_validator)]

FilePermanentlyDeleteDetails._all_field_names_ = set([])
FilePermanentlyDeleteDetails._all_fields_ = []

FilePreviewDetails._all_field_names_ = set([])
FilePreviewDetails._all_fields_ = []

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)]

FileRequestAddDeadlineDetails._request_title_validator = bv.Nullable(bv.String())
FileRequestAddDeadlineDetails._all_field_names_ = set(['request_title'])
FileRequestAddDeadlineDetails._all_fields_ = [('request_title', FileRequestAddDeadlineDetails._request_title_validator)]

FileRequestChangeFolderDetails._request_title_validator = bv.Nullable(bv.String())
FileRequestChangeFolderDetails._all_field_names_ = set(['request_title'])
FileRequestChangeFolderDetails._all_fields_ = [('request_title', FileRequestChangeFolderDetails._request_title_validator)]

FileRequestChangeTitleDetails._request_title_validator = bv.Nullable(bv.String())
FileRequestChangeTitleDetails._all_field_names_ = set(['request_title'])
FileRequestChangeTitleDetails._all_fields_ = [('request_title', FileRequestChangeTitleDetails._request_title_validator)]

FileRequestCloseDetails._request_title_validator = bv.Nullable(bv.String())
FileRequestCloseDetails._all_field_names_ = set(['request_title'])
FileRequestCloseDetails._all_fields_ = [('request_title', FileRequestCloseDetails._request_title_validator)]

FileRequestCreateDetails._request_title_validator = bv.Nullable(bv.String())
FileRequestCreateDetails._all_field_names_ = set(['request_title'])
FileRequestCreateDetails._all_fields_ = [('request_title', FileRequestCreateDetails._request_title_validator)]

FileRequestReceiveFileDetails._request_title_validator = bv.Nullable(bv.String())
FileRequestReceiveFileDetails._submitted_file_names_validator = bv.List(bv.String())
FileRequestReceiveFileDetails._all_field_names_ = set([
    'request_title',
    'submitted_file_names',
])
FileRequestReceiveFileDetails._all_fields_ = [
    ('request_title', FileRequestReceiveFileDetails._request_title_validator),
    ('submitted_file_names', FileRequestReceiveFileDetails._submitted_file_names_validator),
]

FileRequestRemoveDeadlineDetails._request_title_validator = bv.Nullable(bv.String())
FileRequestRemoveDeadlineDetails._all_field_names_ = set(['request_title'])
FileRequestRemoveDeadlineDetails._all_fields_ = [('request_title', FileRequestRemoveDeadlineDetails._request_title_validator)]

FileRequestSendDetails._request_title_validator = bv.Nullable(bv.String())
FileRequestSendDetails._all_field_names_ = set(['request_title'])
FileRequestSendDetails._all_fields_ = [('request_title', FileRequestSendDetails._request_title_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),
]

FileRequestsEmailsEnabledDetails._all_field_names_ = set([])
FileRequestsEmailsEnabledDetails._all_fields_ = []

FileRequestsEmailsRestrictedToTeamOnlyDetails._all_field_names_ = set([])
FileRequestsEmailsRestrictedToTeamOnlyDetails._all_fields_ = []

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._target_asset_index_validator = bv.UInt64()
FileResolveCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileResolveCommentDetails._all_field_names_ = set([
    'target_asset_index',
    'comment_text',
])
FileResolveCommentDetails._all_fields_ = [
    ('target_asset_index', FileResolveCommentDetails._target_asset_index_validator),
    ('comment_text', FileResolveCommentDetails._comment_text_validator),
]

FileRestoreDetails._all_field_names_ = set([])
FileRestoreDetails._all_fields_ = []

FileRevertDetails._all_field_names_ = set([])
FileRevertDetails._all_fields_ = []

FileRollbackChangesDetails._all_field_names_ = set([])
FileRollbackChangesDetails._all_fields_ = []

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)]

FileUnlikeCommentDetails._target_asset_index_validator = bv.UInt64()
FileUnlikeCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileUnlikeCommentDetails._all_field_names_ = set([
    'target_asset_index',
    'comment_text',
])
FileUnlikeCommentDetails._all_fields_ = [
    ('target_asset_index', FileUnlikeCommentDetails._target_asset_index_validator),
    ('comment_text', FileUnlikeCommentDetails._comment_text_validator),
]

FileUnresolveCommentDetails._target_asset_index_validator = bv.UInt64()
FileUnresolveCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileUnresolveCommentDetails._all_field_names_ = set([
    'target_asset_index',
    'comment_text',
])
FileUnresolveCommentDetails._all_fields_ = [
    ('target_asset_index', FileUnresolveCommentDetails._target_asset_index_validator),
    ('comment_text', FileUnresolveCommentDetails._comment_text_validator),
]

FolderLogInfo._all_field_names_ = FileOrFolderLogInfo._all_field_names_.union(set([]))
FolderLogInfo._all_fields_ = FileOrFolderLogInfo._all_fields_ + []

GeoLocationLogInfo._city_validator = bv.Nullable(bv.String())
GeoLocationLogInfo._region_validator = bv.Nullable(bv.String())
GeoLocationLogInfo._country_validator = bv.Nullable(bv.String())
GeoLocationLogInfo._ip_address_validator = IpAddress_validator
GeoLocationLogInfo._all_field_names_ = set([
    'city',
    'region',
    'country',
    'ip_address',
])
GeoLocationLogInfo._all_fields_ = [
    ('city', GeoLocationLogInfo._city_validator),
    ('region', GeoLocationLogInfo._region_validator),
    ('country', GeoLocationLogInfo._country_validator),
    ('ip_address', GeoLocationLogInfo._ip_address_validator),
]

GetTeamEventsArg._limit_validator = bv.UInt32(min_value=1, max_value=1000)
GetTeamEventsArg._account_id_validator = bv.Nullable(users_common.AccountId_validator)
GetTeamEventsArg._time_validator = bv.Nullable(team_common.TimeRange_validator)
GetTeamEventsArg._category_validator = bv.Nullable(EventCategory_validator)
GetTeamEventsArg._all_field_names_ = set([
    'limit',
    'account_id',
    'time',
    'category',
])
GetTeamEventsArg._all_fields_ = [
    ('limit', GetTeamEventsArg._limit_validator),
    ('account_id', GetTeamEventsArg._account_id_validator),
    ('time', GetTeamEventsArg._time_validator),
    ('category', GetTeamEventsArg._category_validator),
]

GetTeamEventsContinueArg._cursor_validator = bv.String()
GetTeamEventsContinueArg._all_field_names_ = set(['cursor'])
GetTeamEventsContinueArg._all_fields_ = [('cursor', GetTeamEventsContinueArg._cursor_validator)]

GetTeamEventsContinueError._bad_cursor_validator = bv.Void()
GetTeamEventsContinueError._other_validator = bv.Void()
GetTeamEventsContinueError._tagmap = {
    'bad_cursor': GetTeamEventsContinueError._bad_cursor_validator,
    'other': GetTeamEventsContinueError._other_validator,
}

GetTeamEventsContinueError.bad_cursor = GetTeamEventsContinueError('bad_cursor')
GetTeamEventsContinueError.other = GetTeamEventsContinueError('other')

GetTeamEventsError._account_id_not_found_validator = bv.Void()
GetTeamEventsError._invalid_time_range_validator = bv.Void()
GetTeamEventsError._other_validator = bv.Void()
GetTeamEventsError._tagmap = {
    'account_id_not_found': GetTeamEventsError._account_id_not_found_validator,
    'invalid_time_range': GetTeamEventsError._invalid_time_range_validator,
    'other': GetTeamEventsError._other_validator,
}

GetTeamEventsError.account_id_not_found = GetTeamEventsError('account_id_not_found')
GetTeamEventsError.invalid_time_range = GetTeamEventsError('invalid_time_range')
GetTeamEventsError.other = GetTeamEventsError('other')

GetTeamEventsResult._events_validator = bv.List(TeamEvent_validator)
GetTeamEventsResult._cursor_validator = bv.String()
GetTeamEventsResult._has_more_validator = bv.Boolean()
GetTeamEventsResult._all_field_names_ = set([
    'events',
    'cursor',
    'has_more',
])
GetTeamEventsResult._all_fields_ = [
    ('events', GetTeamEventsResult._events_validator),
    ('cursor', GetTeamEventsResult._cursor_validator),
    ('has_more', GetTeamEventsResult._has_more_validator),
]

GoogleSsoChangePolicyDetails._new_value_validator = GoogleSsoPolicy_validator
GoogleSsoChangePolicyDetails._previous_value_validator = bv.Nullable(GoogleSsoPolicy_validator)
GoogleSsoChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
GoogleSsoChangePolicyDetails._all_fields_ = [
    ('new_value', GoogleSsoChangePolicyDetails._new_value_validator),
    ('previous_value', GoogleSsoChangePolicyDetails._previous_value_validator),
]

GoogleSsoPolicy._disabled_validator = bv.Void()
GoogleSsoPolicy._enabled_validator = bv.Void()
GoogleSsoPolicy._other_validator = bv.Void()
GoogleSsoPolicy._tagmap = {
    'disabled': GoogleSsoPolicy._disabled_validator,
    'enabled': GoogleSsoPolicy._enabled_validator,
    'other': GoogleSsoPolicy._other_validator,
}

GoogleSsoPolicy.disabled = GoogleSsoPolicy('disabled')
GoogleSsoPolicy.enabled = GoogleSsoPolicy('enabled')
GoogleSsoPolicy.other = GoogleSsoPolicy('other')

GroupAddExternalIdDetails._new_value_validator = team_common.GroupExternalId_validator
GroupAddExternalIdDetails._all_field_names_ = set(['new_value'])
GroupAddExternalIdDetails._all_fields_ = [('new_value', GroupAddExternalIdDetails._new_value_validator)]

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)]

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),
]

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),
]

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)]

GroupCreateDetails._is_company_managed_validator = bv.Nullable(bv.Boolean())
GroupCreateDetails._join_policy_validator = 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),
]

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)]

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')

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_ = []

GroupRemoveExternalIdDetails._previous_value_validator = team_common.GroupExternalId_validator
GroupRemoveExternalIdDetails._all_field_names_ = set(['previous_value'])
GroupRemoveExternalIdDetails._all_fields_ = [('previous_value', GroupRemoveExternalIdDetails._previous_value_validator)]

GroupRemoveMemberDetails._all_field_names_ = set([])
GroupRemoveMemberDetails._all_fields_ = []

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),
]

GroupUserManagementChangePolicyDetails._new_value_validator = GroupUserManagementPolicy_validator
GroupUserManagementChangePolicyDetails._previous_value_validator = bv.Nullable(GroupUserManagementPolicy_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),
]

GroupUserManagementPolicy._admins_only_validator = bv.Void()
GroupUserManagementPolicy._all_users_validator = bv.Void()
GroupUserManagementPolicy._other_validator = bv.Void()
GroupUserManagementPolicy._tagmap = {
    'admins_only': GroupUserManagementPolicy._admins_only_validator,
    'all_users': GroupUserManagementPolicy._all_users_validator,
    'other': GroupUserManagementPolicy._other_validator,
}

GroupUserManagementPolicy.admins_only = GroupUserManagementPolicy('admins_only')
GroupUserManagementPolicy.all_users = GroupUserManagementPolicy('all_users')
GroupUserManagementPolicy.other = GroupUserManagementPolicy('other')

HostLogInfo._host_id_validator = bv.Nullable(bv.UInt64())
HostLogInfo._host_name_validator = bv.Nullable(bv.String())
HostLogInfo._all_field_names_ = set([
    'host_id',
    'host_name',
])
HostLogInfo._all_fields_ = [
    ('host_id', HostLogInfo._host_id_validator),
    ('host_name', HostLogInfo._host_name_validator),
]

JoinTeamDetails._linked_apps_validator = bv.List(AppLogInfo_validator)
JoinTeamDetails._linked_devices_validator = bv.List(DeviceLogInfo_validator)
JoinTeamDetails._linked_shared_folders_validator = bv.List(FolderLogInfo_validator)
JoinTeamDetails._all_field_names_ = set([
    'linked_apps',
    'linked_devices',
    'linked_shared_folders',
])
JoinTeamDetails._all_fields_ = [
    ('linked_apps', JoinTeamDetails._linked_apps_validator),
    ('linked_devices', JoinTeamDetails._linked_devices_validator),
    ('linked_shared_folders', JoinTeamDetails._linked_shared_folders_validator),
]

LinkAudience._public_validator = bv.Void()
LinkAudience._team_validator = bv.Void()
LinkAudience._members_validator = bv.Void()
LinkAudience._other_validator = bv.Void()
LinkAudience._tagmap = {
    'public': LinkAudience._public_validator,
    'team': LinkAudience._team_validator,
    'members': LinkAudience._members_validator,
    'other': LinkAudience._other_validator,
}

LinkAudience.public = LinkAudience('public')
LinkAudience.team = LinkAudience('team')
LinkAudience.members = LinkAudience('members')
LinkAudience.other = LinkAudience('other')

LogoutDetails._all_field_names_ = set([])
LogoutDetails._all_fields_ = []

MemberAddNameDetails._value_validator = UserNameLogInfo_validator
MemberAddNameDetails._all_field_names_ = set(['value'])
MemberAddNameDetails._all_fields_ = [('value', MemberAddNameDetails._value_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),
]

MemberChangeEmailDetails._new_value_validator = common.EmailAddress_validator
MemberChangeEmailDetails._previous_value_validator = bv.Nullable(common.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),
]

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),
]

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),
]

MemberChangeStatusDetails._previous_value_validator = bv.Nullable(MemberStatus_validator)
MemberChangeStatusDetails._new_value_validator = MemberStatus_validator
MemberChangeStatusDetails._team_join_details_validator = bv.Nullable(JoinTeamDetails_validator)
MemberChangeStatusDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
    'team_join_details',
])
MemberChangeStatusDetails._all_fields_ = [
    ('previous_value', MemberChangeStatusDetails._previous_value_validator),
    ('new_value', MemberChangeStatusDetails._new_value_validator),
    ('team_join_details', MemberChangeStatusDetails._team_join_details_validator),
]

MemberPermanentlyDeleteAccountContentsDetails._all_field_names_ = set([])
MemberPermanentlyDeleteAccountContentsDetails._all_fields_ = []

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),
]

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')

MemberSpaceLimitsAddExceptionDetails._all_field_names_ = set([])
MemberSpaceLimitsAddExceptionDetails._all_fields_ = []

MemberSpaceLimitsChangePolicyDetails._previous_value_validator = SpaceLimitsLevel_validator
MemberSpaceLimitsChangePolicyDetails._new_value_validator = SpaceLimitsLevel_validator
MemberSpaceLimitsChangePolicyDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
MemberSpaceLimitsChangePolicyDetails._all_fields_ = [
    ('previous_value', MemberSpaceLimitsChangePolicyDetails._previous_value_validator),
    ('new_value', MemberSpaceLimitsChangePolicyDetails._new_value_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),
]

MemberSpaceLimitsRemoveExceptionDetails._all_field_names_ = set([])
MemberSpaceLimitsRemoveExceptionDetails._all_fields_ = []

MemberStatus._not_joined_validator = bv.Void()
MemberStatus._invited_validator = bv.Void()
MemberStatus._active_validator = bv.Void()
MemberStatus._suspended_validator = bv.Void()
MemberStatus._removed_validator = bv.Void()
MemberStatus._other_validator = bv.Void()
MemberStatus._tagmap = {
    'not_joined': MemberStatus._not_joined_validator,
    'invited': MemberStatus._invited_validator,
    'active': MemberStatus._active_validator,
    'suspended': MemberStatus._suspended_validator,
    'removed': MemberStatus._removed_validator,
    'other': MemberStatus._other_validator,
}

MemberStatus.not_joined = MemberStatus('not_joined')
MemberStatus.invited = MemberStatus('invited')
MemberStatus.active = MemberStatus('active')
MemberStatus.suspended = MemberStatus('suspended')
MemberStatus.removed = MemberStatus('removed')
MemberStatus.other = MemberStatus('other')

MemberSuggestDetails._all_field_names_ = set([])
MemberSuggestDetails._all_fields_ = []

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),
]

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._src_participant_index_validator = bv.UInt64()
MemberTransferAccountContentsDetails._dest_participant_index_validator = bv.UInt64()
MemberTransferAccountContentsDetails._all_field_names_ = set([
    'src_participant_index',
    'dest_participant_index',
])
MemberTransferAccountContentsDetails._all_fields_ = [
    ('src_participant_index', MemberTransferAccountContentsDetails._src_participant_index_validator),
    ('dest_participant_index', MemberTransferAccountContentsDetails._dest_participant_index_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),
]

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._all_field_names_ = set([])
MissingDetails._all_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(common.NamespaceId_validator)
NamespaceRelativePathLogInfo._relative_path_validator = bv.Nullable(files.Path_validator)
NamespaceRelativePathLogInfo._all_field_names_ = set([
    'ns_id',
    'relative_path',
])
NamespaceRelativePathLogInfo._all_fields_ = [
    ('ns_id', NamespaceRelativePathLogInfo._ns_id_validator),
    ('relative_path', NamespaceRelativePathLogInfo._relative_path_validator),
]

NetworkControlChangePolicyDetails._new_value_validator = NetworkControlPolicy_validator
NetworkControlChangePolicyDetails._previous_value_validator = bv.Nullable(NetworkControlPolicy_validator)
NetworkControlChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
NetworkControlChangePolicyDetails._all_fields_ = [
    ('new_value', NetworkControlChangePolicyDetails._new_value_validator),
    ('previous_value', NetworkControlChangePolicyDetails._previous_value_validator),
]

NetworkControlPolicy._disabled_validator = bv.Void()
NetworkControlPolicy._enabled_validator = bv.Void()
NetworkControlPolicy._other_validator = bv.Void()
NetworkControlPolicy._tagmap = {
    'disabled': NetworkControlPolicy._disabled_validator,
    'enabled': NetworkControlPolicy._enabled_validator,
    'other': NetworkControlPolicy._other_validator,
}

NetworkControlPolicy.disabled = NetworkControlPolicy('disabled')
NetworkControlPolicy.enabled = NetworkControlPolicy('enabled')
NetworkControlPolicy.other = NetworkControlPolicy('other')

UserLogInfo._account_id_validator = bv.Nullable(users_common.AccountId_validator)
UserLogInfo._display_name_validator = bv.Nullable(common.DisplayNameLegacy_validator)
UserLogInfo._email_validator = bv.Nullable(common.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'non_team_member',): NonTeamMemberLogInfo_validator,
}
UserLogInfo._pytype_to_tag_and_subtype_ = {
    TeamMemberLogInfo: ((u'team_member',), TeamMemberLogInfo_validator),
    NonTeamMemberLogInfo: ((u'non_team_member',), NonTeamMemberLogInfo_validator),
}
UserLogInfo._is_catch_all_ = True

NonTeamMemberLogInfo._field_names_ = set([])
NonTeamMemberLogInfo._all_field_names_ = UserLogInfo._all_field_names_.union(NonTeamMemberLogInfo._field_names_)
NonTeamMemberLogInfo._fields_ = []
NonTeamMemberLogInfo._all_fields_ = UserLogInfo._all_fields_ + NonTeamMemberLogInfo._fields_

NoteAclInviteOnlyDetails._all_field_names_ = set([])
NoteAclInviteOnlyDetails._all_fields_ = []

NoteAclLinkDetails._all_field_names_ = set([])
NoteAclLinkDetails._all_fields_ = []

NoteAclTeamLinkDetails._all_field_names_ = set([])
NoteAclTeamLinkDetails._all_fields_ = []

NoteShareReceiveDetails._all_field_names_ = set([])
NoteShareReceiveDetails._all_fields_ = []

NoteSharedDetails._all_field_names_ = set([])
NoteSharedDetails._all_fields_ = []

OpenNoteSharedDetails._all_field_names_ = set([])
OpenNoteSharedDetails._all_fields_ = []

OriginLogInfo._geo_location_validator = bv.Nullable(GeoLocationLogInfo_validator)
OriginLogInfo._host_validator = bv.Nullable(HostLogInfo_validator)
OriginLogInfo._access_method_validator = AccessMethodLogInfo_validator
OriginLogInfo._all_field_names_ = set([
    'geo_location',
    'host',
    'access_method',
])
OriginLogInfo._all_fields_ = [
    ('geo_location', OriginLogInfo._geo_location_validator),
    ('host', OriginLogInfo._host_validator),
    ('access_method', OriginLogInfo._access_method_validator),
]

PaperAccessType._viewer_validator = bv.Void()
PaperAccessType._commenter_validator = bv.Void()
PaperAccessType._editor_validator = bv.Void()
PaperAccessType._other_validator = bv.Void()
PaperAccessType._tagmap = {
    'viewer': PaperAccessType._viewer_validator,
    'commenter': PaperAccessType._commenter_validator,
    'editor': PaperAccessType._editor_validator,
    'other': PaperAccessType._other_validator,
}

PaperAccessType.viewer = PaperAccessType('viewer')
PaperAccessType.commenter = PaperAccessType('commenter')
PaperAccessType.editor = PaperAccessType('editor')
PaperAccessType.other = PaperAccessType('other')

PaperAdminExportStartDetails._all_field_names_ = set([])
PaperAdminExportStartDetails._all_fields_ = []

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),
]

PaperChangeMemberLinkPolicyDetails._new_value_validator = PaperMemberPolicy_validator
PaperChangeMemberLinkPolicyDetails._all_field_names_ = set(['new_value'])
PaperChangeMemberLinkPolicyDetails._all_fields_ = [('new_value', PaperChangeMemberLinkPolicyDetails._new_value_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),
]

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),
]

PaperContentAddMemberDetails._event_uuid_validator = bv.String()
PaperContentAddMemberDetails._all_field_names_ = set(['event_uuid'])
PaperContentAddMemberDetails._all_fields_ = [('event_uuid', PaperContentAddMemberDetails._event_uuid_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),
]

PaperContentArchiveDetails._event_uuid_validator = bv.String()
PaperContentArchiveDetails._all_field_names_ = set(['event_uuid'])
PaperContentArchiveDetails._all_fields_ = [('event_uuid', PaperContentArchiveDetails._event_uuid_validator)]

PaperContentCreateDetails._event_uuid_validator = bv.String()
PaperContentCreateDetails._all_field_names_ = set(['event_uuid'])
PaperContentCreateDetails._all_fields_ = [('event_uuid', PaperContentCreateDetails._event_uuid_validator)]

PaperContentPermanentlyDeleteDetails._event_uuid_validator = bv.String()
PaperContentPermanentlyDeleteDetails._all_field_names_ = set(['event_uuid'])
PaperContentPermanentlyDeleteDetails._all_fields_ = [('event_uuid', PaperContentPermanentlyDeleteDetails._event_uuid_validator)]

PaperContentRemoveFromFolderDetails._event_uuid_validator = bv.String()
PaperContentRemoveFromFolderDetails._all_field_names_ = set(['event_uuid'])
PaperContentRemoveFromFolderDetails._all_fields_ = [('event_uuid', PaperContentRemoveFromFolderDetails._event_uuid_validator)]

PaperContentRemoveMemberDetails._event_uuid_validator = bv.String()
PaperContentRemoveMemberDetails._all_field_names_ = set(['event_uuid'])
PaperContentRemoveMemberDetails._all_fields_ = [('event_uuid', PaperContentRemoveMemberDetails._event_uuid_validator)]

PaperContentRenameDetails._event_uuid_validator = bv.String()
PaperContentRenameDetails._all_field_names_ = set(['event_uuid'])
PaperContentRenameDetails._all_fields_ = [('event_uuid', PaperContentRenameDetails._event_uuid_validator)]

PaperContentRestoreDetails._event_uuid_validator = bv.String()
PaperContentRestoreDetails._all_field_names_ = set(['event_uuid'])
PaperContentRestoreDetails._all_fields_ = [('event_uuid', PaperContentRestoreDetails._event_uuid_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),
]

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),
]

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),
]

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),
]

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),
]

PaperDocDeletedDetails._event_uuid_validator = bv.String()
PaperDocDeletedDetails._all_field_names_ = set(['event_uuid'])
PaperDocDeletedDetails._all_fields_ = [('event_uuid', PaperDocDeletedDetails._event_uuid_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),
]

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),
]

PaperDocEditDetails._event_uuid_validator = bv.String()
PaperDocEditDetails._all_field_names_ = set(['event_uuid'])
PaperDocEditDetails._all_fields_ = [('event_uuid', PaperDocEditDetails._event_uuid_validator)]

PaperDocFollowedDetails._event_uuid_validator = bv.String()
PaperDocFollowedDetails._all_field_names_ = set(['event_uuid'])
PaperDocFollowedDetails._all_fields_ = [('event_uuid', PaperDocFollowedDetails._event_uuid_validator)]

PaperDocMentionDetails._event_uuid_validator = bv.String()
PaperDocMentionDetails._all_field_names_ = set(['event_uuid'])
PaperDocMentionDetails._all_fields_ = [('event_uuid', PaperDocMentionDetails._event_uuid_validator)]

PaperDocRequestAccessDetails._event_uuid_validator = bv.String()
PaperDocRequestAccessDetails._all_field_names_ = set(['event_uuid'])
PaperDocRequestAccessDetails._all_fields_ = [('event_uuid', PaperDocRequestAccessDetails._event_uuid_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),
]

PaperDocRevertDetails._event_uuid_validator = bv.String()
PaperDocRevertDetails._all_field_names_ = set(['event_uuid'])
PaperDocRevertDetails._all_fields_ = [('event_uuid', PaperDocRevertDetails._event_uuid_validator)]

PaperDocSlackShareDetails._event_uuid_validator = bv.String()
PaperDocSlackShareDetails._all_field_names_ = set(['event_uuid'])
PaperDocSlackShareDetails._all_fields_ = [('event_uuid', PaperDocSlackShareDetails._event_uuid_validator)]

PaperDocTeamInviteDetails._event_uuid_validator = bv.String()
PaperDocTeamInviteDetails._all_field_names_ = set(['event_uuid'])
PaperDocTeamInviteDetails._all_fields_ = [('event_uuid', PaperDocTeamInviteDetails._event_uuid_validator)]

PaperDocTrashedDetails._event_uuid_validator = bv.String()
PaperDocTrashedDetails._all_field_names_ = set(['event_uuid'])
PaperDocTrashedDetails._all_fields_ = [('event_uuid', PaperDocTrashedDetails._event_uuid_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),
]

PaperDocUntrashedDetails._event_uuid_validator = bv.String()
PaperDocUntrashedDetails._all_field_names_ = set(['event_uuid'])
PaperDocUntrashedDetails._all_fields_ = [('event_uuid', PaperDocUntrashedDetails._event_uuid_validator)]

PaperDocViewDetails._event_uuid_validator = bv.String()
PaperDocViewDetails._all_field_names_ = set(['event_uuid'])
PaperDocViewDetails._all_fields_ = [('event_uuid', PaperDocViewDetails._event_uuid_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._other_validator = bv.Void()
PaperDownloadFormat._tagmap = {
    'docx': PaperDownloadFormat._docx_validator,
    'html': PaperDownloadFormat._html_validator,
    'markdown': PaperDownloadFormat._markdown_validator,
    'other': PaperDownloadFormat._other_validator,
}

PaperDownloadFormat.docx = PaperDownloadFormat('docx')
PaperDownloadFormat.html = PaperDownloadFormat('html')
PaperDownloadFormat.markdown = PaperDownloadFormat('markdown')
PaperDownloadFormat.other = PaperDownloadFormat('other')

PaperEnabledUsersGroupAdditionDetails._all_field_names_ = set([])
PaperEnabledUsersGroupAdditionDetails._all_fields_ = []

PaperEnabledUsersGroupRemovalDetails._all_field_names_ = set([])
PaperEnabledUsersGroupRemovalDetails._all_fields_ = []

PaperExternalViewAllowDetails._all_field_names_ = set([])
PaperExternalViewAllowDetails._all_fields_ = []

PaperExternalViewDefaultTeamDetails._all_field_names_ = set([])
PaperExternalViewDefaultTeamDetails._all_fields_ = []

PaperExternalViewForbidDetails._all_field_names_ = set([])
PaperExternalViewForbidDetails._all_fields_ = []

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),
]

PaperFolderDeletedDetails._event_uuid_validator = bv.String()
PaperFolderDeletedDetails._all_field_names_ = set(['event_uuid'])
PaperFolderDeletedDetails._all_fields_ = [('event_uuid', PaperFolderDeletedDetails._event_uuid_validator)]

PaperFolderFollowedDetails._event_uuid_validator = bv.String()
PaperFolderFollowedDetails._all_field_names_ = set(['event_uuid'])
PaperFolderFollowedDetails._all_fields_ = [('event_uuid', PaperFolderFollowedDetails._event_uuid_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)]

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')

ParticipantLogInfo._user_validator = UserLogInfo_validator
ParticipantLogInfo._group_validator = GroupLogInfo_validator
ParticipantLogInfo._other_validator = bv.Void()
ParticipantLogInfo._tagmap = {
    'user': ParticipantLogInfo._user_validator,
    'group': ParticipantLogInfo._group_validator,
    'other': ParticipantLogInfo._other_validator,
}

ParticipantLogInfo.other = ParticipantLogInfo('other')

PasswordChangeDetails._all_field_names_ = set([])
PasswordChangeDetails._all_fields_ = []

PasswordLoginFailDetails._error_details_validator = FailureDetailsLogInfo_validator
PasswordLoginFailDetails._all_field_names_ = set(['error_details'])
PasswordLoginFailDetails._all_fields_ = [('error_details', PasswordLoginFailDetails._error_details_validator)]

PasswordLoginSuccessDetails._all_field_names_ = set([])
PasswordLoginSuccessDetails._all_fields_ = []

PasswordResetAllDetails._all_field_names_ = set([])
PasswordResetAllDetails._all_fields_ = []

PasswordResetDetails._all_field_names_ = set([])
PasswordResetDetails._all_fields_ = []

PathLogInfo._contextual_validator = bv.Nullable(files.Path_validator)
PathLogInfo._namespace_relative_validator = NamespaceRelativePathLogInfo_validator
PathLogInfo._all_field_names_ = set([
    'contextual',
    'namespace_relative',
])
PathLogInfo._all_fields_ = [
    ('contextual', PathLogInfo._contextual_validator),
    ('namespace_relative', PathLogInfo._namespace_relative_validator),
]

PermanentDeleteChangePolicyDetails._new_value_validator = ContentPermanentDeletePolicy_validator
PermanentDeleteChangePolicyDetails._previous_value_validator = bv.Nullable(ContentPermanentDeletePolicy_validator)
PermanentDeleteChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
PermanentDeleteChangePolicyDetails._all_fields_ = [
    ('new_value', PermanentDeleteChangePolicyDetails._new_value_validator),
    ('previous_value', PermanentDeleteChangePolicyDetails._previous_value_validator),
]

PlacementRestriction._europe_only_validator = bv.Void()
PlacementRestriction._none_validator = bv.Void()
PlacementRestriction._other_validator = bv.Void()
PlacementRestriction._tagmap = {
    'europe_only': PlacementRestriction._europe_only_validator,
    'none': PlacementRestriction._none_validator,
    'other': PlacementRestriction._other_validator,
}

PlacementRestriction.europe_only = PlacementRestriction('europe_only')
PlacementRestriction.none = PlacementRestriction('none')
PlacementRestriction.other = PlacementRestriction('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_id_validator = team_common.ResellerId_validator
ResellerLogInfo._all_field_names_ = set([
    'reseller_name',
    'reseller_id',
])
ResellerLogInfo._all_fields_ = [
    ('reseller_name', ResellerLogInfo._reseller_name_validator),
    ('reseller_id', ResellerLogInfo._reseller_id_validator),
]

ResellerSupportSessionEndDetails._all_field_names_ = set([])
ResellerSupportSessionEndDetails._all_fields_ = []

ResellerSupportSessionStartDetails._all_field_names_ = set([])
ResellerSupportSessionStartDetails._all_fields_ = []

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),
]

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),
]

SfExternalInviteWarnDetails._all_field_names_ = set([])
SfExternalInviteWarnDetails._all_fields_ = []

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)]

SfNestDetails._target_asset_index_validator = bv.UInt64()
SfNestDetails._original_folder_name_validator = bv.String()
SfNestDetails._prev_parent_ns_id_validator = bv.Nullable(common.NamespaceId_validator)
SfNestDetails._new_parent_ns_id_validator = bv.Nullable(common.NamespaceId_validator)
SfNestDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'prev_parent_ns_id',
    'new_parent_ns_id',
])
SfNestDetails._all_fields_ = [
    ('target_asset_index', SfNestDetails._target_asset_index_validator),
    ('original_folder_name', SfNestDetails._original_folder_name_validator),
    ('prev_parent_ns_id', SfNestDetails._prev_parent_ns_id_validator),
    ('new_parent_ns_id', SfNestDetails._new_parent_ns_id_validator),
]

SfTeamDeclineDetails._target_asset_index_validator = bv.UInt64()
SfTeamDeclineDetails._original_folder_name_validator = bv.String()
SfTeamDeclineDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SfTeamDeclineDetails._all_fields_ = [
    ('target_asset_index', SfTeamDeclineDetails._target_asset_index_validator),
    ('original_folder_name', SfTeamDeclineDetails._original_folder_name_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),
]

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),
]

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),
]

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),
]

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),
]

SharedContentAddInviteesDetails._target_asset_index_validator = bv.UInt64()
SharedContentAddInviteesDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentAddInviteesDetails._sharing_permission_validator = bv.Nullable(bv.String())
SharedContentAddInviteesDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'sharing_permission',
])
SharedContentAddInviteesDetails._all_fields_ = [
    ('target_asset_index', SharedContentAddInviteesDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentAddInviteesDetails._original_folder_name_validator),
    ('sharing_permission', SharedContentAddInviteesDetails._sharing_permission_validator),
]

SharedContentAddLinkExpiryDetails._target_asset_index_validator = bv.UInt64()
SharedContentAddLinkExpiryDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentAddLinkExpiryDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedContentAddLinkExpiryDetails._expiration_start_date_validator = bv.String()
SharedContentAddLinkExpiryDetails._expiration_days_validator = bv.Int64()
SharedContentAddLinkExpiryDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_folder_type',
    'expiration_start_date',
    'expiration_days',
])
SharedContentAddLinkExpiryDetails._all_fields_ = [
    ('target_asset_index', SharedContentAddLinkExpiryDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentAddLinkExpiryDetails._original_folder_name_validator),
    ('shared_folder_type', SharedContentAddLinkExpiryDetails._shared_folder_type_validator),
    ('expiration_start_date', SharedContentAddLinkExpiryDetails._expiration_start_date_validator),
    ('expiration_days', SharedContentAddLinkExpiryDetails._expiration_days_validator),
]

SharedContentAddLinkPasswordDetails._target_asset_index_validator = bv.UInt64()
SharedContentAddLinkPasswordDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentAddLinkPasswordDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedContentAddLinkPasswordDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_folder_type',
])
SharedContentAddLinkPasswordDetails._all_fields_ = [
    ('target_asset_index', SharedContentAddLinkPasswordDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentAddLinkPasswordDetails._original_folder_name_validator),
    ('shared_folder_type', SharedContentAddLinkPasswordDetails._shared_folder_type_validator),
]

SharedContentAddMemberDetails._target_asset_index_validator = bv.UInt64()
SharedContentAddMemberDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentAddMemberDetails._sharing_permission_validator = bv.Nullable(bv.String())
SharedContentAddMemberDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedContentAddMemberDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'sharing_permission',
    'shared_folder_type',
])
SharedContentAddMemberDetails._all_fields_ = [
    ('target_asset_index', SharedContentAddMemberDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentAddMemberDetails._original_folder_name_validator),
    ('sharing_permission', SharedContentAddMemberDetails._sharing_permission_validator),
    ('shared_folder_type', SharedContentAddMemberDetails._shared_folder_type_validator),
]

SharedContentChangeDownloadsPolicyDetails._target_asset_index_validator = bv.UInt64()
SharedContentChangeDownloadsPolicyDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentChangeDownloadsPolicyDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedContentChangeDownloadsPolicyDetails._new_value_validator = SharedContentDownloadsPolicy_validator
SharedContentChangeDownloadsPolicyDetails._previous_value_validator = bv.Nullable(SharedContentDownloadsPolicy_validator)
SharedContentChangeDownloadsPolicyDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_folder_type',
    'new_value',
    'previous_value',
])
SharedContentChangeDownloadsPolicyDetails._all_fields_ = [
    ('target_asset_index', SharedContentChangeDownloadsPolicyDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentChangeDownloadsPolicyDetails._original_folder_name_validator),
    ('shared_folder_type', SharedContentChangeDownloadsPolicyDetails._shared_folder_type_validator),
    ('new_value', SharedContentChangeDownloadsPolicyDetails._new_value_validator),
    ('previous_value', SharedContentChangeDownloadsPolicyDetails._previous_value_validator),
]

SharedContentChangeInviteeRoleDetails._target_asset_index_validator = bv.UInt64()
SharedContentChangeInviteeRoleDetails._original_folder_name_validator = bv.String()
SharedContentChangeInviteeRoleDetails._new_sharing_permission_validator = bv.Nullable(bv.String())
SharedContentChangeInviteeRoleDetails._previous_sharing_permission_validator = bv.Nullable(bv.String())
SharedContentChangeInviteeRoleDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'new_sharing_permission',
    'previous_sharing_permission',
])
SharedContentChangeInviteeRoleDetails._all_fields_ = [
    ('target_asset_index', SharedContentChangeInviteeRoleDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentChangeInviteeRoleDetails._original_folder_name_validator),
    ('new_sharing_permission', SharedContentChangeInviteeRoleDetails._new_sharing_permission_validator),
    ('previous_sharing_permission', SharedContentChangeInviteeRoleDetails._previous_sharing_permission_validator),
]

SharedContentChangeLinkAudienceDetails._target_asset_index_validator = bv.UInt64()
SharedContentChangeLinkAudienceDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentChangeLinkAudienceDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedContentChangeLinkAudienceDetails._new_value_validator = LinkAudience_validator
SharedContentChangeLinkAudienceDetails._previous_value_validator = bv.Nullable(LinkAudience_validator)
SharedContentChangeLinkAudienceDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_folder_type',
    'new_value',
    'previous_value',
])
SharedContentChangeLinkAudienceDetails._all_fields_ = [
    ('target_asset_index', SharedContentChangeLinkAudienceDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentChangeLinkAudienceDetails._original_folder_name_validator),
    ('shared_folder_type', SharedContentChangeLinkAudienceDetails._shared_folder_type_validator),
    ('new_value', SharedContentChangeLinkAudienceDetails._new_value_validator),
    ('previous_value', SharedContentChangeLinkAudienceDetails._previous_value_validator),
]

SharedContentChangeLinkExpiryDetails._target_asset_index_validator = bv.UInt64()
SharedContentChangeLinkExpiryDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentChangeLinkExpiryDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedContentChangeLinkExpiryDetails._expiration_start_date_validator = bv.String()
SharedContentChangeLinkExpiryDetails._expiration_days_validator = bv.Int64()
SharedContentChangeLinkExpiryDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_folder_type',
    'expiration_start_date',
    'expiration_days',
])
SharedContentChangeLinkExpiryDetails._all_fields_ = [
    ('target_asset_index', SharedContentChangeLinkExpiryDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentChangeLinkExpiryDetails._original_folder_name_validator),
    ('shared_folder_type', SharedContentChangeLinkExpiryDetails._shared_folder_type_validator),
    ('expiration_start_date', SharedContentChangeLinkExpiryDetails._expiration_start_date_validator),
    ('expiration_days', SharedContentChangeLinkExpiryDetails._expiration_days_validator),
]

SharedContentChangeLinkPasswordDetails._target_asset_index_validator = bv.UInt64()
SharedContentChangeLinkPasswordDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentChangeLinkPasswordDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedContentChangeLinkPasswordDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_folder_type',
])
SharedContentChangeLinkPasswordDetails._all_fields_ = [
    ('target_asset_index', SharedContentChangeLinkPasswordDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentChangeLinkPasswordDetails._original_folder_name_validator),
    ('shared_folder_type', SharedContentChangeLinkPasswordDetails._shared_folder_type_validator),
]

SharedContentChangeMemberRoleDetails._target_asset_index_validator = bv.UInt64()
SharedContentChangeMemberRoleDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentChangeMemberRoleDetails._new_sharing_permission_validator = bv.Nullable(bv.String())
SharedContentChangeMemberRoleDetails._previous_sharing_permission_validator = bv.Nullable(bv.String())
SharedContentChangeMemberRoleDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedContentChangeMemberRoleDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'new_sharing_permission',
    'previous_sharing_permission',
    'shared_folder_type',
])
SharedContentChangeMemberRoleDetails._all_fields_ = [
    ('target_asset_index', SharedContentChangeMemberRoleDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentChangeMemberRoleDetails._original_folder_name_validator),
    ('new_sharing_permission', SharedContentChangeMemberRoleDetails._new_sharing_permission_validator),
    ('previous_sharing_permission', SharedContentChangeMemberRoleDetails._previous_sharing_permission_validator),
    ('shared_folder_type', SharedContentChangeMemberRoleDetails._shared_folder_type_validator),
]

SharedContentChangeViewerInfoPolicyDetails._target_asset_index_validator = bv.UInt64()
SharedContentChangeViewerInfoPolicyDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentChangeViewerInfoPolicyDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedContentChangeViewerInfoPolicyDetails._new_value_validator = SharedContentViewerInfoPolicy_validator
SharedContentChangeViewerInfoPolicyDetails._previous_value_validator = bv.Nullable(SharedContentViewerInfoPolicy_validator)
SharedContentChangeViewerInfoPolicyDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_folder_type',
    'new_value',
    'previous_value',
])
SharedContentChangeViewerInfoPolicyDetails._all_fields_ = [
    ('target_asset_index', SharedContentChangeViewerInfoPolicyDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentChangeViewerInfoPolicyDetails._original_folder_name_validator),
    ('shared_folder_type', SharedContentChangeViewerInfoPolicyDetails._shared_folder_type_validator),
    ('new_value', SharedContentChangeViewerInfoPolicyDetails._new_value_validator),
    ('previous_value', SharedContentChangeViewerInfoPolicyDetails._previous_value_validator),
]

SharedContentClaimInvitationDetails._target_asset_index_validator = bv.UInt64()
SharedContentClaimInvitationDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentClaimInvitationDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedContentClaimInvitationDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_content_link',
])
SharedContentClaimInvitationDetails._all_fields_ = [
    ('target_asset_index', SharedContentClaimInvitationDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentClaimInvitationDetails._original_folder_name_validator),
    ('shared_content_link', SharedContentClaimInvitationDetails._shared_content_link_validator),
]

SharedContentCopyDetails._shared_content_link_validator = bv.String()
SharedContentCopyDetails._sharing_permission_validator = bv.Nullable(bv.String())
SharedContentCopyDetails._target_asset_index_validator = bv.UInt64()
SharedContentCopyDetails._relocate_action_details_validator = RelocateAssetReferencesLogInfo_validator
SharedContentCopyDetails._all_field_names_ = set([
    'shared_content_link',
    'sharing_permission',
    'target_asset_index',
    'relocate_action_details',
])
SharedContentCopyDetails._all_fields_ = [
    ('shared_content_link', SharedContentCopyDetails._shared_content_link_validator),
    ('sharing_permission', SharedContentCopyDetails._sharing_permission_validator),
    ('target_asset_index', SharedContentCopyDetails._target_asset_index_validator),
    ('relocate_action_details', SharedContentCopyDetails._relocate_action_details_validator),
]

SharedContentDownloadDetails._shared_content_link_validator = bv.String()
SharedContentDownloadDetails._sharing_permission_validator = bv.Nullable(bv.String())
SharedContentDownloadDetails._target_asset_index_validator = bv.UInt64()
SharedContentDownloadDetails._all_field_names_ = set([
    'shared_content_link',
    'sharing_permission',
    'target_asset_index',
])
SharedContentDownloadDetails._all_fields_ = [
    ('shared_content_link', SharedContentDownloadDetails._shared_content_link_validator),
    ('sharing_permission', SharedContentDownloadDetails._sharing_permission_validator),
    ('target_asset_index', SharedContentDownloadDetails._target_asset_index_validator),
]

SharedContentDownloadsPolicy._disabled_validator = bv.Void()
SharedContentDownloadsPolicy._enabled_validator = bv.Void()
SharedContentDownloadsPolicy._other_validator = bv.Void()
SharedContentDownloadsPolicy._tagmap = {
    'disabled': SharedContentDownloadsPolicy._disabled_validator,
    'enabled': SharedContentDownloadsPolicy._enabled_validator,
    'other': SharedContentDownloadsPolicy._other_validator,
}

SharedContentDownloadsPolicy.disabled = SharedContentDownloadsPolicy('disabled')
SharedContentDownloadsPolicy.enabled = SharedContentDownloadsPolicy('enabled')
SharedContentDownloadsPolicy.other = SharedContentDownloadsPolicy('other')

SharedContentRelinquishMembershipDetails._target_asset_index_validator = bv.UInt64()
SharedContentRelinquishMembershipDetails._original_folder_name_validator = bv.String()
SharedContentRelinquishMembershipDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SharedContentRelinquishMembershipDetails._all_fields_ = [
    ('target_asset_index', SharedContentRelinquishMembershipDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentRelinquishMembershipDetails._original_folder_name_validator),
]

SharedContentRemoveInviteeDetails._target_asset_index_validator = bv.UInt64()
SharedContentRemoveInviteeDetails._original_folder_name_validator = bv.String()
SharedContentRemoveInviteeDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SharedContentRemoveInviteeDetails._all_fields_ = [
    ('target_asset_index', SharedContentRemoveInviteeDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentRemoveInviteeDetails._original_folder_name_validator),
]

SharedContentRemoveLinkExpiryDetails._target_asset_index_validator = bv.UInt64()
SharedContentRemoveLinkExpiryDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentRemoveLinkExpiryDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedContentRemoveLinkExpiryDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_folder_type',
])
SharedContentRemoveLinkExpiryDetails._all_fields_ = [
    ('target_asset_index', SharedContentRemoveLinkExpiryDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentRemoveLinkExpiryDetails._original_folder_name_validator),
    ('shared_folder_type', SharedContentRemoveLinkExpiryDetails._shared_folder_type_validator),
]

SharedContentRemoveLinkPasswordDetails._target_asset_index_validator = bv.UInt64()
SharedContentRemoveLinkPasswordDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentRemoveLinkPasswordDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedContentRemoveLinkPasswordDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_folder_type',
])
SharedContentRemoveLinkPasswordDetails._all_fields_ = [
    ('target_asset_index', SharedContentRemoveLinkPasswordDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentRemoveLinkPasswordDetails._original_folder_name_validator),
    ('shared_folder_type', SharedContentRemoveLinkPasswordDetails._shared_folder_type_validator),
]

SharedContentRemoveMemberDetails._target_asset_index_validator = bv.UInt64()
SharedContentRemoveMemberDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentRemoveMemberDetails._sharing_permission_validator = bv.Nullable(bv.String())
SharedContentRemoveMemberDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedContentRemoveMemberDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'sharing_permission',
    'shared_folder_type',
])
SharedContentRemoveMemberDetails._all_fields_ = [
    ('target_asset_index', SharedContentRemoveMemberDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentRemoveMemberDetails._original_folder_name_validator),
    ('sharing_permission', SharedContentRemoveMemberDetails._sharing_permission_validator),
    ('shared_folder_type', SharedContentRemoveMemberDetails._shared_folder_type_validator),
]

SharedContentRequestAccessDetails._target_asset_index_validator = bv.UInt64()
SharedContentRequestAccessDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentRequestAccessDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedContentRequestAccessDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_content_link',
])
SharedContentRequestAccessDetails._all_fields_ = [
    ('target_asset_index', SharedContentRequestAccessDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentRequestAccessDetails._original_folder_name_validator),
    ('shared_content_link', SharedContentRequestAccessDetails._shared_content_link_validator),
]

SharedContentUnshareDetails._target_asset_index_validator = bv.UInt64()
SharedContentUnshareDetails._original_folder_name_validator = bv.Nullable(bv.String())
SharedContentUnshareDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SharedContentUnshareDetails._all_fields_ = [
    ('target_asset_index', SharedContentUnshareDetails._target_asset_index_validator),
    ('original_folder_name', SharedContentUnshareDetails._original_folder_name_validator),
]

SharedContentViewDetails._shared_content_link_validator = bv.String()
SharedContentViewDetails._sharing_permission_validator = bv.Nullable(bv.String())
SharedContentViewDetails._target_asset_index_validator = bv.UInt64()
SharedContentViewDetails._all_field_names_ = set([
    'shared_content_link',
    'sharing_permission',
    'target_asset_index',
])
SharedContentViewDetails._all_fields_ = [
    ('shared_content_link', SharedContentViewDetails._shared_content_link_validator),
    ('sharing_permission', SharedContentViewDetails._sharing_permission_validator),
    ('target_asset_index', SharedContentViewDetails._target_asset_index_validator),
]

SharedContentViewerInfoPolicy._disabled_validator = bv.Void()
SharedContentViewerInfoPolicy._enabled_validator = bv.Void()
SharedContentViewerInfoPolicy._other_validator = bv.Void()
SharedContentViewerInfoPolicy._tagmap = {
    'disabled': SharedContentViewerInfoPolicy._disabled_validator,
    'enabled': SharedContentViewerInfoPolicy._enabled_validator,
    'other': SharedContentViewerInfoPolicy._other_validator,
}

SharedContentViewerInfoPolicy.disabled = SharedContentViewerInfoPolicy('disabled')
SharedContentViewerInfoPolicy.enabled = SharedContentViewerInfoPolicy('enabled')
SharedContentViewerInfoPolicy.other = SharedContentViewerInfoPolicy('other')

SharedFolderChangeConfidentialityDetails._target_asset_index_validator = bv.UInt64()
SharedFolderChangeConfidentialityDetails._original_folder_name_validator = bv.String()
SharedFolderChangeConfidentialityDetails._new_value_validator = Confidentiality_validator
SharedFolderChangeConfidentialityDetails._previous_value_validator = bv.Nullable(Confidentiality_validator)
SharedFolderChangeConfidentialityDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'new_value',
    'previous_value',
])
SharedFolderChangeConfidentialityDetails._all_fields_ = [
    ('target_asset_index', SharedFolderChangeConfidentialityDetails._target_asset_index_validator),
    ('original_folder_name', SharedFolderChangeConfidentialityDetails._original_folder_name_validator),
    ('new_value', SharedFolderChangeConfidentialityDetails._new_value_validator),
    ('previous_value', SharedFolderChangeConfidentialityDetails._previous_value_validator),
]

SharedFolderChangeLinkPolicyDetails._target_asset_index_validator = bv.UInt64()
SharedFolderChangeLinkPolicyDetails._original_folder_name_validator = bv.String()
SharedFolderChangeLinkPolicyDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedFolderChangeLinkPolicyDetails._new_value_validator = SharedFolderLinkPolicy_validator
SharedFolderChangeLinkPolicyDetails._previous_value_validator = bv.Nullable(SharedFolderLinkPolicy_validator)
SharedFolderChangeLinkPolicyDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_folder_type',
    'new_value',
    'previous_value',
])
SharedFolderChangeLinkPolicyDetails._all_fields_ = [
    ('target_asset_index', SharedFolderChangeLinkPolicyDetails._target_asset_index_validator),
    ('original_folder_name', SharedFolderChangeLinkPolicyDetails._original_folder_name_validator),
    ('shared_folder_type', SharedFolderChangeLinkPolicyDetails._shared_folder_type_validator),
    ('new_value', SharedFolderChangeLinkPolicyDetails._new_value_validator),
    ('previous_value', SharedFolderChangeLinkPolicyDetails._previous_value_validator),
]

SharedFolderChangeMemberManagementPolicyDetails._target_asset_index_validator = bv.UInt64()
SharedFolderChangeMemberManagementPolicyDetails._original_folder_name_validator = bv.String()
SharedFolderChangeMemberManagementPolicyDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedFolderChangeMemberManagementPolicyDetails._new_value_validator = SharedFolderMembershipManagementPolicy_validator
SharedFolderChangeMemberManagementPolicyDetails._previous_value_validator = bv.Nullable(SharedFolderMembershipManagementPolicy_validator)
SharedFolderChangeMemberManagementPolicyDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_folder_type',
    'new_value',
    'previous_value',
])
SharedFolderChangeMemberManagementPolicyDetails._all_fields_ = [
    ('target_asset_index', SharedFolderChangeMemberManagementPolicyDetails._target_asset_index_validator),
    ('original_folder_name', SharedFolderChangeMemberManagementPolicyDetails._original_folder_name_validator),
    ('shared_folder_type', SharedFolderChangeMemberManagementPolicyDetails._shared_folder_type_validator),
    ('new_value', SharedFolderChangeMemberManagementPolicyDetails._new_value_validator),
    ('previous_value', SharedFolderChangeMemberManagementPolicyDetails._previous_value_validator),
]

SharedFolderChangeMemberPolicyDetails._target_asset_index_validator = bv.UInt64()
SharedFolderChangeMemberPolicyDetails._original_folder_name_validator = bv.String()
SharedFolderChangeMemberPolicyDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SharedFolderChangeMemberPolicyDetails._new_value_validator = SharedFolderMemberPolicy_validator
SharedFolderChangeMemberPolicyDetails._previous_value_validator = bv.Nullable(SharedFolderMemberPolicy_validator)
SharedFolderChangeMemberPolicyDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_folder_type',
    'new_value',
    'previous_value',
])
SharedFolderChangeMemberPolicyDetails._all_fields_ = [
    ('target_asset_index', SharedFolderChangeMemberPolicyDetails._target_asset_index_validator),
    ('original_folder_name', SharedFolderChangeMemberPolicyDetails._original_folder_name_validator),
    ('shared_folder_type', SharedFolderChangeMemberPolicyDetails._shared_folder_type_validator),
    ('new_value', SharedFolderChangeMemberPolicyDetails._new_value_validator),
    ('previous_value', SharedFolderChangeMemberPolicyDetails._previous_value_validator),
]

SharedFolderCreateDetails._target_asset_index_validator = bv.UInt64()
SharedFolderCreateDetails._parent_ns_id_validator = bv.Nullable(common.NamespaceId_validator)
SharedFolderCreateDetails._all_field_names_ = set([
    'target_asset_index',
    'parent_ns_id',
])
SharedFolderCreateDetails._all_fields_ = [
    ('target_asset_index', SharedFolderCreateDetails._target_asset_index_validator),
    ('parent_ns_id', SharedFolderCreateDetails._parent_ns_id_validator),
]

SharedFolderLinkPolicy._members_only_validator = bv.Void()
SharedFolderLinkPolicy._members_and_team_validator = bv.Void()
SharedFolderLinkPolicy._anyone_validator = bv.Void()
SharedFolderLinkPolicy._other_validator = bv.Void()
SharedFolderLinkPolicy._tagmap = {
    'members_only': SharedFolderLinkPolicy._members_only_validator,
    'members_and_team': SharedFolderLinkPolicy._members_and_team_validator,
    'anyone': SharedFolderLinkPolicy._anyone_validator,
    'other': SharedFolderLinkPolicy._other_validator,
}

SharedFolderLinkPolicy.members_only = SharedFolderLinkPolicy('members_only')
SharedFolderLinkPolicy.members_and_team = SharedFolderLinkPolicy('members_and_team')
SharedFolderLinkPolicy.anyone = SharedFolderLinkPolicy('anyone')
SharedFolderLinkPolicy.other = SharedFolderLinkPolicy('other')

SharedFolderMemberPolicy._team_only_validator = bv.Void()
SharedFolderMemberPolicy._anyone_validator = bv.Void()
SharedFolderMemberPolicy._other_validator = bv.Void()
SharedFolderMemberPolicy._tagmap = {
    'team_only': SharedFolderMemberPolicy._team_only_validator,
    'anyone': SharedFolderMemberPolicy._anyone_validator,
    'other': SharedFolderMemberPolicy._other_validator,
}

SharedFolderMemberPolicy.team_only = SharedFolderMemberPolicy('team_only')
SharedFolderMemberPolicy.anyone = SharedFolderMemberPolicy('anyone')
SharedFolderMemberPolicy.other = SharedFolderMemberPolicy('other')

SharedFolderMembershipManagementPolicy._owner_validator = bv.Void()
SharedFolderMembershipManagementPolicy._editors_validator = bv.Void()
SharedFolderMembershipManagementPolicy._other_validator = bv.Void()
SharedFolderMembershipManagementPolicy._tagmap = {
    'owner': SharedFolderMembershipManagementPolicy._owner_validator,
    'editors': SharedFolderMembershipManagementPolicy._editors_validator,
    'other': SharedFolderMembershipManagementPolicy._other_validator,
}

SharedFolderMembershipManagementPolicy.owner = SharedFolderMembershipManagementPolicy('owner')
SharedFolderMembershipManagementPolicy.editors = SharedFolderMembershipManagementPolicy('editors')
SharedFolderMembershipManagementPolicy.other = SharedFolderMembershipManagementPolicy('other')

SharedFolderMountDetails._target_asset_index_validator = bv.UInt64()
SharedFolderMountDetails._original_folder_name_validator = bv.String()
SharedFolderMountDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SharedFolderMountDetails._all_fields_ = [
    ('target_asset_index', SharedFolderMountDetails._target_asset_index_validator),
    ('original_folder_name', SharedFolderMountDetails._original_folder_name_validator),
]

SharedFolderTransferOwnershipDetails._target_asset_index_validator = bv.UInt64()
SharedFolderTransferOwnershipDetails._original_folder_name_validator = bv.String()
SharedFolderTransferOwnershipDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SharedFolderTransferOwnershipDetails._all_fields_ = [
    ('target_asset_index', SharedFolderTransferOwnershipDetails._target_asset_index_validator),
    ('original_folder_name', SharedFolderTransferOwnershipDetails._original_folder_name_validator),
]

SharedFolderUnmountDetails._target_asset_index_validator = bv.UInt64()
SharedFolderUnmountDetails._original_folder_name_validator = bv.String()
SharedFolderUnmountDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SharedFolderUnmountDetails._all_fields_ = [
    ('target_asset_index', SharedFolderUnmountDetails._target_asset_index_validator),
    ('original_folder_name', SharedFolderUnmountDetails._original_folder_name_validator),
]

SharedNoteOpenedDetails._all_field_names_ = set([])
SharedNoteOpenedDetails._all_fields_ = []

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),
]

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),
]

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),
]

SharingFolderJoinPolicy._from_anyone_validator = bv.Void()
SharingFolderJoinPolicy._from_team_only_validator = bv.Void()
SharingFolderJoinPolicy._other_validator = bv.Void()
SharingFolderJoinPolicy._tagmap = {
    'from_anyone': SharingFolderJoinPolicy._from_anyone_validator,
    'from_team_only': SharingFolderJoinPolicy._from_team_only_validator,
    'other': SharingFolderJoinPolicy._other_validator,
}

SharingFolderJoinPolicy.from_anyone = SharingFolderJoinPolicy('from_anyone')
SharingFolderJoinPolicy.from_team_only = SharingFolderJoinPolicy('from_team_only')
SharingFolderJoinPolicy.other = SharingFolderJoinPolicy('other')

SharingLinkPolicy._default_private_validator = bv.Void()
SharingLinkPolicy._default_public_validator = bv.Void()
SharingLinkPolicy._only_private_validator = bv.Void()
SharingLinkPolicy._other_validator = bv.Void()
SharingLinkPolicy._tagmap = {
    'default_private': SharingLinkPolicy._default_private_validator,
    'default_public': SharingLinkPolicy._default_public_validator,
    'only_private': SharingLinkPolicy._only_private_validator,
    'other': SharingLinkPolicy._other_validator,
}

SharingLinkPolicy.default_private = SharingLinkPolicy('default_private')
SharingLinkPolicy.default_public = SharingLinkPolicy('default_public')
SharingLinkPolicy.only_private = SharingLinkPolicy('only_private')
SharingLinkPolicy.other = SharingLinkPolicy('other')

SharingMemberPolicy._allow_validator = bv.Void()
SharingMemberPolicy._forbid_validator = bv.Void()
SharingMemberPolicy._other_validator = bv.Void()
SharingMemberPolicy._tagmap = {
    'allow': SharingMemberPolicy._allow_validator,
    'forbid': SharingMemberPolicy._forbid_validator,
    'other': SharingMemberPolicy._other_validator,
}

SharingMemberPolicy.allow = SharingMemberPolicy('allow')
SharingMemberPolicy.forbid = SharingMemberPolicy('forbid')
SharingMemberPolicy.other = SharingMemberPolicy('other')

ShmodelAppCreateDetails._sharing_permission_validator = bv.Nullable(bv.String())
ShmodelAppCreateDetails._token_key_validator = bv.Nullable(bv.String())
ShmodelAppCreateDetails._all_field_names_ = set([
    'sharing_permission',
    'token_key',
])
ShmodelAppCreateDetails._all_fields_ = [
    ('sharing_permission', ShmodelAppCreateDetails._sharing_permission_validator),
    ('token_key', ShmodelAppCreateDetails._token_key_validator),
]

ShmodelCreateDetails._sharing_permission_validator = bv.Nullable(bv.String())
ShmodelCreateDetails._token_key_validator = bv.Nullable(bv.String())
ShmodelCreateDetails._all_field_names_ = set([
    'sharing_permission',
    'token_key',
])
ShmodelCreateDetails._all_fields_ = [
    ('sharing_permission', ShmodelCreateDetails._sharing_permission_validator),
    ('token_key', ShmodelCreateDetails._token_key_validator),
]

ShmodelDisableDetails._sharing_permission_validator = bv.Nullable(bv.String())
ShmodelDisableDetails._token_key_validator = bv.Nullable(bv.String())
ShmodelDisableDetails._all_field_names_ = set([
    'sharing_permission',
    'token_key',
])
ShmodelDisableDetails._all_fields_ = [
    ('sharing_permission', ShmodelDisableDetails._sharing_permission_validator),
    ('token_key', ShmodelDisableDetails._token_key_validator),
]

ShmodelFbShareDetails._sharing_non_member_recipients_validator = bv.List(NonTeamMemberLogInfo_validator)
ShmodelFbShareDetails._all_field_names_ = set(['sharing_non_member_recipients'])
ShmodelFbShareDetails._all_fields_ = [('sharing_non_member_recipients', ShmodelFbShareDetails._sharing_non_member_recipients_validator)]

ShmodelGroupShareDetails._all_field_names_ = set([])
ShmodelGroupShareDetails._all_fields_ = []

ShmodelRemoveExpirationDetails._all_field_names_ = set([])
ShmodelRemoveExpirationDetails._all_fields_ = []

ShmodelSetExpirationDetails._expiration_start_date_validator = bv.String()
ShmodelSetExpirationDetails._expiration_days_validator = bv.Int64()
ShmodelSetExpirationDetails._all_field_names_ = set([
    'expiration_start_date',
    'expiration_days',
])
ShmodelSetExpirationDetails._all_fields_ = [
    ('expiration_start_date', ShmodelSetExpirationDetails._expiration_start_date_validator),
    ('expiration_days', ShmodelSetExpirationDetails._expiration_days_validator),
]

ShmodelTeamCopyDetails._all_field_names_ = set([])
ShmodelTeamCopyDetails._all_fields_ = []

ShmodelTeamDownloadDetails._all_field_names_ = set([])
ShmodelTeamDownloadDetails._all_fields_ = []

ShmodelTeamShareDetails._all_field_names_ = set([])
ShmodelTeamShareDetails._all_fields_ = []

ShmodelTeamViewDetails._all_field_names_ = set([])
ShmodelTeamViewDetails._all_fields_ = []

ShmodelVisibilityPasswordDetails._all_field_names_ = set([])
ShmodelVisibilityPasswordDetails._all_fields_ = []

ShmodelVisibilityPublicDetails._all_field_names_ = set([])
ShmodelVisibilityPublicDetails._all_fields_ = []

ShmodelVisibilityTeamOnlyDetails._all_field_names_ = set([])
ShmodelVisibilityTeamOnlyDetails._all_fields_ = []

SignInAsSessionEndDetails._all_field_names_ = set([])
SignInAsSessionEndDetails._all_fields_ = []

SignInAsSessionStartDetails._all_field_names_ = set([])
SignInAsSessionStartDetails._all_fields_ = []

SmartSyncChangePolicyDetails._new_value_validator = SmartSyncPolicy_validator
SmartSyncChangePolicyDetails._previous_value_validator = bv.Nullable(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),
]

SmartSyncCreateAdminPrivilegeReportDetails._all_field_names_ = set([])
SmartSyncCreateAdminPrivilegeReportDetails._all_fields_ = []

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),
]

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')

SmartSyncPolicy._local_only_validator = bv.Void()
SmartSyncPolicy._synced_validator = bv.Void()
SmartSyncPolicy._other_validator = bv.Void()
SmartSyncPolicy._tagmap = {
    'local_only': SmartSyncPolicy._local_only_validator,
    'synced': SmartSyncPolicy._synced_validator,
    'other': SmartSyncPolicy._other_validator,
}

SmartSyncPolicy.local_only = SmartSyncPolicy('local_only')
SmartSyncPolicy.synced = SmartSyncPolicy('synced')
SmartSyncPolicy.other = SmartSyncPolicy('other')

SpaceLimitsLevel._generous_validator = bv.Void()
SpaceLimitsLevel._moderate_validator = bv.Void()
SpaceLimitsLevel._no_limit_validator = bv.Void()
SpaceLimitsLevel._strict_validator = bv.Void()
SpaceLimitsLevel._other_validator = bv.Void()
SpaceLimitsLevel._tagmap = {
    'generous': SpaceLimitsLevel._generous_validator,
    'moderate': SpaceLimitsLevel._moderate_validator,
    'no_limit': SpaceLimitsLevel._no_limit_validator,
    'strict': SpaceLimitsLevel._strict_validator,
    'other': SpaceLimitsLevel._other_validator,
}

SpaceLimitsLevel.generous = SpaceLimitsLevel('generous')
SpaceLimitsLevel.moderate = SpaceLimitsLevel('moderate')
SpaceLimitsLevel.no_limit = SpaceLimitsLevel('no_limit')
SpaceLimitsLevel.strict = SpaceLimitsLevel('strict')
SpaceLimitsLevel.other = SpaceLimitsLevel('other')

SpaceLimitsStatus._within_quota_validator = bv.Void()
SpaceLimitsStatus._near_quota_validator = bv.Void()
SpaceLimitsStatus._over_quota_validator = bv.Void()
SpaceLimitsStatus._other_validator = bv.Void()
SpaceLimitsStatus._tagmap = {
    'within_quota': SpaceLimitsStatus._within_quota_validator,
    'near_quota': SpaceLimitsStatus._near_quota_validator,
    'over_quota': SpaceLimitsStatus._over_quota_validator,
    'other': SpaceLimitsStatus._other_validator,
}

SpaceLimitsStatus.within_quota = SpaceLimitsStatus('within_quota')
SpaceLimitsStatus.near_quota = SpaceLimitsStatus('near_quota')
SpaceLimitsStatus.over_quota = SpaceLimitsStatus('over_quota')
SpaceLimitsStatus.other = SpaceLimitsStatus('other')

SsoAddCertDetails._certificate_details_validator = Certificate_validator
SsoAddCertDetails._all_field_names_ = set(['certificate_details'])
SsoAddCertDetails._all_fields_ = [('certificate_details', SsoAddCertDetails._certificate_details_validator)]

SsoAddLoginUrlDetails._new_value_validator = bv.String()
SsoAddLoginUrlDetails._all_field_names_ = set(['new_value'])
SsoAddLoginUrlDetails._all_fields_ = [('new_value', SsoAddLoginUrlDetails._new_value_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)]

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),
]

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),
]

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),
]

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),
]

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),
]

SsoLoginFailDetails._error_details_validator = FailureDetailsLogInfo_validator
SsoLoginFailDetails._all_field_names_ = set(['error_details'])
SsoLoginFailDetails._all_fields_ = [('error_details', SsoLoginFailDetails._error_details_validator)]

SsoRemoveCertDetails._all_field_names_ = set([])
SsoRemoveCertDetails._all_fields_ = []

SsoRemoveLoginUrlDetails._previous_value_validator = bv.String()
SsoRemoveLoginUrlDetails._all_field_names_ = set(['previous_value'])
SsoRemoveLoginUrlDetails._all_fields_ = [('previous_value', SsoRemoveLoginUrlDetails._previous_value_validator)]

SsoRemoveLogoutUrlDetails._previous_value_validator = bv.String()
SsoRemoveLogoutUrlDetails._all_field_names_ = set(['previous_value'])
SsoRemoveLogoutUrlDetails._all_fields_ = [('previous_value', SsoRemoveLogoutUrlDetails._previous_value_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),
]

TeamEvent._timestamp_validator = common.DropboxTimestamp_validator
TeamEvent._event_category_validator = EventCategory_validator
TeamEvent._actor_validator = ActorLogInfo_validator
TeamEvent._origin_validator = bv.Nullable(OriginLogInfo_validator)
TeamEvent._involve_non_team_member_validator = bv.Boolean()
TeamEvent._context_validator = 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),
]

TeamFolderChangeStatusDetails._new_value_validator = TeamFolderStatus_validator
TeamFolderChangeStatusDetails._previous_value_validator = bv.Nullable(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),
]

TeamFolderCreateDetails._all_field_names_ = set([])
TeamFolderCreateDetails._all_fields_ = []

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)]

TeamFolderPermanentlyDeleteDetails._all_field_names_ = set([])
TeamFolderPermanentlyDeleteDetails._all_fields_ = []

TeamFolderRenameDetails._relocate_action_details_validator = RelocateAssetReferencesLogInfo_validator
TeamFolderRenameDetails._all_field_names_ = set(['relocate_action_details'])
TeamFolderRenameDetails._all_fields_ = [('relocate_action_details', TeamFolderRenameDetails._relocate_action_details_validator)]

TeamFolderStatus._archive_validator = bv.Void()
TeamFolderStatus._unarchive_validator = bv.Void()
TeamFolderStatus._other_validator = bv.Void()
TeamFolderStatus._tagmap = {
    'archive': TeamFolderStatus._archive_validator,
    'unarchive': TeamFolderStatus._unarchive_validator,
    'other': TeamFolderStatus._other_validator,
}

TeamFolderStatus.archive = TeamFolderStatus('archive')
TeamFolderStatus.unarchive = TeamFolderStatus('unarchive')
TeamFolderStatus.other = TeamFolderStatus('other')

TeamLinkedAppLogInfo._field_names_ = set([])
TeamLinkedAppLogInfo._all_field_names_ = AppLogInfo._all_field_names_.union(TeamLinkedAppLogInfo._field_names_)
TeamLinkedAppLogInfo._fields_ = []
TeamLinkedAppLogInfo._all_fields_ = AppLogInfo._all_fields_ + TeamLinkedAppLogInfo._fields_

TeamMemberLogInfo._team_member_id_validator = bv.Nullable(team_common.TeamMemberId_validator)
TeamMemberLogInfo._member_external_id_validator = bv.Nullable(team_common.MemberExternalId_validator)
TeamMemberLogInfo._field_names_ = set([
    'team_member_id',
    'member_external_id',
])
TeamMemberLogInfo._all_field_names_ = UserLogInfo._all_field_names_.union(TeamMemberLogInfo._field_names_)
TeamMemberLogInfo._fields_ = [
    ('team_member_id', TeamMemberLogInfo._team_member_id_validator),
    ('member_external_id', TeamMemberLogInfo._member_external_id_validator),
]
TeamMemberLogInfo._all_fields_ = UserLogInfo._all_fields_ + TeamMemberLogInfo._fields_

TeamMembershipType._free_validator = bv.Void()
TeamMembershipType._full_validator = bv.Void()
TeamMembershipType._other_validator = bv.Void()
TeamMembershipType._tagmap = {
    'free': TeamMembershipType._free_validator,
    'full': TeamMembershipType._full_validator,
    'other': TeamMembershipType._other_validator,
}

TeamMembershipType.free = TeamMembershipType('free')
TeamMembershipType.full = TeamMembershipType('full')
TeamMembershipType.other = TeamMembershipType('other')

TeamMergeFromDetails._team_name_validator = bv.String()
TeamMergeFromDetails._all_field_names_ = set(['team_name'])
TeamMergeFromDetails._all_fields_ = [('team_name', TeamMergeFromDetails._team_name_validator)]

TeamMergeToDetails._team_name_validator = bv.String()
TeamMergeToDetails._all_field_names_ = set(['team_name'])
TeamMergeToDetails._all_fields_ = [('team_name', TeamMergeToDetails._team_name_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_ = []

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),
]

TeamProfileChangeLogoDetails._all_field_names_ = set([])
TeamProfileChangeLogoDetails._all_fields_ = []

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),
]

TeamProfileRemoveLogoDetails._all_field_names_ = set([])
TeamProfileRemoveLogoDetails._all_fields_ = []

TfaAddBackupPhoneDetails._all_field_names_ = set([])
TfaAddBackupPhoneDetails._all_fields_ = []

TfaAddSecurityKeyDetails._all_field_names_ = set([])
TfaAddSecurityKeyDetails._all_fields_ = []

TfaChangeBackupPhoneDetails._all_field_names_ = set([])
TfaChangeBackupPhoneDetails._all_fields_ = []

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),
]

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),
]

TfaConfiguration._disabled_validator = bv.Void()
TfaConfiguration._enabled_validator = bv.Void()
TfaConfiguration._sms_validator = bv.Void()
TfaConfiguration._authenticator_validator = bv.Void()
TfaConfiguration._other_validator = bv.Void()
TfaConfiguration._tagmap = {
    'disabled': TfaConfiguration._disabled_validator,
    'enabled': TfaConfiguration._enabled_validator,
    'sms': TfaConfiguration._sms_validator,
    'authenticator': TfaConfiguration._authenticator_validator,
    'other': TfaConfiguration._other_validator,
}

TfaConfiguration.disabled = TfaConfiguration('disabled')
TfaConfiguration.enabled = TfaConfiguration('enabled')
TfaConfiguration.sms = TfaConfiguration('sms')
TfaConfiguration.authenticator = TfaConfiguration('authenticator')
TfaConfiguration.other = TfaConfiguration('other')

TfaRemoveBackupPhoneDetails._all_field_names_ = set([])
TfaRemoveBackupPhoneDetails._all_fields_ = []

TfaRemoveSecurityKeyDetails._all_field_names_ = set([])
TfaRemoveSecurityKeyDetails._all_fields_ = []

TfaResetDetails._all_field_names_ = set([])
TfaResetDetails._all_fields_ = []

TimeUnit._milliseconds_validator = bv.Void()
TimeUnit._seconds_validator = bv.Void()
TimeUnit._minutes_validator = bv.Void()
TimeUnit._hours_validator = bv.Void()
TimeUnit._days_validator = bv.Void()
TimeUnit._weeks_validator = bv.Void()
TimeUnit._months_validator = bv.Void()
TimeUnit._years_validator = bv.Void()
TimeUnit._other_validator = bv.Void()
TimeUnit._tagmap = {
    'milliseconds': TimeUnit._milliseconds_validator,
    'seconds': TimeUnit._seconds_validator,
    'minutes': TimeUnit._minutes_validator,
    'hours': TimeUnit._hours_validator,
    'days': TimeUnit._days_validator,
    'weeks': TimeUnit._weeks_validator,
    'months': TimeUnit._months_validator,
    'years': TimeUnit._years_validator,
    'other': TimeUnit._other_validator,
}

TimeUnit.milliseconds = TimeUnit('milliseconds')
TimeUnit.seconds = TimeUnit('seconds')
TimeUnit.minutes = TimeUnit('minutes')
TimeUnit.hours = TimeUnit('hours')
TimeUnit.days = TimeUnit('days')
TimeUnit.weeks = TimeUnit('weeks')
TimeUnit.months = TimeUnit('months')
TimeUnit.years = TimeUnit('years')
TimeUnit.other = TimeUnit('other')

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),
]

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_

WebSessionLogInfo._field_names_ = set([])
WebSessionLogInfo._all_field_names_ = SessionLogInfo._all_field_names_.union(WebSessionLogInfo._field_names_)
WebSessionLogInfo._fields_ = []
WebSessionLogInfo._all_fields_ = SessionLogInfo._all_fields_ + WebSessionLogInfo._fields_

WebSessionsChangeFixedLengthPolicyDetails._new_value_validator = bv.Nullable(WebSessionsFixedLengthPolicy_validator)
WebSessionsChangeFixedLengthPolicyDetails._previous_value_validator = bv.Nullable(WebSessionsFixedLengthPolicy_validator)
WebSessionsChangeFixedLengthPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
WebSessionsChangeFixedLengthPolicyDetails._all_fields_ = [
    ('new_value', WebSessionsChangeFixedLengthPolicyDetails._new_value_validator),
    ('previous_value', WebSessionsChangeFixedLengthPolicyDetails._previous_value_validator),
]

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),
]

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',
    False,
    GetTeamEventsArg_validator,
    GetTeamEventsResult_validator,
    GetTeamEventsError_validator,
    {'host': u'api',
     'style': u'rpc'},
)
get_events_continue = bb.Route(
    'get_events/continue',
    False,
    GetTeamEventsContinueArg_validator,
    GetTeamEventsResult_validator,
    GetTeamEventsContinueError_validator,
    {'host': u'api',
     'style': u'rpc'},
)

ROUTES = {
    'get_events': get_events,
    'get_events/continue': get_events_continue,
}

