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

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

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

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

    :ivar SessionLogInfo 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 _process_custom_annotations(self, annotation_type, processor):
        super(AccessMethodLogInfo, self)._process_custom_annotations(annotation_type, processor)

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

AccessMethodLogInfo_validator = bv.Union(AccessMethodLogInfo)

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

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

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

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

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

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

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

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

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

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

AccountCaptureAvailability_validator = bv.Union(AccountCaptureAvailability)

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

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(AccountCaptureChangeAvailabilityDetails, self)._process_custom_annotations(annotation_type, processor)

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

AccountCaptureChangeAvailabilityDetails_validator = bv.Struct(AccountCaptureChangeAvailabilityDetails)

class AccountCaptureChangeAvailabilityType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

AccountCaptureChangeAvailabilityType_validator = bv.Struct(AccountCaptureChangeAvailabilityType)

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

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(AccountCaptureChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

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

AccountCaptureChangePolicyDetails_validator = bv.Struct(AccountCaptureChangePolicyDetails)

class AccountCaptureChangePolicyType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

AccountCaptureChangePolicyType_validator = bv.Struct(AccountCaptureChangePolicyType)

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

    :ivar domain_name: Domain name.
    """

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

    _has_required_fields = True

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

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

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

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

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

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

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

AccountCaptureMigrateAccountDetails_validator = bv.Struct(AccountCaptureMigrateAccountDetails)

class AccountCaptureMigrateAccountType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

AccountCaptureMigrateAccountType_validator = bv.Struct(AccountCaptureMigrateAccountType)

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

    :ivar domain_name: Domain name.
    """

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

    _has_required_fields = True

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

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

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

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

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

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

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

AccountCaptureNotificationEmailsSentDetails_validator = bv.Struct(AccountCaptureNotificationEmailsSentDetails)

class AccountCaptureNotificationEmailsSentType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

AccountCaptureNotificationEmailsSentType_validator = bv.Struct(AccountCaptureNotificationEmailsSentType)

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

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

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

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

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

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

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

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

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

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

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

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

AccountCapturePolicy_validator = bv.Union(AccountCapturePolicy)

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

    :ivar domain_name: Domain name.
    """

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

    _has_required_fields = True

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

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

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

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

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

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

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

AccountCaptureRelinquishAccountDetails_validator = bv.Struct(AccountCaptureRelinquishAccountDetails)

class AccountCaptureRelinquishAccountType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

AccountCaptureRelinquishAccountType_validator = bv.Struct(AccountCaptureRelinquishAccountType)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ActionDetails_validator = bv.Union(ActionDetails)

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

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

    :ivar UserLogInfo 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.
    :ivar anonymous: Anonymous actor.
    """

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ActorLogInfo_validator = bv.Union(ActorLogInfo)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AdminRole_validator = bv.Union(AdminRole)

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

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

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

AllowDownloadDisabledDetails_validator = bv.Struct(AllowDownloadDisabledDetails)

class AllowDownloadDisabledType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

AllowDownloadDisabledType_validator = bv.Struct(AllowDownloadDisabledType)

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

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

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

AllowDownloadEnabledDetails_validator = bv.Struct(AllowDownloadEnabledDetails)

class AllowDownloadEnabledType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

AllowDownloadEnabledType_validator = bv.Struct(AllowDownloadEnabledType)

class ApiSessionLogInfo(bb.Struct):
    """
    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 _process_custom_annotations(self, annotation_type, processor):
        super(ApiSessionLogInfo, self)._process_custom_annotations(annotation_type, processor)

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

ApiSessionLogInfo_validator = bv.Struct(ApiSessionLogInfo)

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

    :ivar app_info: Relevant application details.
    """

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

    _has_required_fields = True

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

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

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

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

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

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

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

AppLinkTeamDetails_validator = bv.Struct(AppLinkTeamDetails)

class AppLinkTeamType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

AppLinkTeamType_validator = bv.Struct(AppLinkTeamType)

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

    :ivar app_info: Relevant application details.
    """

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

    _has_required_fields = True

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

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

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

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

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

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

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

AppLinkUserDetails_validator = bv.Struct(AppLinkUserDetails)

class AppLinkUserType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

AppLinkUserType_validator = bv.Struct(AppLinkUserType)

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

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(AppLogInfo, self)._process_custom_annotations(annotation_type, processor)

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

AppLogInfo_validator = bv.StructTree(AppLogInfo)

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

    :ivar app_info: Relevant application details.
    """

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

    _has_required_fields = True

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

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

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

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

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

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

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

AppUnlinkTeamDetails_validator = bv.Struct(AppUnlinkTeamDetails)

class AppUnlinkTeamType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

AppUnlinkTeamType_validator = bv.Struct(AppUnlinkTeamType)

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

    :ivar app_info: Relevant application details.
    """

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

    _has_required_fields = True

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

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

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

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

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

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

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

AppUnlinkUserDetails_validator = bv.Struct(AppUnlinkUserDetails)

class AppUnlinkUserType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

AppUnlinkUserType_validator = bv.Struct(AppUnlinkUserType)

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

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

    :ivar FileLogInfo 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.
    :ivar ShowcaseDocumentLogInfo showcase_document: Showcase document's
        details.
    """

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    def get_paper_document(self):
        """
        Paper 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 get_showcase_document(self):
        """
        Showcase document's details.

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

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

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

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

AssetLogInfo_validator = bv.Union(AssetLogInfo)

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

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

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

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

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

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

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

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

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

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

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

CameraUploadsPolicy_validator = bv.Union(CameraUploadsPolicy)

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

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

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

    _has_required_fields = True

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

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

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

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

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

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

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

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

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

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

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

CameraUploadsPolicyChangedDetails_validator = bv.Struct(CameraUploadsPolicyChangedDetails)

class CameraUploadsPolicyChangedType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

CameraUploadsPolicyChangedType_validator = bv.Struct(CameraUploadsPolicyChangedType)

class Certificate(bb.Struct):
    """
    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:
            return None

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

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

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

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

Certificate_validator = bv.Struct(Certificate)

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

    :ivar album_name: Album name.
    """

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

    _has_required_fields = True

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

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

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

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

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

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

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

CollectionShareDetails_validator = bv.Struct(CollectionShareDetails)

class CollectionShareType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

CollectionShareType_validator = bv.Struct(CollectionShareType)

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

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

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

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

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

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

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

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

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

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

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

ContentPermanentDeletePolicy_validator = bv.Union(ContentPermanentDeletePolicy)

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

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

    :ivar TeamMemberLogInfo 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 anonymous: Anonymous context.
    :ivar team: Action was done on behalf of the team.
    :ivar TrustedNonTeamMemberLogInfo trusted_non_team_member: Action was done
        on behalf of a trusted non team member.
    """

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ContextLogInfo_validator = bv.Union(ContextLogInfo)

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

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

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

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

CreateFolderDetails_validator = bv.Struct(CreateFolderDetails)

class CreateFolderType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

CreateFolderType_validator = bv.Struct(CreateFolderType)

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

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(DataPlacementRestrictionChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

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

DataPlacementRestrictionChangePolicyDetails_validator = bv.Struct(DataPlacementRestrictionChangePolicyDetails)

class DataPlacementRestrictionChangePolicyType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

DataPlacementRestrictionChangePolicyType_validator = bv.Struct(DataPlacementRestrictionChangePolicyType)

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

    :ivar placement_restriction: Placement restriction.
    """

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

    _has_required_fields = True

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

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

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

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

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

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

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

DataPlacementRestrictionSatisfyPolicyDetails_validator = bv.Struct(DataPlacementRestrictionSatisfyPolicyDetails)

class DataPlacementRestrictionSatisfyPolicyType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

DataPlacementRestrictionSatisfyPolicyType_validator = bv.Struct(DataPlacementRestrictionSatisfyPolicyType)

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

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

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

    _has_required_fields = False

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DeviceSessionLogInfo_validator = bv.StructTree(DeviceSessionLogInfo)

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

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

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

    _has_required_fields = True

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DesktopDeviceSessionLogInfo_validator = bv.Struct(DesktopDeviceSessionLogInfo)

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

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

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

    _has_required_fields = False

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

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

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

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

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

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

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

SessionLogInfo_validator = bv.StructTree(SessionLogInfo)

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

    __slots__ = [
    ]

    _has_required_fields = False

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

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

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

DesktopSessionLogInfo_validator = bv.Struct(DesktopSessionLogInfo)

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

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(DeviceApprovalsChangeDesktopPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

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

DeviceApprovalsChangeDesktopPolicyDetails_validator = bv.Struct(DeviceApprovalsChangeDesktopPolicyDetails)

class DeviceApprovalsChangeDesktopPolicyType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

DeviceApprovalsChangeDesktopPolicyType_validator = bv.Struct(DeviceApprovalsChangeDesktopPolicyType)

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

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(DeviceApprovalsChangeMobilePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

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

DeviceApprovalsChangeMobilePolicyDetails_validator = bv.Struct(DeviceApprovalsChangeMobilePolicyDetails)

class DeviceApprovalsChangeMobilePolicyType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

DeviceApprovalsChangeMobilePolicyType_validator = bv.Struct(DeviceApprovalsChangeMobilePolicyType)

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

    :ivar 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
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

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

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

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

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

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

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

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

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

DeviceApprovalsChangeOverageActionDetails_validator = bv.Struct(DeviceApprovalsChangeOverageActionDetails)

class DeviceApprovalsChangeOverageActionType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

DeviceApprovalsChangeOverageActionType_validator = bv.Struct(DeviceApprovalsChangeOverageActionType)

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

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(DeviceApprovalsChangeUnlinkActionDetails, self)._process_custom_annotations(annotation_type, processor)

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

DeviceApprovalsChangeUnlinkActionDetails_validator = bv.Struct(DeviceApprovalsChangeUnlinkActionDetails)

class DeviceApprovalsChangeUnlinkActionType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

DeviceApprovalsChangeUnlinkActionType_validator = bv.Struct(DeviceApprovalsChangeUnlinkActionType)

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

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

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

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

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

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

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

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

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

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

DeviceApprovalsPolicy_validator = bv.Union(DeviceApprovalsPolicy)

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

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

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

    _has_required_fields = True

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

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

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

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

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

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

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

DeviceChangeIpDesktopDetails_validator = bv.Struct(DeviceChangeIpDesktopDetails)

class DeviceChangeIpDesktopType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

DeviceChangeIpDesktopType_validator = bv.Struct(DeviceChangeIpDesktopType)

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

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

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

    _has_required_fields = False

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

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

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

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

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

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

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

DeviceChangeIpMobileDetails_validator = bv.Struct(DeviceChangeIpMobileDetails)

class DeviceChangeIpMobileType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

DeviceChangeIpMobileType_validator = bv.Struct(DeviceChangeIpMobileType)

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

    :ivar user_agent: Web browser name.
    """

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

    _has_required_fields = True

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

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

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

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

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

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

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

DeviceChangeIpWebDetails_validator = bv.Struct(DeviceChangeIpWebDetails)

class DeviceChangeIpWebType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

DeviceChangeIpWebType_validator = bv.Struct(DeviceChangeIpWebType)

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

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

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

    _has_required_fields = True

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DeviceDeleteOnUnlinkFailDetails_validator = bv.Struct(DeviceDeleteOnUnlinkFailDetails)

class DeviceDeleteOnUnlinkFailType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

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

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

DeviceDeleteOnUnlinkFailType_validator = bv.Struct(DeviceDeleteOnUnlinkFailType)

class DeviceDeleteOnUnlinkSuccessDetails(bb.Struct):
    """
    Deleted all files from unlinked device.

    :ivar session_info: Session unique id. Might be missing due to historical
        data gap.
    :ivar display_name: The device name. Might be missing due to historical data
        gap.
    """

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

    _has_required_fields = False

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

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

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

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

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

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DeviceDeleteOnUnlinkSuccessDetails, self)._process_custom_annotations(annotation_type, processor)

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

DeviceDeleteOnUnlinkSuccessDetails_validator = bv.Struct(DeviceDeleteOnUnlinkSuccessDetails)

class DeviceDeleteOnUnlinkSuccessType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DeviceDeleteOnUnlinkSuccessType, self)._process_custom_annotations(annotation_type, processor)

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

DeviceDeleteOnUnlinkSuccessType_validator = bv.Struct(DeviceDeleteOnUnlinkSuccessType)

class DeviceLinkFailDetails(bb.Struct):
    """
    Failed to link device.

    :ivar ip_address: IP address. Might be missing due to historical data gap.
    :ivar device_type: A description of the device used while user approval
        blocked.
    """

    __slots__ = [
        '_ip_address_value',
        '_ip_address_present',
        '_device_type_value',
        '_device_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 device_type=None,
                 ip_address=None):
        self._ip_address_value = None
        self._ip_address_present = False
        self._device_type_value = None
        self._device_type_present = False
        if ip_address is not None:
            self.ip_address = ip_address
        if device_type is not None:
            self.device_type = device_type

    @property
    def ip_address(self):
        """
        IP address. Might be missing due to historical data gap.

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

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

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

    @property
    def device_type(self):
        """
        A description of the device used while user approval blocked.

        :rtype: DeviceType
        """
        if self._device_type_present:
            return self._device_type_value
        else:
            raise AttributeError("missing required field 'device_type'")

    @device_type.setter
    def device_type(self, val):
        self._device_type_validator.validate_type_only(val)
        self._device_type_value = val
        self._device_type_present = True

    @device_type.deleter
    def device_type(self):
        self._device_type_value = None
        self._device_type_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(DeviceLinkFailDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'DeviceLinkFailDetails(device_type={!r}, ip_address={!r})'.format(
            self._device_type_value,
            self._ip_address_value,
        )

DeviceLinkFailDetails_validator = bv.Struct(DeviceLinkFailDetails)

class DeviceLinkFailType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DeviceLinkFailType, self)._process_custom_annotations(annotation_type, processor)

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

DeviceLinkFailType_validator = bv.Struct(DeviceLinkFailType)

class DeviceLinkSuccessDetails(bb.Struct):
    """
    Linked device.

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

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

    _has_required_fields = False

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

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DeviceLinkSuccessDetails, self)._process_custom_annotations(annotation_type, processor)

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

DeviceLinkSuccessDetails_validator = bv.Struct(DeviceLinkSuccessDetails)

class DeviceLinkSuccessType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DeviceLinkSuccessType, self)._process_custom_annotations(annotation_type, processor)

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

DeviceLinkSuccessType_validator = bv.Struct(DeviceLinkSuccessType)

class DeviceManagementDisabledDetails(bb.Struct):
    """
    Disabled device management.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(DeviceManagementDisabledDetails, self)._process_custom_annotations(annotation_type, processor)

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

DeviceManagementDisabledDetails_validator = bv.Struct(DeviceManagementDisabledDetails)

class DeviceManagementDisabledType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DeviceManagementDisabledType, self)._process_custom_annotations(annotation_type, processor)

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

DeviceManagementDisabledType_validator = bv.Struct(DeviceManagementDisabledType)

class DeviceManagementEnabledDetails(bb.Struct):
    """
    Enabled device management.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(DeviceManagementEnabledDetails, self)._process_custom_annotations(annotation_type, processor)

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

DeviceManagementEnabledDetails_validator = bv.Struct(DeviceManagementEnabledDetails)

class DeviceManagementEnabledType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DeviceManagementEnabledType, self)._process_custom_annotations(annotation_type, processor)

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

DeviceManagementEnabledType_validator = bv.Struct(DeviceManagementEnabledType)

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

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

    def is_desktop(self):
        """
        Check if the union tag is ``desktop``.

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

    def is_mobile(self):
        """
        Check if the union tag is ``mobile``.

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DeviceType, self)._process_custom_annotations(annotation_type, processor)

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

DeviceType_validator = bv.Union(DeviceType)

class DeviceUnlinkDetails(bb.Struct):
    """
    Disconnected device.

    :ivar session_info: Session unique id.
    :ivar display_name: The device name. Might be missing due to historical data
        gap.
    :ivar delete_data: True if the user requested to delete data after device
        unlink, false otherwise.
    """

    __slots__ = [
        '_session_info_value',
        '_session_info_present',
        '_display_name_value',
        '_display_name_present',
        '_delete_data_value',
        '_delete_data_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 delete_data=None,
                 session_info=None,
                 display_name=None):
        self._session_info_value = None
        self._session_info_present = False
        self._display_name_value = None
        self._display_name_present = False
        self._delete_data_value = None
        self._delete_data_present = False
        if session_info is not None:
            self.session_info = session_info
        if display_name is not None:
            self.display_name = display_name
        if delete_data is not None:
            self.delete_data = delete_data

    @property
    def session_info(self):
        """
        Session unique id.

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

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

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

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

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

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

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

    @property
    def delete_data(self):
        """
        True if the user requested to delete data after device unlink, false
        otherwise.

        :rtype: bool
        """
        if self._delete_data_present:
            return self._delete_data_value
        else:
            raise AttributeError("missing required field 'delete_data'")

    @delete_data.setter
    def delete_data(self, val):
        val = self._delete_data_validator.validate(val)
        self._delete_data_value = val
        self._delete_data_present = True

    @delete_data.deleter
    def delete_data(self):
        self._delete_data_value = None
        self._delete_data_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(DeviceUnlinkDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'DeviceUnlinkDetails(delete_data={!r}, session_info={!r}, display_name={!r})'.format(
            self._delete_data_value,
            self._session_info_value,
            self._display_name_value,
        )

DeviceUnlinkDetails_validator = bv.Struct(DeviceUnlinkDetails)

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

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

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

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

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DeviceUnlinkPolicy, self)._process_custom_annotations(annotation_type, processor)

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

DeviceUnlinkPolicy_validator = bv.Union(DeviceUnlinkPolicy)

class DeviceUnlinkType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DeviceUnlinkType, self)._process_custom_annotations(annotation_type, processor)

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

DeviceUnlinkType_validator = bv.Struct(DeviceUnlinkType)

class DirectoryRestrictionsAddMembersDetails(bb.Struct):
    """
    Added members to directory restrictions list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(DirectoryRestrictionsAddMembersDetails, self)._process_custom_annotations(annotation_type, processor)

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

DirectoryRestrictionsAddMembersDetails_validator = bv.Struct(DirectoryRestrictionsAddMembersDetails)

class DirectoryRestrictionsAddMembersType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DirectoryRestrictionsAddMembersType, self)._process_custom_annotations(annotation_type, processor)

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

DirectoryRestrictionsAddMembersType_validator = bv.Struct(DirectoryRestrictionsAddMembersType)

class DirectoryRestrictionsRemoveMembersDetails(bb.Struct):
    """
    Removed members from directory restrictions list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(DirectoryRestrictionsRemoveMembersDetails, self)._process_custom_annotations(annotation_type, processor)

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

DirectoryRestrictionsRemoveMembersDetails_validator = bv.Struct(DirectoryRestrictionsRemoveMembersDetails)

class DirectoryRestrictionsRemoveMembersType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DirectoryRestrictionsRemoveMembersType, self)._process_custom_annotations(annotation_type, processor)

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

DirectoryRestrictionsRemoveMembersType_validator = bv.Struct(DirectoryRestrictionsRemoveMembersType)

class DisabledDomainInvitesDetails(bb.Struct):
    """
    Disabled domain invites.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(DisabledDomainInvitesDetails, self)._process_custom_annotations(annotation_type, processor)

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

DisabledDomainInvitesDetails_validator = bv.Struct(DisabledDomainInvitesDetails)

class DisabledDomainInvitesType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DisabledDomainInvitesType, self)._process_custom_annotations(annotation_type, processor)

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

DisabledDomainInvitesType_validator = bv.Struct(DisabledDomainInvitesType)

class DomainInvitesApproveRequestToJoinTeamDetails(bb.Struct):
    """
    Approved user's request to join team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainInvitesApproveRequestToJoinTeamDetails, self)._process_custom_annotations(annotation_type, processor)

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

DomainInvitesApproveRequestToJoinTeamDetails_validator = bv.Struct(DomainInvitesApproveRequestToJoinTeamDetails)

class DomainInvitesApproveRequestToJoinTeamType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainInvitesApproveRequestToJoinTeamType, self)._process_custom_annotations(annotation_type, processor)

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

DomainInvitesApproveRequestToJoinTeamType_validator = bv.Struct(DomainInvitesApproveRequestToJoinTeamType)

class DomainInvitesDeclineRequestToJoinTeamDetails(bb.Struct):
    """
    Declined user's request to join team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainInvitesDeclineRequestToJoinTeamDetails, self)._process_custom_annotations(annotation_type, processor)

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

DomainInvitesDeclineRequestToJoinTeamDetails_validator = bv.Struct(DomainInvitesDeclineRequestToJoinTeamDetails)

class DomainInvitesDeclineRequestToJoinTeamType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainInvitesDeclineRequestToJoinTeamType, self)._process_custom_annotations(annotation_type, processor)

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

DomainInvitesDeclineRequestToJoinTeamType_validator = bv.Struct(DomainInvitesDeclineRequestToJoinTeamType)

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

    :ivar 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: str
        """
        if self._domain_name_present:
            return self._domain_name_value
        else:
            raise AttributeError("missing required field 'domain_name'")

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

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

    @property
    def num_recipients(self):
        """
        Number of recipients.

        :rtype: int
        """
        if self._num_recipients_present:
            return self._num_recipients_value
        else:
            raise AttributeError("missing required field 'num_recipients'")

    @num_recipients.setter
    def num_recipients(self, val):
        val = self._num_recipients_validator.validate(val)
        self._num_recipients_value = val
        self._num_recipients_present = True

    @num_recipients.deleter
    def num_recipients(self):
        self._num_recipients_value = None
        self._num_recipients_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainInvitesEmailExistingUsersDetails, self)._process_custom_annotations(annotation_type, processor)

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

DomainInvitesEmailExistingUsersDetails_validator = bv.Struct(DomainInvitesEmailExistingUsersDetails)

class DomainInvitesEmailExistingUsersType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainInvitesEmailExistingUsersType, self)._process_custom_annotations(annotation_type, processor)

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

DomainInvitesEmailExistingUsersType_validator = bv.Struct(DomainInvitesEmailExistingUsersType)

class DomainInvitesRequestToJoinTeamDetails(bb.Struct):
    """
    Requested to join team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainInvitesRequestToJoinTeamDetails, self)._process_custom_annotations(annotation_type, processor)

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

DomainInvitesRequestToJoinTeamDetails_validator = bv.Struct(DomainInvitesRequestToJoinTeamDetails)

class DomainInvitesRequestToJoinTeamType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainInvitesRequestToJoinTeamType, self)._process_custom_annotations(annotation_type, processor)

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

DomainInvitesRequestToJoinTeamType_validator = bv.Struct(DomainInvitesRequestToJoinTeamType)

class DomainInvitesSetInviteNewUserPrefToNoDetails(bb.Struct):
    """
    Disabled "Automatically invite new users".
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainInvitesSetInviteNewUserPrefToNoDetails, self)._process_custom_annotations(annotation_type, processor)

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

DomainInvitesSetInviteNewUserPrefToNoDetails_validator = bv.Struct(DomainInvitesSetInviteNewUserPrefToNoDetails)

class DomainInvitesSetInviteNewUserPrefToNoType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainInvitesSetInviteNewUserPrefToNoType, self)._process_custom_annotations(annotation_type, processor)

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

DomainInvitesSetInviteNewUserPrefToNoType_validator = bv.Struct(DomainInvitesSetInviteNewUserPrefToNoType)

class DomainInvitesSetInviteNewUserPrefToYesDetails(bb.Struct):
    """
    Enabled "Automatically invite new users".
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainInvitesSetInviteNewUserPrefToYesDetails, self)._process_custom_annotations(annotation_type, processor)

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

DomainInvitesSetInviteNewUserPrefToYesDetails_validator = bv.Struct(DomainInvitesSetInviteNewUserPrefToYesDetails)

class DomainInvitesSetInviteNewUserPrefToYesType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainInvitesSetInviteNewUserPrefToYesType, self)._process_custom_annotations(annotation_type, processor)

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

DomainInvitesSetInviteNewUserPrefToYesType_validator = bv.Struct(DomainInvitesSetInviteNewUserPrefToYesType)

class DomainVerificationAddDomainFailDetails(bb.Struct):
    """
    Failed to verify team domain.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(DomainVerificationAddDomainFailDetails, self)._process_custom_annotations(annotation_type, processor)

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

DomainVerificationAddDomainFailDetails_validator = bv.Struct(DomainVerificationAddDomainFailDetails)

class DomainVerificationAddDomainFailType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainVerificationAddDomainFailType, self)._process_custom_annotations(annotation_type, processor)

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

DomainVerificationAddDomainFailType_validator = bv.Struct(DomainVerificationAddDomainFailType)

class DomainVerificationAddDomainSuccessDetails(bb.Struct):
    """
    Verified team domain.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(DomainVerificationAddDomainSuccessDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'DomainVerificationAddDomainSuccessDetails(domain_names={!r}, verification_method={!r})'.format(
            self._domain_names_value,
            self._verification_method_value,
        )

DomainVerificationAddDomainSuccessDetails_validator = bv.Struct(DomainVerificationAddDomainSuccessDetails)

class DomainVerificationAddDomainSuccessType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainVerificationAddDomainSuccessType, self)._process_custom_annotations(annotation_type, processor)

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

DomainVerificationAddDomainSuccessType_validator = bv.Struct(DomainVerificationAddDomainSuccessType)

class DomainVerificationRemoveDomainDetails(bb.Struct):
    """
    Removed domain from list of verified team domains.

    :ivar domain_names: Domain names.
    """

    __slots__ = [
        '_domain_names_value',
        '_domain_names_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 domain_names=None):
        self._domain_names_value = None
        self._domain_names_present = False
        if domain_names is not None:
            self.domain_names = domain_names

    @property
    def domain_names(self):
        """
        Domain names.

        :rtype: list of [str]
        """
        if self._domain_names_present:
            return self._domain_names_value
        else:
            raise AttributeError("missing required field 'domain_names'")

    @domain_names.setter
    def domain_names(self, val):
        val = self._domain_names_validator.validate(val)
        self._domain_names_value = val
        self._domain_names_present = True

    @domain_names.deleter
    def domain_names(self):
        self._domain_names_value = None
        self._domain_names_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainVerificationRemoveDomainDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'DomainVerificationRemoveDomainDetails(domain_names={!r})'.format(
            self._domain_names_value,
        )

DomainVerificationRemoveDomainDetails_validator = bv.Struct(DomainVerificationRemoveDomainDetails)

class DomainVerificationRemoveDomainType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DomainVerificationRemoveDomainType, self)._process_custom_annotations(annotation_type, processor)

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

DomainVerificationRemoveDomainType_validator = bv.Struct(DomainVerificationRemoveDomainType)

class DownloadPolicyType(bb.Union):
    """
    Shared content downloads policy

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

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

    def is_allow(self):
        """
        Check if the union tag is ``allow``.

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

    def is_disallow(self):
        """
        Check if the union tag is ``disallow``.

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(DownloadPolicyType, self)._process_custom_annotations(annotation_type, processor)

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

DownloadPolicyType_validator = bv.Union(DownloadPolicyType)

class DurationLogInfo(bb.Struct):
    """
    Represents a time duration: unit and amount

    :ivar 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: int
        """
        if self._amount_present:
            return self._amount_value
        else:
            raise AttributeError("missing required field 'amount'")

    @amount.setter
    def amount(self, val):
        val = self._amount_validator.validate(val)
        self._amount_value = val
        self._amount_present = True

    @amount.deleter
    def amount(self):
        self._amount_value = None
        self._amount_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(DurationLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'DurationLogInfo(unit={!r}, amount={!r})'.format(
            self._unit_value,
            self._amount_value,
        )

DurationLogInfo_validator = bv.Struct(DurationLogInfo)

class EmmAddExceptionDetails(bb.Struct):
    """
    Added members to EMM exception list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(EmmAddExceptionDetails, self)._process_custom_annotations(annotation_type, processor)

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

EmmAddExceptionDetails_validator = bv.Struct(EmmAddExceptionDetails)

class EmmAddExceptionType(bb.Struct):

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

    _has_required_fields = True

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(EmmAddExceptionType, self)._process_custom_annotations(annotation_type, processor)

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

EmmAddExceptionType_validator = bv.Struct(EmmAddExceptionType)

class EmmChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled enterprise mobility management for members.

    :ivar 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
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

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

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

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

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

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

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

    def _process_custom_annotations(self, annotation_type, processor):
        super(EmmChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EmmChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

EmmChangePolicyDetails_validator = bv.Struct(EmmChangePolicyDetails)

class EmmChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(EmmChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EmmChangePolicyType(description={!r})'.format(
            self._description_value,
        )

EmmChangePolicyType_validator = bv.Struct(EmmChangePolicyType)

class EmmCreateExceptionsReportDetails(bb.Struct):
    """
    Created EMM-excluded users report.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(EmmCreateExceptionsReportDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EmmCreateExceptionsReportDetails()'

EmmCreateExceptionsReportDetails_validator = bv.Struct(EmmCreateExceptionsReportDetails)

class EmmCreateExceptionsReportType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(EmmCreateExceptionsReportType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EmmCreateExceptionsReportType(description={!r})'.format(
            self._description_value,
        )

EmmCreateExceptionsReportType_validator = bv.Struct(EmmCreateExceptionsReportType)

class EmmCreateUsageReportDetails(bb.Struct):
    """
    Created EMM mobile app usage report.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(EmmCreateUsageReportDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EmmCreateUsageReportDetails()'

EmmCreateUsageReportDetails_validator = bv.Struct(EmmCreateUsageReportDetails)

class EmmCreateUsageReportType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(EmmCreateUsageReportType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EmmCreateUsageReportType(description={!r})'.format(
            self._description_value,
        )

EmmCreateUsageReportType_validator = bv.Struct(EmmCreateUsageReportType)

class EmmErrorDetails(bb.Struct):
    """
    Failed to sign in via EMM.

    :ivar error_details: Error details.
    """

    __slots__ = [
        '_error_details_value',
        '_error_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 error_details=None):
        self._error_details_value = None
        self._error_details_present = False
        if error_details is not None:
            self.error_details = error_details

    @property
    def error_details(self):
        """
        Error details.

        :rtype: FailureDetailsLogInfo
        """
        if self._error_details_present:
            return self._error_details_value
        else:
            raise AttributeError("missing required field 'error_details'")

    @error_details.setter
    def error_details(self, val):
        self._error_details_validator.validate_type_only(val)
        self._error_details_value = val
        self._error_details_present = True

    @error_details.deleter
    def error_details(self):
        self._error_details_value = None
        self._error_details_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(EmmErrorDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EmmErrorDetails(error_details={!r})'.format(
            self._error_details_value,
        )

EmmErrorDetails_validator = bv.Struct(EmmErrorDetails)

class EmmErrorType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(EmmErrorType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EmmErrorType(description={!r})'.format(
            self._description_value,
        )

EmmErrorType_validator = bv.Struct(EmmErrorType)

class EmmRefreshAuthTokenDetails(bb.Struct):
    """
    Refreshed auth token used for setting up enterprise mobility management.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(EmmRefreshAuthTokenDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EmmRefreshAuthTokenDetails()'

EmmRefreshAuthTokenDetails_validator = bv.Struct(EmmRefreshAuthTokenDetails)

class EmmRefreshAuthTokenType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(EmmRefreshAuthTokenType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EmmRefreshAuthTokenType(description={!r})'.format(
            self._description_value,
        )

EmmRefreshAuthTokenType_validator = bv.Struct(EmmRefreshAuthTokenType)

class EmmRemoveExceptionDetails(bb.Struct):
    """
    Removed members from EMM exception list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(EmmRemoveExceptionDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EmmRemoveExceptionDetails()'

EmmRemoveExceptionDetails_validator = bv.Struct(EmmRemoveExceptionDetails)

class EmmRemoveExceptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(EmmRemoveExceptionType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EmmRemoveExceptionType(description={!r})'.format(
            self._description_value,
        )

EmmRemoveExceptionType_validator = bv.Struct(EmmRemoveExceptionType)

class EnabledDomainInvitesDetails(bb.Struct):
    """
    Enabled domain invites.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(EnabledDomainInvitesDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EnabledDomainInvitesDetails()'

EnabledDomainInvitesDetails_validator = bv.Struct(EnabledDomainInvitesDetails)

class EnabledDomainInvitesType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(EnabledDomainInvitesType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EnabledDomainInvitesType(description={!r})'.format(
            self._description_value,
        )

EnabledDomainInvitesType_validator = bv.Struct(EnabledDomainInvitesType)

class EventCategory(bb.Union):
    """
    Category of events in event audit log.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar apps: Events that apply to management of linked apps.
    :ivar comments: Events that have to do with comments on files and Paper
        documents.
    :ivar devices: Events that apply to linked devices on mobile, desktop and
        Web platforms.
    :ivar domains: Events that involve domain management feature: domain
        verification, invite enforcement and account capture.
    :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 sharing: Events that apply to all types of sharing and collaboration.
    :ivar showcase: Events that apply to Dropbox Showcase.
    :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
    apps = None
    # Attribute is overwritten below the class definition
    comments = None
    # Attribute is overwritten below the class definition
    devices = None
    # Attribute is overwritten below the class definition
    domains = None
    # Attribute is overwritten below the class definition
    file_operations = None
    # Attribute is overwritten below the class definition
    file_requests = None
    # Attribute is overwritten below the class definition
    groups = None
    # Attribute is overwritten below the class definition
    logins = None
    # Attribute is overwritten below the class definition
    members = None
    # Attribute is overwritten below the class definition
    paper = None
    # Attribute is overwritten below the class definition
    passwords = None
    # Attribute is overwritten below the class definition
    reports = None
    # Attribute is overwritten below the class definition
    sharing = None
    # Attribute is overwritten below the class definition
    showcase = None
    # Attribute is overwritten below the class definition
    sso = None
    # Attribute is overwritten below the class definition
    team_folders = None
    # Attribute is overwritten below the class definition
    team_policies = None
    # Attribute is overwritten below the class definition
    team_profile = None
    # Attribute is overwritten below the class definition
    tfa = None
    # Attribute is overwritten below the class definition
    other = None

    def is_apps(self):
        """
        Check if the union tag is ``apps``.

        :rtype: bool
        """
        return self._tag == 'apps'

    def is_comments(self):
        """
        Check if the union tag is ``comments``.

        :rtype: bool
        """
        return self._tag == 'comments'

    def is_devices(self):
        """
        Check if the union tag is ``devices``.

        :rtype: bool
        """
        return self._tag == 'devices'

    def is_domains(self):
        """
        Check if the union tag is ``domains``.

        :rtype: bool
        """
        return self._tag == 'domains'

    def is_file_operations(self):
        """
        Check if the union tag is ``file_operations``.

        :rtype: bool
        """
        return self._tag == 'file_operations'

    def is_file_requests(self):
        """
        Check if the union tag is ``file_requests``.

        :rtype: bool
        """
        return self._tag == 'file_requests'

    def is_groups(self):
        """
        Check if the union tag is ``groups``.

        :rtype: bool
        """
        return self._tag == 'groups'

    def is_logins(self):
        """
        Check if the union tag is ``logins``.

        :rtype: bool
        """
        return self._tag == 'logins'

    def is_members(self):
        """
        Check if the union tag is ``members``.

        :rtype: bool
        """
        return self._tag == 'members'

    def is_paper(self):
        """
        Check if the union tag is ``paper``.

        :rtype: bool
        """
        return self._tag == 'paper'

    def is_passwords(self):
        """
        Check if the union tag is ``passwords``.

        :rtype: bool
        """
        return self._tag == 'passwords'

    def is_reports(self):
        """
        Check if the union tag is ``reports``.

        :rtype: bool
        """
        return self._tag == 'reports'

    def is_sharing(self):
        """
        Check if the union tag is ``sharing``.

        :rtype: bool
        """
        return self._tag == 'sharing'

    def is_showcase(self):
        """
        Check if the union tag is ``showcase``.

        :rtype: bool
        """
        return self._tag == 'showcase'

    def is_sso(self):
        """
        Check if the union tag is ``sso``.

        :rtype: bool
        """
        return self._tag == 'sso'

    def is_team_folders(self):
        """
        Check if the union tag is ``team_folders``.

        :rtype: bool
        """
        return self._tag == 'team_folders'

    def is_team_policies(self):
        """
        Check if the union tag is ``team_policies``.

        :rtype: bool
        """
        return self._tag == 'team_policies'

    def is_team_profile(self):
        """
        Check if the union tag is ``team_profile``.

        :rtype: bool
        """
        return self._tag == 'team_profile'

    def is_tfa(self):
        """
        Check if the union tag is ``tfa``.

        :rtype: bool
        """
        return self._tag == 'tfa'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(EventCategory, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EventCategory(%r, %r)' % (self._tag, self._value)

EventCategory_validator = bv.Union(EventCategory)

class EventDetails(bb.Union):
    """
    Additional fields depending on the event type.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar MissingDetails missing_details: Hints that this event was returned
        with missing details due to an internal error.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def app_link_team_details(cls, val):
        """
        Create an instance of this class set to the ``app_link_team_details``
        tag with value ``val``.

        :param AppLinkTeamDetails val:
        :rtype: EventDetails
        """
        return cls('app_link_team_details', val)

    @classmethod
    def app_link_user_details(cls, val):
        """
        Create an instance of this class set to the ``app_link_user_details``
        tag with value ``val``.

        :param AppLinkUserDetails val:
        :rtype: EventDetails
        """
        return cls('app_link_user_details', val)

    @classmethod
    def app_unlink_team_details(cls, val):
        """
        Create an instance of this class set to the ``app_unlink_team_details``
        tag with value ``val``.

        :param AppUnlinkTeamDetails val:
        :rtype: EventDetails
        """
        return cls('app_unlink_team_details', val)

    @classmethod
    def app_unlink_user_details(cls, val):
        """
        Create an instance of this class set to the ``app_unlink_user_details``
        tag with value ``val``.

        :param AppUnlinkUserDetails val:
        :rtype: EventDetails
        """
        return cls('app_unlink_user_details', val)

    @classmethod
    def file_add_comment_details(cls, val):
        """
        Create an instance of this class set to the ``file_add_comment_details``
        tag with value ``val``.

        :param FileAddCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_add_comment_details', val)

    @classmethod
    def file_change_comment_subscription_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_change_comment_subscription_details`` tag with value ``val``.

        :param FileChangeCommentSubscriptionDetails val:
        :rtype: EventDetails
        """
        return cls('file_change_comment_subscription_details', val)

    @classmethod
    def file_delete_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_delete_comment_details`` tag with value ``val``.

        :param FileDeleteCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_delete_comment_details', val)

    @classmethod
    def file_edit_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_edit_comment_details`` tag with value ``val``.

        :param FileEditCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_edit_comment_details', val)

    @classmethod
    def file_like_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_like_comment_details`` tag with value ``val``.

        :param FileLikeCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_like_comment_details', val)

    @classmethod
    def file_resolve_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_resolve_comment_details`` tag with value ``val``.

        :param FileResolveCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_resolve_comment_details', val)

    @classmethod
    def file_unlike_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_unlike_comment_details`` tag with value ``val``.

        :param FileUnlikeCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_unlike_comment_details', val)

    @classmethod
    def file_unresolve_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_unresolve_comment_details`` tag with value ``val``.

        :param FileUnresolveCommentDetails val:
        :rtype: EventDetails
        """
        return cls('file_unresolve_comment_details', val)

    @classmethod
    def device_change_ip_desktop_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_change_ip_desktop_details`` tag with value ``val``.

        :param DeviceChangeIpDesktopDetails val:
        :rtype: EventDetails
        """
        return cls('device_change_ip_desktop_details', val)

    @classmethod
    def device_change_ip_mobile_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_change_ip_mobile_details`` tag with value ``val``.

        :param DeviceChangeIpMobileDetails val:
        :rtype: EventDetails
        """
        return cls('device_change_ip_mobile_details', val)

    @classmethod
    def device_change_ip_web_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_change_ip_web_details`` tag with value ``val``.

        :param DeviceChangeIpWebDetails val:
        :rtype: EventDetails
        """
        return cls('device_change_ip_web_details', val)

    @classmethod
    def device_delete_on_unlink_fail_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_delete_on_unlink_fail_details`` tag with value ``val``.

        :param DeviceDeleteOnUnlinkFailDetails val:
        :rtype: EventDetails
        """
        return cls('device_delete_on_unlink_fail_details', val)

    @classmethod
    def device_delete_on_unlink_success_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_delete_on_unlink_success_details`` tag with value ``val``.

        :param DeviceDeleteOnUnlinkSuccessDetails val:
        :rtype: EventDetails
        """
        return cls('device_delete_on_unlink_success_details', val)

    @classmethod
    def device_link_fail_details(cls, val):
        """
        Create an instance of this class set to the ``device_link_fail_details``
        tag with value ``val``.

        :param DeviceLinkFailDetails val:
        :rtype: EventDetails
        """
        return cls('device_link_fail_details', val)

    @classmethod
    def device_link_success_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_link_success_details`` tag with value ``val``.

        :param DeviceLinkSuccessDetails val:
        :rtype: EventDetails
        """
        return cls('device_link_success_details', val)

    @classmethod
    def device_management_disabled_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_management_disabled_details`` tag with value ``val``.

        :param DeviceManagementDisabledDetails val:
        :rtype: EventDetails
        """
        return cls('device_management_disabled_details', val)

    @classmethod
    def device_management_enabled_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_management_enabled_details`` tag with value ``val``.

        :param DeviceManagementEnabledDetails val:
        :rtype: EventDetails
        """
        return cls('device_management_enabled_details', val)

    @classmethod
    def device_unlink_details(cls, val):
        """
        Create an instance of this class set to the ``device_unlink_details``
        tag with value ``val``.

        :param DeviceUnlinkDetails val:
        :rtype: EventDetails
        """
        return cls('device_unlink_details', val)

    @classmethod
    def emm_refresh_auth_token_details(cls, val):
        """
        Create an instance of this class set to the
        ``emm_refresh_auth_token_details`` tag with value ``val``.

        :param EmmRefreshAuthTokenDetails val:
        :rtype: EventDetails
        """
        return cls('emm_refresh_auth_token_details', val)

    @classmethod
    def account_capture_change_availability_details(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_change_availability_details`` tag with value ``val``.

        :param AccountCaptureChangeAvailabilityDetails val:
        :rtype: EventDetails
        """
        return cls('account_capture_change_availability_details', val)

    @classmethod
    def account_capture_migrate_account_details(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_migrate_account_details`` tag with value ``val``.

        :param AccountCaptureMigrateAccountDetails val:
        :rtype: EventDetails
        """
        return cls('account_capture_migrate_account_details', val)

    @classmethod
    def account_capture_notification_emails_sent_details(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_notification_emails_sent_details`` tag with value
        ``val``.

        :param AccountCaptureNotificationEmailsSentDetails val:
        :rtype: EventDetails
        """
        return cls('account_capture_notification_emails_sent_details', val)

    @classmethod
    def account_capture_relinquish_account_details(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_relinquish_account_details`` tag with value ``val``.

        :param AccountCaptureRelinquishAccountDetails val:
        :rtype: EventDetails
        """
        return cls('account_capture_relinquish_account_details', val)

    @classmethod
    def disabled_domain_invites_details(cls, val):
        """
        Create an instance of this class set to the
        ``disabled_domain_invites_details`` tag with value ``val``.

        :param DisabledDomainInvitesDetails val:
        :rtype: EventDetails
        """
        return cls('disabled_domain_invites_details', val)

    @classmethod
    def domain_invites_approve_request_to_join_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_approve_request_to_join_team_details`` tag with value
        ``val``.

        :param DomainInvitesApproveRequestToJoinTeamDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_approve_request_to_join_team_details', val)

    @classmethod
    def domain_invites_decline_request_to_join_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_decline_request_to_join_team_details`` tag with value
        ``val``.

        :param DomainInvitesDeclineRequestToJoinTeamDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_decline_request_to_join_team_details', val)

    @classmethod
    def domain_invites_email_existing_users_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_email_existing_users_details`` tag with value ``val``.

        :param DomainInvitesEmailExistingUsersDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_email_existing_users_details', val)

    @classmethod
    def domain_invites_request_to_join_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_request_to_join_team_details`` tag with value ``val``.

        :param DomainInvitesRequestToJoinTeamDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_request_to_join_team_details', val)

    @classmethod
    def domain_invites_set_invite_new_user_pref_to_no_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_set_invite_new_user_pref_to_no_details`` tag with value
        ``val``.

        :param DomainInvitesSetInviteNewUserPrefToNoDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_set_invite_new_user_pref_to_no_details', val)

    @classmethod
    def domain_invites_set_invite_new_user_pref_to_yes_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_set_invite_new_user_pref_to_yes_details`` tag with
        value ``val``.

        :param DomainInvitesSetInviteNewUserPrefToYesDetails val:
        :rtype: EventDetails
        """
        return cls('domain_invites_set_invite_new_user_pref_to_yes_details', val)

    @classmethod
    def domain_verification_add_domain_fail_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_verification_add_domain_fail_details`` tag with value ``val``.

        :param DomainVerificationAddDomainFailDetails val:
        :rtype: EventDetails
        """
        return cls('domain_verification_add_domain_fail_details', val)

    @classmethod
    def domain_verification_add_domain_success_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_verification_add_domain_success_details`` tag with value
        ``val``.

        :param DomainVerificationAddDomainSuccessDetails val:
        :rtype: EventDetails
        """
        return cls('domain_verification_add_domain_success_details', val)

    @classmethod
    def domain_verification_remove_domain_details(cls, val):
        """
        Create an instance of this class set to the
        ``domain_verification_remove_domain_details`` tag with value ``val``.

        :param DomainVerificationRemoveDomainDetails val:
        :rtype: EventDetails
        """
        return cls('domain_verification_remove_domain_details', val)

    @classmethod
    def enabled_domain_invites_details(cls, val):
        """
        Create an instance of this class set to the
        ``enabled_domain_invites_details`` tag with value ``val``.

        :param EnabledDomainInvitesDetails val:
        :rtype: EventDetails
        """
        return cls('enabled_domain_invites_details', val)

    @classmethod
    def create_folder_details(cls, val):
        """
        Create an instance of this class set to the ``create_folder_details``
        tag with value ``val``.

        :param CreateFolderDetails val:
        :rtype: EventDetails
        """
        return cls('create_folder_details', val)

    @classmethod
    def file_add_details(cls, val):
        """
        Create an instance of this class set to the ``file_add_details`` tag
        with value ``val``.

        :param FileAddDetails val:
        :rtype: EventDetails
        """
        return cls('file_add_details', val)

    @classmethod
    def file_copy_details(cls, val):
        """
        Create an instance of this class set to the ``file_copy_details`` tag
        with value ``val``.

        :param FileCopyDetails val:
        :rtype: EventDetails
        """
        return cls('file_copy_details', val)

    @classmethod
    def file_delete_details(cls, val):
        """
        Create an instance of this class set to the ``file_delete_details`` tag
        with value ``val``.

        :param FileDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('file_delete_details', val)

    @classmethod
    def file_download_details(cls, val):
        """
        Create an instance of this class set to the ``file_download_details``
        tag with value ``val``.

        :param FileDownloadDetails val:
        :rtype: EventDetails
        """
        return cls('file_download_details', val)

    @classmethod
    def file_edit_details(cls, val):
        """
        Create an instance of this class set to the ``file_edit_details`` tag
        with value ``val``.

        :param FileEditDetails val:
        :rtype: EventDetails
        """
        return cls('file_edit_details', val)

    @classmethod
    def file_get_copy_reference_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_get_copy_reference_details`` tag with value ``val``.

        :param FileGetCopyReferenceDetails val:
        :rtype: EventDetails
        """
        return cls('file_get_copy_reference_details', val)

    @classmethod
    def file_move_details(cls, val):
        """
        Create an instance of this class set to the ``file_move_details`` tag
        with value ``val``.

        :param FileMoveDetails val:
        :rtype: EventDetails
        """
        return cls('file_move_details', val)

    @classmethod
    def file_permanently_delete_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_permanently_delete_details`` tag with value ``val``.

        :param FilePermanentlyDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('file_permanently_delete_details', val)

    @classmethod
    def file_preview_details(cls, val):
        """
        Create an instance of this class set to the ``file_preview_details`` tag
        with value ``val``.

        :param FilePreviewDetails val:
        :rtype: EventDetails
        """
        return cls('file_preview_details', val)

    @classmethod
    def file_rename_details(cls, val):
        """
        Create an instance of this class set to the ``file_rename_details`` tag
        with value ``val``.

        :param FileRenameDetails val:
        :rtype: EventDetails
        """
        return cls('file_rename_details', val)

    @classmethod
    def file_restore_details(cls, val):
        """
        Create an instance of this class set to the ``file_restore_details`` tag
        with value ``val``.

        :param FileRestoreDetails val:
        :rtype: EventDetails
        """
        return cls('file_restore_details', val)

    @classmethod
    def file_revert_details(cls, val):
        """
        Create an instance of this class set to the ``file_revert_details`` tag
        with value ``val``.

        :param FileRevertDetails val:
        :rtype: EventDetails
        """
        return cls('file_revert_details', val)

    @classmethod
    def file_rollback_changes_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_rollback_changes_details`` tag with value ``val``.

        :param FileRollbackChangesDetails val:
        :rtype: EventDetails
        """
        return cls('file_rollback_changes_details', val)

    @classmethod
    def file_save_copy_reference_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_save_copy_reference_details`` tag with value ``val``.

        :param FileSaveCopyReferenceDetails val:
        :rtype: EventDetails
        """
        return cls('file_save_copy_reference_details', val)

    @classmethod
    def file_request_change_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_request_change_details`` tag with value ``val``.

        :param FileRequestChangeDetails val:
        :rtype: EventDetails
        """
        return cls('file_request_change_details', val)

    @classmethod
    def file_request_close_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_request_close_details`` tag with value ``val``.

        :param FileRequestCloseDetails val:
        :rtype: EventDetails
        """
        return cls('file_request_close_details', val)

    @classmethod
    def file_request_create_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_request_create_details`` tag with value ``val``.

        :param FileRequestCreateDetails val:
        :rtype: EventDetails
        """
        return cls('file_request_create_details', val)

    @classmethod
    def file_request_receive_file_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_request_receive_file_details`` tag with value ``val``.

        :param FileRequestReceiveFileDetails val:
        :rtype: EventDetails
        """
        return cls('file_request_receive_file_details', val)

    @classmethod
    def group_add_external_id_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_add_external_id_details`` tag with value ``val``.

        :param GroupAddExternalIdDetails val:
        :rtype: EventDetails
        """
        return cls('group_add_external_id_details', val)

    @classmethod
    def group_add_member_details(cls, val):
        """
        Create an instance of this class set to the ``group_add_member_details``
        tag with value ``val``.

        :param GroupAddMemberDetails val:
        :rtype: EventDetails
        """
        return cls('group_add_member_details', val)

    @classmethod
    def group_change_external_id_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_change_external_id_details`` tag with value ``val``.

        :param GroupChangeExternalIdDetails val:
        :rtype: EventDetails
        """
        return cls('group_change_external_id_details', val)

    @classmethod
    def group_change_management_type_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_change_management_type_details`` tag with value ``val``.

        :param GroupChangeManagementTypeDetails val:
        :rtype: EventDetails
        """
        return cls('group_change_management_type_details', val)

    @classmethod
    def group_change_member_role_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_change_member_role_details`` tag with value ``val``.

        :param GroupChangeMemberRoleDetails val:
        :rtype: EventDetails
        """
        return cls('group_change_member_role_details', val)

    @classmethod
    def group_create_details(cls, val):
        """
        Create an instance of this class set to the ``group_create_details`` tag
        with value ``val``.

        :param GroupCreateDetails val:
        :rtype: EventDetails
        """
        return cls('group_create_details', val)

    @classmethod
    def group_delete_details(cls, val):
        """
        Create an instance of this class set to the ``group_delete_details`` tag
        with value ``val``.

        :param GroupDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('group_delete_details', val)

    @classmethod
    def group_description_updated_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_description_updated_details`` tag with value ``val``.

        :param GroupDescriptionUpdatedDetails val:
        :rtype: EventDetails
        """
        return cls('group_description_updated_details', val)

    @classmethod
    def group_join_policy_updated_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_join_policy_updated_details`` tag with value ``val``.

        :param GroupJoinPolicyUpdatedDetails val:
        :rtype: EventDetails
        """
        return cls('group_join_policy_updated_details', val)

    @classmethod
    def group_moved_details(cls, val):
        """
        Create an instance of this class set to the ``group_moved_details`` tag
        with value ``val``.

        :param GroupMovedDetails val:
        :rtype: EventDetails
        """
        return cls('group_moved_details', val)

    @classmethod
    def group_remove_external_id_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_remove_external_id_details`` tag with value ``val``.

        :param GroupRemoveExternalIdDetails val:
        :rtype: EventDetails
        """
        return cls('group_remove_external_id_details', val)

    @classmethod
    def group_remove_member_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_remove_member_details`` tag with value ``val``.

        :param GroupRemoveMemberDetails val:
        :rtype: EventDetails
        """
        return cls('group_remove_member_details', val)

    @classmethod
    def group_rename_details(cls, val):
        """
        Create an instance of this class set to the ``group_rename_details`` tag
        with value ``val``.

        :param GroupRenameDetails val:
        :rtype: EventDetails
        """
        return cls('group_rename_details', val)

    @classmethod
    def emm_error_details(cls, val):
        """
        Create an instance of this class set to the ``emm_error_details`` tag
        with value ``val``.

        :param EmmErrorDetails val:
        :rtype: EventDetails
        """
        return cls('emm_error_details', val)

    @classmethod
    def login_fail_details(cls, val):
        """
        Create an instance of this class set to the ``login_fail_details`` tag
        with value ``val``.

        :param LoginFailDetails val:
        :rtype: EventDetails
        """
        return cls('login_fail_details', val)

    @classmethod
    def login_success_details(cls, val):
        """
        Create an instance of this class set to the ``login_success_details``
        tag with value ``val``.

        :param LoginSuccessDetails val:
        :rtype: EventDetails
        """
        return cls('login_success_details', val)

    @classmethod
    def logout_details(cls, val):
        """
        Create an instance of this class set to the ``logout_details`` tag with
        value ``val``.

        :param LogoutDetails val:
        :rtype: EventDetails
        """
        return cls('logout_details', val)

    @classmethod
    def reseller_support_session_end_details(cls, val):
        """
        Create an instance of this class set to the
        ``reseller_support_session_end_details`` tag with value ``val``.

        :param ResellerSupportSessionEndDetails val:
        :rtype: EventDetails
        """
        return cls('reseller_support_session_end_details', val)

    @classmethod
    def reseller_support_session_start_details(cls, val):
        """
        Create an instance of this class set to the
        ``reseller_support_session_start_details`` tag with value ``val``.

        :param ResellerSupportSessionStartDetails val:
        :rtype: EventDetails
        """
        return cls('reseller_support_session_start_details', val)

    @classmethod
    def sign_in_as_session_end_details(cls, val):
        """
        Create an instance of this class set to the
        ``sign_in_as_session_end_details`` tag with value ``val``.

        :param SignInAsSessionEndDetails val:
        :rtype: EventDetails
        """
        return cls('sign_in_as_session_end_details', val)

    @classmethod
    def sign_in_as_session_start_details(cls, val):
        """
        Create an instance of this class set to the
        ``sign_in_as_session_start_details`` tag with value ``val``.

        :param SignInAsSessionStartDetails val:
        :rtype: EventDetails
        """
        return cls('sign_in_as_session_start_details', val)

    @classmethod
    def sso_error_details(cls, val):
        """
        Create an instance of this class set to the ``sso_error_details`` tag
        with value ``val``.

        :param SsoErrorDetails val:
        :rtype: EventDetails
        """
        return cls('sso_error_details', val)

    @classmethod
    def member_add_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_membership_type_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_change_membership_type_details`` tag with value ``val``.

        :param MemberChangeMembershipTypeDetails val:
        :rtype: EventDetails
        """
        return cls('member_change_membership_type_details', val)

    @classmethod
    def member_change_name_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_change_name_details`` tag with value ``val``.

        :param MemberChangeNameDetails val:
        :rtype: EventDetails
        """
        return cls('member_change_name_details', val)

    @classmethod
    def member_change_status_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_change_status_details`` tag with value ``val``.

        :param MemberChangeStatusDetails val:
        :rtype: EventDetails
        """
        return cls('member_change_status_details', val)

    @classmethod
    def member_delete_manual_contacts_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_delete_manual_contacts_details`` tag with value ``val``.

        :param MemberDeleteManualContactsDetails val:
        :rtype: EventDetails
        """
        return cls('member_delete_manual_contacts_details', val)

    @classmethod
    def member_permanently_delete_account_contents_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_permanently_delete_account_contents_details`` tag with value
        ``val``.

        :param MemberPermanentlyDeleteAccountContentsDetails val:
        :rtype: EventDetails
        """
        return cls('member_permanently_delete_account_contents_details', val)

    @classmethod
    def member_space_limits_add_custom_quota_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_add_custom_quota_details`` tag with value ``val``.

        :param MemberSpaceLimitsAddCustomQuotaDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_add_custom_quota_details', val)

    @classmethod
    def member_space_limits_change_custom_quota_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_custom_quota_details`` tag with value
        ``val``.

        :param MemberSpaceLimitsChangeCustomQuotaDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_change_custom_quota_details', val)

    @classmethod
    def member_space_limits_change_status_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_status_details`` tag with value ``val``.

        :param MemberSpaceLimitsChangeStatusDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_change_status_details', val)

    @classmethod
    def member_space_limits_remove_custom_quota_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_remove_custom_quota_details`` tag with value
        ``val``.

        :param MemberSpaceLimitsRemoveCustomQuotaDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_remove_custom_quota_details', val)

    @classmethod
    def member_suggest_details(cls, val):
        """
        Create an instance of this class set to the ``member_suggest_details``
        tag with value ``val``.

        :param MemberSuggestDetails val:
        :rtype: EventDetails
        """
        return cls('member_suggest_details', val)

    @classmethod
    def member_transfer_account_contents_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_transfer_account_contents_details`` tag with value ``val``.

        :param MemberTransferAccountContentsDetails val:
        :rtype: EventDetails
        """
        return cls('member_transfer_account_contents_details', val)

    @classmethod
    def secondary_mails_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``secondary_mails_policy_changed_details`` tag with value ``val``.

        :param SecondaryMailsPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('secondary_mails_policy_changed_details', val)

    @classmethod
    def paper_content_add_member_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_add_member_details`` tag with value ``val``.

        :param PaperContentAddMemberDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_add_member_details', val)

    @classmethod
    def paper_content_add_to_folder_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_add_to_folder_details`` tag with value ``val``.

        :param PaperContentAddToFolderDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_add_to_folder_details', val)

    @classmethod
    def paper_content_archive_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_archive_details`` tag with value ``val``.

        :param PaperContentArchiveDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_archive_details', val)

    @classmethod
    def paper_content_create_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_create_details`` tag with value ``val``.

        :param PaperContentCreateDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_create_details', val)

    @classmethod
    def paper_content_permanently_delete_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_permanently_delete_details`` tag with value ``val``.

        :param PaperContentPermanentlyDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_permanently_delete_details', val)

    @classmethod
    def paper_content_remove_from_folder_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_remove_from_folder_details`` tag with value ``val``.

        :param PaperContentRemoveFromFolderDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_remove_from_folder_details', val)

    @classmethod
    def paper_content_remove_member_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_remove_member_details`` tag with value ``val``.

        :param PaperContentRemoveMemberDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_remove_member_details', val)

    @classmethod
    def paper_content_rename_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_rename_details`` tag with value ``val``.

        :param PaperContentRenameDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_rename_details', val)

    @classmethod
    def paper_content_restore_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_restore_details`` tag with value ``val``.

        :param PaperContentRestoreDetails val:
        :rtype: EventDetails
        """
        return cls('paper_content_restore_details', val)

    @classmethod
    def paper_doc_add_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_add_comment_details`` tag with value ``val``.

        :param PaperDocAddCommentDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_add_comment_details', val)

    @classmethod
    def paper_doc_change_member_role_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_change_member_role_details`` tag with value ``val``.

        :param PaperDocChangeMemberRoleDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_change_member_role_details', val)

    @classmethod
    def paper_doc_change_sharing_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_change_sharing_policy_details`` tag with value ``val``.

        :param PaperDocChangeSharingPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_change_sharing_policy_details', val)

    @classmethod
    def paper_doc_change_subscription_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_change_subscription_details`` tag with value ``val``.

        :param PaperDocChangeSubscriptionDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_change_subscription_details', val)

    @classmethod
    def paper_doc_deleted_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_deleted_details`` tag with value ``val``.

        :param PaperDocDeletedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_deleted_details', val)

    @classmethod
    def paper_doc_delete_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_delete_comment_details`` tag with value ``val``.

        :param PaperDocDeleteCommentDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_delete_comment_details', val)

    @classmethod
    def paper_doc_download_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_download_details`` tag with value ``val``.

        :param PaperDocDownloadDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_download_details', val)

    @classmethod
    def paper_doc_edit_details(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_edit_details``
        tag with value ``val``.

        :param PaperDocEditDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_edit_details', val)

    @classmethod
    def paper_doc_edit_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_edit_comment_details`` tag with value ``val``.

        :param PaperDocEditCommentDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_edit_comment_details', val)

    @classmethod
    def paper_doc_followed_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_followed_details`` tag with value ``val``.

        :param PaperDocFollowedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_followed_details', val)

    @classmethod
    def paper_doc_mention_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_mention_details`` tag with value ``val``.

        :param PaperDocMentionDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_mention_details', val)

    @classmethod
    def paper_doc_ownership_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_ownership_changed_details`` tag with value ``val``.

        :param PaperDocOwnershipChangedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_ownership_changed_details', val)

    @classmethod
    def paper_doc_request_access_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_request_access_details`` tag with value ``val``.

        :param PaperDocRequestAccessDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_request_access_details', val)

    @classmethod
    def paper_doc_resolve_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_resolve_comment_details`` tag with value ``val``.

        :param PaperDocResolveCommentDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_resolve_comment_details', val)

    @classmethod
    def paper_doc_revert_details(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_revert_details``
        tag with value ``val``.

        :param PaperDocRevertDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_revert_details', val)

    @classmethod
    def paper_doc_slack_share_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_slack_share_details`` tag with value ``val``.

        :param PaperDocSlackShareDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_slack_share_details', val)

    @classmethod
    def paper_doc_team_invite_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_team_invite_details`` tag with value ``val``.

        :param PaperDocTeamInviteDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_team_invite_details', val)

    @classmethod
    def paper_doc_trashed_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_trashed_details`` tag with value ``val``.

        :param PaperDocTrashedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_trashed_details', val)

    @classmethod
    def paper_doc_unresolve_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_unresolve_comment_details`` tag with value ``val``.

        :param PaperDocUnresolveCommentDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_unresolve_comment_details', val)

    @classmethod
    def paper_doc_untrashed_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_untrashed_details`` tag with value ``val``.

        :param PaperDocUntrashedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_untrashed_details', val)

    @classmethod
    def paper_doc_view_details(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_view_details``
        tag with value ``val``.

        :param PaperDocViewDetails val:
        :rtype: EventDetails
        """
        return cls('paper_doc_view_details', val)

    @classmethod
    def paper_external_view_allow_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_external_view_allow_details`` tag with value ``val``.

        :param PaperExternalViewAllowDetails val:
        :rtype: EventDetails
        """
        return cls('paper_external_view_allow_details', val)

    @classmethod
    def paper_external_view_default_team_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_external_view_default_team_details`` tag with value ``val``.

        :param PaperExternalViewDefaultTeamDetails val:
        :rtype: EventDetails
        """
        return cls('paper_external_view_default_team_details', val)

    @classmethod
    def paper_external_view_forbid_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_external_view_forbid_details`` tag with value ``val``.

        :param PaperExternalViewForbidDetails val:
        :rtype: EventDetails
        """
        return cls('paper_external_view_forbid_details', val)

    @classmethod
    def paper_folder_change_subscription_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_folder_change_subscription_details`` tag with value ``val``.

        :param PaperFolderChangeSubscriptionDetails val:
        :rtype: EventDetails
        """
        return cls('paper_folder_change_subscription_details', val)

    @classmethod
    def paper_folder_deleted_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_folder_deleted_details`` tag with value ``val``.

        :param PaperFolderDeletedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_folder_deleted_details', val)

    @classmethod
    def paper_folder_followed_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_folder_followed_details`` tag with value ``val``.

        :param PaperFolderFollowedDetails val:
        :rtype: EventDetails
        """
        return cls('paper_folder_followed_details', val)

    @classmethod
    def paper_folder_team_invite_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_folder_team_invite_details`` tag with value ``val``.

        :param PaperFolderTeamInviteDetails val:
        :rtype: EventDetails
        """
        return cls('paper_folder_team_invite_details', val)

    @classmethod
    def password_change_details(cls, val):
        """
        Create an instance of this class set to the ``password_change_details``
        tag with value ``val``.

        :param PasswordChangeDetails val:
        :rtype: EventDetails
        """
        return cls('password_change_details', val)

    @classmethod
    def password_reset_details(cls, val):
        """
        Create an instance of this class set to the ``password_reset_details``
        tag with value ``val``.

        :param PasswordResetDetails val:
        :rtype: EventDetails
        """
        return cls('password_reset_details', val)

    @classmethod
    def password_reset_all_details(cls, val):
        """
        Create an instance of this class set to the
        ``password_reset_all_details`` tag with value ``val``.

        :param PasswordResetAllDetails val:
        :rtype: EventDetails
        """
        return cls('password_reset_all_details', val)

    @classmethod
    def emm_create_exceptions_report_details(cls, val):
        """
        Create an instance of this class set to the
        ``emm_create_exceptions_report_details`` tag with value ``val``.

        :param EmmCreateExceptionsReportDetails val:
        :rtype: EventDetails
        """
        return cls('emm_create_exceptions_report_details', val)

    @classmethod
    def emm_create_usage_report_details(cls, val):
        """
        Create an instance of this class set to the
        ``emm_create_usage_report_details`` tag with value ``val``.

        :param EmmCreateUsageReportDetails val:
        :rtype: EventDetails
        """
        return cls('emm_create_usage_report_details', val)

    @classmethod
    def export_members_report_details(cls, val):
        """
        Create an instance of this class set to the
        ``export_members_report_details`` tag with value ``val``.

        :param ExportMembersReportDetails val:
        :rtype: EventDetails
        """
        return cls('export_members_report_details', val)

    @classmethod
    def paper_admin_export_start_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_admin_export_start_details`` tag with value ``val``.

        :param PaperAdminExportStartDetails val:
        :rtype: EventDetails
        """
        return cls('paper_admin_export_start_details', val)

    @classmethod
    def smart_sync_create_admin_privilege_report_details(cls, val):
        """
        Create an instance of this class set to the
        ``smart_sync_create_admin_privilege_report_details`` tag with value
        ``val``.

        :param SmartSyncCreateAdminPrivilegeReportDetails val:
        :rtype: EventDetails
        """
        return cls('smart_sync_create_admin_privilege_report_details', val)

    @classmethod
    def team_activity_create_report_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_activity_create_report_details`` tag with value ``val``.

        :param TeamActivityCreateReportDetails val:
        :rtype: EventDetails
        """
        return cls('team_activity_create_report_details', val)

    @classmethod
    def collection_share_details(cls, val):
        """
        Create an instance of this class set to the ``collection_share_details``
        tag with value ``val``.

        :param CollectionShareDetails val:
        :rtype: EventDetails
        """
        return cls('collection_share_details', val)

    @classmethod
    def note_acl_invite_only_details(cls, val):
        """
        Create an instance of this class set to the
        ``note_acl_invite_only_details`` tag with value ``val``.

        :param NoteAclInviteOnlyDetails val:
        :rtype: EventDetails
        """
        return cls('note_acl_invite_only_details', val)

    @classmethod
    def note_acl_link_details(cls, val):
        """
        Create an instance of this class set to the ``note_acl_link_details``
        tag with value ``val``.

        :param NoteAclLinkDetails val:
        :rtype: EventDetails
        """
        return cls('note_acl_link_details', val)

    @classmethod
    def note_acl_team_link_details(cls, val):
        """
        Create an instance of this class set to the
        ``note_acl_team_link_details`` tag with value ``val``.

        :param NoteAclTeamLinkDetails val:
        :rtype: EventDetails
        """
        return cls('note_acl_team_link_details', val)

    @classmethod
    def note_shared_details(cls, val):
        """
        Create an instance of this class set to the ``note_shared_details`` tag
        with value ``val``.

        :param NoteSharedDetails val:
        :rtype: EventDetails
        """
        return cls('note_shared_details', val)

    @classmethod
    def note_share_receive_details(cls, val):
        """
        Create an instance of this class set to the
        ``note_share_receive_details`` tag with value ``val``.

        :param NoteShareReceiveDetails val:
        :rtype: EventDetails
        """
        return cls('note_share_receive_details', val)

    @classmethod
    def open_note_shared_details(cls, val):
        """
        Create an instance of this class set to the ``open_note_shared_details``
        tag with value ``val``.

        :param OpenNoteSharedDetails val:
        :rtype: EventDetails
        """
        return cls('open_note_shared_details', val)

    @classmethod
    def sf_add_group_details(cls, val):
        """
        Create an instance of this class set to the ``sf_add_group_details`` tag
        with value ``val``.

        :param SfAddGroupDetails val:
        :rtype: EventDetails
        """
        return cls('sf_add_group_details', val)

    @classmethod
    def sf_allow_non_members_to_view_shared_links_details(cls, val):
        """
        Create an instance of this class set to the
        ``sf_allow_non_members_to_view_shared_links_details`` tag with value
        ``val``.

        :param SfAllowNonMembersToViewSharedLinksDetails val:
        :rtype: EventDetails
        """
        return cls('sf_allow_non_members_to_view_shared_links_details', val)

    @classmethod
    def sf_external_invite_warn_details(cls, val):
        """
        Create an instance of this class set to the
        ``sf_external_invite_warn_details`` tag with value ``val``.

        :param SfExternalInviteWarnDetails val:
        :rtype: EventDetails
        """
        return cls('sf_external_invite_warn_details', val)

    @classmethod
    def sf_fb_invite_details(cls, val):
        """
        Create an instance of this class set to the ``sf_fb_invite_details`` tag
        with value ``val``.

        :param SfFbInviteDetails val:
        :rtype: EventDetails
        """
        return cls('sf_fb_invite_details', val)

    @classmethod
    def sf_fb_invite_change_role_details(cls, val):
        """
        Create an instance of this class set to the
        ``sf_fb_invite_change_role_details`` tag with value ``val``.

        :param SfFbInviteChangeRoleDetails val:
        :rtype: EventDetails
        """
        return cls('sf_fb_invite_change_role_details', val)

    @classmethod
    def sf_fb_uninvite_details(cls, val):
        """
        Create an instance of this class set to the ``sf_fb_uninvite_details``
        tag with value ``val``.

        :param SfFbUninviteDetails val:
        :rtype: EventDetails
        """
        return cls('sf_fb_uninvite_details', val)

    @classmethod
    def sf_invite_group_details(cls, val):
        """
        Create an instance of this class set to the ``sf_invite_group_details``
        tag with value ``val``.

        :param SfInviteGroupDetails val:
        :rtype: EventDetails
        """
        return cls('sf_invite_group_details', val)

    @classmethod
    def sf_team_grant_access_details(cls, val):
        """
        Create an instance of this class set to the
        ``sf_team_grant_access_details`` tag with value ``val``.

        :param SfTeamGrantAccessDetails val:
        :rtype: EventDetails
        """
        return cls('sf_team_grant_access_details', val)

    @classmethod
    def sf_team_invite_details(cls, val):
        """
        Create an instance of this class set to the ``sf_team_invite_details``
        tag with value ``val``.

        :param SfTeamInviteDetails val:
        :rtype: EventDetails
        """
        return cls('sf_team_invite_details', val)

    @classmethod
    def sf_team_invite_change_role_details(cls, val):
        """
        Create an instance of this class set to the
        ``sf_team_invite_change_role_details`` tag with value ``val``.

        :param SfTeamInviteChangeRoleDetails val:
        :rtype: EventDetails
        """
        return cls('sf_team_invite_change_role_details', val)

    @classmethod
    def sf_team_join_details(cls, val):
        """
        Create an instance of this class set to the ``sf_team_join_details`` tag
        with value ``val``.

        :param SfTeamJoinDetails val:
        :rtype: EventDetails
        """
        return cls('sf_team_join_details', val)

    @classmethod
    def sf_team_join_from_oob_link_details(cls, val):
        """
        Create an instance of this class set to the
        ``sf_team_join_from_oob_link_details`` tag with value ``val``.

        :param SfTeamJoinFromOobLinkDetails val:
        :rtype: EventDetails
        """
        return cls('sf_team_join_from_oob_link_details', val)

    @classmethod
    def sf_team_uninvite_details(cls, val):
        """
        Create an instance of this class set to the ``sf_team_uninvite_details``
        tag with value ``val``.

        :param SfTeamUninviteDetails val:
        :rtype: EventDetails
        """
        return cls('sf_team_uninvite_details', val)

    @classmethod
    def shared_content_add_invitees_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_invitees_details`` tag with value ``val``.

        :param SharedContentAddInviteesDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_add_invitees_details', val)

    @classmethod
    def shared_content_add_link_expiry_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_link_expiry_details`` tag with value ``val``.

        :param SharedContentAddLinkExpiryDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_add_link_expiry_details', val)

    @classmethod
    def shared_content_add_link_password_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_link_password_details`` tag with value ``val``.

        :param SharedContentAddLinkPasswordDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_add_link_password_details', val)

    @classmethod
    def shared_content_add_member_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_member_details`` tag with value ``val``.

        :param SharedContentAddMemberDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_add_member_details', val)

    @classmethod
    def shared_content_change_downloads_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_downloads_policy_details`` tag with value
        ``val``.

        :param SharedContentChangeDownloadsPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_change_downloads_policy_details', val)

    @classmethod
    def shared_content_change_invitee_role_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_invitee_role_details`` tag with value ``val``.

        :param SharedContentChangeInviteeRoleDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_change_invitee_role_details', val)

    @classmethod
    def shared_content_change_link_audience_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_link_audience_details`` tag with value ``val``.

        :param SharedContentChangeLinkAudienceDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_change_link_audience_details', val)

    @classmethod
    def shared_content_change_link_expiry_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_link_expiry_details`` tag with value ``val``.

        :param SharedContentChangeLinkExpiryDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_change_link_expiry_details', val)

    @classmethod
    def shared_content_change_link_password_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_link_password_details`` tag with value ``val``.

        :param SharedContentChangeLinkPasswordDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_change_link_password_details', val)

    @classmethod
    def shared_content_change_member_role_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_member_role_details`` tag with value ``val``.

        :param SharedContentChangeMemberRoleDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_change_member_role_details', val)

    @classmethod
    def shared_content_change_viewer_info_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_viewer_info_policy_details`` tag with value
        ``val``.

        :param SharedContentChangeViewerInfoPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_change_viewer_info_policy_details', val)

    @classmethod
    def shared_content_claim_invitation_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_claim_invitation_details`` tag with value ``val``.

        :param SharedContentClaimInvitationDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_claim_invitation_details', val)

    @classmethod
    def shared_content_copy_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_copy_details`` tag with value ``val``.

        :param SharedContentCopyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_copy_details', val)

    @classmethod
    def shared_content_download_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_download_details`` tag with value ``val``.

        :param SharedContentDownloadDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_download_details', val)

    @classmethod
    def shared_content_relinquish_membership_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_relinquish_membership_details`` tag with value ``val``.

        :param SharedContentRelinquishMembershipDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_relinquish_membership_details', val)

    @classmethod
    def shared_content_remove_invitees_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_invitees_details`` tag with value ``val``.

        :param SharedContentRemoveInviteesDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_remove_invitees_details', val)

    @classmethod
    def shared_content_remove_link_expiry_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_link_expiry_details`` tag with value ``val``.

        :param SharedContentRemoveLinkExpiryDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_remove_link_expiry_details', val)

    @classmethod
    def shared_content_remove_link_password_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_link_password_details`` tag with value ``val``.

        :param SharedContentRemoveLinkPasswordDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_remove_link_password_details', val)

    @classmethod
    def shared_content_remove_member_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_member_details`` tag with value ``val``.

        :param SharedContentRemoveMemberDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_remove_member_details', val)

    @classmethod
    def shared_content_request_access_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_request_access_details`` tag with value ``val``.

        :param SharedContentRequestAccessDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_request_access_details', val)

    @classmethod
    def shared_content_unshare_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_unshare_details`` tag with value ``val``.

        :param SharedContentUnshareDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_unshare_details', val)

    @classmethod
    def shared_content_view_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_view_details`` tag with value ``val``.

        :param SharedContentViewDetails val:
        :rtype: EventDetails
        """
        return cls('shared_content_view_details', val)

    @classmethod
    def shared_folder_change_link_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_link_policy_details`` tag with value ``val``.

        :param SharedFolderChangeLinkPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_change_link_policy_details', val)

    @classmethod
    def shared_folder_change_members_inheritance_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_members_inheritance_policy_details`` tag with
        value ``val``.

        :param SharedFolderChangeMembersInheritancePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_change_members_inheritance_policy_details', val)

    @classmethod
    def shared_folder_change_members_management_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_members_management_policy_details`` tag with
        value ``val``.

        :param SharedFolderChangeMembersManagementPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_change_members_management_policy_details', val)

    @classmethod
    def shared_folder_change_members_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_members_policy_details`` tag with value ``val``.

        :param SharedFolderChangeMembersPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_change_members_policy_details', val)

    @classmethod
    def shared_folder_create_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_create_details`` tag with value ``val``.

        :param SharedFolderCreateDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_create_details', val)

    @classmethod
    def shared_folder_decline_invitation_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_decline_invitation_details`` tag with value ``val``.

        :param SharedFolderDeclineInvitationDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_decline_invitation_details', val)

    @classmethod
    def shared_folder_mount_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_mount_details`` tag with value ``val``.

        :param SharedFolderMountDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_mount_details', val)

    @classmethod
    def shared_folder_nest_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_nest_details`` tag with value ``val``.

        :param SharedFolderNestDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_nest_details', val)

    @classmethod
    def shared_folder_transfer_ownership_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_transfer_ownership_details`` tag with value ``val``.

        :param SharedFolderTransferOwnershipDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_transfer_ownership_details', val)

    @classmethod
    def shared_folder_unmount_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_unmount_details`` tag with value ``val``.

        :param SharedFolderUnmountDetails val:
        :rtype: EventDetails
        """
        return cls('shared_folder_unmount_details', val)

    @classmethod
    def shared_link_add_expiry_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_add_expiry_details`` tag with value ``val``.

        :param SharedLinkAddExpiryDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_add_expiry_details', val)

    @classmethod
    def shared_link_change_expiry_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_change_expiry_details`` tag with value ``val``.

        :param SharedLinkChangeExpiryDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_change_expiry_details', val)

    @classmethod
    def shared_link_change_visibility_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_change_visibility_details`` tag with value ``val``.

        :param SharedLinkChangeVisibilityDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_change_visibility_details', val)

    @classmethod
    def shared_link_copy_details(cls, val):
        """
        Create an instance of this class set to the ``shared_link_copy_details``
        tag with value ``val``.

        :param SharedLinkCopyDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_copy_details', val)

    @classmethod
    def shared_link_create_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_create_details`` tag with value ``val``.

        :param SharedLinkCreateDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_create_details', val)

    @classmethod
    def shared_link_disable_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_disable_details`` tag with value ``val``.

        :param SharedLinkDisableDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_disable_details', val)

    @classmethod
    def shared_link_download_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_download_details`` tag with value ``val``.

        :param SharedLinkDownloadDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_download_details', val)

    @classmethod
    def shared_link_remove_expiry_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_remove_expiry_details`` tag with value ``val``.

        :param SharedLinkRemoveExpiryDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_remove_expiry_details', val)

    @classmethod
    def shared_link_share_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_share_details`` tag with value ``val``.

        :param SharedLinkShareDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_share_details', val)

    @classmethod
    def shared_link_view_details(cls, val):
        """
        Create an instance of this class set to the ``shared_link_view_details``
        tag with value ``val``.

        :param SharedLinkViewDetails val:
        :rtype: EventDetails
        """
        return cls('shared_link_view_details', val)

    @classmethod
    def shared_note_opened_details(cls, val):
        """
        Create an instance of this class set to the
        ``shared_note_opened_details`` tag with value ``val``.

        :param SharedNoteOpenedDetails val:
        :rtype: EventDetails
        """
        return cls('shared_note_opened_details', val)

    @classmethod
    def shmodel_group_share_details(cls, val):
        """
        Create an instance of this class set to the
        ``shmodel_group_share_details`` tag with value ``val``.

        :param ShmodelGroupShareDetails val:
        :rtype: EventDetails
        """
        return cls('shmodel_group_share_details', val)

    @classmethod
    def showcase_access_granted_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_access_granted_details`` tag with value ``val``.

        :param ShowcaseAccessGrantedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_access_granted_details', val)

    @classmethod
    def showcase_add_member_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_add_member_details`` tag with value ``val``.

        :param ShowcaseAddMemberDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_add_member_details', val)

    @classmethod
    def showcase_archived_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_archived_details`` tag with value ``val``.

        :param ShowcaseArchivedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_archived_details', val)

    @classmethod
    def showcase_created_details(cls, val):
        """
        Create an instance of this class set to the ``showcase_created_details``
        tag with value ``val``.

        :param ShowcaseCreatedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_created_details', val)

    @classmethod
    def showcase_delete_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_delete_comment_details`` tag with value ``val``.

        :param ShowcaseDeleteCommentDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_delete_comment_details', val)

    @classmethod
    def showcase_edited_details(cls, val):
        """
        Create an instance of this class set to the ``showcase_edited_details``
        tag with value ``val``.

        :param ShowcaseEditedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_edited_details', val)

    @classmethod
    def showcase_edit_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_edit_comment_details`` tag with value ``val``.

        :param ShowcaseEditCommentDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_edit_comment_details', val)

    @classmethod
    def showcase_file_added_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_file_added_details`` tag with value ``val``.

        :param ShowcaseFileAddedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_file_added_details', val)

    @classmethod
    def showcase_file_download_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_file_download_details`` tag with value ``val``.

        :param ShowcaseFileDownloadDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_file_download_details', val)

    @classmethod
    def showcase_file_removed_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_file_removed_details`` tag with value ``val``.

        :param ShowcaseFileRemovedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_file_removed_details', val)

    @classmethod
    def showcase_file_view_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_file_view_details`` tag with value ``val``.

        :param ShowcaseFileViewDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_file_view_details', val)

    @classmethod
    def showcase_permanently_deleted_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_permanently_deleted_details`` tag with value ``val``.

        :param ShowcasePermanentlyDeletedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_permanently_deleted_details', val)

    @classmethod
    def showcase_post_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_post_comment_details`` tag with value ``val``.

        :param ShowcasePostCommentDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_post_comment_details', val)

    @classmethod
    def showcase_remove_member_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_remove_member_details`` tag with value ``val``.

        :param ShowcaseRemoveMemberDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_remove_member_details', val)

    @classmethod
    def showcase_renamed_details(cls, val):
        """
        Create an instance of this class set to the ``showcase_renamed_details``
        tag with value ``val``.

        :param ShowcaseRenamedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_renamed_details', val)

    @classmethod
    def showcase_request_access_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_request_access_details`` tag with value ``val``.

        :param ShowcaseRequestAccessDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_request_access_details', val)

    @classmethod
    def showcase_resolve_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_resolve_comment_details`` tag with value ``val``.

        :param ShowcaseResolveCommentDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_resolve_comment_details', val)

    @classmethod
    def showcase_restored_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_restored_details`` tag with value ``val``.

        :param ShowcaseRestoredDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_restored_details', val)

    @classmethod
    def showcase_trashed_details(cls, val):
        """
        Create an instance of this class set to the ``showcase_trashed_details``
        tag with value ``val``.

        :param ShowcaseTrashedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_trashed_details', val)

    @classmethod
    def showcase_trashed_deprecated_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_trashed_deprecated_details`` tag with value ``val``.

        :param ShowcaseTrashedDeprecatedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_trashed_deprecated_details', val)

    @classmethod
    def showcase_unresolve_comment_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_unresolve_comment_details`` tag with value ``val``.

        :param ShowcaseUnresolveCommentDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_unresolve_comment_details', val)

    @classmethod
    def showcase_untrashed_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_untrashed_details`` tag with value ``val``.

        :param ShowcaseUntrashedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_untrashed_details', val)

    @classmethod
    def showcase_untrashed_deprecated_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_untrashed_deprecated_details`` tag with value ``val``.

        :param ShowcaseUntrashedDeprecatedDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_untrashed_deprecated_details', val)

    @classmethod
    def showcase_view_details(cls, val):
        """
        Create an instance of this class set to the ``showcase_view_details``
        tag with value ``val``.

        :param ShowcaseViewDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_view_details', val)

    @classmethod
    def sso_add_cert_details(cls, val):
        """
        Create an instance of this class set to the ``sso_add_cert_details`` tag
        with value ``val``.

        :param SsoAddCertDetails val:
        :rtype: EventDetails
        """
        return cls('sso_add_cert_details', val)

    @classmethod
    def sso_add_login_url_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_add_login_url_details`` tag with value ``val``.

        :param SsoAddLoginUrlDetails val:
        :rtype: EventDetails
        """
        return cls('sso_add_login_url_details', val)

    @classmethod
    def sso_add_logout_url_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_add_logout_url_details`` tag with value ``val``.

        :param SsoAddLogoutUrlDetails val:
        :rtype: EventDetails
        """
        return cls('sso_add_logout_url_details', val)

    @classmethod
    def sso_change_cert_details(cls, val):
        """
        Create an instance of this class set to the ``sso_change_cert_details``
        tag with value ``val``.

        :param SsoChangeCertDetails val:
        :rtype: EventDetails
        """
        return cls('sso_change_cert_details', val)

    @classmethod
    def sso_change_login_url_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_change_login_url_details`` tag with value ``val``.

        :param SsoChangeLoginUrlDetails val:
        :rtype: EventDetails
        """
        return cls('sso_change_login_url_details', val)

    @classmethod
    def sso_change_logout_url_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_change_logout_url_details`` tag with value ``val``.

        :param SsoChangeLogoutUrlDetails val:
        :rtype: EventDetails
        """
        return cls('sso_change_logout_url_details', val)

    @classmethod
    def sso_change_saml_identity_mode_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_change_saml_identity_mode_details`` tag with value ``val``.

        :param SsoChangeSamlIdentityModeDetails val:
        :rtype: EventDetails
        """
        return cls('sso_change_saml_identity_mode_details', val)

    @classmethod
    def sso_remove_cert_details(cls, val):
        """
        Create an instance of this class set to the ``sso_remove_cert_details``
        tag with value ``val``.

        :param SsoRemoveCertDetails val:
        :rtype: EventDetails
        """
        return cls('sso_remove_cert_details', val)

    @classmethod
    def sso_remove_login_url_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_remove_login_url_details`` tag with value ``val``.

        :param SsoRemoveLoginUrlDetails val:
        :rtype: EventDetails
        """
        return cls('sso_remove_login_url_details', val)

    @classmethod
    def sso_remove_logout_url_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_remove_logout_url_details`` tag with value ``val``.

        :param SsoRemoveLogoutUrlDetails val:
        :rtype: EventDetails
        """
        return cls('sso_remove_logout_url_details', val)

    @classmethod
    def team_folder_change_status_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_folder_change_status_details`` tag with value ``val``.

        :param TeamFolderChangeStatusDetails val:
        :rtype: EventDetails
        """
        return cls('team_folder_change_status_details', val)

    @classmethod
    def team_folder_create_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_folder_create_details`` tag with value ``val``.

        :param TeamFolderCreateDetails val:
        :rtype: EventDetails
        """
        return cls('team_folder_create_details', val)

    @classmethod
    def team_folder_downgrade_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_folder_downgrade_details`` tag with value ``val``.

        :param TeamFolderDowngradeDetails val:
        :rtype: EventDetails
        """
        return cls('team_folder_downgrade_details', val)

    @classmethod
    def team_folder_permanently_delete_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_folder_permanently_delete_details`` tag with value ``val``.

        :param TeamFolderPermanentlyDeleteDetails val:
        :rtype: EventDetails
        """
        return cls('team_folder_permanently_delete_details', val)

    @classmethod
    def team_folder_rename_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_folder_rename_details`` tag with value ``val``.

        :param TeamFolderRenameDetails val:
        :rtype: EventDetails
        """
        return cls('team_folder_rename_details', val)

    @classmethod
    def team_selective_sync_settings_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_selective_sync_settings_changed_details`` tag with value ``val``.

        :param TeamSelectiveSyncSettingsChangedDetails val:
        :rtype: EventDetails
        """
        return cls('team_selective_sync_settings_changed_details', val)

    @classmethod
    def account_capture_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_change_policy_details`` tag with value ``val``.

        :param AccountCaptureChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('account_capture_change_policy_details', val)

    @classmethod
    def allow_download_disabled_details(cls, val):
        """
        Create an instance of this class set to the
        ``allow_download_disabled_details`` tag with value ``val``.

        :param AllowDownloadDisabledDetails val:
        :rtype: EventDetails
        """
        return cls('allow_download_disabled_details', val)

    @classmethod
    def allow_download_enabled_details(cls, val):
        """
        Create an instance of this class set to the
        ``allow_download_enabled_details`` tag with value ``val``.

        :param AllowDownloadEnabledDetails val:
        :rtype: EventDetails
        """
        return cls('allow_download_enabled_details', val)

    @classmethod
    def camera_uploads_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``camera_uploads_policy_changed_details`` tag with value ``val``.

        :param CameraUploadsPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('camera_uploads_policy_changed_details', val)

    @classmethod
    def data_placement_restriction_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``data_placement_restriction_change_policy_details`` tag with value
        ``val``.

        :param DataPlacementRestrictionChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('data_placement_restriction_change_policy_details', val)

    @classmethod
    def data_placement_restriction_satisfy_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``data_placement_restriction_satisfy_policy_details`` tag with value
        ``val``.

        :param DataPlacementRestrictionSatisfyPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('data_placement_restriction_satisfy_policy_details', val)

    @classmethod
    def device_approvals_change_desktop_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_desktop_policy_details`` tag with value
        ``val``.

        :param DeviceApprovalsChangeDesktopPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('device_approvals_change_desktop_policy_details', val)

    @classmethod
    def device_approvals_change_mobile_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_mobile_policy_details`` tag with value
        ``val``.

        :param DeviceApprovalsChangeMobilePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('device_approvals_change_mobile_policy_details', val)

    @classmethod
    def device_approvals_change_overage_action_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_overage_action_details`` tag with value
        ``val``.

        :param DeviceApprovalsChangeOverageActionDetails val:
        :rtype: EventDetails
        """
        return cls('device_approvals_change_overage_action_details', val)

    @classmethod
    def device_approvals_change_unlink_action_details(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_unlink_action_details`` tag with value
        ``val``.

        :param DeviceApprovalsChangeUnlinkActionDetails val:
        :rtype: EventDetails
        """
        return cls('device_approvals_change_unlink_action_details', val)

    @classmethod
    def directory_restrictions_add_members_details(cls, val):
        """
        Create an instance of this class set to the
        ``directory_restrictions_add_members_details`` tag with value ``val``.

        :param DirectoryRestrictionsAddMembersDetails val:
        :rtype: EventDetails
        """
        return cls('directory_restrictions_add_members_details', val)

    @classmethod
    def directory_restrictions_remove_members_details(cls, val):
        """
        Create an instance of this class set to the
        ``directory_restrictions_remove_members_details`` tag with value
        ``val``.

        :param DirectoryRestrictionsRemoveMembersDetails val:
        :rtype: EventDetails
        """
        return cls('directory_restrictions_remove_members_details', val)

    @classmethod
    def emm_add_exception_details(cls, val):
        """
        Create an instance of this class set to the
        ``emm_add_exception_details`` tag with value ``val``.

        :param EmmAddExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('emm_add_exception_details', val)

    @classmethod
    def emm_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``emm_change_policy_details`` tag with value ``val``.

        :param EmmChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('emm_change_policy_details', val)

    @classmethod
    def emm_remove_exception_details(cls, val):
        """
        Create an instance of this class set to the
        ``emm_remove_exception_details`` tag with value ``val``.

        :param EmmRemoveExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('emm_remove_exception_details', val)

    @classmethod
    def extended_version_history_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``extended_version_history_change_policy_details`` tag with value
        ``val``.

        :param ExtendedVersionHistoryChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('extended_version_history_change_policy_details', val)

    @classmethod
    def file_comments_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_comments_change_policy_details`` tag with value ``val``.

        :param FileCommentsChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('file_comments_change_policy_details', val)

    @classmethod
    def file_requests_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_requests_change_policy_details`` tag with value ``val``.

        :param FileRequestsChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('file_requests_change_policy_details', val)

    @classmethod
    def file_requests_emails_enabled_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_requests_emails_enabled_details`` tag with value ``val``.

        :param FileRequestsEmailsEnabledDetails val:
        :rtype: EventDetails
        """
        return cls('file_requests_emails_enabled_details', val)

    @classmethod
    def file_requests_emails_restricted_to_team_only_details(cls, val):
        """
        Create an instance of this class set to the
        ``file_requests_emails_restricted_to_team_only_details`` tag with value
        ``val``.

        :param FileRequestsEmailsRestrictedToTeamOnlyDetails val:
        :rtype: EventDetails
        """
        return cls('file_requests_emails_restricted_to_team_only_details', val)

    @classmethod
    def google_sso_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``google_sso_change_policy_details`` tag with value ``val``.

        :param GoogleSsoChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('google_sso_change_policy_details', val)

    @classmethod
    def group_user_management_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``group_user_management_change_policy_details`` tag with value ``val``.

        :param GroupUserManagementChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('group_user_management_change_policy_details', val)

    @classmethod
    def member_requests_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_requests_change_policy_details`` tag with value ``val``.

        :param MemberRequestsChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('member_requests_change_policy_details', val)

    @classmethod
    def member_space_limits_add_exception_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_add_exception_details`` tag with value ``val``.

        :param MemberSpaceLimitsAddExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_add_exception_details', val)

    @classmethod
    def member_space_limits_change_caps_type_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_caps_type_policy_details`` tag with value
        ``val``.

        :param MemberSpaceLimitsChangeCapsTypePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_change_caps_type_policy_details', val)

    @classmethod
    def member_space_limits_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_policy_details`` tag with value ``val``.

        :param MemberSpaceLimitsChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_change_policy_details', val)

    @classmethod
    def member_space_limits_remove_exception_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_remove_exception_details`` tag with value ``val``.

        :param MemberSpaceLimitsRemoveExceptionDetails val:
        :rtype: EventDetails
        """
        return cls('member_space_limits_remove_exception_details', val)

    @classmethod
    def member_suggestions_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``member_suggestions_change_policy_details`` tag with value ``val``.

        :param MemberSuggestionsChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('member_suggestions_change_policy_details', val)

    @classmethod
    def microsoft_office_addin_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``microsoft_office_addin_change_policy_details`` tag with value ``val``.

        :param MicrosoftOfficeAddinChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('microsoft_office_addin_change_policy_details', val)

    @classmethod
    def network_control_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``network_control_change_policy_details`` tag with value ``val``.

        :param NetworkControlChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('network_control_change_policy_details', val)

    @classmethod
    def paper_change_deployment_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_change_deployment_policy_details`` tag with value ``val``.

        :param PaperChangeDeploymentPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('paper_change_deployment_policy_details', val)

    @classmethod
    def paper_change_member_link_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_change_member_link_policy_details`` tag with value ``val``.

        :param PaperChangeMemberLinkPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('paper_change_member_link_policy_details', val)

    @classmethod
    def paper_change_member_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_change_member_policy_details`` tag with value ``val``.

        :param PaperChangeMemberPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('paper_change_member_policy_details', val)

    @classmethod
    def paper_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_change_policy_details`` tag with value ``val``.

        :param PaperChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('paper_change_policy_details', val)

    @classmethod
    def paper_enabled_users_group_addition_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_enabled_users_group_addition_details`` tag with value ``val``.

        :param PaperEnabledUsersGroupAdditionDetails val:
        :rtype: EventDetails
        """
        return cls('paper_enabled_users_group_addition_details', val)

    @classmethod
    def paper_enabled_users_group_removal_details(cls, val):
        """
        Create an instance of this class set to the
        ``paper_enabled_users_group_removal_details`` tag with value ``val``.

        :param PaperEnabledUsersGroupRemovalDetails val:
        :rtype: EventDetails
        """
        return cls('paper_enabled_users_group_removal_details', val)

    @classmethod
    def permanent_delete_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``permanent_delete_change_policy_details`` tag with value ``val``.

        :param PermanentDeleteChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('permanent_delete_change_policy_details', val)

    @classmethod
    def sharing_change_folder_join_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``sharing_change_folder_join_policy_details`` tag with value ``val``.

        :param SharingChangeFolderJoinPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('sharing_change_folder_join_policy_details', val)

    @classmethod
    def sharing_change_link_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``sharing_change_link_policy_details`` tag with value ``val``.

        :param SharingChangeLinkPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('sharing_change_link_policy_details', val)

    @classmethod
    def sharing_change_member_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``sharing_change_member_policy_details`` tag with value ``val``.

        :param SharingChangeMemberPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('sharing_change_member_policy_details', val)

    @classmethod
    def showcase_change_download_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_change_download_policy_details`` tag with value ``val``.

        :param ShowcaseChangeDownloadPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_change_download_policy_details', val)

    @classmethod
    def showcase_change_enabled_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_change_enabled_policy_details`` tag with value ``val``.

        :param ShowcaseChangeEnabledPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_change_enabled_policy_details', val)

    @classmethod
    def showcase_change_external_sharing_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_change_external_sharing_policy_details`` tag with value
        ``val``.

        :param ShowcaseChangeExternalSharingPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('showcase_change_external_sharing_policy_details', val)

    @classmethod
    def smart_sync_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``smart_sync_change_policy_details`` tag with value ``val``.

        :param SmartSyncChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('smart_sync_change_policy_details', val)

    @classmethod
    def smart_sync_not_opt_out_details(cls, val):
        """
        Create an instance of this class set to the
        ``smart_sync_not_opt_out_details`` tag with value ``val``.

        :param SmartSyncNotOptOutDetails val:
        :rtype: EventDetails
        """
        return cls('smart_sync_not_opt_out_details', val)

    @classmethod
    def smart_sync_opt_out_details(cls, val):
        """
        Create an instance of this class set to the
        ``smart_sync_opt_out_details`` tag with value ``val``.

        :param SmartSyncOptOutDetails val:
        :rtype: EventDetails
        """
        return cls('smart_sync_opt_out_details', val)

    @classmethod
    def sso_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``sso_change_policy_details`` tag with value ``val``.

        :param SsoChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('sso_change_policy_details', val)

    @classmethod
    def team_selective_sync_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_selective_sync_policy_changed_details`` tag with value ``val``.

        :param TeamSelectiveSyncPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('team_selective_sync_policy_changed_details', val)

    @classmethod
    def tfa_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_change_policy_details`` tag with value ``val``.

        :param TfaChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_change_policy_details', val)

    @classmethod
    def two_account_change_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``two_account_change_policy_details`` tag with value ``val``.

        :param TwoAccountChangePolicyDetails val:
        :rtype: EventDetails
        """
        return cls('two_account_change_policy_details', val)

    @classmethod
    def viewer_info_policy_changed_details(cls, val):
        """
        Create an instance of this class set to the
        ``viewer_info_policy_changed_details`` tag with value ``val``.

        :param ViewerInfoPolicyChangedDetails val:
        :rtype: EventDetails
        """
        return cls('viewer_info_policy_changed_details', val)

    @classmethod
    def web_sessions_change_fixed_length_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``web_sessions_change_fixed_length_policy_details`` tag with value
        ``val``.

        :param WebSessionsChangeFixedLengthPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('web_sessions_change_fixed_length_policy_details', val)

    @classmethod
    def web_sessions_change_idle_length_policy_details(cls, val):
        """
        Create an instance of this class set to the
        ``web_sessions_change_idle_length_policy_details`` tag with value
        ``val``.

        :param WebSessionsChangeIdleLengthPolicyDetails val:
        :rtype: EventDetails
        """
        return cls('web_sessions_change_idle_length_policy_details', val)

    @classmethod
    def team_merge_from_details(cls, val):
        """
        Create an instance of this class set to the ``team_merge_from_details``
        tag with value ``val``.

        :param TeamMergeFromDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_from_details', val)

    @classmethod
    def team_merge_to_details(cls, val):
        """
        Create an instance of this class set to the ``team_merge_to_details``
        tag with value ``val``.

        :param TeamMergeToDetails val:
        :rtype: EventDetails
        """
        return cls('team_merge_to_details', val)

    @classmethod
    def team_profile_add_logo_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_profile_add_logo_details`` tag with value ``val``.

        :param TeamProfileAddLogoDetails val:
        :rtype: EventDetails
        """
        return cls('team_profile_add_logo_details', val)

    @classmethod
    def team_profile_change_default_language_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_profile_change_default_language_details`` tag with value ``val``.

        :param TeamProfileChangeDefaultLanguageDetails val:
        :rtype: EventDetails
        """
        return cls('team_profile_change_default_language_details', val)

    @classmethod
    def team_profile_change_logo_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_profile_change_logo_details`` tag with value ``val``.

        :param TeamProfileChangeLogoDetails val:
        :rtype: EventDetails
        """
        return cls('team_profile_change_logo_details', val)

    @classmethod
    def team_profile_change_name_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_profile_change_name_details`` tag with value ``val``.

        :param TeamProfileChangeNameDetails val:
        :rtype: EventDetails
        """
        return cls('team_profile_change_name_details', val)

    @classmethod
    def team_profile_remove_logo_details(cls, val):
        """
        Create an instance of this class set to the
        ``team_profile_remove_logo_details`` tag with value ``val``.

        :param TeamProfileRemoveLogoDetails val:
        :rtype: EventDetails
        """
        return cls('team_profile_remove_logo_details', val)

    @classmethod
    def tfa_add_backup_phone_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_add_backup_phone_details`` tag with value ``val``.

        :param TfaAddBackupPhoneDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_add_backup_phone_details', val)

    @classmethod
    def tfa_add_security_key_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_add_security_key_details`` tag with value ``val``.

        :param TfaAddSecurityKeyDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_add_security_key_details', val)

    @classmethod
    def tfa_change_backup_phone_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_change_backup_phone_details`` tag with value ``val``.

        :param TfaChangeBackupPhoneDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_change_backup_phone_details', val)

    @classmethod
    def tfa_change_status_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_change_status_details`` tag with value ``val``.

        :param TfaChangeStatusDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_change_status_details', val)

    @classmethod
    def tfa_remove_backup_phone_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_remove_backup_phone_details`` tag with value ``val``.

        :param TfaRemoveBackupPhoneDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_remove_backup_phone_details', val)

    @classmethod
    def tfa_remove_security_key_details(cls, val):
        """
        Create an instance of this class set to the
        ``tfa_remove_security_key_details`` tag with value ``val``.

        :param TfaRemoveSecurityKeyDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_remove_security_key_details', val)

    @classmethod
    def tfa_reset_details(cls, val):
        """
        Create an instance of this class set to the ``tfa_reset_details`` tag
        with value ``val``.

        :param TfaResetDetails val:
        :rtype: EventDetails
        """
        return cls('tfa_reset_details', val)

    @classmethod
    def missing_details(cls, val):
        """
        Create an instance of this class set to the ``missing_details`` tag with
        value ``val``.

        :param MissingDetails val:
        :rtype: EventDetails
        """
        return cls('missing_details', val)

    def is_app_link_team_details(self):
        """
        Check if the union tag is ``app_link_team_details``.

        :rtype: bool
        """
        return self._tag == 'app_link_team_details'

    def is_app_link_user_details(self):
        """
        Check if the union tag is ``app_link_user_details``.

        :rtype: bool
        """
        return self._tag == 'app_link_user_details'

    def is_app_unlink_team_details(self):
        """
        Check if the union tag is ``app_unlink_team_details``.

        :rtype: bool
        """
        return self._tag == 'app_unlink_team_details'

    def is_app_unlink_user_details(self):
        """
        Check if the union tag is ``app_unlink_user_details``.

        :rtype: bool
        """
        return self._tag == 'app_unlink_user_details'

    def is_file_add_comment_details(self):
        """
        Check if the union tag is ``file_add_comment_details``.

        :rtype: bool
        """
        return self._tag == 'file_add_comment_details'

    def is_file_change_comment_subscription_details(self):
        """
        Check if the union tag is ``file_change_comment_subscription_details``.

        :rtype: bool
        """
        return self._tag == 'file_change_comment_subscription_details'

    def is_file_delete_comment_details(self):
        """
        Check if the union tag is ``file_delete_comment_details``.

        :rtype: bool
        """
        return self._tag == 'file_delete_comment_details'

    def is_file_edit_comment_details(self):
        """
        Check if the union tag is ``file_edit_comment_details``.

        :rtype: bool
        """
        return self._tag == 'file_edit_comment_details'

    def is_file_like_comment_details(self):
        """
        Check if the union tag is ``file_like_comment_details``.

        :rtype: bool
        """
        return self._tag == 'file_like_comment_details'

    def is_file_resolve_comment_details(self):
        """
        Check if the union tag is ``file_resolve_comment_details``.

        :rtype: bool
        """
        return self._tag == 'file_resolve_comment_details'

    def is_file_unlike_comment_details(self):
        """
        Check if the union tag is ``file_unlike_comment_details``.

        :rtype: bool
        """
        return self._tag == 'file_unlike_comment_details'

    def is_file_unresolve_comment_details(self):
        """
        Check if the union tag is ``file_unresolve_comment_details``.

        :rtype: bool
        """
        return self._tag == 'file_unresolve_comment_details'

    def is_device_change_ip_desktop_details(self):
        """
        Check if the union tag is ``device_change_ip_desktop_details``.

        :rtype: bool
        """
        return self._tag == 'device_change_ip_desktop_details'

    def is_device_change_ip_mobile_details(self):
        """
        Check if the union tag is ``device_change_ip_mobile_details``.

        :rtype: bool
        """
        return self._tag == 'device_change_ip_mobile_details'

    def is_device_change_ip_web_details(self):
        """
        Check if the union tag is ``device_change_ip_web_details``.

        :rtype: bool
        """
        return self._tag == 'device_change_ip_web_details'

    def is_device_delete_on_unlink_fail_details(self):
        """
        Check if the union tag is ``device_delete_on_unlink_fail_details``.

        :rtype: bool
        """
        return self._tag == 'device_delete_on_unlink_fail_details'

    def is_device_delete_on_unlink_success_details(self):
        """
        Check if the union tag is ``device_delete_on_unlink_success_details``.

        :rtype: bool
        """
        return self._tag == 'device_delete_on_unlink_success_details'

    def is_device_link_fail_details(self):
        """
        Check if the union tag is ``device_link_fail_details``.

        :rtype: bool
        """
        return self._tag == 'device_link_fail_details'

    def is_device_link_success_details(self):
        """
        Check if the union tag is ``device_link_success_details``.

        :rtype: bool
        """
        return self._tag == 'device_link_success_details'

    def is_device_management_disabled_details(self):
        """
        Check if the union tag is ``device_management_disabled_details``.

        :rtype: bool
        """
        return self._tag == 'device_management_disabled_details'

    def is_device_management_enabled_details(self):
        """
        Check if the union tag is ``device_management_enabled_details``.

        :rtype: bool
        """
        return self._tag == 'device_management_enabled_details'

    def is_device_unlink_details(self):
        """
        Check if the union tag is ``device_unlink_details``.

        :rtype: bool
        """
        return self._tag == 'device_unlink_details'

    def is_emm_refresh_auth_token_details(self):
        """
        Check if the union tag is ``emm_refresh_auth_token_details``.

        :rtype: bool
        """
        return self._tag == 'emm_refresh_auth_token_details'

    def is_account_capture_change_availability_details(self):
        """
        Check if the union tag is ``account_capture_change_availability_details``.

        :rtype: bool
        """
        return self._tag == 'account_capture_change_availability_details'

    def is_account_capture_migrate_account_details(self):
        """
        Check if the union tag is ``account_capture_migrate_account_details``.

        :rtype: bool
        """
        return self._tag == 'account_capture_migrate_account_details'

    def is_account_capture_notification_emails_sent_details(self):
        """
        Check if the union tag is ``account_capture_notification_emails_sent_details``.

        :rtype: bool
        """
        return self._tag == 'account_capture_notification_emails_sent_details'

    def is_account_capture_relinquish_account_details(self):
        """
        Check if the union tag is ``account_capture_relinquish_account_details``.

        :rtype: bool
        """
        return self._tag == 'account_capture_relinquish_account_details'

    def is_disabled_domain_invites_details(self):
        """
        Check if the union tag is ``disabled_domain_invites_details``.

        :rtype: bool
        """
        return self._tag == 'disabled_domain_invites_details'

    def is_domain_invites_approve_request_to_join_team_details(self):
        """
        Check if the union tag is ``domain_invites_approve_request_to_join_team_details``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_approve_request_to_join_team_details'

    def is_domain_invites_decline_request_to_join_team_details(self):
        """
        Check if the union tag is ``domain_invites_decline_request_to_join_team_details``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_decline_request_to_join_team_details'

    def is_domain_invites_email_existing_users_details(self):
        """
        Check if the union tag is ``domain_invites_email_existing_users_details``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_email_existing_users_details'

    def is_domain_invites_request_to_join_team_details(self):
        """
        Check if the union tag is ``domain_invites_request_to_join_team_details``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_request_to_join_team_details'

    def is_domain_invites_set_invite_new_user_pref_to_no_details(self):
        """
        Check if the union tag is ``domain_invites_set_invite_new_user_pref_to_no_details``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_set_invite_new_user_pref_to_no_details'

    def is_domain_invites_set_invite_new_user_pref_to_yes_details(self):
        """
        Check if the union tag is ``domain_invites_set_invite_new_user_pref_to_yes_details``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_set_invite_new_user_pref_to_yes_details'

    def is_domain_verification_add_domain_fail_details(self):
        """
        Check if the union tag is ``domain_verification_add_domain_fail_details``.

        :rtype: bool
        """
        return self._tag == 'domain_verification_add_domain_fail_details'

    def is_domain_verification_add_domain_success_details(self):
        """
        Check if the union tag is ``domain_verification_add_domain_success_details``.

        :rtype: bool
        """
        return self._tag == 'domain_verification_add_domain_success_details'

    def is_domain_verification_remove_domain_details(self):
        """
        Check if the union tag is ``domain_verification_remove_domain_details``.

        :rtype: bool
        """
        return self._tag == 'domain_verification_remove_domain_details'

    def is_enabled_domain_invites_details(self):
        """
        Check if the union tag is ``enabled_domain_invites_details``.

        :rtype: bool
        """
        return self._tag == 'enabled_domain_invites_details'

    def is_create_folder_details(self):
        """
        Check if the union tag is ``create_folder_details``.

        :rtype: bool
        """
        return self._tag == 'create_folder_details'

    def is_file_add_details(self):
        """
        Check if the union tag is ``file_add_details``.

        :rtype: bool
        """
        return self._tag == 'file_add_details'

    def is_file_copy_details(self):
        """
        Check if the union tag is ``file_copy_details``.

        :rtype: bool
        """
        return self._tag == 'file_copy_details'

    def is_file_delete_details(self):
        """
        Check if the union tag is ``file_delete_details``.

        :rtype: bool
        """
        return self._tag == 'file_delete_details'

    def is_file_download_details(self):
        """
        Check if the union tag is ``file_download_details``.

        :rtype: bool
        """
        return self._tag == 'file_download_details'

    def is_file_edit_details(self):
        """
        Check if the union tag is ``file_edit_details``.

        :rtype: bool
        """
        return self._tag == 'file_edit_details'

    def is_file_get_copy_reference_details(self):
        """
        Check if the union tag is ``file_get_copy_reference_details``.

        :rtype: bool
        """
        return self._tag == 'file_get_copy_reference_details'

    def is_file_move_details(self):
        """
        Check if the union tag is ``file_move_details``.

        :rtype: bool
        """
        return self._tag == 'file_move_details'

    def is_file_permanently_delete_details(self):
        """
        Check if the union tag is ``file_permanently_delete_details``.

        :rtype: bool
        """
        return self._tag == 'file_permanently_delete_details'

    def is_file_preview_details(self):
        """
        Check if the union tag is ``file_preview_details``.

        :rtype: bool
        """
        return self._tag == 'file_preview_details'

    def is_file_rename_details(self):
        """
        Check if the union tag is ``file_rename_details``.

        :rtype: bool
        """
        return self._tag == 'file_rename_details'

    def is_file_restore_details(self):
        """
        Check if the union tag is ``file_restore_details``.

        :rtype: bool
        """
        return self._tag == 'file_restore_details'

    def is_file_revert_details(self):
        """
        Check if the union tag is ``file_revert_details``.

        :rtype: bool
        """
        return self._tag == 'file_revert_details'

    def is_file_rollback_changes_details(self):
        """
        Check if the union tag is ``file_rollback_changes_details``.

        :rtype: bool
        """
        return self._tag == 'file_rollback_changes_details'

    def is_file_save_copy_reference_details(self):
        """
        Check if the union tag is ``file_save_copy_reference_details``.

        :rtype: bool
        """
        return self._tag == 'file_save_copy_reference_details'

    def is_file_request_change_details(self):
        """
        Check if the union tag is ``file_request_change_details``.

        :rtype: bool
        """
        return self._tag == 'file_request_change_details'

    def is_file_request_close_details(self):
        """
        Check if the union tag is ``file_request_close_details``.

        :rtype: bool
        """
        return self._tag == 'file_request_close_details'

    def is_file_request_create_details(self):
        """
        Check if the union tag is ``file_request_create_details``.

        :rtype: bool
        """
        return self._tag == 'file_request_create_details'

    def is_file_request_receive_file_details(self):
        """
        Check if the union tag is ``file_request_receive_file_details``.

        :rtype: bool
        """
        return self._tag == 'file_request_receive_file_details'

    def is_group_add_external_id_details(self):
        """
        Check if the union tag is ``group_add_external_id_details``.

        :rtype: bool
        """
        return self._tag == 'group_add_external_id_details'

    def is_group_add_member_details(self):
        """
        Check if the union tag is ``group_add_member_details``.

        :rtype: bool
        """
        return self._tag == 'group_add_member_details'

    def is_group_change_external_id_details(self):
        """
        Check if the union tag is ``group_change_external_id_details``.

        :rtype: bool
        """
        return self._tag == 'group_change_external_id_details'

    def is_group_change_management_type_details(self):
        """
        Check if the union tag is ``group_change_management_type_details``.

        :rtype: bool
        """
        return self._tag == 'group_change_management_type_details'

    def is_group_change_member_role_details(self):
        """
        Check if the union tag is ``group_change_member_role_details``.

        :rtype: bool
        """
        return self._tag == 'group_change_member_role_details'

    def is_group_create_details(self):
        """
        Check if the union tag is ``group_create_details``.

        :rtype: bool
        """
        return self._tag == 'group_create_details'

    def is_group_delete_details(self):
        """
        Check if the union tag is ``group_delete_details``.

        :rtype: bool
        """
        return self._tag == 'group_delete_details'

    def is_group_description_updated_details(self):
        """
        Check if the union tag is ``group_description_updated_details``.

        :rtype: bool
        """
        return self._tag == 'group_description_updated_details'

    def is_group_join_policy_updated_details(self):
        """
        Check if the union tag is ``group_join_policy_updated_details``.

        :rtype: bool
        """
        return self._tag == 'group_join_policy_updated_details'

    def is_group_moved_details(self):
        """
        Check if the union tag is ``group_moved_details``.

        :rtype: bool
        """
        return self._tag == 'group_moved_details'

    def is_group_remove_external_id_details(self):
        """
        Check if the union tag is ``group_remove_external_id_details``.

        :rtype: bool
        """
        return self._tag == 'group_remove_external_id_details'

    def is_group_remove_member_details(self):
        """
        Check if the union tag is ``group_remove_member_details``.

        :rtype: bool
        """
        return self._tag == 'group_remove_member_details'

    def is_group_rename_details(self):
        """
        Check if the union tag is ``group_rename_details``.

        :rtype: bool
        """
        return self._tag == 'group_rename_details'

    def is_emm_error_details(self):
        """
        Check if the union tag is ``emm_error_details``.

        :rtype: bool
        """
        return self._tag == 'emm_error_details'

    def is_login_fail_details(self):
        """
        Check if the union tag is ``login_fail_details``.

        :rtype: bool
        """
        return self._tag == 'login_fail_details'

    def is_login_success_details(self):
        """
        Check if the union tag is ``login_success_details``.

        :rtype: bool
        """
        return self._tag == 'login_success_details'

    def is_logout_details(self):
        """
        Check if the union tag is ``logout_details``.

        :rtype: bool
        """
        return self._tag == 'logout_details'

    def is_reseller_support_session_end_details(self):
        """
        Check if the union tag is ``reseller_support_session_end_details``.

        :rtype: bool
        """
        return self._tag == 'reseller_support_session_end_details'

    def is_reseller_support_session_start_details(self):
        """
        Check if the union tag is ``reseller_support_session_start_details``.

        :rtype: bool
        """
        return self._tag == 'reseller_support_session_start_details'

    def is_sign_in_as_session_end_details(self):
        """
        Check if the union tag is ``sign_in_as_session_end_details``.

        :rtype: bool
        """
        return self._tag == 'sign_in_as_session_end_details'

    def is_sign_in_as_session_start_details(self):
        """
        Check if the union tag is ``sign_in_as_session_start_details``.

        :rtype: bool
        """
        return self._tag == 'sign_in_as_session_start_details'

    def is_sso_error_details(self):
        """
        Check if the union tag is ``sso_error_details``.

        :rtype: bool
        """
        return self._tag == 'sso_error_details'

    def is_member_add_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_membership_type_details(self):
        """
        Check if the union tag is ``member_change_membership_type_details``.

        :rtype: bool
        """
        return self._tag == 'member_change_membership_type_details'

    def is_member_change_name_details(self):
        """
        Check if the union tag is ``member_change_name_details``.

        :rtype: bool
        """
        return self._tag == 'member_change_name_details'

    def is_member_change_status_details(self):
        """
        Check if the union tag is ``member_change_status_details``.

        :rtype: bool
        """
        return self._tag == 'member_change_status_details'

    def is_member_delete_manual_contacts_details(self):
        """
        Check if the union tag is ``member_delete_manual_contacts_details``.

        :rtype: bool
        """
        return self._tag == 'member_delete_manual_contacts_details'

    def is_member_permanently_delete_account_contents_details(self):
        """
        Check if the union tag is ``member_permanently_delete_account_contents_details``.

        :rtype: bool
        """
        return self._tag == 'member_permanently_delete_account_contents_details'

    def is_member_space_limits_add_custom_quota_details(self):
        """
        Check if the union tag is ``member_space_limits_add_custom_quota_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_add_custom_quota_details'

    def is_member_space_limits_change_custom_quota_details(self):
        """
        Check if the union tag is ``member_space_limits_change_custom_quota_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_custom_quota_details'

    def is_member_space_limits_change_status_details(self):
        """
        Check if the union tag is ``member_space_limits_change_status_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_status_details'

    def is_member_space_limits_remove_custom_quota_details(self):
        """
        Check if the union tag is ``member_space_limits_remove_custom_quota_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_remove_custom_quota_details'

    def is_member_suggest_details(self):
        """
        Check if the union tag is ``member_suggest_details``.

        :rtype: bool
        """
        return self._tag == 'member_suggest_details'

    def is_member_transfer_account_contents_details(self):
        """
        Check if the union tag is ``member_transfer_account_contents_details``.

        :rtype: bool
        """
        return self._tag == 'member_transfer_account_contents_details'

    def is_secondary_mails_policy_changed_details(self):
        """
        Check if the union tag is ``secondary_mails_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'secondary_mails_policy_changed_details'

    def is_paper_content_add_member_details(self):
        """
        Check if the union tag is ``paper_content_add_member_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_add_member_details'

    def is_paper_content_add_to_folder_details(self):
        """
        Check if the union tag is ``paper_content_add_to_folder_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_add_to_folder_details'

    def is_paper_content_archive_details(self):
        """
        Check if the union tag is ``paper_content_archive_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_archive_details'

    def is_paper_content_create_details(self):
        """
        Check if the union tag is ``paper_content_create_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_create_details'

    def is_paper_content_permanently_delete_details(self):
        """
        Check if the union tag is ``paper_content_permanently_delete_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_permanently_delete_details'

    def is_paper_content_remove_from_folder_details(self):
        """
        Check if the union tag is ``paper_content_remove_from_folder_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_remove_from_folder_details'

    def is_paper_content_remove_member_details(self):
        """
        Check if the union tag is ``paper_content_remove_member_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_remove_member_details'

    def is_paper_content_rename_details(self):
        """
        Check if the union tag is ``paper_content_rename_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_rename_details'

    def is_paper_content_restore_details(self):
        """
        Check if the union tag is ``paper_content_restore_details``.

        :rtype: bool
        """
        return self._tag == 'paper_content_restore_details'

    def is_paper_doc_add_comment_details(self):
        """
        Check if the union tag is ``paper_doc_add_comment_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_add_comment_details'

    def is_paper_doc_change_member_role_details(self):
        """
        Check if the union tag is ``paper_doc_change_member_role_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_change_member_role_details'

    def is_paper_doc_change_sharing_policy_details(self):
        """
        Check if the union tag is ``paper_doc_change_sharing_policy_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_change_sharing_policy_details'

    def is_paper_doc_change_subscription_details(self):
        """
        Check if the union tag is ``paper_doc_change_subscription_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_change_subscription_details'

    def is_paper_doc_deleted_details(self):
        """
        Check if the union tag is ``paper_doc_deleted_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_deleted_details'

    def is_paper_doc_delete_comment_details(self):
        """
        Check if the union tag is ``paper_doc_delete_comment_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_delete_comment_details'

    def is_paper_doc_download_details(self):
        """
        Check if the union tag is ``paper_doc_download_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_download_details'

    def is_paper_doc_edit_details(self):
        """
        Check if the union tag is ``paper_doc_edit_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_edit_details'

    def is_paper_doc_edit_comment_details(self):
        """
        Check if the union tag is ``paper_doc_edit_comment_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_edit_comment_details'

    def is_paper_doc_followed_details(self):
        """
        Check if the union tag is ``paper_doc_followed_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_followed_details'

    def is_paper_doc_mention_details(self):
        """
        Check if the union tag is ``paper_doc_mention_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_mention_details'

    def is_paper_doc_ownership_changed_details(self):
        """
        Check if the union tag is ``paper_doc_ownership_changed_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_ownership_changed_details'

    def is_paper_doc_request_access_details(self):
        """
        Check if the union tag is ``paper_doc_request_access_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_request_access_details'

    def is_paper_doc_resolve_comment_details(self):
        """
        Check if the union tag is ``paper_doc_resolve_comment_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_resolve_comment_details'

    def is_paper_doc_revert_details(self):
        """
        Check if the union tag is ``paper_doc_revert_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_revert_details'

    def is_paper_doc_slack_share_details(self):
        """
        Check if the union tag is ``paper_doc_slack_share_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_slack_share_details'

    def is_paper_doc_team_invite_details(self):
        """
        Check if the union tag is ``paper_doc_team_invite_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_team_invite_details'

    def is_paper_doc_trashed_details(self):
        """
        Check if the union tag is ``paper_doc_trashed_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_trashed_details'

    def is_paper_doc_unresolve_comment_details(self):
        """
        Check if the union tag is ``paper_doc_unresolve_comment_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_unresolve_comment_details'

    def is_paper_doc_untrashed_details(self):
        """
        Check if the union tag is ``paper_doc_untrashed_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_untrashed_details'

    def is_paper_doc_view_details(self):
        """
        Check if the union tag is ``paper_doc_view_details``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_view_details'

    def is_paper_external_view_allow_details(self):
        """
        Check if the union tag is ``paper_external_view_allow_details``.

        :rtype: bool
        """
        return self._tag == 'paper_external_view_allow_details'

    def is_paper_external_view_default_team_details(self):
        """
        Check if the union tag is ``paper_external_view_default_team_details``.

        :rtype: bool
        """
        return self._tag == 'paper_external_view_default_team_details'

    def is_paper_external_view_forbid_details(self):
        """
        Check if the union tag is ``paper_external_view_forbid_details``.

        :rtype: bool
        """
        return self._tag == 'paper_external_view_forbid_details'

    def is_paper_folder_change_subscription_details(self):
        """
        Check if the union tag is ``paper_folder_change_subscription_details``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_change_subscription_details'

    def is_paper_folder_deleted_details(self):
        """
        Check if the union tag is ``paper_folder_deleted_details``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_deleted_details'

    def is_paper_folder_followed_details(self):
        """
        Check if the union tag is ``paper_folder_followed_details``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_followed_details'

    def is_paper_folder_team_invite_details(self):
        """
        Check if the union tag is ``paper_folder_team_invite_details``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_team_invite_details'

    def is_password_change_details(self):
        """
        Check if the union tag is ``password_change_details``.

        :rtype: bool
        """
        return self._tag == 'password_change_details'

    def is_password_reset_details(self):
        """
        Check if the union tag is ``password_reset_details``.

        :rtype: bool
        """
        return self._tag == 'password_reset_details'

    def is_password_reset_all_details(self):
        """
        Check if the union tag is ``password_reset_all_details``.

        :rtype: bool
        """
        return self._tag == 'password_reset_all_details'

    def is_emm_create_exceptions_report_details(self):
        """
        Check if the union tag is ``emm_create_exceptions_report_details``.

        :rtype: bool
        """
        return self._tag == 'emm_create_exceptions_report_details'

    def is_emm_create_usage_report_details(self):
        """
        Check if the union tag is ``emm_create_usage_report_details``.

        :rtype: bool
        """
        return self._tag == 'emm_create_usage_report_details'

    def is_export_members_report_details(self):
        """
        Check if the union tag is ``export_members_report_details``.

        :rtype: bool
        """
        return self._tag == 'export_members_report_details'

    def is_paper_admin_export_start_details(self):
        """
        Check if the union tag is ``paper_admin_export_start_details``.

        :rtype: bool
        """
        return self._tag == 'paper_admin_export_start_details'

    def is_smart_sync_create_admin_privilege_report_details(self):
        """
        Check if the union tag is ``smart_sync_create_admin_privilege_report_details``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_create_admin_privilege_report_details'

    def is_team_activity_create_report_details(self):
        """
        Check if the union tag is ``team_activity_create_report_details``.

        :rtype: bool
        """
        return self._tag == 'team_activity_create_report_details'

    def is_collection_share_details(self):
        """
        Check if the union tag is ``collection_share_details``.

        :rtype: bool
        """
        return self._tag == 'collection_share_details'

    def is_note_acl_invite_only_details(self):
        """
        Check if the union tag is ``note_acl_invite_only_details``.

        :rtype: bool
        """
        return self._tag == 'note_acl_invite_only_details'

    def is_note_acl_link_details(self):
        """
        Check if the union tag is ``note_acl_link_details``.

        :rtype: bool
        """
        return self._tag == 'note_acl_link_details'

    def is_note_acl_team_link_details(self):
        """
        Check if the union tag is ``note_acl_team_link_details``.

        :rtype: bool
        """
        return self._tag == 'note_acl_team_link_details'

    def is_note_shared_details(self):
        """
        Check if the union tag is ``note_shared_details``.

        :rtype: bool
        """
        return self._tag == 'note_shared_details'

    def is_note_share_receive_details(self):
        """
        Check if the union tag is ``note_share_receive_details``.

        :rtype: bool
        """
        return self._tag == 'note_share_receive_details'

    def is_open_note_shared_details(self):
        """
        Check if the union tag is ``open_note_shared_details``.

        :rtype: bool
        """
        return self._tag == 'open_note_shared_details'

    def is_sf_add_group_details(self):
        """
        Check if the union tag is ``sf_add_group_details``.

        :rtype: bool
        """
        return self._tag == 'sf_add_group_details'

    def is_sf_allow_non_members_to_view_shared_links_details(self):
        """
        Check if the union tag is ``sf_allow_non_members_to_view_shared_links_details``.

        :rtype: bool
        """
        return self._tag == 'sf_allow_non_members_to_view_shared_links_details'

    def is_sf_external_invite_warn_details(self):
        """
        Check if the union tag is ``sf_external_invite_warn_details``.

        :rtype: bool
        """
        return self._tag == 'sf_external_invite_warn_details'

    def is_sf_fb_invite_details(self):
        """
        Check if the union tag is ``sf_fb_invite_details``.

        :rtype: bool
        """
        return self._tag == 'sf_fb_invite_details'

    def is_sf_fb_invite_change_role_details(self):
        """
        Check if the union tag is ``sf_fb_invite_change_role_details``.

        :rtype: bool
        """
        return self._tag == 'sf_fb_invite_change_role_details'

    def is_sf_fb_uninvite_details(self):
        """
        Check if the union tag is ``sf_fb_uninvite_details``.

        :rtype: bool
        """
        return self._tag == 'sf_fb_uninvite_details'

    def is_sf_invite_group_details(self):
        """
        Check if the union tag is ``sf_invite_group_details``.

        :rtype: bool
        """
        return self._tag == 'sf_invite_group_details'

    def is_sf_team_grant_access_details(self):
        """
        Check if the union tag is ``sf_team_grant_access_details``.

        :rtype: bool
        """
        return self._tag == 'sf_team_grant_access_details'

    def is_sf_team_invite_details(self):
        """
        Check if the union tag is ``sf_team_invite_details``.

        :rtype: bool
        """
        return self._tag == 'sf_team_invite_details'

    def is_sf_team_invite_change_role_details(self):
        """
        Check if the union tag is ``sf_team_invite_change_role_details``.

        :rtype: bool
        """
        return self._tag == 'sf_team_invite_change_role_details'

    def is_sf_team_join_details(self):
        """
        Check if the union tag is ``sf_team_join_details``.

        :rtype: bool
        """
        return self._tag == 'sf_team_join_details'

    def is_sf_team_join_from_oob_link_details(self):
        """
        Check if the union tag is ``sf_team_join_from_oob_link_details``.

        :rtype: bool
        """
        return self._tag == 'sf_team_join_from_oob_link_details'

    def is_sf_team_uninvite_details(self):
        """
        Check if the union tag is ``sf_team_uninvite_details``.

        :rtype: bool
        """
        return self._tag == 'sf_team_uninvite_details'

    def is_shared_content_add_invitees_details(self):
        """
        Check if the union tag is ``shared_content_add_invitees_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_invitees_details'

    def is_shared_content_add_link_expiry_details(self):
        """
        Check if the union tag is ``shared_content_add_link_expiry_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_link_expiry_details'

    def is_shared_content_add_link_password_details(self):
        """
        Check if the union tag is ``shared_content_add_link_password_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_link_password_details'

    def is_shared_content_add_member_details(self):
        """
        Check if the union tag is ``shared_content_add_member_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_member_details'

    def is_shared_content_change_downloads_policy_details(self):
        """
        Check if the union tag is ``shared_content_change_downloads_policy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_downloads_policy_details'

    def is_shared_content_change_invitee_role_details(self):
        """
        Check if the union tag is ``shared_content_change_invitee_role_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_invitee_role_details'

    def is_shared_content_change_link_audience_details(self):
        """
        Check if the union tag is ``shared_content_change_link_audience_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_link_audience_details'

    def is_shared_content_change_link_expiry_details(self):
        """
        Check if the union tag is ``shared_content_change_link_expiry_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_link_expiry_details'

    def is_shared_content_change_link_password_details(self):
        """
        Check if the union tag is ``shared_content_change_link_password_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_link_password_details'

    def is_shared_content_change_member_role_details(self):
        """
        Check if the union tag is ``shared_content_change_member_role_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_member_role_details'

    def is_shared_content_change_viewer_info_policy_details(self):
        """
        Check if the union tag is ``shared_content_change_viewer_info_policy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_viewer_info_policy_details'

    def is_shared_content_claim_invitation_details(self):
        """
        Check if the union tag is ``shared_content_claim_invitation_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_claim_invitation_details'

    def is_shared_content_copy_details(self):
        """
        Check if the union tag is ``shared_content_copy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_copy_details'

    def is_shared_content_download_details(self):
        """
        Check if the union tag is ``shared_content_download_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_download_details'

    def is_shared_content_relinquish_membership_details(self):
        """
        Check if the union tag is ``shared_content_relinquish_membership_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_relinquish_membership_details'

    def is_shared_content_remove_invitees_details(self):
        """
        Check if the union tag is ``shared_content_remove_invitees_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_invitees_details'

    def is_shared_content_remove_link_expiry_details(self):
        """
        Check if the union tag is ``shared_content_remove_link_expiry_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_link_expiry_details'

    def is_shared_content_remove_link_password_details(self):
        """
        Check if the union tag is ``shared_content_remove_link_password_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_link_password_details'

    def is_shared_content_remove_member_details(self):
        """
        Check if the union tag is ``shared_content_remove_member_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_member_details'

    def is_shared_content_request_access_details(self):
        """
        Check if the union tag is ``shared_content_request_access_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_request_access_details'

    def is_shared_content_unshare_details(self):
        """
        Check if the union tag is ``shared_content_unshare_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_unshare_details'

    def is_shared_content_view_details(self):
        """
        Check if the union tag is ``shared_content_view_details``.

        :rtype: bool
        """
        return self._tag == 'shared_content_view_details'

    def is_shared_folder_change_link_policy_details(self):
        """
        Check if the union tag is ``shared_folder_change_link_policy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_link_policy_details'

    def is_shared_folder_change_members_inheritance_policy_details(self):
        """
        Check if the union tag is ``shared_folder_change_members_inheritance_policy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_members_inheritance_policy_details'

    def is_shared_folder_change_members_management_policy_details(self):
        """
        Check if the union tag is ``shared_folder_change_members_management_policy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_members_management_policy_details'

    def is_shared_folder_change_members_policy_details(self):
        """
        Check if the union tag is ``shared_folder_change_members_policy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_members_policy_details'

    def is_shared_folder_create_details(self):
        """
        Check if the union tag is ``shared_folder_create_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_create_details'

    def is_shared_folder_decline_invitation_details(self):
        """
        Check if the union tag is ``shared_folder_decline_invitation_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_decline_invitation_details'

    def is_shared_folder_mount_details(self):
        """
        Check if the union tag is ``shared_folder_mount_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_mount_details'

    def is_shared_folder_nest_details(self):
        """
        Check if the union tag is ``shared_folder_nest_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_nest_details'

    def is_shared_folder_transfer_ownership_details(self):
        """
        Check if the union tag is ``shared_folder_transfer_ownership_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_transfer_ownership_details'

    def is_shared_folder_unmount_details(self):
        """
        Check if the union tag is ``shared_folder_unmount_details``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_unmount_details'

    def is_shared_link_add_expiry_details(self):
        """
        Check if the union tag is ``shared_link_add_expiry_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_add_expiry_details'

    def is_shared_link_change_expiry_details(self):
        """
        Check if the union tag is ``shared_link_change_expiry_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_change_expiry_details'

    def is_shared_link_change_visibility_details(self):
        """
        Check if the union tag is ``shared_link_change_visibility_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_change_visibility_details'

    def is_shared_link_copy_details(self):
        """
        Check if the union tag is ``shared_link_copy_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_copy_details'

    def is_shared_link_create_details(self):
        """
        Check if the union tag is ``shared_link_create_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_create_details'

    def is_shared_link_disable_details(self):
        """
        Check if the union tag is ``shared_link_disable_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_disable_details'

    def is_shared_link_download_details(self):
        """
        Check if the union tag is ``shared_link_download_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_download_details'

    def is_shared_link_remove_expiry_details(self):
        """
        Check if the union tag is ``shared_link_remove_expiry_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_remove_expiry_details'

    def is_shared_link_share_details(self):
        """
        Check if the union tag is ``shared_link_share_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_share_details'

    def is_shared_link_view_details(self):
        """
        Check if the union tag is ``shared_link_view_details``.

        :rtype: bool
        """
        return self._tag == 'shared_link_view_details'

    def is_shared_note_opened_details(self):
        """
        Check if the union tag is ``shared_note_opened_details``.

        :rtype: bool
        """
        return self._tag == 'shared_note_opened_details'

    def is_shmodel_group_share_details(self):
        """
        Check if the union tag is ``shmodel_group_share_details``.

        :rtype: bool
        """
        return self._tag == 'shmodel_group_share_details'

    def is_showcase_access_granted_details(self):
        """
        Check if the union tag is ``showcase_access_granted_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_access_granted_details'

    def is_showcase_add_member_details(self):
        """
        Check if the union tag is ``showcase_add_member_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_add_member_details'

    def is_showcase_archived_details(self):
        """
        Check if the union tag is ``showcase_archived_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_archived_details'

    def is_showcase_created_details(self):
        """
        Check if the union tag is ``showcase_created_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_created_details'

    def is_showcase_delete_comment_details(self):
        """
        Check if the union tag is ``showcase_delete_comment_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_delete_comment_details'

    def is_showcase_edited_details(self):
        """
        Check if the union tag is ``showcase_edited_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_edited_details'

    def is_showcase_edit_comment_details(self):
        """
        Check if the union tag is ``showcase_edit_comment_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_edit_comment_details'

    def is_showcase_file_added_details(self):
        """
        Check if the union tag is ``showcase_file_added_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_added_details'

    def is_showcase_file_download_details(self):
        """
        Check if the union tag is ``showcase_file_download_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_download_details'

    def is_showcase_file_removed_details(self):
        """
        Check if the union tag is ``showcase_file_removed_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_removed_details'

    def is_showcase_file_view_details(self):
        """
        Check if the union tag is ``showcase_file_view_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_view_details'

    def is_showcase_permanently_deleted_details(self):
        """
        Check if the union tag is ``showcase_permanently_deleted_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_permanently_deleted_details'

    def is_showcase_post_comment_details(self):
        """
        Check if the union tag is ``showcase_post_comment_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_post_comment_details'

    def is_showcase_remove_member_details(self):
        """
        Check if the union tag is ``showcase_remove_member_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_remove_member_details'

    def is_showcase_renamed_details(self):
        """
        Check if the union tag is ``showcase_renamed_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_renamed_details'

    def is_showcase_request_access_details(self):
        """
        Check if the union tag is ``showcase_request_access_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_request_access_details'

    def is_showcase_resolve_comment_details(self):
        """
        Check if the union tag is ``showcase_resolve_comment_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_resolve_comment_details'

    def is_showcase_restored_details(self):
        """
        Check if the union tag is ``showcase_restored_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_restored_details'

    def is_showcase_trashed_details(self):
        """
        Check if the union tag is ``showcase_trashed_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_trashed_details'

    def is_showcase_trashed_deprecated_details(self):
        """
        Check if the union tag is ``showcase_trashed_deprecated_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_trashed_deprecated_details'

    def is_showcase_unresolve_comment_details(self):
        """
        Check if the union tag is ``showcase_unresolve_comment_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_unresolve_comment_details'

    def is_showcase_untrashed_details(self):
        """
        Check if the union tag is ``showcase_untrashed_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_untrashed_details'

    def is_showcase_untrashed_deprecated_details(self):
        """
        Check if the union tag is ``showcase_untrashed_deprecated_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_untrashed_deprecated_details'

    def is_showcase_view_details(self):
        """
        Check if the union tag is ``showcase_view_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_view_details'

    def is_sso_add_cert_details(self):
        """
        Check if the union tag is ``sso_add_cert_details``.

        :rtype: bool
        """
        return self._tag == 'sso_add_cert_details'

    def is_sso_add_login_url_details(self):
        """
        Check if the union tag is ``sso_add_login_url_details``.

        :rtype: bool
        """
        return self._tag == 'sso_add_login_url_details'

    def is_sso_add_logout_url_details(self):
        """
        Check if the union tag is ``sso_add_logout_url_details``.

        :rtype: bool
        """
        return self._tag == 'sso_add_logout_url_details'

    def is_sso_change_cert_details(self):
        """
        Check if the union tag is ``sso_change_cert_details``.

        :rtype: bool
        """
        return self._tag == 'sso_change_cert_details'

    def is_sso_change_login_url_details(self):
        """
        Check if the union tag is ``sso_change_login_url_details``.

        :rtype: bool
        """
        return self._tag == 'sso_change_login_url_details'

    def is_sso_change_logout_url_details(self):
        """
        Check if the union tag is ``sso_change_logout_url_details``.

        :rtype: bool
        """
        return self._tag == 'sso_change_logout_url_details'

    def is_sso_change_saml_identity_mode_details(self):
        """
        Check if the union tag is ``sso_change_saml_identity_mode_details``.

        :rtype: bool
        """
        return self._tag == 'sso_change_saml_identity_mode_details'

    def is_sso_remove_cert_details(self):
        """
        Check if the union tag is ``sso_remove_cert_details``.

        :rtype: bool
        """
        return self._tag == 'sso_remove_cert_details'

    def is_sso_remove_login_url_details(self):
        """
        Check if the union tag is ``sso_remove_login_url_details``.

        :rtype: bool
        """
        return self._tag == 'sso_remove_login_url_details'

    def is_sso_remove_logout_url_details(self):
        """
        Check if the union tag is ``sso_remove_logout_url_details``.

        :rtype: bool
        """
        return self._tag == 'sso_remove_logout_url_details'

    def is_team_folder_change_status_details(self):
        """
        Check if the union tag is ``team_folder_change_status_details``.

        :rtype: bool
        """
        return self._tag == 'team_folder_change_status_details'

    def is_team_folder_create_details(self):
        """
        Check if the union tag is ``team_folder_create_details``.

        :rtype: bool
        """
        return self._tag == 'team_folder_create_details'

    def is_team_folder_downgrade_details(self):
        """
        Check if the union tag is ``team_folder_downgrade_details``.

        :rtype: bool
        """
        return self._tag == 'team_folder_downgrade_details'

    def is_team_folder_permanently_delete_details(self):
        """
        Check if the union tag is ``team_folder_permanently_delete_details``.

        :rtype: bool
        """
        return self._tag == 'team_folder_permanently_delete_details'

    def is_team_folder_rename_details(self):
        """
        Check if the union tag is ``team_folder_rename_details``.

        :rtype: bool
        """
        return self._tag == 'team_folder_rename_details'

    def is_team_selective_sync_settings_changed_details(self):
        """
        Check if the union tag is ``team_selective_sync_settings_changed_details``.

        :rtype: bool
        """
        return self._tag == 'team_selective_sync_settings_changed_details'

    def is_account_capture_change_policy_details(self):
        """
        Check if the union tag is ``account_capture_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'account_capture_change_policy_details'

    def is_allow_download_disabled_details(self):
        """
        Check if the union tag is ``allow_download_disabled_details``.

        :rtype: bool
        """
        return self._tag == 'allow_download_disabled_details'

    def is_allow_download_enabled_details(self):
        """
        Check if the union tag is ``allow_download_enabled_details``.

        :rtype: bool
        """
        return self._tag == 'allow_download_enabled_details'

    def is_camera_uploads_policy_changed_details(self):
        """
        Check if the union tag is ``camera_uploads_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'camera_uploads_policy_changed_details'

    def is_data_placement_restriction_change_policy_details(self):
        """
        Check if the union tag is ``data_placement_restriction_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'data_placement_restriction_change_policy_details'

    def is_data_placement_restriction_satisfy_policy_details(self):
        """
        Check if the union tag is ``data_placement_restriction_satisfy_policy_details``.

        :rtype: bool
        """
        return self._tag == 'data_placement_restriction_satisfy_policy_details'

    def is_device_approvals_change_desktop_policy_details(self):
        """
        Check if the union tag is ``device_approvals_change_desktop_policy_details``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_desktop_policy_details'

    def is_device_approvals_change_mobile_policy_details(self):
        """
        Check if the union tag is ``device_approvals_change_mobile_policy_details``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_mobile_policy_details'

    def is_device_approvals_change_overage_action_details(self):
        """
        Check if the union tag is ``device_approvals_change_overage_action_details``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_overage_action_details'

    def is_device_approvals_change_unlink_action_details(self):
        """
        Check if the union tag is ``device_approvals_change_unlink_action_details``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_unlink_action_details'

    def is_directory_restrictions_add_members_details(self):
        """
        Check if the union tag is ``directory_restrictions_add_members_details``.

        :rtype: bool
        """
        return self._tag == 'directory_restrictions_add_members_details'

    def is_directory_restrictions_remove_members_details(self):
        """
        Check if the union tag is ``directory_restrictions_remove_members_details``.

        :rtype: bool
        """
        return self._tag == 'directory_restrictions_remove_members_details'

    def is_emm_add_exception_details(self):
        """
        Check if the union tag is ``emm_add_exception_details``.

        :rtype: bool
        """
        return self._tag == 'emm_add_exception_details'

    def is_emm_change_policy_details(self):
        """
        Check if the union tag is ``emm_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'emm_change_policy_details'

    def is_emm_remove_exception_details(self):
        """
        Check if the union tag is ``emm_remove_exception_details``.

        :rtype: bool
        """
        return self._tag == 'emm_remove_exception_details'

    def is_extended_version_history_change_policy_details(self):
        """
        Check if the union tag is ``extended_version_history_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'extended_version_history_change_policy_details'

    def is_file_comments_change_policy_details(self):
        """
        Check if the union tag is ``file_comments_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'file_comments_change_policy_details'

    def is_file_requests_change_policy_details(self):
        """
        Check if the union tag is ``file_requests_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'file_requests_change_policy_details'

    def is_file_requests_emails_enabled_details(self):
        """
        Check if the union tag is ``file_requests_emails_enabled_details``.

        :rtype: bool
        """
        return self._tag == 'file_requests_emails_enabled_details'

    def is_file_requests_emails_restricted_to_team_only_details(self):
        """
        Check if the union tag is ``file_requests_emails_restricted_to_team_only_details``.

        :rtype: bool
        """
        return self._tag == 'file_requests_emails_restricted_to_team_only_details'

    def is_google_sso_change_policy_details(self):
        """
        Check if the union tag is ``google_sso_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'google_sso_change_policy_details'

    def is_group_user_management_change_policy_details(self):
        """
        Check if the union tag is ``group_user_management_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'group_user_management_change_policy_details'

    def is_member_requests_change_policy_details(self):
        """
        Check if the union tag is ``member_requests_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'member_requests_change_policy_details'

    def is_member_space_limits_add_exception_details(self):
        """
        Check if the union tag is ``member_space_limits_add_exception_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_add_exception_details'

    def is_member_space_limits_change_caps_type_policy_details(self):
        """
        Check if the union tag is ``member_space_limits_change_caps_type_policy_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_caps_type_policy_details'

    def is_member_space_limits_change_policy_details(self):
        """
        Check if the union tag is ``member_space_limits_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_policy_details'

    def is_member_space_limits_remove_exception_details(self):
        """
        Check if the union tag is ``member_space_limits_remove_exception_details``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_remove_exception_details'

    def is_member_suggestions_change_policy_details(self):
        """
        Check if the union tag is ``member_suggestions_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'member_suggestions_change_policy_details'

    def is_microsoft_office_addin_change_policy_details(self):
        """
        Check if the union tag is ``microsoft_office_addin_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'microsoft_office_addin_change_policy_details'

    def is_network_control_change_policy_details(self):
        """
        Check if the union tag is ``network_control_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'network_control_change_policy_details'

    def is_paper_change_deployment_policy_details(self):
        """
        Check if the union tag is ``paper_change_deployment_policy_details``.

        :rtype: bool
        """
        return self._tag == 'paper_change_deployment_policy_details'

    def is_paper_change_member_link_policy_details(self):
        """
        Check if the union tag is ``paper_change_member_link_policy_details``.

        :rtype: bool
        """
        return self._tag == 'paper_change_member_link_policy_details'

    def is_paper_change_member_policy_details(self):
        """
        Check if the union tag is ``paper_change_member_policy_details``.

        :rtype: bool
        """
        return self._tag == 'paper_change_member_policy_details'

    def is_paper_change_policy_details(self):
        """
        Check if the union tag is ``paper_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'paper_change_policy_details'

    def is_paper_enabled_users_group_addition_details(self):
        """
        Check if the union tag is ``paper_enabled_users_group_addition_details``.

        :rtype: bool
        """
        return self._tag == 'paper_enabled_users_group_addition_details'

    def is_paper_enabled_users_group_removal_details(self):
        """
        Check if the union tag is ``paper_enabled_users_group_removal_details``.

        :rtype: bool
        """
        return self._tag == 'paper_enabled_users_group_removal_details'

    def is_permanent_delete_change_policy_details(self):
        """
        Check if the union tag is ``permanent_delete_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'permanent_delete_change_policy_details'

    def is_sharing_change_folder_join_policy_details(self):
        """
        Check if the union tag is ``sharing_change_folder_join_policy_details``.

        :rtype: bool
        """
        return self._tag == 'sharing_change_folder_join_policy_details'

    def is_sharing_change_link_policy_details(self):
        """
        Check if the union tag is ``sharing_change_link_policy_details``.

        :rtype: bool
        """
        return self._tag == 'sharing_change_link_policy_details'

    def is_sharing_change_member_policy_details(self):
        """
        Check if the union tag is ``sharing_change_member_policy_details``.

        :rtype: bool
        """
        return self._tag == 'sharing_change_member_policy_details'

    def is_showcase_change_download_policy_details(self):
        """
        Check if the union tag is ``showcase_change_download_policy_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_change_download_policy_details'

    def is_showcase_change_enabled_policy_details(self):
        """
        Check if the union tag is ``showcase_change_enabled_policy_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_change_enabled_policy_details'

    def is_showcase_change_external_sharing_policy_details(self):
        """
        Check if the union tag is ``showcase_change_external_sharing_policy_details``.

        :rtype: bool
        """
        return self._tag == 'showcase_change_external_sharing_policy_details'

    def is_smart_sync_change_policy_details(self):
        """
        Check if the union tag is ``smart_sync_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_change_policy_details'

    def is_smart_sync_not_opt_out_details(self):
        """
        Check if the union tag is ``smart_sync_not_opt_out_details``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_not_opt_out_details'

    def is_smart_sync_opt_out_details(self):
        """
        Check if the union tag is ``smart_sync_opt_out_details``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_opt_out_details'

    def is_sso_change_policy_details(self):
        """
        Check if the union tag is ``sso_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'sso_change_policy_details'

    def is_team_selective_sync_policy_changed_details(self):
        """
        Check if the union tag is ``team_selective_sync_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'team_selective_sync_policy_changed_details'

    def is_tfa_change_policy_details(self):
        """
        Check if the union tag is ``tfa_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_change_policy_details'

    def is_two_account_change_policy_details(self):
        """
        Check if the union tag is ``two_account_change_policy_details``.

        :rtype: bool
        """
        return self._tag == 'two_account_change_policy_details'

    def is_viewer_info_policy_changed_details(self):
        """
        Check if the union tag is ``viewer_info_policy_changed_details``.

        :rtype: bool
        """
        return self._tag == 'viewer_info_policy_changed_details'

    def is_web_sessions_change_fixed_length_policy_details(self):
        """
        Check if the union tag is ``web_sessions_change_fixed_length_policy_details``.

        :rtype: bool
        """
        return self._tag == 'web_sessions_change_fixed_length_policy_details'

    def is_web_sessions_change_idle_length_policy_details(self):
        """
        Check if the union tag is ``web_sessions_change_idle_length_policy_details``.

        :rtype: bool
        """
        return self._tag == 'web_sessions_change_idle_length_policy_details'

    def is_team_merge_from_details(self):
        """
        Check if the union tag is ``team_merge_from_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_from_details'

    def is_team_merge_to_details(self):
        """
        Check if the union tag is ``team_merge_to_details``.

        :rtype: bool
        """
        return self._tag == 'team_merge_to_details'

    def is_team_profile_add_logo_details(self):
        """
        Check if the union tag is ``team_profile_add_logo_details``.

        :rtype: bool
        """
        return self._tag == 'team_profile_add_logo_details'

    def is_team_profile_change_default_language_details(self):
        """
        Check if the union tag is ``team_profile_change_default_language_details``.

        :rtype: bool
        """
        return self._tag == 'team_profile_change_default_language_details'

    def is_team_profile_change_logo_details(self):
        """
        Check if the union tag is ``team_profile_change_logo_details``.

        :rtype: bool
        """
        return self._tag == 'team_profile_change_logo_details'

    def is_team_profile_change_name_details(self):
        """
        Check if the union tag is ``team_profile_change_name_details``.

        :rtype: bool
        """
        return self._tag == 'team_profile_change_name_details'

    def is_team_profile_remove_logo_details(self):
        """
        Check if the union tag is ``team_profile_remove_logo_details``.

        :rtype: bool
        """
        return self._tag == 'team_profile_remove_logo_details'

    def is_tfa_add_backup_phone_details(self):
        """
        Check if the union tag is ``tfa_add_backup_phone_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_add_backup_phone_details'

    def is_tfa_add_security_key_details(self):
        """
        Check if the union tag is ``tfa_add_security_key_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_add_security_key_details'

    def is_tfa_change_backup_phone_details(self):
        """
        Check if the union tag is ``tfa_change_backup_phone_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_change_backup_phone_details'

    def is_tfa_change_status_details(self):
        """
        Check if the union tag is ``tfa_change_status_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_change_status_details'

    def is_tfa_remove_backup_phone_details(self):
        """
        Check if the union tag is ``tfa_remove_backup_phone_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_remove_backup_phone_details'

    def is_tfa_remove_security_key_details(self):
        """
        Check if the union tag is ``tfa_remove_security_key_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_remove_security_key_details'

    def is_tfa_reset_details(self):
        """
        Check if the union tag is ``tfa_reset_details``.

        :rtype: bool
        """
        return self._tag == 'tfa_reset_details'

    def is_missing_details(self):
        """
        Check if the union tag is ``missing_details``.

        :rtype: bool
        """
        return self._tag == 'missing_details'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_app_link_team_details(self):
        """
        Only call this if :meth:`is_app_link_team_details` is true.

        :rtype: AppLinkTeamDetails
        """
        if not self.is_app_link_team_details():
            raise AttributeError("tag 'app_link_team_details' not set")
        return self._value

    def get_app_link_user_details(self):
        """
        Only call this if :meth:`is_app_link_user_details` is true.

        :rtype: AppLinkUserDetails
        """
        if not self.is_app_link_user_details():
            raise AttributeError("tag 'app_link_user_details' not set")
        return self._value

    def get_app_unlink_team_details(self):
        """
        Only call this if :meth:`is_app_unlink_team_details` is true.

        :rtype: AppUnlinkTeamDetails
        """
        if not self.is_app_unlink_team_details():
            raise AttributeError("tag 'app_unlink_team_details' not set")
        return self._value

    def get_app_unlink_user_details(self):
        """
        Only call this if :meth:`is_app_unlink_user_details` is true.

        :rtype: AppUnlinkUserDetails
        """
        if not self.is_app_unlink_user_details():
            raise AttributeError("tag 'app_unlink_user_details' not set")
        return self._value

    def get_file_add_comment_details(self):
        """
        Only call this if :meth:`is_file_add_comment_details` is true.

        :rtype: FileAddCommentDetails
        """
        if not self.is_file_add_comment_details():
            raise AttributeError("tag 'file_add_comment_details' not set")
        return self._value

    def get_file_change_comment_subscription_details(self):
        """
        Only call this if :meth:`is_file_change_comment_subscription_details` is true.

        :rtype: FileChangeCommentSubscriptionDetails
        """
        if not self.is_file_change_comment_subscription_details():
            raise AttributeError("tag 'file_change_comment_subscription_details' not set")
        return self._value

    def get_file_delete_comment_details(self):
        """
        Only call this if :meth:`is_file_delete_comment_details` is true.

        :rtype: FileDeleteCommentDetails
        """
        if not self.is_file_delete_comment_details():
            raise AttributeError("tag 'file_delete_comment_details' not set")
        return self._value

    def get_file_edit_comment_details(self):
        """
        Only call this if :meth:`is_file_edit_comment_details` is true.

        :rtype: FileEditCommentDetails
        """
        if not self.is_file_edit_comment_details():
            raise AttributeError("tag 'file_edit_comment_details' not set")
        return self._value

    def get_file_like_comment_details(self):
        """
        Only call this if :meth:`is_file_like_comment_details` is true.

        :rtype: FileLikeCommentDetails
        """
        if not self.is_file_like_comment_details():
            raise AttributeError("tag 'file_like_comment_details' not set")
        return self._value

    def get_file_resolve_comment_details(self):
        """
        Only call this if :meth:`is_file_resolve_comment_details` is true.

        :rtype: FileResolveCommentDetails
        """
        if not self.is_file_resolve_comment_details():
            raise AttributeError("tag 'file_resolve_comment_details' not set")
        return self._value

    def get_file_unlike_comment_details(self):
        """
        Only call this if :meth:`is_file_unlike_comment_details` is true.

        :rtype: FileUnlikeCommentDetails
        """
        if not self.is_file_unlike_comment_details():
            raise AttributeError("tag 'file_unlike_comment_details' not set")
        return self._value

    def get_file_unresolve_comment_details(self):
        """
        Only call this if :meth:`is_file_unresolve_comment_details` is true.

        :rtype: FileUnresolveCommentDetails
        """
        if not self.is_file_unresolve_comment_details():
            raise AttributeError("tag 'file_unresolve_comment_details' not set")
        return self._value

    def get_device_change_ip_desktop_details(self):
        """
        Only call this if :meth:`is_device_change_ip_desktop_details` is true.

        :rtype: DeviceChangeIpDesktopDetails
        """
        if not self.is_device_change_ip_desktop_details():
            raise AttributeError("tag 'device_change_ip_desktop_details' not set")
        return self._value

    def get_device_change_ip_mobile_details(self):
        """
        Only call this if :meth:`is_device_change_ip_mobile_details` is true.

        :rtype: DeviceChangeIpMobileDetails
        """
        if not self.is_device_change_ip_mobile_details():
            raise AttributeError("tag 'device_change_ip_mobile_details' not set")
        return self._value

    def get_device_change_ip_web_details(self):
        """
        Only call this if :meth:`is_device_change_ip_web_details` is true.

        :rtype: DeviceChangeIpWebDetails
        """
        if not self.is_device_change_ip_web_details():
            raise AttributeError("tag 'device_change_ip_web_details' not set")
        return self._value

    def get_device_delete_on_unlink_fail_details(self):
        """
        Only call this if :meth:`is_device_delete_on_unlink_fail_details` is true.

        :rtype: DeviceDeleteOnUnlinkFailDetails
        """
        if not self.is_device_delete_on_unlink_fail_details():
            raise AttributeError("tag 'device_delete_on_unlink_fail_details' not set")
        return self._value

    def get_device_delete_on_unlink_success_details(self):
        """
        Only call this if :meth:`is_device_delete_on_unlink_success_details` is true.

        :rtype: DeviceDeleteOnUnlinkSuccessDetails
        """
        if not self.is_device_delete_on_unlink_success_details():
            raise AttributeError("tag 'device_delete_on_unlink_success_details' not set")
        return self._value

    def get_device_link_fail_details(self):
        """
        Only call this if :meth:`is_device_link_fail_details` is true.

        :rtype: DeviceLinkFailDetails
        """
        if not self.is_device_link_fail_details():
            raise AttributeError("tag 'device_link_fail_details' not set")
        return self._value

    def get_device_link_success_details(self):
        """
        Only call this if :meth:`is_device_link_success_details` is true.

        :rtype: DeviceLinkSuccessDetails
        """
        if not self.is_device_link_success_details():
            raise AttributeError("tag 'device_link_success_details' not set")
        return self._value

    def get_device_management_disabled_details(self):
        """
        Only call this if :meth:`is_device_management_disabled_details` is true.

        :rtype: DeviceManagementDisabledDetails
        """
        if not self.is_device_management_disabled_details():
            raise AttributeError("tag 'device_management_disabled_details' not set")
        return self._value

    def get_device_management_enabled_details(self):
        """
        Only call this if :meth:`is_device_management_enabled_details` is true.

        :rtype: DeviceManagementEnabledDetails
        """
        if not self.is_device_management_enabled_details():
            raise AttributeError("tag 'device_management_enabled_details' not set")
        return self._value

    def get_device_unlink_details(self):
        """
        Only call this if :meth:`is_device_unlink_details` is true.

        :rtype: DeviceUnlinkDetails
        """
        if not self.is_device_unlink_details():
            raise AttributeError("tag 'device_unlink_details' not set")
        return self._value

    def get_emm_refresh_auth_token_details(self):
        """
        Only call this if :meth:`is_emm_refresh_auth_token_details` is true.

        :rtype: EmmRefreshAuthTokenDetails
        """
        if not self.is_emm_refresh_auth_token_details():
            raise AttributeError("tag 'emm_refresh_auth_token_details' not set")
        return self._value

    def get_account_capture_change_availability_details(self):
        """
        Only call this if :meth:`is_account_capture_change_availability_details` is true.

        :rtype: AccountCaptureChangeAvailabilityDetails
        """
        if not self.is_account_capture_change_availability_details():
            raise AttributeError("tag 'account_capture_change_availability_details' not set")
        return self._value

    def get_account_capture_migrate_account_details(self):
        """
        Only call this if :meth:`is_account_capture_migrate_account_details` is true.

        :rtype: AccountCaptureMigrateAccountDetails
        """
        if not self.is_account_capture_migrate_account_details():
            raise AttributeError("tag 'account_capture_migrate_account_details' not set")
        return self._value

    def get_account_capture_notification_emails_sent_details(self):
        """
        Only call this if :meth:`is_account_capture_notification_emails_sent_details` is true.

        :rtype: AccountCaptureNotificationEmailsSentDetails
        """
        if not self.is_account_capture_notification_emails_sent_details():
            raise AttributeError("tag 'account_capture_notification_emails_sent_details' not set")
        return self._value

    def get_account_capture_relinquish_account_details(self):
        """
        Only call this if :meth:`is_account_capture_relinquish_account_details` is true.

        :rtype: AccountCaptureRelinquishAccountDetails
        """
        if not self.is_account_capture_relinquish_account_details():
            raise AttributeError("tag 'account_capture_relinquish_account_details' not set")
        return self._value

    def get_disabled_domain_invites_details(self):
        """
        Only call this if :meth:`is_disabled_domain_invites_details` is true.

        :rtype: DisabledDomainInvitesDetails
        """
        if not self.is_disabled_domain_invites_details():
            raise AttributeError("tag 'disabled_domain_invites_details' not set")
        return self._value

    def get_domain_invites_approve_request_to_join_team_details(self):
        """
        Only call this if :meth:`is_domain_invites_approve_request_to_join_team_details` is true.

        :rtype: DomainInvitesApproveRequestToJoinTeamDetails
        """
        if not self.is_domain_invites_approve_request_to_join_team_details():
            raise AttributeError("tag 'domain_invites_approve_request_to_join_team_details' not set")
        return self._value

    def get_domain_invites_decline_request_to_join_team_details(self):
        """
        Only call this if :meth:`is_domain_invites_decline_request_to_join_team_details` is true.

        :rtype: DomainInvitesDeclineRequestToJoinTeamDetails
        """
        if not self.is_domain_invites_decline_request_to_join_team_details():
            raise AttributeError("tag 'domain_invites_decline_request_to_join_team_details' not set")
        return self._value

    def get_domain_invites_email_existing_users_details(self):
        """
        Only call this if :meth:`is_domain_invites_email_existing_users_details` is true.

        :rtype: DomainInvitesEmailExistingUsersDetails
        """
        if not self.is_domain_invites_email_existing_users_details():
            raise AttributeError("tag 'domain_invites_email_existing_users_details' not set")
        return self._value

    def get_domain_invites_request_to_join_team_details(self):
        """
        Only call this if :meth:`is_domain_invites_request_to_join_team_details` is true.

        :rtype: DomainInvitesRequestToJoinTeamDetails
        """
        if not self.is_domain_invites_request_to_join_team_details():
            raise AttributeError("tag 'domain_invites_request_to_join_team_details' not set")
        return self._value

    def get_domain_invites_set_invite_new_user_pref_to_no_details(self):
        """
        Only call this if :meth:`is_domain_invites_set_invite_new_user_pref_to_no_details` is true.

        :rtype: DomainInvitesSetInviteNewUserPrefToNoDetails
        """
        if not self.is_domain_invites_set_invite_new_user_pref_to_no_details():
            raise AttributeError("tag 'domain_invites_set_invite_new_user_pref_to_no_details' not set")
        return self._value

    def get_domain_invites_set_invite_new_user_pref_to_yes_details(self):
        """
        Only call this if :meth:`is_domain_invites_set_invite_new_user_pref_to_yes_details` is true.

        :rtype: DomainInvitesSetInviteNewUserPrefToYesDetails
        """
        if not self.is_domain_invites_set_invite_new_user_pref_to_yes_details():
            raise AttributeError("tag 'domain_invites_set_invite_new_user_pref_to_yes_details' not set")
        return self._value

    def get_domain_verification_add_domain_fail_details(self):
        """
        Only call this if :meth:`is_domain_verification_add_domain_fail_details` is true.

        :rtype: DomainVerificationAddDomainFailDetails
        """
        if not self.is_domain_verification_add_domain_fail_details():
            raise AttributeError("tag 'domain_verification_add_domain_fail_details' not set")
        return self._value

    def get_domain_verification_add_domain_success_details(self):
        """
        Only call this if :meth:`is_domain_verification_add_domain_success_details` is true.

        :rtype: DomainVerificationAddDomainSuccessDetails
        """
        if not self.is_domain_verification_add_domain_success_details():
            raise AttributeError("tag 'domain_verification_add_domain_success_details' not set")
        return self._value

    def get_domain_verification_remove_domain_details(self):
        """
        Only call this if :meth:`is_domain_verification_remove_domain_details` is true.

        :rtype: DomainVerificationRemoveDomainDetails
        """
        if not self.is_domain_verification_remove_domain_details():
            raise AttributeError("tag 'domain_verification_remove_domain_details' not set")
        return self._value

    def get_enabled_domain_invites_details(self):
        """
        Only call this if :meth:`is_enabled_domain_invites_details` is true.

        :rtype: EnabledDomainInvitesDetails
        """
        if not self.is_enabled_domain_invites_details():
            raise AttributeError("tag 'enabled_domain_invites_details' not set")
        return self._value

    def get_create_folder_details(self):
        """
        Only call this if :meth:`is_create_folder_details` is true.

        :rtype: CreateFolderDetails
        """
        if not self.is_create_folder_details():
            raise AttributeError("tag 'create_folder_details' not set")
        return self._value

    def get_file_add_details(self):
        """
        Only call this if :meth:`is_file_add_details` is true.

        :rtype: FileAddDetails
        """
        if not self.is_file_add_details():
            raise AttributeError("tag 'file_add_details' not set")
        return self._value

    def get_file_copy_details(self):
        """
        Only call this if :meth:`is_file_copy_details` is true.

        :rtype: FileCopyDetails
        """
        if not self.is_file_copy_details():
            raise AttributeError("tag 'file_copy_details' not set")
        return self._value

    def get_file_delete_details(self):
        """
        Only call this if :meth:`is_file_delete_details` is true.

        :rtype: FileDeleteDetails
        """
        if not self.is_file_delete_details():
            raise AttributeError("tag 'file_delete_details' not set")
        return self._value

    def get_file_download_details(self):
        """
        Only call this if :meth:`is_file_download_details` is true.

        :rtype: FileDownloadDetails
        """
        if not self.is_file_download_details():
            raise AttributeError("tag 'file_download_details' not set")
        return self._value

    def get_file_edit_details(self):
        """
        Only call this if :meth:`is_file_edit_details` is true.

        :rtype: FileEditDetails
        """
        if not self.is_file_edit_details():
            raise AttributeError("tag 'file_edit_details' not set")
        return self._value

    def get_file_get_copy_reference_details(self):
        """
        Only call this if :meth:`is_file_get_copy_reference_details` is true.

        :rtype: FileGetCopyReferenceDetails
        """
        if not self.is_file_get_copy_reference_details():
            raise AttributeError("tag 'file_get_copy_reference_details' not set")
        return self._value

    def get_file_move_details(self):
        """
        Only call this if :meth:`is_file_move_details` is true.

        :rtype: FileMoveDetails
        """
        if not self.is_file_move_details():
            raise AttributeError("tag 'file_move_details' not set")
        return self._value

    def get_file_permanently_delete_details(self):
        """
        Only call this if :meth:`is_file_permanently_delete_details` is true.

        :rtype: FilePermanentlyDeleteDetails
        """
        if not self.is_file_permanently_delete_details():
            raise AttributeError("tag 'file_permanently_delete_details' not set")
        return self._value

    def get_file_preview_details(self):
        """
        Only call this if :meth:`is_file_preview_details` is true.

        :rtype: FilePreviewDetails
        """
        if not self.is_file_preview_details():
            raise AttributeError("tag 'file_preview_details' not set")
        return self._value

    def get_file_rename_details(self):
        """
        Only call this if :meth:`is_file_rename_details` is true.

        :rtype: FileRenameDetails
        """
        if not self.is_file_rename_details():
            raise AttributeError("tag 'file_rename_details' not set")
        return self._value

    def get_file_restore_details(self):
        """
        Only call this if :meth:`is_file_restore_details` is true.

        :rtype: FileRestoreDetails
        """
        if not self.is_file_restore_details():
            raise AttributeError("tag 'file_restore_details' not set")
        return self._value

    def get_file_revert_details(self):
        """
        Only call this if :meth:`is_file_revert_details` is true.

        :rtype: FileRevertDetails
        """
        if not self.is_file_revert_details():
            raise AttributeError("tag 'file_revert_details' not set")
        return self._value

    def get_file_rollback_changes_details(self):
        """
        Only call this if :meth:`is_file_rollback_changes_details` is true.

        :rtype: FileRollbackChangesDetails
        """
        if not self.is_file_rollback_changes_details():
            raise AttributeError("tag 'file_rollback_changes_details' not set")
        return self._value

    def get_file_save_copy_reference_details(self):
        """
        Only call this if :meth:`is_file_save_copy_reference_details` is true.

        :rtype: FileSaveCopyReferenceDetails
        """
        if not self.is_file_save_copy_reference_details():
            raise AttributeError("tag 'file_save_copy_reference_details' not set")
        return self._value

    def get_file_request_change_details(self):
        """
        Only call this if :meth:`is_file_request_change_details` is true.

        :rtype: FileRequestChangeDetails
        """
        if not self.is_file_request_change_details():
            raise AttributeError("tag 'file_request_change_details' not set")
        return self._value

    def get_file_request_close_details(self):
        """
        Only call this if :meth:`is_file_request_close_details` is true.

        :rtype: FileRequestCloseDetails
        """
        if not self.is_file_request_close_details():
            raise AttributeError("tag 'file_request_close_details' not set")
        return self._value

    def get_file_request_create_details(self):
        """
        Only call this if :meth:`is_file_request_create_details` is true.

        :rtype: FileRequestCreateDetails
        """
        if not self.is_file_request_create_details():
            raise AttributeError("tag 'file_request_create_details' not set")
        return self._value

    def get_file_request_receive_file_details(self):
        """
        Only call this if :meth:`is_file_request_receive_file_details` is true.

        :rtype: FileRequestReceiveFileDetails
        """
        if not self.is_file_request_receive_file_details():
            raise AttributeError("tag 'file_request_receive_file_details' not set")
        return self._value

    def get_group_add_external_id_details(self):
        """
        Only call this if :meth:`is_group_add_external_id_details` is true.

        :rtype: GroupAddExternalIdDetails
        """
        if not self.is_group_add_external_id_details():
            raise AttributeError("tag 'group_add_external_id_details' not set")
        return self._value

    def get_group_add_member_details(self):
        """
        Only call this if :meth:`is_group_add_member_details` is true.

        :rtype: GroupAddMemberDetails
        """
        if not self.is_group_add_member_details():
            raise AttributeError("tag 'group_add_member_details' not set")
        return self._value

    def get_group_change_external_id_details(self):
        """
        Only call this if :meth:`is_group_change_external_id_details` is true.

        :rtype: GroupChangeExternalIdDetails
        """
        if not self.is_group_change_external_id_details():
            raise AttributeError("tag 'group_change_external_id_details' not set")
        return self._value

    def get_group_change_management_type_details(self):
        """
        Only call this if :meth:`is_group_change_management_type_details` is true.

        :rtype: GroupChangeManagementTypeDetails
        """
        if not self.is_group_change_management_type_details():
            raise AttributeError("tag 'group_change_management_type_details' not set")
        return self._value

    def get_group_change_member_role_details(self):
        """
        Only call this if :meth:`is_group_change_member_role_details` is true.

        :rtype: GroupChangeMemberRoleDetails
        """
        if not self.is_group_change_member_role_details():
            raise AttributeError("tag 'group_change_member_role_details' not set")
        return self._value

    def get_group_create_details(self):
        """
        Only call this if :meth:`is_group_create_details` is true.

        :rtype: GroupCreateDetails
        """
        if not self.is_group_create_details():
            raise AttributeError("tag 'group_create_details' not set")
        return self._value

    def get_group_delete_details(self):
        """
        Only call this if :meth:`is_group_delete_details` is true.

        :rtype: GroupDeleteDetails
        """
        if not self.is_group_delete_details():
            raise AttributeError("tag 'group_delete_details' not set")
        return self._value

    def get_group_description_updated_details(self):
        """
        Only call this if :meth:`is_group_description_updated_details` is true.

        :rtype: GroupDescriptionUpdatedDetails
        """
        if not self.is_group_description_updated_details():
            raise AttributeError("tag 'group_description_updated_details' not set")
        return self._value

    def get_group_join_policy_updated_details(self):
        """
        Only call this if :meth:`is_group_join_policy_updated_details` is true.

        :rtype: GroupJoinPolicyUpdatedDetails
        """
        if not self.is_group_join_policy_updated_details():
            raise AttributeError("tag 'group_join_policy_updated_details' not set")
        return self._value

    def get_group_moved_details(self):
        """
        Only call this if :meth:`is_group_moved_details` is true.

        :rtype: GroupMovedDetails
        """
        if not self.is_group_moved_details():
            raise AttributeError("tag 'group_moved_details' not set")
        return self._value

    def get_group_remove_external_id_details(self):
        """
        Only call this if :meth:`is_group_remove_external_id_details` is true.

        :rtype: GroupRemoveExternalIdDetails
        """
        if not self.is_group_remove_external_id_details():
            raise AttributeError("tag 'group_remove_external_id_details' not set")
        return self._value

    def get_group_remove_member_details(self):
        """
        Only call this if :meth:`is_group_remove_member_details` is true.

        :rtype: GroupRemoveMemberDetails
        """
        if not self.is_group_remove_member_details():
            raise AttributeError("tag 'group_remove_member_details' not set")
        return self._value

    def get_group_rename_details(self):
        """
        Only call this if :meth:`is_group_rename_details` is true.

        :rtype: GroupRenameDetails
        """
        if not self.is_group_rename_details():
            raise AttributeError("tag 'group_rename_details' not set")
        return self._value

    def get_emm_error_details(self):
        """
        Only call this if :meth:`is_emm_error_details` is true.

        :rtype: EmmErrorDetails
        """
        if not self.is_emm_error_details():
            raise AttributeError("tag 'emm_error_details' not set")
        return self._value

    def get_login_fail_details(self):
        """
        Only call this if :meth:`is_login_fail_details` is true.

        :rtype: LoginFailDetails
        """
        if not self.is_login_fail_details():
            raise AttributeError("tag 'login_fail_details' not set")
        return self._value

    def get_login_success_details(self):
        """
        Only call this if :meth:`is_login_success_details` is true.

        :rtype: LoginSuccessDetails
        """
        if not self.is_login_success_details():
            raise AttributeError("tag 'login_success_details' not set")
        return self._value

    def get_logout_details(self):
        """
        Only call this if :meth:`is_logout_details` is true.

        :rtype: LogoutDetails
        """
        if not self.is_logout_details():
            raise AttributeError("tag 'logout_details' not set")
        return self._value

    def get_reseller_support_session_end_details(self):
        """
        Only call this if :meth:`is_reseller_support_session_end_details` is true.

        :rtype: ResellerSupportSessionEndDetails
        """
        if not self.is_reseller_support_session_end_details():
            raise AttributeError("tag 'reseller_support_session_end_details' not set")
        return self._value

    def get_reseller_support_session_start_details(self):
        """
        Only call this if :meth:`is_reseller_support_session_start_details` is true.

        :rtype: ResellerSupportSessionStartDetails
        """
        if not self.is_reseller_support_session_start_details():
            raise AttributeError("tag 'reseller_support_session_start_details' not set")
        return self._value

    def get_sign_in_as_session_end_details(self):
        """
        Only call this if :meth:`is_sign_in_as_session_end_details` is true.

        :rtype: SignInAsSessionEndDetails
        """
        if not self.is_sign_in_as_session_end_details():
            raise AttributeError("tag 'sign_in_as_session_end_details' not set")
        return self._value

    def get_sign_in_as_session_start_details(self):
        """
        Only call this if :meth:`is_sign_in_as_session_start_details` is true.

        :rtype: SignInAsSessionStartDetails
        """
        if not self.is_sign_in_as_session_start_details():
            raise AttributeError("tag 'sign_in_as_session_start_details' not set")
        return self._value

    def get_sso_error_details(self):
        """
        Only call this if :meth:`is_sso_error_details` is true.

        :rtype: SsoErrorDetails
        """
        if not self.is_sso_error_details():
            raise AttributeError("tag 'sso_error_details' not set")
        return self._value

    def get_member_add_name_details(self):
        """
        Only call this if :meth:`is_member_add_name_details` is true.

        :rtype: MemberAddNameDetails
        """
        if not self.is_member_add_name_details():
            raise AttributeError("tag 'member_add_name_details' not set")
        return self._value

    def get_member_change_admin_role_details(self):
        """
        Only call this if :meth:`is_member_change_admin_role_details` is true.

        :rtype: MemberChangeAdminRoleDetails
        """
        if not self.is_member_change_admin_role_details():
            raise AttributeError("tag 'member_change_admin_role_details' not set")
        return self._value

    def get_member_change_email_details(self):
        """
        Only call this if :meth:`is_member_change_email_details` is true.

        :rtype: MemberChangeEmailDetails
        """
        if not self.is_member_change_email_details():
            raise AttributeError("tag 'member_change_email_details' not set")
        return self._value

    def get_member_change_membership_type_details(self):
        """
        Only call this if :meth:`is_member_change_membership_type_details` is true.

        :rtype: MemberChangeMembershipTypeDetails
        """
        if not self.is_member_change_membership_type_details():
            raise AttributeError("tag 'member_change_membership_type_details' not set")
        return self._value

    def get_member_change_name_details(self):
        """
        Only call this if :meth:`is_member_change_name_details` is true.

        :rtype: MemberChangeNameDetails
        """
        if not self.is_member_change_name_details():
            raise AttributeError("tag 'member_change_name_details' not set")
        return self._value

    def get_member_change_status_details(self):
        """
        Only call this if :meth:`is_member_change_status_details` is true.

        :rtype: MemberChangeStatusDetails
        """
        if not self.is_member_change_status_details():
            raise AttributeError("tag 'member_change_status_details' not set")
        return self._value

    def get_member_delete_manual_contacts_details(self):
        """
        Only call this if :meth:`is_member_delete_manual_contacts_details` is true.

        :rtype: MemberDeleteManualContactsDetails
        """
        if not self.is_member_delete_manual_contacts_details():
            raise AttributeError("tag 'member_delete_manual_contacts_details' not set")
        return self._value

    def get_member_permanently_delete_account_contents_details(self):
        """
        Only call this if :meth:`is_member_permanently_delete_account_contents_details` is true.

        :rtype: MemberPermanentlyDeleteAccountContentsDetails
        """
        if not self.is_member_permanently_delete_account_contents_details():
            raise AttributeError("tag 'member_permanently_delete_account_contents_details' not set")
        return self._value

    def get_member_space_limits_add_custom_quota_details(self):
        """
        Only call this if :meth:`is_member_space_limits_add_custom_quota_details` is true.

        :rtype: MemberSpaceLimitsAddCustomQuotaDetails
        """
        if not self.is_member_space_limits_add_custom_quota_details():
            raise AttributeError("tag 'member_space_limits_add_custom_quota_details' not set")
        return self._value

    def get_member_space_limits_change_custom_quota_details(self):
        """
        Only call this if :meth:`is_member_space_limits_change_custom_quota_details` is true.

        :rtype: MemberSpaceLimitsChangeCustomQuotaDetails
        """
        if not self.is_member_space_limits_change_custom_quota_details():
            raise AttributeError("tag 'member_space_limits_change_custom_quota_details' not set")
        return self._value

    def get_member_space_limits_change_status_details(self):
        """
        Only call this if :meth:`is_member_space_limits_change_status_details` is true.

        :rtype: MemberSpaceLimitsChangeStatusDetails
        """
        if not self.is_member_space_limits_change_status_details():
            raise AttributeError("tag 'member_space_limits_change_status_details' not set")
        return self._value

    def get_member_space_limits_remove_custom_quota_details(self):
        """
        Only call this if :meth:`is_member_space_limits_remove_custom_quota_details` is true.

        :rtype: MemberSpaceLimitsRemoveCustomQuotaDetails
        """
        if not self.is_member_space_limits_remove_custom_quota_details():
            raise AttributeError("tag 'member_space_limits_remove_custom_quota_details' not set")
        return self._value

    def get_member_suggest_details(self):
        """
        Only call this if :meth:`is_member_suggest_details` is true.

        :rtype: MemberSuggestDetails
        """
        if not self.is_member_suggest_details():
            raise AttributeError("tag 'member_suggest_details' not set")
        return self._value

    def get_member_transfer_account_contents_details(self):
        """
        Only call this if :meth:`is_member_transfer_account_contents_details` is true.

        :rtype: MemberTransferAccountContentsDetails
        """
        if not self.is_member_transfer_account_contents_details():
            raise AttributeError("tag 'member_transfer_account_contents_details' not set")
        return self._value

    def get_secondary_mails_policy_changed_details(self):
        """
        Only call this if :meth:`is_secondary_mails_policy_changed_details` is true.

        :rtype: SecondaryMailsPolicyChangedDetails
        """
        if not self.is_secondary_mails_policy_changed_details():
            raise AttributeError("tag 'secondary_mails_policy_changed_details' not set")
        return self._value

    def get_paper_content_add_member_details(self):
        """
        Only call this if :meth:`is_paper_content_add_member_details` is true.

        :rtype: PaperContentAddMemberDetails
        """
        if not self.is_paper_content_add_member_details():
            raise AttributeError("tag 'paper_content_add_member_details' not set")
        return self._value

    def get_paper_content_add_to_folder_details(self):
        """
        Only call this if :meth:`is_paper_content_add_to_folder_details` is true.

        :rtype: PaperContentAddToFolderDetails
        """
        if not self.is_paper_content_add_to_folder_details():
            raise AttributeError("tag 'paper_content_add_to_folder_details' not set")
        return self._value

    def get_paper_content_archive_details(self):
        """
        Only call this if :meth:`is_paper_content_archive_details` is true.

        :rtype: PaperContentArchiveDetails
        """
        if not self.is_paper_content_archive_details():
            raise AttributeError("tag 'paper_content_archive_details' not set")
        return self._value

    def get_paper_content_create_details(self):
        """
        Only call this if :meth:`is_paper_content_create_details` is true.

        :rtype: PaperContentCreateDetails
        """
        if not self.is_paper_content_create_details():
            raise AttributeError("tag 'paper_content_create_details' not set")
        return self._value

    def get_paper_content_permanently_delete_details(self):
        """
        Only call this if :meth:`is_paper_content_permanently_delete_details` is true.

        :rtype: PaperContentPermanentlyDeleteDetails
        """
        if not self.is_paper_content_permanently_delete_details():
            raise AttributeError("tag 'paper_content_permanently_delete_details' not set")
        return self._value

    def get_paper_content_remove_from_folder_details(self):
        """
        Only call this if :meth:`is_paper_content_remove_from_folder_details` is true.

        :rtype: PaperContentRemoveFromFolderDetails
        """
        if not self.is_paper_content_remove_from_folder_details():
            raise AttributeError("tag 'paper_content_remove_from_folder_details' not set")
        return self._value

    def get_paper_content_remove_member_details(self):
        """
        Only call this if :meth:`is_paper_content_remove_member_details` is true.

        :rtype: PaperContentRemoveMemberDetails
        """
        if not self.is_paper_content_remove_member_details():
            raise AttributeError("tag 'paper_content_remove_member_details' not set")
        return self._value

    def get_paper_content_rename_details(self):
        """
        Only call this if :meth:`is_paper_content_rename_details` is true.

        :rtype: PaperContentRenameDetails
        """
        if not self.is_paper_content_rename_details():
            raise AttributeError("tag 'paper_content_rename_details' not set")
        return self._value

    def get_paper_content_restore_details(self):
        """
        Only call this if :meth:`is_paper_content_restore_details` is true.

        :rtype: PaperContentRestoreDetails
        """
        if not self.is_paper_content_restore_details():
            raise AttributeError("tag 'paper_content_restore_details' not set")
        return self._value

    def get_paper_doc_add_comment_details(self):
        """
        Only call this if :meth:`is_paper_doc_add_comment_details` is true.

        :rtype: PaperDocAddCommentDetails
        """
        if not self.is_paper_doc_add_comment_details():
            raise AttributeError("tag 'paper_doc_add_comment_details' not set")
        return self._value

    def get_paper_doc_change_member_role_details(self):
        """
        Only call this if :meth:`is_paper_doc_change_member_role_details` is true.

        :rtype: PaperDocChangeMemberRoleDetails
        """
        if not self.is_paper_doc_change_member_role_details():
            raise AttributeError("tag 'paper_doc_change_member_role_details' not set")
        return self._value

    def get_paper_doc_change_sharing_policy_details(self):
        """
        Only call this if :meth:`is_paper_doc_change_sharing_policy_details` is true.

        :rtype: PaperDocChangeSharingPolicyDetails
        """
        if not self.is_paper_doc_change_sharing_policy_details():
            raise AttributeError("tag 'paper_doc_change_sharing_policy_details' not set")
        return self._value

    def get_paper_doc_change_subscription_details(self):
        """
        Only call this if :meth:`is_paper_doc_change_subscription_details` is true.

        :rtype: PaperDocChangeSubscriptionDetails
        """
        if not self.is_paper_doc_change_subscription_details():
            raise AttributeError("tag 'paper_doc_change_subscription_details' not set")
        return self._value

    def get_paper_doc_deleted_details(self):
        """
        Only call this if :meth:`is_paper_doc_deleted_details` is true.

        :rtype: PaperDocDeletedDetails
        """
        if not self.is_paper_doc_deleted_details():
            raise AttributeError("tag 'paper_doc_deleted_details' not set")
        return self._value

    def get_paper_doc_delete_comment_details(self):
        """
        Only call this if :meth:`is_paper_doc_delete_comment_details` is true.

        :rtype: PaperDocDeleteCommentDetails
        """
        if not self.is_paper_doc_delete_comment_details():
            raise AttributeError("tag 'paper_doc_delete_comment_details' not set")
        return self._value

    def get_paper_doc_download_details(self):
        """
        Only call this if :meth:`is_paper_doc_download_details` is true.

        :rtype: PaperDocDownloadDetails
        """
        if not self.is_paper_doc_download_details():
            raise AttributeError("tag 'paper_doc_download_details' not set")
        return self._value

    def get_paper_doc_edit_details(self):
        """
        Only call this if :meth:`is_paper_doc_edit_details` is true.

        :rtype: PaperDocEditDetails
        """
        if not self.is_paper_doc_edit_details():
            raise AttributeError("tag 'paper_doc_edit_details' not set")
        return self._value

    def get_paper_doc_edit_comment_details(self):
        """
        Only call this if :meth:`is_paper_doc_edit_comment_details` is true.

        :rtype: PaperDocEditCommentDetails
        """
        if not self.is_paper_doc_edit_comment_details():
            raise AttributeError("tag 'paper_doc_edit_comment_details' not set")
        return self._value

    def get_paper_doc_followed_details(self):
        """
        Only call this if :meth:`is_paper_doc_followed_details` is true.

        :rtype: PaperDocFollowedDetails
        """
        if not self.is_paper_doc_followed_details():
            raise AttributeError("tag 'paper_doc_followed_details' not set")
        return self._value

    def get_paper_doc_mention_details(self):
        """
        Only call this if :meth:`is_paper_doc_mention_details` is true.

        :rtype: PaperDocMentionDetails
        """
        if not self.is_paper_doc_mention_details():
            raise AttributeError("tag 'paper_doc_mention_details' not set")
        return self._value

    def get_paper_doc_ownership_changed_details(self):
        """
        Only call this if :meth:`is_paper_doc_ownership_changed_details` is true.

        :rtype: PaperDocOwnershipChangedDetails
        """
        if not self.is_paper_doc_ownership_changed_details():
            raise AttributeError("tag 'paper_doc_ownership_changed_details' not set")
        return self._value

    def get_paper_doc_request_access_details(self):
        """
        Only call this if :meth:`is_paper_doc_request_access_details` is true.

        :rtype: PaperDocRequestAccessDetails
        """
        if not self.is_paper_doc_request_access_details():
            raise AttributeError("tag 'paper_doc_request_access_details' not set")
        return self._value

    def get_paper_doc_resolve_comment_details(self):
        """
        Only call this if :meth:`is_paper_doc_resolve_comment_details` is true.

        :rtype: PaperDocResolveCommentDetails
        """
        if not self.is_paper_doc_resolve_comment_details():
            raise AttributeError("tag 'paper_doc_resolve_comment_details' not set")
        return self._value

    def get_paper_doc_revert_details(self):
        """
        Only call this if :meth:`is_paper_doc_revert_details` is true.

        :rtype: PaperDocRevertDetails
        """
        if not self.is_paper_doc_revert_details():
            raise AttributeError("tag 'paper_doc_revert_details' not set")
        return self._value

    def get_paper_doc_slack_share_details(self):
        """
        Only call this if :meth:`is_paper_doc_slack_share_details` is true.

        :rtype: PaperDocSlackShareDetails
        """
        if not self.is_paper_doc_slack_share_details():
            raise AttributeError("tag 'paper_doc_slack_share_details' not set")
        return self._value

    def get_paper_doc_team_invite_details(self):
        """
        Only call this if :meth:`is_paper_doc_team_invite_details` is true.

        :rtype: PaperDocTeamInviteDetails
        """
        if not self.is_paper_doc_team_invite_details():
            raise AttributeError("tag 'paper_doc_team_invite_details' not set")
        return self._value

    def get_paper_doc_trashed_details(self):
        """
        Only call this if :meth:`is_paper_doc_trashed_details` is true.

        :rtype: PaperDocTrashedDetails
        """
        if not self.is_paper_doc_trashed_details():
            raise AttributeError("tag 'paper_doc_trashed_details' not set")
        return self._value

    def get_paper_doc_unresolve_comment_details(self):
        """
        Only call this if :meth:`is_paper_doc_unresolve_comment_details` is true.

        :rtype: PaperDocUnresolveCommentDetails
        """
        if not self.is_paper_doc_unresolve_comment_details():
            raise AttributeError("tag 'paper_doc_unresolve_comment_details' not set")
        return self._value

    def get_paper_doc_untrashed_details(self):
        """
        Only call this if :meth:`is_paper_doc_untrashed_details` is true.

        :rtype: PaperDocUntrashedDetails
        """
        if not self.is_paper_doc_untrashed_details():
            raise AttributeError("tag 'paper_doc_untrashed_details' not set")
        return self._value

    def get_paper_doc_view_details(self):
        """
        Only call this if :meth:`is_paper_doc_view_details` is true.

        :rtype: PaperDocViewDetails
        """
        if not self.is_paper_doc_view_details():
            raise AttributeError("tag 'paper_doc_view_details' not set")
        return self._value

    def get_paper_external_view_allow_details(self):
        """
        Only call this if :meth:`is_paper_external_view_allow_details` is true.

        :rtype: PaperExternalViewAllowDetails
        """
        if not self.is_paper_external_view_allow_details():
            raise AttributeError("tag 'paper_external_view_allow_details' not set")
        return self._value

    def get_paper_external_view_default_team_details(self):
        """
        Only call this if :meth:`is_paper_external_view_default_team_details` is true.

        :rtype: PaperExternalViewDefaultTeamDetails
        """
        if not self.is_paper_external_view_default_team_details():
            raise AttributeError("tag 'paper_external_view_default_team_details' not set")
        return self._value

    def get_paper_external_view_forbid_details(self):
        """
        Only call this if :meth:`is_paper_external_view_forbid_details` is true.

        :rtype: PaperExternalViewForbidDetails
        """
        if not self.is_paper_external_view_forbid_details():
            raise AttributeError("tag 'paper_external_view_forbid_details' not set")
        return self._value

    def get_paper_folder_change_subscription_details(self):
        """
        Only call this if :meth:`is_paper_folder_change_subscription_details` is true.

        :rtype: PaperFolderChangeSubscriptionDetails
        """
        if not self.is_paper_folder_change_subscription_details():
            raise AttributeError("tag 'paper_folder_change_subscription_details' not set")
        return self._value

    def get_paper_folder_deleted_details(self):
        """
        Only call this if :meth:`is_paper_folder_deleted_details` is true.

        :rtype: PaperFolderDeletedDetails
        """
        if not self.is_paper_folder_deleted_details():
            raise AttributeError("tag 'paper_folder_deleted_details' not set")
        return self._value

    def get_paper_folder_followed_details(self):
        """
        Only call this if :meth:`is_paper_folder_followed_details` is true.

        :rtype: PaperFolderFollowedDetails
        """
        if not self.is_paper_folder_followed_details():
            raise AttributeError("tag 'paper_folder_followed_details' not set")
        return self._value

    def get_paper_folder_team_invite_details(self):
        """
        Only call this if :meth:`is_paper_folder_team_invite_details` is true.

        :rtype: PaperFolderTeamInviteDetails
        """
        if not self.is_paper_folder_team_invite_details():
            raise AttributeError("tag 'paper_folder_team_invite_details' not set")
        return self._value

    def get_password_change_details(self):
        """
        Only call this if :meth:`is_password_change_details` is true.

        :rtype: PasswordChangeDetails
        """
        if not self.is_password_change_details():
            raise AttributeError("tag 'password_change_details' not set")
        return self._value

    def get_password_reset_details(self):
        """
        Only call this if :meth:`is_password_reset_details` is true.

        :rtype: PasswordResetDetails
        """
        if not self.is_password_reset_details():
            raise AttributeError("tag 'password_reset_details' not set")
        return self._value

    def get_password_reset_all_details(self):
        """
        Only call this if :meth:`is_password_reset_all_details` is true.

        :rtype: PasswordResetAllDetails
        """
        if not self.is_password_reset_all_details():
            raise AttributeError("tag 'password_reset_all_details' not set")
        return self._value

    def get_emm_create_exceptions_report_details(self):
        """
        Only call this if :meth:`is_emm_create_exceptions_report_details` is true.

        :rtype: EmmCreateExceptionsReportDetails
        """
        if not self.is_emm_create_exceptions_report_details():
            raise AttributeError("tag 'emm_create_exceptions_report_details' not set")
        return self._value

    def get_emm_create_usage_report_details(self):
        """
        Only call this if :meth:`is_emm_create_usage_report_details` is true.

        :rtype: EmmCreateUsageReportDetails
        """
        if not self.is_emm_create_usage_report_details():
            raise AttributeError("tag 'emm_create_usage_report_details' not set")
        return self._value

    def get_export_members_report_details(self):
        """
        Only call this if :meth:`is_export_members_report_details` is true.

        :rtype: ExportMembersReportDetails
        """
        if not self.is_export_members_report_details():
            raise AttributeError("tag 'export_members_report_details' not set")
        return self._value

    def get_paper_admin_export_start_details(self):
        """
        Only call this if :meth:`is_paper_admin_export_start_details` is true.

        :rtype: PaperAdminExportStartDetails
        """
        if not self.is_paper_admin_export_start_details():
            raise AttributeError("tag 'paper_admin_export_start_details' not set")
        return self._value

    def get_smart_sync_create_admin_privilege_report_details(self):
        """
        Only call this if :meth:`is_smart_sync_create_admin_privilege_report_details` is true.

        :rtype: SmartSyncCreateAdminPrivilegeReportDetails
        """
        if not self.is_smart_sync_create_admin_privilege_report_details():
            raise AttributeError("tag 'smart_sync_create_admin_privilege_report_details' not set")
        return self._value

    def get_team_activity_create_report_details(self):
        """
        Only call this if :meth:`is_team_activity_create_report_details` is true.

        :rtype: TeamActivityCreateReportDetails
        """
        if not self.is_team_activity_create_report_details():
            raise AttributeError("tag 'team_activity_create_report_details' not set")
        return self._value

    def get_collection_share_details(self):
        """
        Only call this if :meth:`is_collection_share_details` is true.

        :rtype: CollectionShareDetails
        """
        if not self.is_collection_share_details():
            raise AttributeError("tag 'collection_share_details' not set")
        return self._value

    def get_note_acl_invite_only_details(self):
        """
        Only call this if :meth:`is_note_acl_invite_only_details` is true.

        :rtype: NoteAclInviteOnlyDetails
        """
        if not self.is_note_acl_invite_only_details():
            raise AttributeError("tag 'note_acl_invite_only_details' not set")
        return self._value

    def get_note_acl_link_details(self):
        """
        Only call this if :meth:`is_note_acl_link_details` is true.

        :rtype: NoteAclLinkDetails
        """
        if not self.is_note_acl_link_details():
            raise AttributeError("tag 'note_acl_link_details' not set")
        return self._value

    def get_note_acl_team_link_details(self):
        """
        Only call this if :meth:`is_note_acl_team_link_details` is true.

        :rtype: NoteAclTeamLinkDetails
        """
        if not self.is_note_acl_team_link_details():
            raise AttributeError("tag 'note_acl_team_link_details' not set")
        return self._value

    def get_note_shared_details(self):
        """
        Only call this if :meth:`is_note_shared_details` is true.

        :rtype: NoteSharedDetails
        """
        if not self.is_note_shared_details():
            raise AttributeError("tag 'note_shared_details' not set")
        return self._value

    def get_note_share_receive_details(self):
        """
        Only call this if :meth:`is_note_share_receive_details` is true.

        :rtype: NoteShareReceiveDetails
        """
        if not self.is_note_share_receive_details():
            raise AttributeError("tag 'note_share_receive_details' not set")
        return self._value

    def get_open_note_shared_details(self):
        """
        Only call this if :meth:`is_open_note_shared_details` is true.

        :rtype: OpenNoteSharedDetails
        """
        if not self.is_open_note_shared_details():
            raise AttributeError("tag 'open_note_shared_details' not set")
        return self._value

    def get_sf_add_group_details(self):
        """
        Only call this if :meth:`is_sf_add_group_details` is true.

        :rtype: SfAddGroupDetails
        """
        if not self.is_sf_add_group_details():
            raise AttributeError("tag 'sf_add_group_details' not set")
        return self._value

    def get_sf_allow_non_members_to_view_shared_links_details(self):
        """
        Only call this if :meth:`is_sf_allow_non_members_to_view_shared_links_details` is true.

        :rtype: SfAllowNonMembersToViewSharedLinksDetails
        """
        if not self.is_sf_allow_non_members_to_view_shared_links_details():
            raise AttributeError("tag 'sf_allow_non_members_to_view_shared_links_details' not set")
        return self._value

    def get_sf_external_invite_warn_details(self):
        """
        Only call this if :meth:`is_sf_external_invite_warn_details` is true.

        :rtype: SfExternalInviteWarnDetails
        """
        if not self.is_sf_external_invite_warn_details():
            raise AttributeError("tag 'sf_external_invite_warn_details' not set")
        return self._value

    def get_sf_fb_invite_details(self):
        """
        Only call this if :meth:`is_sf_fb_invite_details` is true.

        :rtype: SfFbInviteDetails
        """
        if not self.is_sf_fb_invite_details():
            raise AttributeError("tag 'sf_fb_invite_details' not set")
        return self._value

    def get_sf_fb_invite_change_role_details(self):
        """
        Only call this if :meth:`is_sf_fb_invite_change_role_details` is true.

        :rtype: SfFbInviteChangeRoleDetails
        """
        if not self.is_sf_fb_invite_change_role_details():
            raise AttributeError("tag 'sf_fb_invite_change_role_details' not set")
        return self._value

    def get_sf_fb_uninvite_details(self):
        """
        Only call this if :meth:`is_sf_fb_uninvite_details` is true.

        :rtype: SfFbUninviteDetails
        """
        if not self.is_sf_fb_uninvite_details():
            raise AttributeError("tag 'sf_fb_uninvite_details' not set")
        return self._value

    def get_sf_invite_group_details(self):
        """
        Only call this if :meth:`is_sf_invite_group_details` is true.

        :rtype: SfInviteGroupDetails
        """
        if not self.is_sf_invite_group_details():
            raise AttributeError("tag 'sf_invite_group_details' not set")
        return self._value

    def get_sf_team_grant_access_details(self):
        """
        Only call this if :meth:`is_sf_team_grant_access_details` is true.

        :rtype: SfTeamGrantAccessDetails
        """
        if not self.is_sf_team_grant_access_details():
            raise AttributeError("tag 'sf_team_grant_access_details' not set")
        return self._value

    def get_sf_team_invite_details(self):
        """
        Only call this if :meth:`is_sf_team_invite_details` is true.

        :rtype: SfTeamInviteDetails
        """
        if not self.is_sf_team_invite_details():
            raise AttributeError("tag 'sf_team_invite_details' not set")
        return self._value

    def get_sf_team_invite_change_role_details(self):
        """
        Only call this if :meth:`is_sf_team_invite_change_role_details` is true.

        :rtype: SfTeamInviteChangeRoleDetails
        """
        if not self.is_sf_team_invite_change_role_details():
            raise AttributeError("tag 'sf_team_invite_change_role_details' not set")
        return self._value

    def get_sf_team_join_details(self):
        """
        Only call this if :meth:`is_sf_team_join_details` is true.

        :rtype: SfTeamJoinDetails
        """
        if not self.is_sf_team_join_details():
            raise AttributeError("tag 'sf_team_join_details' not set")
        return self._value

    def get_sf_team_join_from_oob_link_details(self):
        """
        Only call this if :meth:`is_sf_team_join_from_oob_link_details` is true.

        :rtype: SfTeamJoinFromOobLinkDetails
        """
        if not self.is_sf_team_join_from_oob_link_details():
            raise AttributeError("tag 'sf_team_join_from_oob_link_details' not set")
        return self._value

    def get_sf_team_uninvite_details(self):
        """
        Only call this if :meth:`is_sf_team_uninvite_details` is true.

        :rtype: SfTeamUninviteDetails
        """
        if not self.is_sf_team_uninvite_details():
            raise AttributeError("tag 'sf_team_uninvite_details' not set")
        return self._value

    def get_shared_content_add_invitees_details(self):
        """
        Only call this if :meth:`is_shared_content_add_invitees_details` is true.

        :rtype: SharedContentAddInviteesDetails
        """
        if not self.is_shared_content_add_invitees_details():
            raise AttributeError("tag 'shared_content_add_invitees_details' not set")
        return self._value

    def get_shared_content_add_link_expiry_details(self):
        """
        Only call this if :meth:`is_shared_content_add_link_expiry_details` is true.

        :rtype: SharedContentAddLinkExpiryDetails
        """
        if not self.is_shared_content_add_link_expiry_details():
            raise AttributeError("tag 'shared_content_add_link_expiry_details' not set")
        return self._value

    def get_shared_content_add_link_password_details(self):
        """
        Only call this if :meth:`is_shared_content_add_link_password_details` is true.

        :rtype: SharedContentAddLinkPasswordDetails
        """
        if not self.is_shared_content_add_link_password_details():
            raise AttributeError("tag 'shared_content_add_link_password_details' not set")
        return self._value

    def get_shared_content_add_member_details(self):
        """
        Only call this if :meth:`is_shared_content_add_member_details` is true.

        :rtype: SharedContentAddMemberDetails
        """
        if not self.is_shared_content_add_member_details():
            raise AttributeError("tag 'shared_content_add_member_details' not set")
        return self._value

    def get_shared_content_change_downloads_policy_details(self):
        """
        Only call this if :meth:`is_shared_content_change_downloads_policy_details` is true.

        :rtype: SharedContentChangeDownloadsPolicyDetails
        """
        if not self.is_shared_content_change_downloads_policy_details():
            raise AttributeError("tag 'shared_content_change_downloads_policy_details' not set")
        return self._value

    def get_shared_content_change_invitee_role_details(self):
        """
        Only call this if :meth:`is_shared_content_change_invitee_role_details` is true.

        :rtype: SharedContentChangeInviteeRoleDetails
        """
        if not self.is_shared_content_change_invitee_role_details():
            raise AttributeError("tag 'shared_content_change_invitee_role_details' not set")
        return self._value

    def get_shared_content_change_link_audience_details(self):
        """
        Only call this if :meth:`is_shared_content_change_link_audience_details` is true.

        :rtype: SharedContentChangeLinkAudienceDetails
        """
        if not self.is_shared_content_change_link_audience_details():
            raise AttributeError("tag 'shared_content_change_link_audience_details' not set")
        return self._value

    def get_shared_content_change_link_expiry_details(self):
        """
        Only call this if :meth:`is_shared_content_change_link_expiry_details` is true.

        :rtype: SharedContentChangeLinkExpiryDetails
        """
        if not self.is_shared_content_change_link_expiry_details():
            raise AttributeError("tag 'shared_content_change_link_expiry_details' not set")
        return self._value

    def get_shared_content_change_link_password_details(self):
        """
        Only call this if :meth:`is_shared_content_change_link_password_details` is true.

        :rtype: SharedContentChangeLinkPasswordDetails
        """
        if not self.is_shared_content_change_link_password_details():
            raise AttributeError("tag 'shared_content_change_link_password_details' not set")
        return self._value

    def get_shared_content_change_member_role_details(self):
        """
        Only call this if :meth:`is_shared_content_change_member_role_details` is true.

        :rtype: SharedContentChangeMemberRoleDetails
        """
        if not self.is_shared_content_change_member_role_details():
            raise AttributeError("tag 'shared_content_change_member_role_details' not set")
        return self._value

    def get_shared_content_change_viewer_info_policy_details(self):
        """
        Only call this if :meth:`is_shared_content_change_viewer_info_policy_details` is true.

        :rtype: SharedContentChangeViewerInfoPolicyDetails
        """
        if not self.is_shared_content_change_viewer_info_policy_details():
            raise AttributeError("tag 'shared_content_change_viewer_info_policy_details' not set")
        return self._value

    def get_shared_content_claim_invitation_details(self):
        """
        Only call this if :meth:`is_shared_content_claim_invitation_details` is true.

        :rtype: SharedContentClaimInvitationDetails
        """
        if not self.is_shared_content_claim_invitation_details():
            raise AttributeError("tag 'shared_content_claim_invitation_details' not set")
        return self._value

    def get_shared_content_copy_details(self):
        """
        Only call this if :meth:`is_shared_content_copy_details` is true.

        :rtype: SharedContentCopyDetails
        """
        if not self.is_shared_content_copy_details():
            raise AttributeError("tag 'shared_content_copy_details' not set")
        return self._value

    def get_shared_content_download_details(self):
        """
        Only call this if :meth:`is_shared_content_download_details` is true.

        :rtype: SharedContentDownloadDetails
        """
        if not self.is_shared_content_download_details():
            raise AttributeError("tag 'shared_content_download_details' not set")
        return self._value

    def get_shared_content_relinquish_membership_details(self):
        """
        Only call this if :meth:`is_shared_content_relinquish_membership_details` is true.

        :rtype: SharedContentRelinquishMembershipDetails
        """
        if not self.is_shared_content_relinquish_membership_details():
            raise AttributeError("tag 'shared_content_relinquish_membership_details' not set")
        return self._value

    def get_shared_content_remove_invitees_details(self):
        """
        Only call this if :meth:`is_shared_content_remove_invitees_details` is true.

        :rtype: SharedContentRemoveInviteesDetails
        """
        if not self.is_shared_content_remove_invitees_details():
            raise AttributeError("tag 'shared_content_remove_invitees_details' not set")
        return self._value

    def get_shared_content_remove_link_expiry_details(self):
        """
        Only call this if :meth:`is_shared_content_remove_link_expiry_details` is true.

        :rtype: SharedContentRemoveLinkExpiryDetails
        """
        if not self.is_shared_content_remove_link_expiry_details():
            raise AttributeError("tag 'shared_content_remove_link_expiry_details' not set")
        return self._value

    def get_shared_content_remove_link_password_details(self):
        """
        Only call this if :meth:`is_shared_content_remove_link_password_details` is true.

        :rtype: SharedContentRemoveLinkPasswordDetails
        """
        if not self.is_shared_content_remove_link_password_details():
            raise AttributeError("tag 'shared_content_remove_link_password_details' not set")
        return self._value

    def get_shared_content_remove_member_details(self):
        """
        Only call this if :meth:`is_shared_content_remove_member_details` is true.

        :rtype: SharedContentRemoveMemberDetails
        """
        if not self.is_shared_content_remove_member_details():
            raise AttributeError("tag 'shared_content_remove_member_details' not set")
        return self._value

    def get_shared_content_request_access_details(self):
        """
        Only call this if :meth:`is_shared_content_request_access_details` is true.

        :rtype: SharedContentRequestAccessDetails
        """
        if not self.is_shared_content_request_access_details():
            raise AttributeError("tag 'shared_content_request_access_details' not set")
        return self._value

    def get_shared_content_unshare_details(self):
        """
        Only call this if :meth:`is_shared_content_unshare_details` is true.

        :rtype: SharedContentUnshareDetails
        """
        if not self.is_shared_content_unshare_details():
            raise AttributeError("tag 'shared_content_unshare_details' not set")
        return self._value

    def get_shared_content_view_details(self):
        """
        Only call this if :meth:`is_shared_content_view_details` is true.

        :rtype: SharedContentViewDetails
        """
        if not self.is_shared_content_view_details():
            raise AttributeError("tag 'shared_content_view_details' not set")
        return self._value

    def get_shared_folder_change_link_policy_details(self):
        """
        Only call this if :meth:`is_shared_folder_change_link_policy_details` is true.

        :rtype: SharedFolderChangeLinkPolicyDetails
        """
        if not self.is_shared_folder_change_link_policy_details():
            raise AttributeError("tag 'shared_folder_change_link_policy_details' not set")
        return self._value

    def get_shared_folder_change_members_inheritance_policy_details(self):
        """
        Only call this if :meth:`is_shared_folder_change_members_inheritance_policy_details` is true.

        :rtype: SharedFolderChangeMembersInheritancePolicyDetails
        """
        if not self.is_shared_folder_change_members_inheritance_policy_details():
            raise AttributeError("tag 'shared_folder_change_members_inheritance_policy_details' not set")
        return self._value

    def get_shared_folder_change_members_management_policy_details(self):
        """
        Only call this if :meth:`is_shared_folder_change_members_management_policy_details` is true.

        :rtype: SharedFolderChangeMembersManagementPolicyDetails
        """
        if not self.is_shared_folder_change_members_management_policy_details():
            raise AttributeError("tag 'shared_folder_change_members_management_policy_details' not set")
        return self._value

    def get_shared_folder_change_members_policy_details(self):
        """
        Only call this if :meth:`is_shared_folder_change_members_policy_details` is true.

        :rtype: SharedFolderChangeMembersPolicyDetails
        """
        if not self.is_shared_folder_change_members_policy_details():
            raise AttributeError("tag 'shared_folder_change_members_policy_details' not set")
        return self._value

    def get_shared_folder_create_details(self):
        """
        Only call this if :meth:`is_shared_folder_create_details` is true.

        :rtype: SharedFolderCreateDetails
        """
        if not self.is_shared_folder_create_details():
            raise AttributeError("tag 'shared_folder_create_details' not set")
        return self._value

    def get_shared_folder_decline_invitation_details(self):
        """
        Only call this if :meth:`is_shared_folder_decline_invitation_details` is true.

        :rtype: SharedFolderDeclineInvitationDetails
        """
        if not self.is_shared_folder_decline_invitation_details():
            raise AttributeError("tag 'shared_folder_decline_invitation_details' not set")
        return self._value

    def get_shared_folder_mount_details(self):
        """
        Only call this if :meth:`is_shared_folder_mount_details` is true.

        :rtype: SharedFolderMountDetails
        """
        if not self.is_shared_folder_mount_details():
            raise AttributeError("tag 'shared_folder_mount_details' not set")
        return self._value

    def get_shared_folder_nest_details(self):
        """
        Only call this if :meth:`is_shared_folder_nest_details` is true.

        :rtype: SharedFolderNestDetails
        """
        if not self.is_shared_folder_nest_details():
            raise AttributeError("tag 'shared_folder_nest_details' not set")
        return self._value

    def get_shared_folder_transfer_ownership_details(self):
        """
        Only call this if :meth:`is_shared_folder_transfer_ownership_details` is true.

        :rtype: SharedFolderTransferOwnershipDetails
        """
        if not self.is_shared_folder_transfer_ownership_details():
            raise AttributeError("tag 'shared_folder_transfer_ownership_details' not set")
        return self._value

    def get_shared_folder_unmount_details(self):
        """
        Only call this if :meth:`is_shared_folder_unmount_details` is true.

        :rtype: SharedFolderUnmountDetails
        """
        if not self.is_shared_folder_unmount_details():
            raise AttributeError("tag 'shared_folder_unmount_details' not set")
        return self._value

    def get_shared_link_add_expiry_details(self):
        """
        Only call this if :meth:`is_shared_link_add_expiry_details` is true.

        :rtype: SharedLinkAddExpiryDetails
        """
        if not self.is_shared_link_add_expiry_details():
            raise AttributeError("tag 'shared_link_add_expiry_details' not set")
        return self._value

    def get_shared_link_change_expiry_details(self):
        """
        Only call this if :meth:`is_shared_link_change_expiry_details` is true.

        :rtype: SharedLinkChangeExpiryDetails
        """
        if not self.is_shared_link_change_expiry_details():
            raise AttributeError("tag 'shared_link_change_expiry_details' not set")
        return self._value

    def get_shared_link_change_visibility_details(self):
        """
        Only call this if :meth:`is_shared_link_change_visibility_details` is true.

        :rtype: SharedLinkChangeVisibilityDetails
        """
        if not self.is_shared_link_change_visibility_details():
            raise AttributeError("tag 'shared_link_change_visibility_details' not set")
        return self._value

    def get_shared_link_copy_details(self):
        """
        Only call this if :meth:`is_shared_link_copy_details` is true.

        :rtype: SharedLinkCopyDetails
        """
        if not self.is_shared_link_copy_details():
            raise AttributeError("tag 'shared_link_copy_details' not set")
        return self._value

    def get_shared_link_create_details(self):
        """
        Only call this if :meth:`is_shared_link_create_details` is true.

        :rtype: SharedLinkCreateDetails
        """
        if not self.is_shared_link_create_details():
            raise AttributeError("tag 'shared_link_create_details' not set")
        return self._value

    def get_shared_link_disable_details(self):
        """
        Only call this if :meth:`is_shared_link_disable_details` is true.

        :rtype: SharedLinkDisableDetails
        """
        if not self.is_shared_link_disable_details():
            raise AttributeError("tag 'shared_link_disable_details' not set")
        return self._value

    def get_shared_link_download_details(self):
        """
        Only call this if :meth:`is_shared_link_download_details` is true.

        :rtype: SharedLinkDownloadDetails
        """
        if not self.is_shared_link_download_details():
            raise AttributeError("tag 'shared_link_download_details' not set")
        return self._value

    def get_shared_link_remove_expiry_details(self):
        """
        Only call this if :meth:`is_shared_link_remove_expiry_details` is true.

        :rtype: SharedLinkRemoveExpiryDetails
        """
        if not self.is_shared_link_remove_expiry_details():
            raise AttributeError("tag 'shared_link_remove_expiry_details' not set")
        return self._value

    def get_shared_link_share_details(self):
        """
        Only call this if :meth:`is_shared_link_share_details` is true.

        :rtype: SharedLinkShareDetails
        """
        if not self.is_shared_link_share_details():
            raise AttributeError("tag 'shared_link_share_details' not set")
        return self._value

    def get_shared_link_view_details(self):
        """
        Only call this if :meth:`is_shared_link_view_details` is true.

        :rtype: SharedLinkViewDetails
        """
        if not self.is_shared_link_view_details():
            raise AttributeError("tag 'shared_link_view_details' not set")
        return self._value

    def get_shared_note_opened_details(self):
        """
        Only call this if :meth:`is_shared_note_opened_details` is true.

        :rtype: SharedNoteOpenedDetails
        """
        if not self.is_shared_note_opened_details():
            raise AttributeError("tag 'shared_note_opened_details' not set")
        return self._value

    def get_shmodel_group_share_details(self):
        """
        Only call this if :meth:`is_shmodel_group_share_details` is true.

        :rtype: ShmodelGroupShareDetails
        """
        if not self.is_shmodel_group_share_details():
            raise AttributeError("tag 'shmodel_group_share_details' not set")
        return self._value

    def get_showcase_access_granted_details(self):
        """
        Only call this if :meth:`is_showcase_access_granted_details` is true.

        :rtype: ShowcaseAccessGrantedDetails
        """
        if not self.is_showcase_access_granted_details():
            raise AttributeError("tag 'showcase_access_granted_details' not set")
        return self._value

    def get_showcase_add_member_details(self):
        """
        Only call this if :meth:`is_showcase_add_member_details` is true.

        :rtype: ShowcaseAddMemberDetails
        """
        if not self.is_showcase_add_member_details():
            raise AttributeError("tag 'showcase_add_member_details' not set")
        return self._value

    def get_showcase_archived_details(self):
        """
        Only call this if :meth:`is_showcase_archived_details` is true.

        :rtype: ShowcaseArchivedDetails
        """
        if not self.is_showcase_archived_details():
            raise AttributeError("tag 'showcase_archived_details' not set")
        return self._value

    def get_showcase_created_details(self):
        """
        Only call this if :meth:`is_showcase_created_details` is true.

        :rtype: ShowcaseCreatedDetails
        """
        if not self.is_showcase_created_details():
            raise AttributeError("tag 'showcase_created_details' not set")
        return self._value

    def get_showcase_delete_comment_details(self):
        """
        Only call this if :meth:`is_showcase_delete_comment_details` is true.

        :rtype: ShowcaseDeleteCommentDetails
        """
        if not self.is_showcase_delete_comment_details():
            raise AttributeError("tag 'showcase_delete_comment_details' not set")
        return self._value

    def get_showcase_edited_details(self):
        """
        Only call this if :meth:`is_showcase_edited_details` is true.

        :rtype: ShowcaseEditedDetails
        """
        if not self.is_showcase_edited_details():
            raise AttributeError("tag 'showcase_edited_details' not set")
        return self._value

    def get_showcase_edit_comment_details(self):
        """
        Only call this if :meth:`is_showcase_edit_comment_details` is true.

        :rtype: ShowcaseEditCommentDetails
        """
        if not self.is_showcase_edit_comment_details():
            raise AttributeError("tag 'showcase_edit_comment_details' not set")
        return self._value

    def get_showcase_file_added_details(self):
        """
        Only call this if :meth:`is_showcase_file_added_details` is true.

        :rtype: ShowcaseFileAddedDetails
        """
        if not self.is_showcase_file_added_details():
            raise AttributeError("tag 'showcase_file_added_details' not set")
        return self._value

    def get_showcase_file_download_details(self):
        """
        Only call this if :meth:`is_showcase_file_download_details` is true.

        :rtype: ShowcaseFileDownloadDetails
        """
        if not self.is_showcase_file_download_details():
            raise AttributeError("tag 'showcase_file_download_details' not set")
        return self._value

    def get_showcase_file_removed_details(self):
        """
        Only call this if :meth:`is_showcase_file_removed_details` is true.

        :rtype: ShowcaseFileRemovedDetails
        """
        if not self.is_showcase_file_removed_details():
            raise AttributeError("tag 'showcase_file_removed_details' not set")
        return self._value

    def get_showcase_file_view_details(self):
        """
        Only call this if :meth:`is_showcase_file_view_details` is true.

        :rtype: ShowcaseFileViewDetails
        """
        if not self.is_showcase_file_view_details():
            raise AttributeError("tag 'showcase_file_view_details' not set")
        return self._value

    def get_showcase_permanently_deleted_details(self):
        """
        Only call this if :meth:`is_showcase_permanently_deleted_details` is true.

        :rtype: ShowcasePermanentlyDeletedDetails
        """
        if not self.is_showcase_permanently_deleted_details():
            raise AttributeError("tag 'showcase_permanently_deleted_details' not set")
        return self._value

    def get_showcase_post_comment_details(self):
        """
        Only call this if :meth:`is_showcase_post_comment_details` is true.

        :rtype: ShowcasePostCommentDetails
        """
        if not self.is_showcase_post_comment_details():
            raise AttributeError("tag 'showcase_post_comment_details' not set")
        return self._value

    def get_showcase_remove_member_details(self):
        """
        Only call this if :meth:`is_showcase_remove_member_details` is true.

        :rtype: ShowcaseRemoveMemberDetails
        """
        if not self.is_showcase_remove_member_details():
            raise AttributeError("tag 'showcase_remove_member_details' not set")
        return self._value

    def get_showcase_renamed_details(self):
        """
        Only call this if :meth:`is_showcase_renamed_details` is true.

        :rtype: ShowcaseRenamedDetails
        """
        if not self.is_showcase_renamed_details():
            raise AttributeError("tag 'showcase_renamed_details' not set")
        return self._value

    def get_showcase_request_access_details(self):
        """
        Only call this if :meth:`is_showcase_request_access_details` is true.

        :rtype: ShowcaseRequestAccessDetails
        """
        if not self.is_showcase_request_access_details():
            raise AttributeError("tag 'showcase_request_access_details' not set")
        return self._value

    def get_showcase_resolve_comment_details(self):
        """
        Only call this if :meth:`is_showcase_resolve_comment_details` is true.

        :rtype: ShowcaseResolveCommentDetails
        """
        if not self.is_showcase_resolve_comment_details():
            raise AttributeError("tag 'showcase_resolve_comment_details' not set")
        return self._value

    def get_showcase_restored_details(self):
        """
        Only call this if :meth:`is_showcase_restored_details` is true.

        :rtype: ShowcaseRestoredDetails
        """
        if not self.is_showcase_restored_details():
            raise AttributeError("tag 'showcase_restored_details' not set")
        return self._value

    def get_showcase_trashed_details(self):
        """
        Only call this if :meth:`is_showcase_trashed_details` is true.

        :rtype: ShowcaseTrashedDetails
        """
        if not self.is_showcase_trashed_details():
            raise AttributeError("tag 'showcase_trashed_details' not set")
        return self._value

    def get_showcase_trashed_deprecated_details(self):
        """
        Only call this if :meth:`is_showcase_trashed_deprecated_details` is true.

        :rtype: ShowcaseTrashedDeprecatedDetails
        """
        if not self.is_showcase_trashed_deprecated_details():
            raise AttributeError("tag 'showcase_trashed_deprecated_details' not set")
        return self._value

    def get_showcase_unresolve_comment_details(self):
        """
        Only call this if :meth:`is_showcase_unresolve_comment_details` is true.

        :rtype: ShowcaseUnresolveCommentDetails
        """
        if not self.is_showcase_unresolve_comment_details():
            raise AttributeError("tag 'showcase_unresolve_comment_details' not set")
        return self._value

    def get_showcase_untrashed_details(self):
        """
        Only call this if :meth:`is_showcase_untrashed_details` is true.

        :rtype: ShowcaseUntrashedDetails
        """
        if not self.is_showcase_untrashed_details():
            raise AttributeError("tag 'showcase_untrashed_details' not set")
        return self._value

    def get_showcase_untrashed_deprecated_details(self):
        """
        Only call this if :meth:`is_showcase_untrashed_deprecated_details` is true.

        :rtype: ShowcaseUntrashedDeprecatedDetails
        """
        if not self.is_showcase_untrashed_deprecated_details():
            raise AttributeError("tag 'showcase_untrashed_deprecated_details' not set")
        return self._value

    def get_showcase_view_details(self):
        """
        Only call this if :meth:`is_showcase_view_details` is true.

        :rtype: ShowcaseViewDetails
        """
        if not self.is_showcase_view_details():
            raise AttributeError("tag 'showcase_view_details' not set")
        return self._value

    def get_sso_add_cert_details(self):
        """
        Only call this if :meth:`is_sso_add_cert_details` is true.

        :rtype: SsoAddCertDetails
        """
        if not self.is_sso_add_cert_details():
            raise AttributeError("tag 'sso_add_cert_details' not set")
        return self._value

    def get_sso_add_login_url_details(self):
        """
        Only call this if :meth:`is_sso_add_login_url_details` is true.

        :rtype: SsoAddLoginUrlDetails
        """
        if not self.is_sso_add_login_url_details():
            raise AttributeError("tag 'sso_add_login_url_details' not set")
        return self._value

    def get_sso_add_logout_url_details(self):
        """
        Only call this if :meth:`is_sso_add_logout_url_details` is true.

        :rtype: SsoAddLogoutUrlDetails
        """
        if not self.is_sso_add_logout_url_details():
            raise AttributeError("tag 'sso_add_logout_url_details' not set")
        return self._value

    def get_sso_change_cert_details(self):
        """
        Only call this if :meth:`is_sso_change_cert_details` is true.

        :rtype: SsoChangeCertDetails
        """
        if not self.is_sso_change_cert_details():
            raise AttributeError("tag 'sso_change_cert_details' not set")
        return self._value

    def get_sso_change_login_url_details(self):
        """
        Only call this if :meth:`is_sso_change_login_url_details` is true.

        :rtype: SsoChangeLoginUrlDetails
        """
        if not self.is_sso_change_login_url_details():
            raise AttributeError("tag 'sso_change_login_url_details' not set")
        return self._value

    def get_sso_change_logout_url_details(self):
        """
        Only call this if :meth:`is_sso_change_logout_url_details` is true.

        :rtype: SsoChangeLogoutUrlDetails
        """
        if not self.is_sso_change_logout_url_details():
            raise AttributeError("tag 'sso_change_logout_url_details' not set")
        return self._value

    def get_sso_change_saml_identity_mode_details(self):
        """
        Only call this if :meth:`is_sso_change_saml_identity_mode_details` is true.

        :rtype: SsoChangeSamlIdentityModeDetails
        """
        if not self.is_sso_change_saml_identity_mode_details():
            raise AttributeError("tag 'sso_change_saml_identity_mode_details' not set")
        return self._value

    def get_sso_remove_cert_details(self):
        """
        Only call this if :meth:`is_sso_remove_cert_details` is true.

        :rtype: SsoRemoveCertDetails
        """
        if not self.is_sso_remove_cert_details():
            raise AttributeError("tag 'sso_remove_cert_details' not set")
        return self._value

    def get_sso_remove_login_url_details(self):
        """
        Only call this if :meth:`is_sso_remove_login_url_details` is true.

        :rtype: SsoRemoveLoginUrlDetails
        """
        if not self.is_sso_remove_login_url_details():
            raise AttributeError("tag 'sso_remove_login_url_details' not set")
        return self._value

    def get_sso_remove_logout_url_details(self):
        """
        Only call this if :meth:`is_sso_remove_logout_url_details` is true.

        :rtype: SsoRemoveLogoutUrlDetails
        """
        if not self.is_sso_remove_logout_url_details():
            raise AttributeError("tag 'sso_remove_logout_url_details' not set")
        return self._value

    def get_team_folder_change_status_details(self):
        """
        Only call this if :meth:`is_team_folder_change_status_details` is true.

        :rtype: TeamFolderChangeStatusDetails
        """
        if not self.is_team_folder_change_status_details():
            raise AttributeError("tag 'team_folder_change_status_details' not set")
        return self._value

    def get_team_folder_create_details(self):
        """
        Only call this if :meth:`is_team_folder_create_details` is true.

        :rtype: TeamFolderCreateDetails
        """
        if not self.is_team_folder_create_details():
            raise AttributeError("tag 'team_folder_create_details' not set")
        return self._value

    def get_team_folder_downgrade_details(self):
        """
        Only call this if :meth:`is_team_folder_downgrade_details` is true.

        :rtype: TeamFolderDowngradeDetails
        """
        if not self.is_team_folder_downgrade_details():
            raise AttributeError("tag 'team_folder_downgrade_details' not set")
        return self._value

    def get_team_folder_permanently_delete_details(self):
        """
        Only call this if :meth:`is_team_folder_permanently_delete_details` is true.

        :rtype: TeamFolderPermanentlyDeleteDetails
        """
        if not self.is_team_folder_permanently_delete_details():
            raise AttributeError("tag 'team_folder_permanently_delete_details' not set")
        return self._value

    def get_team_folder_rename_details(self):
        """
        Only call this if :meth:`is_team_folder_rename_details` is true.

        :rtype: TeamFolderRenameDetails
        """
        if not self.is_team_folder_rename_details():
            raise AttributeError("tag 'team_folder_rename_details' not set")
        return self._value

    def get_team_selective_sync_settings_changed_details(self):
        """
        Only call this if :meth:`is_team_selective_sync_settings_changed_details` is true.

        :rtype: TeamSelectiveSyncSettingsChangedDetails
        """
        if not self.is_team_selective_sync_settings_changed_details():
            raise AttributeError("tag 'team_selective_sync_settings_changed_details' not set")
        return self._value

    def get_account_capture_change_policy_details(self):
        """
        Only call this if :meth:`is_account_capture_change_policy_details` is true.

        :rtype: AccountCaptureChangePolicyDetails
        """
        if not self.is_account_capture_change_policy_details():
            raise AttributeError("tag 'account_capture_change_policy_details' not set")
        return self._value

    def get_allow_download_disabled_details(self):
        """
        Only call this if :meth:`is_allow_download_disabled_details` is true.

        :rtype: AllowDownloadDisabledDetails
        """
        if not self.is_allow_download_disabled_details():
            raise AttributeError("tag 'allow_download_disabled_details' not set")
        return self._value

    def get_allow_download_enabled_details(self):
        """
        Only call this if :meth:`is_allow_download_enabled_details` is true.

        :rtype: AllowDownloadEnabledDetails
        """
        if not self.is_allow_download_enabled_details():
            raise AttributeError("tag 'allow_download_enabled_details' not set")
        return self._value

    def get_camera_uploads_policy_changed_details(self):
        """
        Only call this if :meth:`is_camera_uploads_policy_changed_details` is true.

        :rtype: CameraUploadsPolicyChangedDetails
        """
        if not self.is_camera_uploads_policy_changed_details():
            raise AttributeError("tag 'camera_uploads_policy_changed_details' not set")
        return self._value

    def get_data_placement_restriction_change_policy_details(self):
        """
        Only call this if :meth:`is_data_placement_restriction_change_policy_details` is true.

        :rtype: DataPlacementRestrictionChangePolicyDetails
        """
        if not self.is_data_placement_restriction_change_policy_details():
            raise AttributeError("tag 'data_placement_restriction_change_policy_details' not set")
        return self._value

    def get_data_placement_restriction_satisfy_policy_details(self):
        """
        Only call this if :meth:`is_data_placement_restriction_satisfy_policy_details` is true.

        :rtype: DataPlacementRestrictionSatisfyPolicyDetails
        """
        if not self.is_data_placement_restriction_satisfy_policy_details():
            raise AttributeError("tag 'data_placement_restriction_satisfy_policy_details' not set")
        return self._value

    def get_device_approvals_change_desktop_policy_details(self):
        """
        Only call this if :meth:`is_device_approvals_change_desktop_policy_details` is true.

        :rtype: DeviceApprovalsChangeDesktopPolicyDetails
        """
        if not self.is_device_approvals_change_desktop_policy_details():
            raise AttributeError("tag 'device_approvals_change_desktop_policy_details' not set")
        return self._value

    def get_device_approvals_change_mobile_policy_details(self):
        """
        Only call this if :meth:`is_device_approvals_change_mobile_policy_details` is true.

        :rtype: DeviceApprovalsChangeMobilePolicyDetails
        """
        if not self.is_device_approvals_change_mobile_policy_details():
            raise AttributeError("tag 'device_approvals_change_mobile_policy_details' not set")
        return self._value

    def get_device_approvals_change_overage_action_details(self):
        """
        Only call this if :meth:`is_device_approvals_change_overage_action_details` is true.

        :rtype: DeviceApprovalsChangeOverageActionDetails
        """
        if not self.is_device_approvals_change_overage_action_details():
            raise AttributeError("tag 'device_approvals_change_overage_action_details' not set")
        return self._value

    def get_device_approvals_change_unlink_action_details(self):
        """
        Only call this if :meth:`is_device_approvals_change_unlink_action_details` is true.

        :rtype: DeviceApprovalsChangeUnlinkActionDetails
        """
        if not self.is_device_approvals_change_unlink_action_details():
            raise AttributeError("tag 'device_approvals_change_unlink_action_details' not set")
        return self._value

    def get_directory_restrictions_add_members_details(self):
        """
        Only call this if :meth:`is_directory_restrictions_add_members_details` is true.

        :rtype: DirectoryRestrictionsAddMembersDetails
        """
        if not self.is_directory_restrictions_add_members_details():
            raise AttributeError("tag 'directory_restrictions_add_members_details' not set")
        return self._value

    def get_directory_restrictions_remove_members_details(self):
        """
        Only call this if :meth:`is_directory_restrictions_remove_members_details` is true.

        :rtype: DirectoryRestrictionsRemoveMembersDetails
        """
        if not self.is_directory_restrictions_remove_members_details():
            raise AttributeError("tag 'directory_restrictions_remove_members_details' not set")
        return self._value

    def get_emm_add_exception_details(self):
        """
        Only call this if :meth:`is_emm_add_exception_details` is true.

        :rtype: EmmAddExceptionDetails
        """
        if not self.is_emm_add_exception_details():
            raise AttributeError("tag 'emm_add_exception_details' not set")
        return self._value

    def get_emm_change_policy_details(self):
        """
        Only call this if :meth:`is_emm_change_policy_details` is true.

        :rtype: EmmChangePolicyDetails
        """
        if not self.is_emm_change_policy_details():
            raise AttributeError("tag 'emm_change_policy_details' not set")
        return self._value

    def get_emm_remove_exception_details(self):
        """
        Only call this if :meth:`is_emm_remove_exception_details` is true.

        :rtype: EmmRemoveExceptionDetails
        """
        if not self.is_emm_remove_exception_details():
            raise AttributeError("tag 'emm_remove_exception_details' not set")
        return self._value

    def get_extended_version_history_change_policy_details(self):
        """
        Only call this if :meth:`is_extended_version_history_change_policy_details` is true.

        :rtype: ExtendedVersionHistoryChangePolicyDetails
        """
        if not self.is_extended_version_history_change_policy_details():
            raise AttributeError("tag 'extended_version_history_change_policy_details' not set")
        return self._value

    def get_file_comments_change_policy_details(self):
        """
        Only call this if :meth:`is_file_comments_change_policy_details` is true.

        :rtype: FileCommentsChangePolicyDetails
        """
        if not self.is_file_comments_change_policy_details():
            raise AttributeError("tag 'file_comments_change_policy_details' not set")
        return self._value

    def get_file_requests_change_policy_details(self):
        """
        Only call this if :meth:`is_file_requests_change_policy_details` is true.

        :rtype: FileRequestsChangePolicyDetails
        """
        if not self.is_file_requests_change_policy_details():
            raise AttributeError("tag 'file_requests_change_policy_details' not set")
        return self._value

    def get_file_requests_emails_enabled_details(self):
        """
        Only call this if :meth:`is_file_requests_emails_enabled_details` is true.

        :rtype: FileRequestsEmailsEnabledDetails
        """
        if not self.is_file_requests_emails_enabled_details():
            raise AttributeError("tag 'file_requests_emails_enabled_details' not set")
        return self._value

    def get_file_requests_emails_restricted_to_team_only_details(self):
        """
        Only call this if :meth:`is_file_requests_emails_restricted_to_team_only_details` is true.

        :rtype: FileRequestsEmailsRestrictedToTeamOnlyDetails
        """
        if not self.is_file_requests_emails_restricted_to_team_only_details():
            raise AttributeError("tag 'file_requests_emails_restricted_to_team_only_details' not set")
        return self._value

    def get_google_sso_change_policy_details(self):
        """
        Only call this if :meth:`is_google_sso_change_policy_details` is true.

        :rtype: GoogleSsoChangePolicyDetails
        """
        if not self.is_google_sso_change_policy_details():
            raise AttributeError("tag 'google_sso_change_policy_details' not set")
        return self._value

    def get_group_user_management_change_policy_details(self):
        """
        Only call this if :meth:`is_group_user_management_change_policy_details` is true.

        :rtype: GroupUserManagementChangePolicyDetails
        """
        if not self.is_group_user_management_change_policy_details():
            raise AttributeError("tag 'group_user_management_change_policy_details' not set")
        return self._value

    def get_member_requests_change_policy_details(self):
        """
        Only call this if :meth:`is_member_requests_change_policy_details` is true.

        :rtype: MemberRequestsChangePolicyDetails
        """
        if not self.is_member_requests_change_policy_details():
            raise AttributeError("tag 'member_requests_change_policy_details' not set")
        return self._value

    def get_member_space_limits_add_exception_details(self):
        """
        Only call this if :meth:`is_member_space_limits_add_exception_details` is true.

        :rtype: MemberSpaceLimitsAddExceptionDetails
        """
        if not self.is_member_space_limits_add_exception_details():
            raise AttributeError("tag 'member_space_limits_add_exception_details' not set")
        return self._value

    def get_member_space_limits_change_caps_type_policy_details(self):
        """
        Only call this if :meth:`is_member_space_limits_change_caps_type_policy_details` is true.

        :rtype: MemberSpaceLimitsChangeCapsTypePolicyDetails
        """
        if not self.is_member_space_limits_change_caps_type_policy_details():
            raise AttributeError("tag 'member_space_limits_change_caps_type_policy_details' not set")
        return self._value

    def get_member_space_limits_change_policy_details(self):
        """
        Only call this if :meth:`is_member_space_limits_change_policy_details` is true.

        :rtype: MemberSpaceLimitsChangePolicyDetails
        """
        if not self.is_member_space_limits_change_policy_details():
            raise AttributeError("tag 'member_space_limits_change_policy_details' not set")
        return self._value

    def get_member_space_limits_remove_exception_details(self):
        """
        Only call this if :meth:`is_member_space_limits_remove_exception_details` is true.

        :rtype: MemberSpaceLimitsRemoveExceptionDetails
        """
        if not self.is_member_space_limits_remove_exception_details():
            raise AttributeError("tag 'member_space_limits_remove_exception_details' not set")
        return self._value

    def get_member_suggestions_change_policy_details(self):
        """
        Only call this if :meth:`is_member_suggestions_change_policy_details` is true.

        :rtype: MemberSuggestionsChangePolicyDetails
        """
        if not self.is_member_suggestions_change_policy_details():
            raise AttributeError("tag 'member_suggestions_change_policy_details' not set")
        return self._value

    def get_microsoft_office_addin_change_policy_details(self):
        """
        Only call this if :meth:`is_microsoft_office_addin_change_policy_details` is true.

        :rtype: MicrosoftOfficeAddinChangePolicyDetails
        """
        if not self.is_microsoft_office_addin_change_policy_details():
            raise AttributeError("tag 'microsoft_office_addin_change_policy_details' not set")
        return self._value

    def get_network_control_change_policy_details(self):
        """
        Only call this if :meth:`is_network_control_change_policy_details` is true.

        :rtype: NetworkControlChangePolicyDetails
        """
        if not self.is_network_control_change_policy_details():
            raise AttributeError("tag 'network_control_change_policy_details' not set")
        return self._value

    def get_paper_change_deployment_policy_details(self):
        """
        Only call this if :meth:`is_paper_change_deployment_policy_details` is true.

        :rtype: PaperChangeDeploymentPolicyDetails
        """
        if not self.is_paper_change_deployment_policy_details():
            raise AttributeError("tag 'paper_change_deployment_policy_details' not set")
        return self._value

    def get_paper_change_member_link_policy_details(self):
        """
        Only call this if :meth:`is_paper_change_member_link_policy_details` is true.

        :rtype: PaperChangeMemberLinkPolicyDetails
        """
        if not self.is_paper_change_member_link_policy_details():
            raise AttributeError("tag 'paper_change_member_link_policy_details' not set")
        return self._value

    def get_paper_change_member_policy_details(self):
        """
        Only call this if :meth:`is_paper_change_member_policy_details` is true.

        :rtype: PaperChangeMemberPolicyDetails
        """
        if not self.is_paper_change_member_policy_details():
            raise AttributeError("tag 'paper_change_member_policy_details' not set")
        return self._value

    def get_paper_change_policy_details(self):
        """
        Only call this if :meth:`is_paper_change_policy_details` is true.

        :rtype: PaperChangePolicyDetails
        """
        if not self.is_paper_change_policy_details():
            raise AttributeError("tag 'paper_change_policy_details' not set")
        return self._value

    def get_paper_enabled_users_group_addition_details(self):
        """
        Only call this if :meth:`is_paper_enabled_users_group_addition_details` is true.

        :rtype: PaperEnabledUsersGroupAdditionDetails
        """
        if not self.is_paper_enabled_users_group_addition_details():
            raise AttributeError("tag 'paper_enabled_users_group_addition_details' not set")
        return self._value

    def get_paper_enabled_users_group_removal_details(self):
        """
        Only call this if :meth:`is_paper_enabled_users_group_removal_details` is true.

        :rtype: PaperEnabledUsersGroupRemovalDetails
        """
        if not self.is_paper_enabled_users_group_removal_details():
            raise AttributeError("tag 'paper_enabled_users_group_removal_details' not set")
        return self._value

    def get_permanent_delete_change_policy_details(self):
        """
        Only call this if :meth:`is_permanent_delete_change_policy_details` is true.

        :rtype: PermanentDeleteChangePolicyDetails
        """
        if not self.is_permanent_delete_change_policy_details():
            raise AttributeError("tag 'permanent_delete_change_policy_details' not set")
        return self._value

    def get_sharing_change_folder_join_policy_details(self):
        """
        Only call this if :meth:`is_sharing_change_folder_join_policy_details` is true.

        :rtype: SharingChangeFolderJoinPolicyDetails
        """
        if not self.is_sharing_change_folder_join_policy_details():
            raise AttributeError("tag 'sharing_change_folder_join_policy_details' not set")
        return self._value

    def get_sharing_change_link_policy_details(self):
        """
        Only call this if :meth:`is_sharing_change_link_policy_details` is true.

        :rtype: SharingChangeLinkPolicyDetails
        """
        if not self.is_sharing_change_link_policy_details():
            raise AttributeError("tag 'sharing_change_link_policy_details' not set")
        return self._value

    def get_sharing_change_member_policy_details(self):
        """
        Only call this if :meth:`is_sharing_change_member_policy_details` is true.

        :rtype: SharingChangeMemberPolicyDetails
        """
        if not self.is_sharing_change_member_policy_details():
            raise AttributeError("tag 'sharing_change_member_policy_details' not set")
        return self._value

    def get_showcase_change_download_policy_details(self):
        """
        Only call this if :meth:`is_showcase_change_download_policy_details` is true.

        :rtype: ShowcaseChangeDownloadPolicyDetails
        """
        if not self.is_showcase_change_download_policy_details():
            raise AttributeError("tag 'showcase_change_download_policy_details' not set")
        return self._value

    def get_showcase_change_enabled_policy_details(self):
        """
        Only call this if :meth:`is_showcase_change_enabled_policy_details` is true.

        :rtype: ShowcaseChangeEnabledPolicyDetails
        """
        if not self.is_showcase_change_enabled_policy_details():
            raise AttributeError("tag 'showcase_change_enabled_policy_details' not set")
        return self._value

    def get_showcase_change_external_sharing_policy_details(self):
        """
        Only call this if :meth:`is_showcase_change_external_sharing_policy_details` is true.

        :rtype: ShowcaseChangeExternalSharingPolicyDetails
        """
        if not self.is_showcase_change_external_sharing_policy_details():
            raise AttributeError("tag 'showcase_change_external_sharing_policy_details' not set")
        return self._value

    def get_smart_sync_change_policy_details(self):
        """
        Only call this if :meth:`is_smart_sync_change_policy_details` is true.

        :rtype: SmartSyncChangePolicyDetails
        """
        if not self.is_smart_sync_change_policy_details():
            raise AttributeError("tag 'smart_sync_change_policy_details' not set")
        return self._value

    def get_smart_sync_not_opt_out_details(self):
        """
        Only call this if :meth:`is_smart_sync_not_opt_out_details` is true.

        :rtype: SmartSyncNotOptOutDetails
        """
        if not self.is_smart_sync_not_opt_out_details():
            raise AttributeError("tag 'smart_sync_not_opt_out_details' not set")
        return self._value

    def get_smart_sync_opt_out_details(self):
        """
        Only call this if :meth:`is_smart_sync_opt_out_details` is true.

        :rtype: SmartSyncOptOutDetails
        """
        if not self.is_smart_sync_opt_out_details():
            raise AttributeError("tag 'smart_sync_opt_out_details' not set")
        return self._value

    def get_sso_change_policy_details(self):
        """
        Only call this if :meth:`is_sso_change_policy_details` is true.

        :rtype: SsoChangePolicyDetails
        """
        if not self.is_sso_change_policy_details():
            raise AttributeError("tag 'sso_change_policy_details' not set")
        return self._value

    def get_team_selective_sync_policy_changed_details(self):
        """
        Only call this if :meth:`is_team_selective_sync_policy_changed_details` is true.

        :rtype: TeamSelectiveSyncPolicyChangedDetails
        """
        if not self.is_team_selective_sync_policy_changed_details():
            raise AttributeError("tag 'team_selective_sync_policy_changed_details' not set")
        return self._value

    def get_tfa_change_policy_details(self):
        """
        Only call this if :meth:`is_tfa_change_policy_details` is true.

        :rtype: TfaChangePolicyDetails
        """
        if not self.is_tfa_change_policy_details():
            raise AttributeError("tag 'tfa_change_policy_details' not set")
        return self._value

    def get_two_account_change_policy_details(self):
        """
        Only call this if :meth:`is_two_account_change_policy_details` is true.

        :rtype: TwoAccountChangePolicyDetails
        """
        if not self.is_two_account_change_policy_details():
            raise AttributeError("tag 'two_account_change_policy_details' not set")
        return self._value

    def get_viewer_info_policy_changed_details(self):
        """
        Only call this if :meth:`is_viewer_info_policy_changed_details` is true.

        :rtype: ViewerInfoPolicyChangedDetails
        """
        if not self.is_viewer_info_policy_changed_details():
            raise AttributeError("tag 'viewer_info_policy_changed_details' not set")
        return self._value

    def get_web_sessions_change_fixed_length_policy_details(self):
        """
        Only call this if :meth:`is_web_sessions_change_fixed_length_policy_details` is true.

        :rtype: WebSessionsChangeFixedLengthPolicyDetails
        """
        if not self.is_web_sessions_change_fixed_length_policy_details():
            raise AttributeError("tag 'web_sessions_change_fixed_length_policy_details' not set")
        return self._value

    def get_web_sessions_change_idle_length_policy_details(self):
        """
        Only call this if :meth:`is_web_sessions_change_idle_length_policy_details` is true.

        :rtype: WebSessionsChangeIdleLengthPolicyDetails
        """
        if not self.is_web_sessions_change_idle_length_policy_details():
            raise AttributeError("tag 'web_sessions_change_idle_length_policy_details' not set")
        return self._value

    def get_team_merge_from_details(self):
        """
        Only call this if :meth:`is_team_merge_from_details` is true.

        :rtype: TeamMergeFromDetails
        """
        if not self.is_team_merge_from_details():
            raise AttributeError("tag 'team_merge_from_details' not set")
        return self._value

    def get_team_merge_to_details(self):
        """
        Only call this if :meth:`is_team_merge_to_details` is true.

        :rtype: TeamMergeToDetails
        """
        if not self.is_team_merge_to_details():
            raise AttributeError("tag 'team_merge_to_details' not set")
        return self._value

    def get_team_profile_add_logo_details(self):
        """
        Only call this if :meth:`is_team_profile_add_logo_details` is true.

        :rtype: TeamProfileAddLogoDetails
        """
        if not self.is_team_profile_add_logo_details():
            raise AttributeError("tag 'team_profile_add_logo_details' not set")
        return self._value

    def get_team_profile_change_default_language_details(self):
        """
        Only call this if :meth:`is_team_profile_change_default_language_details` is true.

        :rtype: TeamProfileChangeDefaultLanguageDetails
        """
        if not self.is_team_profile_change_default_language_details():
            raise AttributeError("tag 'team_profile_change_default_language_details' not set")
        return self._value

    def get_team_profile_change_logo_details(self):
        """
        Only call this if :meth:`is_team_profile_change_logo_details` is true.

        :rtype: TeamProfileChangeLogoDetails
        """
        if not self.is_team_profile_change_logo_details():
            raise AttributeError("tag 'team_profile_change_logo_details' not set")
        return self._value

    def get_team_profile_change_name_details(self):
        """
        Only call this if :meth:`is_team_profile_change_name_details` is true.

        :rtype: TeamProfileChangeNameDetails
        """
        if not self.is_team_profile_change_name_details():
            raise AttributeError("tag 'team_profile_change_name_details' not set")
        return self._value

    def get_team_profile_remove_logo_details(self):
        """
        Only call this if :meth:`is_team_profile_remove_logo_details` is true.

        :rtype: TeamProfileRemoveLogoDetails
        """
        if not self.is_team_profile_remove_logo_details():
            raise AttributeError("tag 'team_profile_remove_logo_details' not set")
        return self._value

    def get_tfa_add_backup_phone_details(self):
        """
        Only call this if :meth:`is_tfa_add_backup_phone_details` is true.

        :rtype: TfaAddBackupPhoneDetails
        """
        if not self.is_tfa_add_backup_phone_details():
            raise AttributeError("tag 'tfa_add_backup_phone_details' not set")
        return self._value

    def get_tfa_add_security_key_details(self):
        """
        Only call this if :meth:`is_tfa_add_security_key_details` is true.

        :rtype: TfaAddSecurityKeyDetails
        """
        if not self.is_tfa_add_security_key_details():
            raise AttributeError("tag 'tfa_add_security_key_details' not set")
        return self._value

    def get_tfa_change_backup_phone_details(self):
        """
        Only call this if :meth:`is_tfa_change_backup_phone_details` is true.

        :rtype: TfaChangeBackupPhoneDetails
        """
        if not self.is_tfa_change_backup_phone_details():
            raise AttributeError("tag 'tfa_change_backup_phone_details' not set")
        return self._value

    def get_tfa_change_status_details(self):
        """
        Only call this if :meth:`is_tfa_change_status_details` is true.

        :rtype: TfaChangeStatusDetails
        """
        if not self.is_tfa_change_status_details():
            raise AttributeError("tag 'tfa_change_status_details' not set")
        return self._value

    def get_tfa_remove_backup_phone_details(self):
        """
        Only call this if :meth:`is_tfa_remove_backup_phone_details` is true.

        :rtype: TfaRemoveBackupPhoneDetails
        """
        if not self.is_tfa_remove_backup_phone_details():
            raise AttributeError("tag 'tfa_remove_backup_phone_details' not set")
        return self._value

    def get_tfa_remove_security_key_details(self):
        """
        Only call this if :meth:`is_tfa_remove_security_key_details` is true.

        :rtype: TfaRemoveSecurityKeyDetails
        """
        if not self.is_tfa_remove_security_key_details():
            raise AttributeError("tag 'tfa_remove_security_key_details' not set")
        return self._value

    def get_tfa_reset_details(self):
        """
        Only call this if :meth:`is_tfa_reset_details` is true.

        :rtype: TfaResetDetails
        """
        if not self.is_tfa_reset_details():
            raise AttributeError("tag 'tfa_reset_details' not set")
        return self._value

    def get_missing_details(self):
        """
        Hints that this event was returned with missing details due to an
        internal error.

        Only call this if :meth:`is_missing_details` is true.

        :rtype: MissingDetails
        """
        if not self.is_missing_details():
            raise AttributeError("tag 'missing_details' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, processor):
        super(EventDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EventDetails(%r, %r)' % (self._tag, self._value)

EventDetails_validator = bv.Union(EventDetails)

class EventType(bb.Union):
    """
    The type of the event.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar AppLinkTeamType app_link_team: (apps) Linked app for team
    :ivar AppLinkUserType app_link_user: (apps) Linked app for member
    :ivar AppUnlinkTeamType app_unlink_team: (apps) Unlinked app for team
    :ivar AppUnlinkUserType app_unlink_user: (apps) Unlinked app for member
    :ivar FileAddCommentType file_add_comment: (comments) Added file comment
    :ivar FileChangeCommentSubscriptionType file_change_comment_subscription:
        (comments) Subscribed to or unsubscribed from comment notifications for
        file
    :ivar FileDeleteCommentType file_delete_comment: (comments) Deleted file
        comment
    :ivar FileEditCommentType file_edit_comment: (comments) Edited file comment
    :ivar FileLikeCommentType file_like_comment: (comments) Liked file comment
        (deprecated, no longer logged)
    :ivar FileResolveCommentType file_resolve_comment: (comments) Resolved file
        comment
    :ivar FileUnlikeCommentType file_unlike_comment: (comments) Unliked file
        comment (deprecated, no longer logged)
    :ivar FileUnresolveCommentType file_unresolve_comment: (comments) Unresolved
        file comment
    :ivar DeviceChangeIpDesktopType device_change_ip_desktop: (devices) Changed
        IP address associated with active desktop session
    :ivar DeviceChangeIpMobileType device_change_ip_mobile: (devices) Changed IP
        address associated with active mobile session
    :ivar DeviceChangeIpWebType device_change_ip_web: (devices) Changed IP
        address associated with active web session
    :ivar DeviceDeleteOnUnlinkFailType device_delete_on_unlink_fail: (devices)
        Failed to delete all files from unlinked device
    :ivar DeviceDeleteOnUnlinkSuccessType device_delete_on_unlink_success:
        (devices) Deleted all files from unlinked device
    :ivar DeviceLinkFailType device_link_fail: (devices) Failed to link device
    :ivar DeviceLinkSuccessType device_link_success: (devices) Linked device
    :ivar DeviceManagementDisabledType device_management_disabled: (devices)
        Disabled device management (deprecated, no longer logged)
    :ivar DeviceManagementEnabledType device_management_enabled: (devices)
        Enabled device management (deprecated, no longer logged)
    :ivar DeviceUnlinkType device_unlink: (devices) Disconnected device
    :ivar EmmRefreshAuthTokenType emm_refresh_auth_token: (devices) Refreshed
        auth token used for setting up enterprise mobility management
    :ivar AccountCaptureChangeAvailabilityType
        account_capture_change_availability: (domains) Granted/revoked option to
        enable account capture on team domains
    :ivar AccountCaptureMigrateAccountType account_capture_migrate_account:
        (domains) Account-captured user migrated account to team
    :ivar AccountCaptureNotificationEmailsSentType
        account_capture_notification_emails_sent: (domains) Sent proactive
        account capture email to all unmanaged members
    :ivar AccountCaptureRelinquishAccountType
        account_capture_relinquish_account: (domains) Account-captured user
        changed account email to personal email
    :ivar DisabledDomainInvitesType disabled_domain_invites: (domains) Disabled
        domain invites (deprecated, no longer logged)
    :ivar DomainInvitesApproveRequestToJoinTeamType
        domain_invites_approve_request_to_join_team: (domains) Approved user's
        request to join team
    :ivar DomainInvitesDeclineRequestToJoinTeamType
        domain_invites_decline_request_to_join_team: (domains) Declined user's
        request to join team
    :ivar DomainInvitesEmailExistingUsersType
        domain_invites_email_existing_users: (domains) Sent domain invites to
        existing domain accounts (deprecated, no longer logged)
    :ivar DomainInvitesRequestToJoinTeamType
        domain_invites_request_to_join_team: (domains) Requested to join team
    :ivar DomainInvitesSetInviteNewUserPrefToNoType
        domain_invites_set_invite_new_user_pref_to_no: (domains) Disabled
        "Automatically invite new users" (deprecated, no longer logged)
    :ivar DomainInvitesSetInviteNewUserPrefToYesType
        domain_invites_set_invite_new_user_pref_to_yes: (domains) Enabled
        "Automatically invite new users" (deprecated, no longer logged)
    :ivar DomainVerificationAddDomainFailType
        domain_verification_add_domain_fail: (domains) Failed to verify team
        domain
    :ivar DomainVerificationAddDomainSuccessType
        domain_verification_add_domain_success: (domains) Verified team domain
    :ivar DomainVerificationRemoveDomainType domain_verification_remove_domain:
        (domains) Removed domain from list of verified team domains
    :ivar EnabledDomainInvitesType enabled_domain_invites: (domains) Enabled
        domain invites (deprecated, no longer logged)
    :ivar CreateFolderType create_folder: (file_operations) Created folders
        (deprecated, no longer logged)
    :ivar FileAddType file_add: (file_operations) Added files and/or folders
    :ivar FileCopyType file_copy: (file_operations) Copied files and/or folders
    :ivar FileDeleteType file_delete: (file_operations) Deleted files and/or
        folders
    :ivar FileDownloadType file_download: (file_operations) Downloaded files
        and/or folders
    :ivar FileEditType file_edit: (file_operations) Edited files
    :ivar FileGetCopyReferenceType file_get_copy_reference: (file_operations)
        Created copy reference to file/folder
    :ivar FileMoveType file_move: (file_operations) Moved files and/or folders
    :ivar FilePermanentlyDeleteType file_permanently_delete: (file_operations)
        Permanently deleted files and/or folders
    :ivar FilePreviewType file_preview: (file_operations) Previewed files and/or
        folders
    :ivar FileRenameType file_rename: (file_operations) Renamed files and/or
        folders
    :ivar FileRestoreType file_restore: (file_operations) Restored deleted files
        and/or folders
    :ivar FileRevertType file_revert: (file_operations) Reverted files to
        previous version
    :ivar FileRollbackChangesType file_rollback_changes: (file_operations)
        Rolled back file actions
    :ivar FileSaveCopyReferenceType file_save_copy_reference: (file_operations)
        Saved file/folder using copy reference
    :ivar FileRequestChangeType file_request_change: (file_requests) Changed
        file request
    :ivar FileRequestCloseType file_request_close: (file_requests) Closed file
        request
    :ivar FileRequestCreateType file_request_create: (file_requests) Created
        file request
    :ivar FileRequestReceiveFileType file_request_receive_file: (file_requests)
        Received files for file request
    :ivar GroupAddExternalIdType group_add_external_id: (groups) Added external
        ID for group
    :ivar GroupAddMemberType group_add_member: (groups) Added team members to
        group
    :ivar GroupChangeExternalIdType group_change_external_id: (groups) Changed
        external ID for group
    :ivar GroupChangeManagementTypeType group_change_management_type: (groups)
        Changed group management type
    :ivar GroupChangeMemberRoleType group_change_member_role: (groups) Changed
        manager permissions of group member
    :ivar GroupCreateType group_create: (groups) Created group
    :ivar GroupDeleteType group_delete: (groups) Deleted group
    :ivar GroupDescriptionUpdatedType group_description_updated: (groups)
        Updated group (deprecated, no longer logged)
    :ivar GroupJoinPolicyUpdatedType group_join_policy_updated: (groups) Updated
        group join policy (deprecated, no longer logged)
    :ivar GroupMovedType group_moved: (groups) Moved group (deprecated, no
        longer logged)
    :ivar GroupRemoveExternalIdType group_remove_external_id: (groups) Removed
        external ID for group
    :ivar GroupRemoveMemberType group_remove_member: (groups) Removed team
        members from group
    :ivar GroupRenameType group_rename: (groups) Renamed group
    :ivar EmmErrorType emm_error: (logins) Failed to sign in via EMM
        (deprecated, replaced by 'Failed to sign in')
    :ivar LoginFailType login_fail: (logins) Failed to sign in
    :ivar LoginSuccessType login_success: (logins) Signed in
    :ivar LogoutType logout: (logins) Signed out
    :ivar ResellerSupportSessionEndType reseller_support_session_end: (logins)
        Ended reseller support session
    :ivar ResellerSupportSessionStartType reseller_support_session_start:
        (logins) Started reseller support session
    :ivar SignInAsSessionEndType sign_in_as_session_end: (logins) Ended admin
        sign-in-as session
    :ivar SignInAsSessionStartType sign_in_as_session_start: (logins) Started
        admin sign-in-as session
    :ivar SsoErrorType sso_error: (logins) Failed to sign in via SSO
        (deprecated, replaced by 'Failed to sign in')
    :ivar MemberAddNameType member_add_name: (members) Added team member name
    :ivar MemberChangeAdminRoleType member_change_admin_role: (members) Changed
        team member admin role
    :ivar MemberChangeEmailType member_change_email: (members) Changed team
        member email
    :ivar MemberChangeMembershipTypeType member_change_membership_type:
        (members) Changed membership type (limited/full) of member (deprecated,
        no longer logged)
    :ivar MemberChangeNameType member_change_name: (members) Changed team member
        name
    :ivar MemberChangeStatusType member_change_status: (members) Changed member
        status (invited, joined, suspended, etc.)
    :ivar MemberDeleteManualContactsType member_delete_manual_contacts:
        (members) Cleared manually added contacts
    :ivar MemberPermanentlyDeleteAccountContentsType
        member_permanently_delete_account_contents: (members) Permanently
        deleted contents of deleted team member account
    :ivar MemberSpaceLimitsAddCustomQuotaType
        member_space_limits_add_custom_quota: (members) Set custom member space
        limit
    :ivar MemberSpaceLimitsChangeCustomQuotaType
        member_space_limits_change_custom_quota: (members) Changed custom member
        space limit
    :ivar MemberSpaceLimitsChangeStatusType member_space_limits_change_status:
        (members) Changed space limit status
    :ivar MemberSpaceLimitsRemoveCustomQuotaType
        member_space_limits_remove_custom_quota: (members) Removed custom member
        space limit
    :ivar MemberSuggestType member_suggest: (members) Suggested person to add to
        team
    :ivar MemberTransferAccountContentsType member_transfer_account_contents:
        (members) Transferred contents of deleted member account to another
        member
    :ivar SecondaryMailsPolicyChangedType secondary_mails_policy_changed:
        (members) Secondary mails policy changed
    :ivar PaperContentAddMemberType paper_content_add_member: (paper) Added team
        member to Paper doc/folder
    :ivar PaperContentAddToFolderType paper_content_add_to_folder: (paper) Added
        Paper doc/folder to folder
    :ivar PaperContentArchiveType paper_content_archive: (paper) Archived Paper
        doc/folder
    :ivar PaperContentCreateType paper_content_create: (paper) Created Paper
        doc/folder
    :ivar PaperContentPermanentlyDeleteType paper_content_permanently_delete:
        (paper) Permanently deleted Paper doc/folder
    :ivar PaperContentRemoveFromFolderType paper_content_remove_from_folder:
        (paper) Removed Paper doc/folder from folder
    :ivar PaperContentRemoveMemberType paper_content_remove_member: (paper)
        Removed team member from Paper doc/folder
    :ivar PaperContentRenameType paper_content_rename: (paper) Renamed Paper
        doc/folder
    :ivar PaperContentRestoreType paper_content_restore: (paper) Restored
        archived Paper doc/folder
    :ivar PaperDocAddCommentType paper_doc_add_comment: (paper) Added Paper doc
        comment
    :ivar PaperDocChangeMemberRoleType paper_doc_change_member_role: (paper)
        Changed team member permissions for Paper doc
    :ivar PaperDocChangeSharingPolicyType paper_doc_change_sharing_policy:
        (paper) Changed sharing setting for Paper doc
    :ivar PaperDocChangeSubscriptionType paper_doc_change_subscription: (paper)
        Followed/unfollowed Paper doc
    :ivar PaperDocDeletedType paper_doc_deleted: (paper) Archived Paper doc
        (deprecated, no longer logged)
    :ivar PaperDocDeleteCommentType paper_doc_delete_comment: (paper) Deleted
        Paper doc comment
    :ivar PaperDocDownloadType paper_doc_download: (paper) Downloaded Paper doc
        in specific format
    :ivar PaperDocEditType paper_doc_edit: (paper) Edited Paper doc
    :ivar PaperDocEditCommentType paper_doc_edit_comment: (paper) Edited Paper
        doc comment
    :ivar PaperDocFollowedType paper_doc_followed: (paper) Followed Paper doc
        (deprecated, replaced by 'Followed/unfollowed Paper doc')
    :ivar PaperDocMentionType paper_doc_mention: (paper) Mentioned team member
        in Paper doc
    :ivar PaperDocOwnershipChangedType paper_doc_ownership_changed: (paper)
        Transferred ownership of Paper doc
    :ivar PaperDocRequestAccessType paper_doc_request_access: (paper) Requested
        access to Paper doc
    :ivar PaperDocResolveCommentType paper_doc_resolve_comment: (paper) Resolved
        Paper doc comment
    :ivar PaperDocRevertType paper_doc_revert: (paper) Restored Paper doc to
        previous version
    :ivar PaperDocSlackShareType paper_doc_slack_share: (paper) Shared Paper doc
        via Slack
    :ivar PaperDocTeamInviteType paper_doc_team_invite: (paper) Shared Paper doc
        with team member (deprecated, no longer logged)
    :ivar PaperDocTrashedType paper_doc_trashed: (paper) Deleted Paper doc
    :ivar PaperDocUnresolveCommentType paper_doc_unresolve_comment: (paper)
        Unresolved Paper doc comment
    :ivar PaperDocUntrashedType paper_doc_untrashed: (paper) Restored Paper doc
    :ivar PaperDocViewType paper_doc_view: (paper) Viewed Paper doc
    :ivar PaperExternalViewAllowType paper_external_view_allow: (paper) Changed
        Paper external sharing setting to anyone (deprecated, no longer logged)
    :ivar PaperExternalViewDefaultTeamType paper_external_view_default_team:
        (paper) Changed Paper external sharing setting to default team
        (deprecated, no longer logged)
    :ivar PaperExternalViewForbidType paper_external_view_forbid: (paper)
        Changed Paper external sharing setting to team-only (deprecated, no
        longer logged)
    :ivar PaperFolderChangeSubscriptionType paper_folder_change_subscription:
        (paper) Followed/unfollowed Paper folder
    :ivar PaperFolderDeletedType paper_folder_deleted: (paper) Archived Paper
        folder (deprecated, no longer logged)
    :ivar PaperFolderFollowedType paper_folder_followed: (paper) Followed Paper
        folder (deprecated, replaced by 'Followed/unfollowed Paper folder')
    :ivar PaperFolderTeamInviteType paper_folder_team_invite: (paper) Shared
        Paper folder with member (deprecated, no longer logged)
    :ivar PasswordChangeType password_change: (passwords) Changed password
    :ivar PasswordResetType password_reset: (passwords) Reset password
    :ivar PasswordResetAllType password_reset_all: (passwords) Reset all team
        member passwords
    :ivar EmmCreateExceptionsReportType emm_create_exceptions_report: (reports)
        Created EMM-excluded users report
    :ivar EmmCreateUsageReportType emm_create_usage_report: (reports) Created
        EMM mobile app usage report
    :ivar ExportMembersReportType export_members_report: (reports) Created
        member data report
    :ivar PaperAdminExportStartType paper_admin_export_start: (reports) Exported
        all team Paper docs
    :ivar SmartSyncCreateAdminPrivilegeReportType
        smart_sync_create_admin_privilege_report: (reports) Created Smart Sync
        non-admin devices report
    :ivar TeamActivityCreateReportType team_activity_create_report: (reports)
        Created team activity report
    :ivar CollectionShareType collection_share: (sharing) Shared album
    :ivar NoteAclInviteOnlyType note_acl_invite_only: (sharing) Changed Paper
        doc to invite-only (deprecated, no longer logged)
    :ivar NoteAclLinkType note_acl_link: (sharing) Changed Paper doc to
        link-accessible (deprecated, no longer logged)
    :ivar NoteAclTeamLinkType note_acl_team_link: (sharing) Changed Paper doc to
        link-accessible for team (deprecated, no longer logged)
    :ivar NoteSharedType note_shared: (sharing) Shared Paper doc (deprecated, no
        longer logged)
    :ivar NoteShareReceiveType note_share_receive: (sharing) Shared received
        Paper doc (deprecated, no longer logged)
    :ivar OpenNoteSharedType open_note_shared: (sharing) Opened shared Paper doc
        (deprecated, no longer logged)
    :ivar SfAddGroupType sf_add_group: (sharing) Added team to shared folder
        (deprecated, no longer logged)
    :ivar SfAllowNonMembersToViewSharedLinksType
        sf_allow_non_members_to_view_shared_links: (sharing) Allowed
        non-collaborators to view links to files in shared folder (deprecated,
        no longer logged)
    :ivar SfExternalInviteWarnType sf_external_invite_warn: (sharing) Set team
        members to see warning before sharing folders outside team (deprecated,
        no longer logged)
    :ivar SfFbInviteType sf_fb_invite: (sharing) Invited Facebook users to
        shared folder (deprecated, no longer logged)
    :ivar SfFbInviteChangeRoleType sf_fb_invite_change_role: (sharing) Changed
        Facebook user's role in shared folder (deprecated, no longer logged)
    :ivar SfFbUninviteType sf_fb_uninvite: (sharing) Uninvited Facebook user
        from shared folder (deprecated, no longer logged)
    :ivar SfInviteGroupType sf_invite_group: (sharing) Invited group to shared
        folder (deprecated, no longer logged)
    :ivar SfTeamGrantAccessType sf_team_grant_access: (sharing) Granted access
        to shared folder (deprecated, no longer logged)
    :ivar SfTeamInviteType sf_team_invite: (sharing) Invited team members to
        shared folder (deprecated, replaced by 'Invited user to Dropbox and
        added them to shared file/folder')
    :ivar SfTeamInviteChangeRoleType sf_team_invite_change_role: (sharing)
        Changed team member's role in shared folder (deprecated, no longer
        logged)
    :ivar SfTeamJoinType sf_team_join: (sharing) Joined team member's shared
        folder (deprecated, no longer logged)
    :ivar SfTeamJoinFromOobLinkType sf_team_join_from_oob_link: (sharing) Joined
        team member's shared folder from link (deprecated, no longer logged)
    :ivar SfTeamUninviteType sf_team_uninvite: (sharing) Unshared folder with
        team member (deprecated, replaced by 'Removed invitee from shared
        file/folder before invite was accepted')
    :ivar SharedContentAddInviteesType shared_content_add_invitees: (sharing)
        Invited user to Dropbox and added them to shared file/folder
    :ivar SharedContentAddLinkExpiryType shared_content_add_link_expiry:
        (sharing) Added expiration date to link for shared file/folder
    :ivar SharedContentAddLinkPasswordType shared_content_add_link_password:
        (sharing) Added password to link for shared file/folder
    :ivar SharedContentAddMemberType shared_content_add_member: (sharing) Added
        users and/or groups to shared file/folder
    :ivar SharedContentChangeDownloadsPolicyType
        shared_content_change_downloads_policy: (sharing) Changed whether
        members can download shared file/folder
    :ivar SharedContentChangeInviteeRoleType shared_content_change_invitee_role:
        (sharing) Changed access type of invitee to shared file/folder before
        invite was accepted
    :ivar SharedContentChangeLinkAudienceType
        shared_content_change_link_audience: (sharing) Changed link audience of
        shared file/folder
    :ivar SharedContentChangeLinkExpiryType shared_content_change_link_expiry:
        (sharing) Changed link expiration of shared file/folder
    :ivar SharedContentChangeLinkPasswordType
        shared_content_change_link_password: (sharing) Changed link password of
        shared file/folder
    :ivar SharedContentChangeMemberRoleType shared_content_change_member_role:
        (sharing) Changed access type of shared file/folder member
    :ivar SharedContentChangeViewerInfoPolicyType
        shared_content_change_viewer_info_policy: (sharing) Changed whether
        members can see who viewed shared file/folder
    :ivar SharedContentClaimInvitationType shared_content_claim_invitation:
        (sharing) Acquired membership of shared file/folder by accepting invite
    :ivar SharedContentCopyType shared_content_copy: (sharing) Copied shared
        file/folder to own Dropbox
    :ivar SharedContentDownloadType shared_content_download: (sharing)
        Downloaded shared file/folder
    :ivar SharedContentRelinquishMembershipType
        shared_content_relinquish_membership: (sharing) Left shared file/folder
    :ivar SharedContentRemoveInviteesType shared_content_remove_invitees:
        (sharing) Removed invitee from shared file/folder before invite was
        accepted
    :ivar SharedContentRemoveLinkExpiryType shared_content_remove_link_expiry:
        (sharing) Removed link expiration date of shared file/folder
    :ivar SharedContentRemoveLinkPasswordType
        shared_content_remove_link_password: (sharing) Removed link password of
        shared file/folder
    :ivar SharedContentRemoveMemberType shared_content_remove_member: (sharing)
        Removed user/group from shared file/folder
    :ivar SharedContentRequestAccessType shared_content_request_access:
        (sharing) Requested access to shared file/folder
    :ivar SharedContentUnshareType shared_content_unshare: (sharing) Unshared
        file/folder by clearing membership and turning off link
    :ivar SharedContentViewType shared_content_view: (sharing) Previewed shared
        file/folder
    :ivar SharedFolderChangeLinkPolicyType shared_folder_change_link_policy:
        (sharing) Changed who can access shared folder via link
    :ivar SharedFolderChangeMembersInheritancePolicyType
        shared_folder_change_members_inheritance_policy: (sharing) Changed
        whether shared folder inherits members from parent folder
    :ivar SharedFolderChangeMembersManagementPolicyType
        shared_folder_change_members_management_policy: (sharing) Changed who
        can add/remove members of shared folder
    :ivar SharedFolderChangeMembersPolicyType
        shared_folder_change_members_policy: (sharing) Changed who can become
        member of shared folder
    :ivar SharedFolderCreateType shared_folder_create: (sharing) Created shared
        folder
    :ivar SharedFolderDeclineInvitationType shared_folder_decline_invitation:
        (sharing) Declined team member's invite to shared folder
    :ivar SharedFolderMountType shared_folder_mount: (sharing) Added shared
        folder to own Dropbox
    :ivar SharedFolderNestType shared_folder_nest: (sharing) Changed parent of
        shared folder
    :ivar SharedFolderTransferOwnershipType shared_folder_transfer_ownership:
        (sharing) Transferred ownership of shared folder to another member
    :ivar SharedFolderUnmountType shared_folder_unmount: (sharing) Deleted
        shared folder from Dropbox
    :ivar SharedLinkAddExpiryType shared_link_add_expiry: (sharing) Added shared
        link expiration date
    :ivar SharedLinkChangeExpiryType shared_link_change_expiry: (sharing)
        Changed shared link expiration date
    :ivar SharedLinkChangeVisibilityType shared_link_change_visibility:
        (sharing) Changed visibility of shared link
    :ivar SharedLinkCopyType shared_link_copy: (sharing) Added file/folder to
        Dropbox from shared link
    :ivar SharedLinkCreateType shared_link_create: (sharing) Created shared link
    :ivar SharedLinkDisableType shared_link_disable: (sharing) Removed shared
        link
    :ivar SharedLinkDownloadType shared_link_download: (sharing) Downloaded
        file/folder from shared link
    :ivar SharedLinkRemoveExpiryType shared_link_remove_expiry: (sharing)
        Removed shared link expiration date
    :ivar SharedLinkShareType shared_link_share: (sharing) Added members as
        audience of shared link
    :ivar SharedLinkViewType shared_link_view: (sharing) Opened shared link
    :ivar SharedNoteOpenedType shared_note_opened: (sharing) Opened shared Paper
        doc (deprecated, no longer logged)
    :ivar ShmodelGroupShareType shmodel_group_share: (sharing) Shared link with
        group (deprecated, no longer logged)
    :ivar ShowcaseAccessGrantedType showcase_access_granted: (showcase) Granted
        access to showcase
    :ivar ShowcaseAddMemberType showcase_add_member: (showcase) Added member to
        showcase
    :ivar ShowcaseArchivedType showcase_archived: (showcase) Archived showcase
    :ivar ShowcaseCreatedType showcase_created: (showcase) Created showcase
    :ivar ShowcaseDeleteCommentType showcase_delete_comment: (showcase) Deleted
        showcase comment
    :ivar ShowcaseEditedType showcase_edited: (showcase) Edited showcase
    :ivar ShowcaseEditCommentType showcase_edit_comment: (showcase) Edited
        showcase comment
    :ivar ShowcaseFileAddedType showcase_file_added: (showcase) Added file to
        showcase
    :ivar ShowcaseFileDownloadType showcase_file_download: (showcase) Downloaded
        file from showcase
    :ivar ShowcaseFileRemovedType showcase_file_removed: (showcase) Removed file
        from showcase
    :ivar ShowcaseFileViewType showcase_file_view: (showcase) Viewed file in
        showcase
    :ivar ShowcasePermanentlyDeletedType showcase_permanently_deleted:
        (showcase) Permanently deleted showcase
    :ivar ShowcasePostCommentType showcase_post_comment: (showcase) Added
        showcase comment
    :ivar ShowcaseRemoveMemberType showcase_remove_member: (showcase) Removed
        member from showcase
    :ivar ShowcaseRenamedType showcase_renamed: (showcase) Renamed showcase
    :ivar ShowcaseRequestAccessType showcase_request_access: (showcase)
        Requested access to showcase
    :ivar ShowcaseResolveCommentType showcase_resolve_comment: (showcase)
        Resolved showcase comment
    :ivar ShowcaseRestoredType showcase_restored: (showcase) Unarchived showcase
    :ivar ShowcaseTrashedType showcase_trashed: (showcase) Deleted showcase
    :ivar ShowcaseTrashedDeprecatedType showcase_trashed_deprecated: (showcase)
        Deleted showcase (old version) (deprecated, replaced by 'Deleted
        showcase')
    :ivar ShowcaseUnresolveCommentType showcase_unresolve_comment: (showcase)
        Unresolved showcase comment
    :ivar ShowcaseUntrashedType showcase_untrashed: (showcase) Restored showcase
    :ivar ShowcaseUntrashedDeprecatedType showcase_untrashed_deprecated:
        (showcase) Restored showcase (old version) (deprecated, replaced by
        'Restored showcase')
    :ivar ShowcaseViewType showcase_view: (showcase) Viewed showcase
    :ivar SsoAddCertType sso_add_cert: (sso) Added X.509 certificate for SSO
    :ivar SsoAddLoginUrlType sso_add_login_url: (sso) Added sign-in URL for SSO
    :ivar SsoAddLogoutUrlType sso_add_logout_url: (sso) Added sign-out URL for
        SSO
    :ivar SsoChangeCertType sso_change_cert: (sso) Changed X.509 certificate for
        SSO
    :ivar SsoChangeLoginUrlType sso_change_login_url: (sso) Changed sign-in URL
        for SSO
    :ivar SsoChangeLogoutUrlType sso_change_logout_url: (sso) Changed sign-out
        URL for SSO
    :ivar SsoChangeSamlIdentityModeType sso_change_saml_identity_mode: (sso)
        Changed SAML identity mode for SSO
    :ivar SsoRemoveCertType sso_remove_cert: (sso) Removed X.509 certificate for
        SSO
    :ivar SsoRemoveLoginUrlType sso_remove_login_url: (sso) Removed sign-in URL
        for SSO
    :ivar SsoRemoveLogoutUrlType sso_remove_logout_url: (sso) Removed sign-out
        URL for SSO
    :ivar TeamFolderChangeStatusType team_folder_change_status: (team_folders)
        Changed archival status of team folder
    :ivar TeamFolderCreateType team_folder_create: (team_folders) Created team
        folder in active status
    :ivar TeamFolderDowngradeType team_folder_downgrade: (team_folders)
        Downgraded team folder to regular shared folder
    :ivar TeamFolderPermanentlyDeleteType team_folder_permanently_delete:
        (team_folders) Permanently deleted archived team folder
    :ivar TeamFolderRenameType team_folder_rename: (team_folders) Renamed
        active/archived team folder
    :ivar TeamSelectiveSyncSettingsChangedType
        team_selective_sync_settings_changed: (team_folders) Changed sync
        default
    :ivar AccountCaptureChangePolicyType account_capture_change_policy:
        (team_policies) Changed account capture setting on team domain
    :ivar AllowDownloadDisabledType allow_download_disabled: (team_policies)
        Disabled downloads (deprecated, no longer logged)
    :ivar AllowDownloadEnabledType allow_download_enabled: (team_policies)
        Enabled downloads (deprecated, no longer logged)
    :ivar CameraUploadsPolicyChangedType camera_uploads_policy_changed:
        (team_policies) Changed camera uploads setting for team
    :ivar DataPlacementRestrictionChangePolicyType
        data_placement_restriction_change_policy: (team_policies) Set
        restrictions on data center locations where team data resides
    :ivar DataPlacementRestrictionSatisfyPolicyType
        data_placement_restriction_satisfy_policy: (team_policies) Completed
        restrictions on data center locations where team data resides
    :ivar DeviceApprovalsChangeDesktopPolicyType
        device_approvals_change_desktop_policy: (team_policies) Set/removed
        limit on number of computers member can link to team Dropbox account
    :ivar DeviceApprovalsChangeMobilePolicyType
        device_approvals_change_mobile_policy: (team_policies) Set/removed limit
        on number of mobile devices member can link to team Dropbox account
    :ivar DeviceApprovalsChangeOverageActionType
        device_approvals_change_overage_action: (team_policies) Changed device
        approvals setting when member is over limit
    :ivar DeviceApprovalsChangeUnlinkActionType
        device_approvals_change_unlink_action: (team_policies) Changed device
        approvals setting when member unlinks approved device
    :ivar DirectoryRestrictionsAddMembersType
        directory_restrictions_add_members: (team_policies) Added members to
        directory restrictions list
    :ivar DirectoryRestrictionsRemoveMembersType
        directory_restrictions_remove_members: (team_policies) Removed members
        from directory restrictions list
    :ivar EmmAddExceptionType emm_add_exception: (team_policies) Added members
        to EMM exception list
    :ivar EmmChangePolicyType emm_change_policy: (team_policies)
        Enabled/disabled enterprise mobility management for members
    :ivar EmmRemoveExceptionType emm_remove_exception: (team_policies) Removed
        members from EMM exception list
    :ivar ExtendedVersionHistoryChangePolicyType
        extended_version_history_change_policy: (team_policies) Accepted/opted
        out of extended version history
    :ivar FileCommentsChangePolicyType file_comments_change_policy:
        (team_policies) Enabled/disabled commenting on team files
    :ivar FileRequestsChangePolicyType file_requests_change_policy:
        (team_policies) Enabled/disabled file requests
    :ivar FileRequestsEmailsEnabledType file_requests_emails_enabled:
        (team_policies) Enabled file request emails for everyone (deprecated, no
        longer logged)
    :ivar FileRequestsEmailsRestrictedToTeamOnlyType
        file_requests_emails_restricted_to_team_only: (team_policies) Enabled
        file request emails for team (deprecated, no longer logged)
    :ivar GoogleSsoChangePolicyType google_sso_change_policy: (team_policies)
        Enabled/disabled Google single sign-on for team
    :ivar GroupUserManagementChangePolicyType
        group_user_management_change_policy: (team_policies) Changed who can
        create groups
    :ivar MemberRequestsChangePolicyType member_requests_change_policy:
        (team_policies) Changed whether users can find team when not invited
    :ivar MemberSpaceLimitsAddExceptionType member_space_limits_add_exception:
        (team_policies) Added members to member space limit exception list
    :ivar MemberSpaceLimitsChangeCapsTypePolicyType
        member_space_limits_change_caps_type_policy: (team_policies) Changed
        member space limit type for team
    :ivar MemberSpaceLimitsChangePolicyType member_space_limits_change_policy:
        (team_policies) Changed team default member space limit
    :ivar MemberSpaceLimitsRemoveExceptionType
        member_space_limits_remove_exception: (team_policies) Removed members
        from member space limit exception list
    :ivar MemberSuggestionsChangePolicyType member_suggestions_change_policy:
        (team_policies) Enabled/disabled option for team members to suggest
        people to add to team
    :ivar MicrosoftOfficeAddinChangePolicyType
        microsoft_office_addin_change_policy: (team_policies) Enabled/disabled
        Microsoft Office add-in
    :ivar NetworkControlChangePolicyType network_control_change_policy:
        (team_policies) Enabled/disabled network control
    :ivar PaperChangeDeploymentPolicyType paper_change_deployment_policy:
        (team_policies) Changed whether Dropbox Paper, when enabled, is deployed
        to all members or to specific members
    :ivar PaperChangeMemberLinkPolicyType paper_change_member_link_policy:
        (team_policies) Changed whether non-members can view Paper docs with
        link (deprecated, no longer logged)
    :ivar PaperChangeMemberPolicyType paper_change_member_policy:
        (team_policies) Changed whether members can share Paper docs outside
        team, and if docs are accessible only by team members or anyone by
        default
    :ivar PaperChangePolicyType paper_change_policy: (team_policies)
        Enabled/disabled Dropbox Paper for team
    :ivar PaperEnabledUsersGroupAdditionType paper_enabled_users_group_addition:
        (team_policies) Added users to Paper-enabled users list
    :ivar PaperEnabledUsersGroupRemovalType paper_enabled_users_group_removal:
        (team_policies) Removed users from Paper-enabled users list
    :ivar PermanentDeleteChangePolicyType permanent_delete_change_policy:
        (team_policies) Enabled/disabled ability of team members to permanently
        delete content
    :ivar SharingChangeFolderJoinPolicyType sharing_change_folder_join_policy:
        (team_policies) Changed whether team members can join shared folders
        owned outside team
    :ivar SharingChangeLinkPolicyType sharing_change_link_policy:
        (team_policies) Changed whether members can share links outside team,
        and if links are accessible only by team members or anyone by default
    :ivar SharingChangeMemberPolicyType sharing_change_member_policy:
        (team_policies) Changed whether members can share files/folders outside
        team
    :ivar ShowcaseChangeDownloadPolicyType showcase_change_download_policy:
        (team_policies) Enabled/disabled downloading files from Dropbox Showcase
        for team
    :ivar ShowcaseChangeEnabledPolicyType showcase_change_enabled_policy:
        (team_policies) Enabled/disabled Dropbox Showcase for team
    :ivar ShowcaseChangeExternalSharingPolicyType
        showcase_change_external_sharing_policy: (team_policies)
        Enabled/disabled sharing Dropbox Showcase externally for team
    :ivar SmartSyncChangePolicyType smart_sync_change_policy: (team_policies)
        Changed default Smart Sync setting for team members
    :ivar SmartSyncNotOptOutType smart_sync_not_opt_out: (team_policies) Opted
        team into Smart Sync
    :ivar SmartSyncOptOutType smart_sync_opt_out: (team_policies) Opted team out
        of Smart Sync
    :ivar SsoChangePolicyType sso_change_policy: (team_policies) Changed single
        sign-on setting for team
    :ivar TeamSelectiveSyncPolicyChangedType team_selective_sync_policy_changed:
        (team_policies) Enabled/disabled Team Selective Sync for team
    :ivar TfaChangePolicyType tfa_change_policy: (team_policies) Changed
        two-step verification setting for team
    :ivar TwoAccountChangePolicyType two_account_change_policy: (team_policies)
        Enabled/disabled option for members to link personal Dropbox account and
        team account to same computer
    :ivar ViewerInfoPolicyChangedType viewer_info_policy_changed:
        (team_policies) Changed team policy for viewer info
    :ivar WebSessionsChangeFixedLengthPolicyType
        web_sessions_change_fixed_length_policy: (team_policies) Changed how
        long members can stay signed in to Dropbox.com
    :ivar WebSessionsChangeIdleLengthPolicyType
        web_sessions_change_idle_length_policy: (team_policies) Changed how long
        team members can be idle while signed in to Dropbox.com
    :ivar TeamMergeFromType team_merge_from: (team_profile) Merged another team
        into this team
    :ivar TeamMergeToType team_merge_to: (team_profile) Merged this team into
        another team
    :ivar TeamProfileAddLogoType team_profile_add_logo: (team_profile) Added
        team logo to display on shared link headers
    :ivar TeamProfileChangeDefaultLanguageType
        team_profile_change_default_language: (team_profile) Changed default
        language for team
    :ivar TeamProfileChangeLogoType team_profile_change_logo: (team_profile)
        Changed team logo displayed on shared link headers
    :ivar TeamProfileChangeNameType team_profile_change_name: (team_profile)
        Changed team name
    :ivar TeamProfileRemoveLogoType team_profile_remove_logo: (team_profile)
        Removed team logo displayed on shared link headers
    :ivar TfaAddBackupPhoneType tfa_add_backup_phone: (tfa) Added backup phone
        for two-step verification
    :ivar TfaAddSecurityKeyType tfa_add_security_key: (tfa) Added security key
        for two-step verification
    :ivar TfaChangeBackupPhoneType tfa_change_backup_phone: (tfa) Changed backup
        phone for two-step verification
    :ivar TfaChangeStatusType tfa_change_status: (tfa) Enabled/disabled/changed
        two-step verification setting
    :ivar TfaRemoveBackupPhoneType tfa_remove_backup_phone: (tfa) Removed backup
        phone for two-step verification
    :ivar TfaRemoveSecurityKeyType tfa_remove_security_key: (tfa) Removed
        security key for two-step verification
    :ivar TfaResetType tfa_reset: (tfa) Reset two-step verification for team
        member
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def app_link_team(cls, val):
        """
        Create an instance of this class set to the ``app_link_team`` tag with
        value ``val``.

        :param AppLinkTeamType val:
        :rtype: EventType
        """
        return cls('app_link_team', val)

    @classmethod
    def app_link_user(cls, val):
        """
        Create an instance of this class set to the ``app_link_user`` tag with
        value ``val``.

        :param AppLinkUserType val:
        :rtype: EventType
        """
        return cls('app_link_user', val)

    @classmethod
    def app_unlink_team(cls, val):
        """
        Create an instance of this class set to the ``app_unlink_team`` tag with
        value ``val``.

        :param AppUnlinkTeamType val:
        :rtype: EventType
        """
        return cls('app_unlink_team', val)

    @classmethod
    def app_unlink_user(cls, val):
        """
        Create an instance of this class set to the ``app_unlink_user`` tag with
        value ``val``.

        :param AppUnlinkUserType val:
        :rtype: EventType
        """
        return cls('app_unlink_user', val)

    @classmethod
    def file_add_comment(cls, val):
        """
        Create an instance of this class set to the ``file_add_comment`` tag
        with value ``val``.

        :param FileAddCommentType val:
        :rtype: EventType
        """
        return cls('file_add_comment', val)

    @classmethod
    def file_change_comment_subscription(cls, val):
        """
        Create an instance of this class set to the
        ``file_change_comment_subscription`` tag with value ``val``.

        :param FileChangeCommentSubscriptionType val:
        :rtype: EventType
        """
        return cls('file_change_comment_subscription', val)

    @classmethod
    def file_delete_comment(cls, val):
        """
        Create an instance of this class set to the ``file_delete_comment`` tag
        with value ``val``.

        :param FileDeleteCommentType val:
        :rtype: EventType
        """
        return cls('file_delete_comment', val)

    @classmethod
    def file_edit_comment(cls, val):
        """
        Create an instance of this class set to the ``file_edit_comment`` tag
        with value ``val``.

        :param FileEditCommentType val:
        :rtype: EventType
        """
        return cls('file_edit_comment', val)

    @classmethod
    def file_like_comment(cls, val):
        """
        Create an instance of this class set to the ``file_like_comment`` tag
        with value ``val``.

        :param FileLikeCommentType val:
        :rtype: EventType
        """
        return cls('file_like_comment', val)

    @classmethod
    def file_resolve_comment(cls, val):
        """
        Create an instance of this class set to the ``file_resolve_comment`` tag
        with value ``val``.

        :param FileResolveCommentType val:
        :rtype: EventType
        """
        return cls('file_resolve_comment', val)

    @classmethod
    def file_unlike_comment(cls, val):
        """
        Create an instance of this class set to the ``file_unlike_comment`` tag
        with value ``val``.

        :param FileUnlikeCommentType val:
        :rtype: EventType
        """
        return cls('file_unlike_comment', val)

    @classmethod
    def file_unresolve_comment(cls, val):
        """
        Create an instance of this class set to the ``file_unresolve_comment``
        tag with value ``val``.

        :param FileUnresolveCommentType val:
        :rtype: EventType
        """
        return cls('file_unresolve_comment', val)

    @classmethod
    def device_change_ip_desktop(cls, val):
        """
        Create an instance of this class set to the ``device_change_ip_desktop``
        tag with value ``val``.

        :param DeviceChangeIpDesktopType val:
        :rtype: EventType
        """
        return cls('device_change_ip_desktop', val)

    @classmethod
    def device_change_ip_mobile(cls, val):
        """
        Create an instance of this class set to the ``device_change_ip_mobile``
        tag with value ``val``.

        :param DeviceChangeIpMobileType val:
        :rtype: EventType
        """
        return cls('device_change_ip_mobile', val)

    @classmethod
    def device_change_ip_web(cls, val):
        """
        Create an instance of this class set to the ``device_change_ip_web`` tag
        with value ``val``.

        :param DeviceChangeIpWebType val:
        :rtype: EventType
        """
        return cls('device_change_ip_web', val)

    @classmethod
    def device_delete_on_unlink_fail(cls, val):
        """
        Create an instance of this class set to the
        ``device_delete_on_unlink_fail`` tag with value ``val``.

        :param DeviceDeleteOnUnlinkFailType val:
        :rtype: EventType
        """
        return cls('device_delete_on_unlink_fail', val)

    @classmethod
    def device_delete_on_unlink_success(cls, val):
        """
        Create an instance of this class set to the
        ``device_delete_on_unlink_success`` tag with value ``val``.

        :param DeviceDeleteOnUnlinkSuccessType val:
        :rtype: EventType
        """
        return cls('device_delete_on_unlink_success', val)

    @classmethod
    def device_link_fail(cls, val):
        """
        Create an instance of this class set to the ``device_link_fail`` tag
        with value ``val``.

        :param DeviceLinkFailType val:
        :rtype: EventType
        """
        return cls('device_link_fail', val)

    @classmethod
    def device_link_success(cls, val):
        """
        Create an instance of this class set to the ``device_link_success`` tag
        with value ``val``.

        :param DeviceLinkSuccessType val:
        :rtype: EventType
        """
        return cls('device_link_success', val)

    @classmethod
    def device_management_disabled(cls, val):
        """
        Create an instance of this class set to the
        ``device_management_disabled`` tag with value ``val``.

        :param DeviceManagementDisabledType val:
        :rtype: EventType
        """
        return cls('device_management_disabled', val)

    @classmethod
    def device_management_enabled(cls, val):
        """
        Create an instance of this class set to the
        ``device_management_enabled`` tag with value ``val``.

        :param DeviceManagementEnabledType val:
        :rtype: EventType
        """
        return cls('device_management_enabled', val)

    @classmethod
    def device_unlink(cls, val):
        """
        Create an instance of this class set to the ``device_unlink`` tag with
        value ``val``.

        :param DeviceUnlinkType val:
        :rtype: EventType
        """
        return cls('device_unlink', val)

    @classmethod
    def emm_refresh_auth_token(cls, val):
        """
        Create an instance of this class set to the ``emm_refresh_auth_token``
        tag with value ``val``.

        :param EmmRefreshAuthTokenType val:
        :rtype: EventType
        """
        return cls('emm_refresh_auth_token', val)

    @classmethod
    def account_capture_change_availability(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_change_availability`` tag with value ``val``.

        :param AccountCaptureChangeAvailabilityType val:
        :rtype: EventType
        """
        return cls('account_capture_change_availability', val)

    @classmethod
    def account_capture_migrate_account(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_migrate_account`` tag with value ``val``.

        :param AccountCaptureMigrateAccountType val:
        :rtype: EventType
        """
        return cls('account_capture_migrate_account', val)

    @classmethod
    def account_capture_notification_emails_sent(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_notification_emails_sent`` tag with value ``val``.

        :param AccountCaptureNotificationEmailsSentType val:
        :rtype: EventType
        """
        return cls('account_capture_notification_emails_sent', val)

    @classmethod
    def account_capture_relinquish_account(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_relinquish_account`` tag with value ``val``.

        :param AccountCaptureRelinquishAccountType val:
        :rtype: EventType
        """
        return cls('account_capture_relinquish_account', val)

    @classmethod
    def disabled_domain_invites(cls, val):
        """
        Create an instance of this class set to the ``disabled_domain_invites``
        tag with value ``val``.

        :param DisabledDomainInvitesType val:
        :rtype: EventType
        """
        return cls('disabled_domain_invites', val)

    @classmethod
    def domain_invites_approve_request_to_join_team(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_approve_request_to_join_team`` tag with value ``val``.

        :param DomainInvitesApproveRequestToJoinTeamType val:
        :rtype: EventType
        """
        return cls('domain_invites_approve_request_to_join_team', val)

    @classmethod
    def domain_invites_decline_request_to_join_team(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_decline_request_to_join_team`` tag with value ``val``.

        :param DomainInvitesDeclineRequestToJoinTeamType val:
        :rtype: EventType
        """
        return cls('domain_invites_decline_request_to_join_team', val)

    @classmethod
    def domain_invites_email_existing_users(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_email_existing_users`` tag with value ``val``.

        :param DomainInvitesEmailExistingUsersType val:
        :rtype: EventType
        """
        return cls('domain_invites_email_existing_users', val)

    @classmethod
    def domain_invites_request_to_join_team(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_request_to_join_team`` tag with value ``val``.

        :param DomainInvitesRequestToJoinTeamType val:
        :rtype: EventType
        """
        return cls('domain_invites_request_to_join_team', val)

    @classmethod
    def domain_invites_set_invite_new_user_pref_to_no(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_set_invite_new_user_pref_to_no`` tag with value
        ``val``.

        :param DomainInvitesSetInviteNewUserPrefToNoType val:
        :rtype: EventType
        """
        return cls('domain_invites_set_invite_new_user_pref_to_no', val)

    @classmethod
    def domain_invites_set_invite_new_user_pref_to_yes(cls, val):
        """
        Create an instance of this class set to the
        ``domain_invites_set_invite_new_user_pref_to_yes`` tag with value
        ``val``.

        :param DomainInvitesSetInviteNewUserPrefToYesType val:
        :rtype: EventType
        """
        return cls('domain_invites_set_invite_new_user_pref_to_yes', val)

    @classmethod
    def domain_verification_add_domain_fail(cls, val):
        """
        Create an instance of this class set to the
        ``domain_verification_add_domain_fail`` tag with value ``val``.

        :param DomainVerificationAddDomainFailType val:
        :rtype: EventType
        """
        return cls('domain_verification_add_domain_fail', val)

    @classmethod
    def domain_verification_add_domain_success(cls, val):
        """
        Create an instance of this class set to the
        ``domain_verification_add_domain_success`` tag with value ``val``.

        :param DomainVerificationAddDomainSuccessType val:
        :rtype: EventType
        """
        return cls('domain_verification_add_domain_success', val)

    @classmethod
    def domain_verification_remove_domain(cls, val):
        """
        Create an instance of this class set to the
        ``domain_verification_remove_domain`` tag with value ``val``.

        :param DomainVerificationRemoveDomainType val:
        :rtype: EventType
        """
        return cls('domain_verification_remove_domain', val)

    @classmethod
    def enabled_domain_invites(cls, val):
        """
        Create an instance of this class set to the ``enabled_domain_invites``
        tag with value ``val``.

        :param EnabledDomainInvitesType val:
        :rtype: EventType
        """
        return cls('enabled_domain_invites', val)

    @classmethod
    def create_folder(cls, val):
        """
        Create an instance of this class set to the ``create_folder`` tag with
        value ``val``.

        :param CreateFolderType val:
        :rtype: EventType
        """
        return cls('create_folder', val)

    @classmethod
    def file_add(cls, val):
        """
        Create an instance of this class set to the ``file_add`` tag with value
        ``val``.

        :param FileAddType val:
        :rtype: EventType
        """
        return cls('file_add', val)

    @classmethod
    def file_copy(cls, val):
        """
        Create an instance of this class set to the ``file_copy`` tag with value
        ``val``.

        :param FileCopyType val:
        :rtype: EventType
        """
        return cls('file_copy', val)

    @classmethod
    def file_delete(cls, val):
        """
        Create an instance of this class set to the ``file_delete`` tag with
        value ``val``.

        :param FileDeleteType val:
        :rtype: EventType
        """
        return cls('file_delete', val)

    @classmethod
    def file_download(cls, val):
        """
        Create an instance of this class set to the ``file_download`` tag with
        value ``val``.

        :param FileDownloadType val:
        :rtype: EventType
        """
        return cls('file_download', val)

    @classmethod
    def file_edit(cls, val):
        """
        Create an instance of this class set to the ``file_edit`` tag with value
        ``val``.

        :param FileEditType val:
        :rtype: EventType
        """
        return cls('file_edit', val)

    @classmethod
    def file_get_copy_reference(cls, val):
        """
        Create an instance of this class set to the ``file_get_copy_reference``
        tag with value ``val``.

        :param FileGetCopyReferenceType val:
        :rtype: EventType
        """
        return cls('file_get_copy_reference', val)

    @classmethod
    def file_move(cls, val):
        """
        Create an instance of this class set to the ``file_move`` tag with value
        ``val``.

        :param FileMoveType val:
        :rtype: EventType
        """
        return cls('file_move', val)

    @classmethod
    def file_permanently_delete(cls, val):
        """
        Create an instance of this class set to the ``file_permanently_delete``
        tag with value ``val``.

        :param FilePermanentlyDeleteType val:
        :rtype: EventType
        """
        return cls('file_permanently_delete', val)

    @classmethod
    def file_preview(cls, val):
        """
        Create an instance of this class set to the ``file_preview`` tag with
        value ``val``.

        :param FilePreviewType val:
        :rtype: EventType
        """
        return cls('file_preview', val)

    @classmethod
    def file_rename(cls, val):
        """
        Create an instance of this class set to the ``file_rename`` tag with
        value ``val``.

        :param FileRenameType val:
        :rtype: EventType
        """
        return cls('file_rename', val)

    @classmethod
    def file_restore(cls, val):
        """
        Create an instance of this class set to the ``file_restore`` tag with
        value ``val``.

        :param FileRestoreType val:
        :rtype: EventType
        """
        return cls('file_restore', val)

    @classmethod
    def file_revert(cls, val):
        """
        Create an instance of this class set to the ``file_revert`` tag with
        value ``val``.

        :param FileRevertType val:
        :rtype: EventType
        """
        return cls('file_revert', val)

    @classmethod
    def file_rollback_changes(cls, val):
        """
        Create an instance of this class set to the ``file_rollback_changes``
        tag with value ``val``.

        :param FileRollbackChangesType val:
        :rtype: EventType
        """
        return cls('file_rollback_changes', val)

    @classmethod
    def file_save_copy_reference(cls, val):
        """
        Create an instance of this class set to the ``file_save_copy_reference``
        tag with value ``val``.

        :param FileSaveCopyReferenceType val:
        :rtype: EventType
        """
        return cls('file_save_copy_reference', val)

    @classmethod
    def file_request_change(cls, val):
        """
        Create an instance of this class set to the ``file_request_change`` tag
        with value ``val``.

        :param FileRequestChangeType val:
        :rtype: EventType
        """
        return cls('file_request_change', val)

    @classmethod
    def file_request_close(cls, val):
        """
        Create an instance of this class set to the ``file_request_close`` tag
        with value ``val``.

        :param FileRequestCloseType val:
        :rtype: EventType
        """
        return cls('file_request_close', val)

    @classmethod
    def file_request_create(cls, val):
        """
        Create an instance of this class set to the ``file_request_create`` tag
        with value ``val``.

        :param FileRequestCreateType val:
        :rtype: EventType
        """
        return cls('file_request_create', val)

    @classmethod
    def file_request_receive_file(cls, val):
        """
        Create an instance of this class set to the
        ``file_request_receive_file`` tag with value ``val``.

        :param FileRequestReceiveFileType val:
        :rtype: EventType
        """
        return cls('file_request_receive_file', val)

    @classmethod
    def group_add_external_id(cls, val):
        """
        Create an instance of this class set to the ``group_add_external_id``
        tag with value ``val``.

        :param GroupAddExternalIdType val:
        :rtype: EventType
        """
        return cls('group_add_external_id', val)

    @classmethod
    def group_add_member(cls, val):
        """
        Create an instance of this class set to the ``group_add_member`` tag
        with value ``val``.

        :param GroupAddMemberType val:
        :rtype: EventType
        """
        return cls('group_add_member', val)

    @classmethod
    def group_change_external_id(cls, val):
        """
        Create an instance of this class set to the ``group_change_external_id``
        tag with value ``val``.

        :param GroupChangeExternalIdType val:
        :rtype: EventType
        """
        return cls('group_change_external_id', val)

    @classmethod
    def group_change_management_type(cls, val):
        """
        Create an instance of this class set to the
        ``group_change_management_type`` tag with value ``val``.

        :param GroupChangeManagementTypeType val:
        :rtype: EventType
        """
        return cls('group_change_management_type', val)

    @classmethod
    def group_change_member_role(cls, val):
        """
        Create an instance of this class set to the ``group_change_member_role``
        tag with value ``val``.

        :param GroupChangeMemberRoleType val:
        :rtype: EventType
        """
        return cls('group_change_member_role', val)

    @classmethod
    def group_create(cls, val):
        """
        Create an instance of this class set to the ``group_create`` tag with
        value ``val``.

        :param GroupCreateType val:
        :rtype: EventType
        """
        return cls('group_create', val)

    @classmethod
    def group_delete(cls, val):
        """
        Create an instance of this class set to the ``group_delete`` tag with
        value ``val``.

        :param GroupDeleteType val:
        :rtype: EventType
        """
        return cls('group_delete', val)

    @classmethod
    def group_description_updated(cls, val):
        """
        Create an instance of this class set to the
        ``group_description_updated`` tag with value ``val``.

        :param GroupDescriptionUpdatedType val:
        :rtype: EventType
        """
        return cls('group_description_updated', val)

    @classmethod
    def group_join_policy_updated(cls, val):
        """
        Create an instance of this class set to the
        ``group_join_policy_updated`` tag with value ``val``.

        :param GroupJoinPolicyUpdatedType val:
        :rtype: EventType
        """
        return cls('group_join_policy_updated', val)

    @classmethod
    def group_moved(cls, val):
        """
        Create an instance of this class set to the ``group_moved`` tag with
        value ``val``.

        :param GroupMovedType val:
        :rtype: EventType
        """
        return cls('group_moved', val)

    @classmethod
    def group_remove_external_id(cls, val):
        """
        Create an instance of this class set to the ``group_remove_external_id``
        tag with value ``val``.

        :param GroupRemoveExternalIdType val:
        :rtype: EventType
        """
        return cls('group_remove_external_id', val)

    @classmethod
    def group_remove_member(cls, val):
        """
        Create an instance of this class set to the ``group_remove_member`` tag
        with value ``val``.

        :param GroupRemoveMemberType val:
        :rtype: EventType
        """
        return cls('group_remove_member', val)

    @classmethod
    def group_rename(cls, val):
        """
        Create an instance of this class set to the ``group_rename`` tag with
        value ``val``.

        :param GroupRenameType val:
        :rtype: EventType
        """
        return cls('group_rename', val)

    @classmethod
    def emm_error(cls, val):
        """
        Create an instance of this class set to the ``emm_error`` tag with value
        ``val``.

        :param EmmErrorType val:
        :rtype: EventType
        """
        return cls('emm_error', val)

    @classmethod
    def login_fail(cls, val):
        """
        Create an instance of this class set to the ``login_fail`` tag with
        value ``val``.

        :param LoginFailType val:
        :rtype: EventType
        """
        return cls('login_fail', val)

    @classmethod
    def login_success(cls, val):
        """
        Create an instance of this class set to the ``login_success`` tag with
        value ``val``.

        :param LoginSuccessType val:
        :rtype: EventType
        """
        return cls('login_success', val)

    @classmethod
    def logout(cls, val):
        """
        Create an instance of this class set to the ``logout`` tag with value
        ``val``.

        :param LogoutType val:
        :rtype: EventType
        """
        return cls('logout', val)

    @classmethod
    def reseller_support_session_end(cls, val):
        """
        Create an instance of this class set to the
        ``reseller_support_session_end`` tag with value ``val``.

        :param ResellerSupportSessionEndType val:
        :rtype: EventType
        """
        return cls('reseller_support_session_end', val)

    @classmethod
    def reseller_support_session_start(cls, val):
        """
        Create an instance of this class set to the
        ``reseller_support_session_start`` tag with value ``val``.

        :param ResellerSupportSessionStartType val:
        :rtype: EventType
        """
        return cls('reseller_support_session_start', val)

    @classmethod
    def sign_in_as_session_end(cls, val):
        """
        Create an instance of this class set to the ``sign_in_as_session_end``
        tag with value ``val``.

        :param SignInAsSessionEndType val:
        :rtype: EventType
        """
        return cls('sign_in_as_session_end', val)

    @classmethod
    def sign_in_as_session_start(cls, val):
        """
        Create an instance of this class set to the ``sign_in_as_session_start``
        tag with value ``val``.

        :param SignInAsSessionStartType val:
        :rtype: EventType
        """
        return cls('sign_in_as_session_start', val)

    @classmethod
    def sso_error(cls, val):
        """
        Create an instance of this class set to the ``sso_error`` tag with value
        ``val``.

        :param SsoErrorType val:
        :rtype: EventType
        """
        return cls('sso_error', val)

    @classmethod
    def member_add_name(cls, val):
        """
        Create an instance of this class set to the ``member_add_name`` tag with
        value ``val``.

        :param MemberAddNameType val:
        :rtype: EventType
        """
        return cls('member_add_name', val)

    @classmethod
    def member_change_admin_role(cls, val):
        """
        Create an instance of this class set to the ``member_change_admin_role``
        tag with value ``val``.

        :param MemberChangeAdminRoleType val:
        :rtype: EventType
        """
        return cls('member_change_admin_role', val)

    @classmethod
    def member_change_email(cls, val):
        """
        Create an instance of this class set to the ``member_change_email`` tag
        with value ``val``.

        :param MemberChangeEmailType val:
        :rtype: EventType
        """
        return cls('member_change_email', val)

    @classmethod
    def member_change_membership_type(cls, val):
        """
        Create an instance of this class set to the
        ``member_change_membership_type`` tag with value ``val``.

        :param MemberChangeMembershipTypeType val:
        :rtype: EventType
        """
        return cls('member_change_membership_type', val)

    @classmethod
    def member_change_name(cls, val):
        """
        Create an instance of this class set to the ``member_change_name`` tag
        with value ``val``.

        :param MemberChangeNameType val:
        :rtype: EventType
        """
        return cls('member_change_name', val)

    @classmethod
    def member_change_status(cls, val):
        """
        Create an instance of this class set to the ``member_change_status`` tag
        with value ``val``.

        :param MemberChangeStatusType val:
        :rtype: EventType
        """
        return cls('member_change_status', val)

    @classmethod
    def member_delete_manual_contacts(cls, val):
        """
        Create an instance of this class set to the
        ``member_delete_manual_contacts`` tag with value ``val``.

        :param MemberDeleteManualContactsType val:
        :rtype: EventType
        """
        return cls('member_delete_manual_contacts', val)

    @classmethod
    def member_permanently_delete_account_contents(cls, val):
        """
        Create an instance of this class set to the
        ``member_permanently_delete_account_contents`` tag with value ``val``.

        :param MemberPermanentlyDeleteAccountContentsType val:
        :rtype: EventType
        """
        return cls('member_permanently_delete_account_contents', val)

    @classmethod
    def member_space_limits_add_custom_quota(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_add_custom_quota`` tag with value ``val``.

        :param MemberSpaceLimitsAddCustomQuotaType val:
        :rtype: EventType
        """
        return cls('member_space_limits_add_custom_quota', val)

    @classmethod
    def member_space_limits_change_custom_quota(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_custom_quota`` tag with value ``val``.

        :param MemberSpaceLimitsChangeCustomQuotaType val:
        :rtype: EventType
        """
        return cls('member_space_limits_change_custom_quota', val)

    @classmethod
    def member_space_limits_change_status(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_status`` tag with value ``val``.

        :param MemberSpaceLimitsChangeStatusType val:
        :rtype: EventType
        """
        return cls('member_space_limits_change_status', val)

    @classmethod
    def member_space_limits_remove_custom_quota(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_remove_custom_quota`` tag with value ``val``.

        :param MemberSpaceLimitsRemoveCustomQuotaType val:
        :rtype: EventType
        """
        return cls('member_space_limits_remove_custom_quota', val)

    @classmethod
    def member_suggest(cls, val):
        """
        Create an instance of this class set to the ``member_suggest`` tag with
        value ``val``.

        :param MemberSuggestType val:
        :rtype: EventType
        """
        return cls('member_suggest', val)

    @classmethod
    def member_transfer_account_contents(cls, val):
        """
        Create an instance of this class set to the
        ``member_transfer_account_contents`` tag with value ``val``.

        :param MemberTransferAccountContentsType val:
        :rtype: EventType
        """
        return cls('member_transfer_account_contents', val)

    @classmethod
    def secondary_mails_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``secondary_mails_policy_changed`` tag with value ``val``.

        :param SecondaryMailsPolicyChangedType val:
        :rtype: EventType
        """
        return cls('secondary_mails_policy_changed', val)

    @classmethod
    def paper_content_add_member(cls, val):
        """
        Create an instance of this class set to the ``paper_content_add_member``
        tag with value ``val``.

        :param PaperContentAddMemberType val:
        :rtype: EventType
        """
        return cls('paper_content_add_member', val)

    @classmethod
    def paper_content_add_to_folder(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_add_to_folder`` tag with value ``val``.

        :param PaperContentAddToFolderType val:
        :rtype: EventType
        """
        return cls('paper_content_add_to_folder', val)

    @classmethod
    def paper_content_archive(cls, val):
        """
        Create an instance of this class set to the ``paper_content_archive``
        tag with value ``val``.

        :param PaperContentArchiveType val:
        :rtype: EventType
        """
        return cls('paper_content_archive', val)

    @classmethod
    def paper_content_create(cls, val):
        """
        Create an instance of this class set to the ``paper_content_create`` tag
        with value ``val``.

        :param PaperContentCreateType val:
        :rtype: EventType
        """
        return cls('paper_content_create', val)

    @classmethod
    def paper_content_permanently_delete(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_permanently_delete`` tag with value ``val``.

        :param PaperContentPermanentlyDeleteType val:
        :rtype: EventType
        """
        return cls('paper_content_permanently_delete', val)

    @classmethod
    def paper_content_remove_from_folder(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_remove_from_folder`` tag with value ``val``.

        :param PaperContentRemoveFromFolderType val:
        :rtype: EventType
        """
        return cls('paper_content_remove_from_folder', val)

    @classmethod
    def paper_content_remove_member(cls, val):
        """
        Create an instance of this class set to the
        ``paper_content_remove_member`` tag with value ``val``.

        :param PaperContentRemoveMemberType val:
        :rtype: EventType
        """
        return cls('paper_content_remove_member', val)

    @classmethod
    def paper_content_rename(cls, val):
        """
        Create an instance of this class set to the ``paper_content_rename`` tag
        with value ``val``.

        :param PaperContentRenameType val:
        :rtype: EventType
        """
        return cls('paper_content_rename', val)

    @classmethod
    def paper_content_restore(cls, val):
        """
        Create an instance of this class set to the ``paper_content_restore``
        tag with value ``val``.

        :param PaperContentRestoreType val:
        :rtype: EventType
        """
        return cls('paper_content_restore', val)

    @classmethod
    def paper_doc_add_comment(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_add_comment``
        tag with value ``val``.

        :param PaperDocAddCommentType val:
        :rtype: EventType
        """
        return cls('paper_doc_add_comment', val)

    @classmethod
    def paper_doc_change_member_role(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_change_member_role`` tag with value ``val``.

        :param PaperDocChangeMemberRoleType val:
        :rtype: EventType
        """
        return cls('paper_doc_change_member_role', val)

    @classmethod
    def paper_doc_change_sharing_policy(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_change_sharing_policy`` tag with value ``val``.

        :param PaperDocChangeSharingPolicyType val:
        :rtype: EventType
        """
        return cls('paper_doc_change_sharing_policy', val)

    @classmethod
    def paper_doc_change_subscription(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_change_subscription`` tag with value ``val``.

        :param PaperDocChangeSubscriptionType val:
        :rtype: EventType
        """
        return cls('paper_doc_change_subscription', val)

    @classmethod
    def paper_doc_deleted(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_deleted`` tag
        with value ``val``.

        :param PaperDocDeletedType val:
        :rtype: EventType
        """
        return cls('paper_doc_deleted', val)

    @classmethod
    def paper_doc_delete_comment(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_delete_comment``
        tag with value ``val``.

        :param PaperDocDeleteCommentType val:
        :rtype: EventType
        """
        return cls('paper_doc_delete_comment', val)

    @classmethod
    def paper_doc_download(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_download`` tag
        with value ``val``.

        :param PaperDocDownloadType val:
        :rtype: EventType
        """
        return cls('paper_doc_download', val)

    @classmethod
    def paper_doc_edit(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_edit`` tag with
        value ``val``.

        :param PaperDocEditType val:
        :rtype: EventType
        """
        return cls('paper_doc_edit', val)

    @classmethod
    def paper_doc_edit_comment(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_edit_comment``
        tag with value ``val``.

        :param PaperDocEditCommentType val:
        :rtype: EventType
        """
        return cls('paper_doc_edit_comment', val)

    @classmethod
    def paper_doc_followed(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_followed`` tag
        with value ``val``.

        :param PaperDocFollowedType val:
        :rtype: EventType
        """
        return cls('paper_doc_followed', val)

    @classmethod
    def paper_doc_mention(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_mention`` tag
        with value ``val``.

        :param PaperDocMentionType val:
        :rtype: EventType
        """
        return cls('paper_doc_mention', val)

    @classmethod
    def paper_doc_ownership_changed(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_ownership_changed`` tag with value ``val``.

        :param PaperDocOwnershipChangedType val:
        :rtype: EventType
        """
        return cls('paper_doc_ownership_changed', val)

    @classmethod
    def paper_doc_request_access(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_request_access``
        tag with value ``val``.

        :param PaperDocRequestAccessType val:
        :rtype: EventType
        """
        return cls('paper_doc_request_access', val)

    @classmethod
    def paper_doc_resolve_comment(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_resolve_comment`` tag with value ``val``.

        :param PaperDocResolveCommentType val:
        :rtype: EventType
        """
        return cls('paper_doc_resolve_comment', val)

    @classmethod
    def paper_doc_revert(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_revert`` tag
        with value ``val``.

        :param PaperDocRevertType val:
        :rtype: EventType
        """
        return cls('paper_doc_revert', val)

    @classmethod
    def paper_doc_slack_share(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_slack_share``
        tag with value ``val``.

        :param PaperDocSlackShareType val:
        :rtype: EventType
        """
        return cls('paper_doc_slack_share', val)

    @classmethod
    def paper_doc_team_invite(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_team_invite``
        tag with value ``val``.

        :param PaperDocTeamInviteType val:
        :rtype: EventType
        """
        return cls('paper_doc_team_invite', val)

    @classmethod
    def paper_doc_trashed(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_trashed`` tag
        with value ``val``.

        :param PaperDocTrashedType val:
        :rtype: EventType
        """
        return cls('paper_doc_trashed', val)

    @classmethod
    def paper_doc_unresolve_comment(cls, val):
        """
        Create an instance of this class set to the
        ``paper_doc_unresolve_comment`` tag with value ``val``.

        :param PaperDocUnresolveCommentType val:
        :rtype: EventType
        """
        return cls('paper_doc_unresolve_comment', val)

    @classmethod
    def paper_doc_untrashed(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_untrashed`` tag
        with value ``val``.

        :param PaperDocUntrashedType val:
        :rtype: EventType
        """
        return cls('paper_doc_untrashed', val)

    @classmethod
    def paper_doc_view(cls, val):
        """
        Create an instance of this class set to the ``paper_doc_view`` tag with
        value ``val``.

        :param PaperDocViewType val:
        :rtype: EventType
        """
        return cls('paper_doc_view', val)

    @classmethod
    def paper_external_view_allow(cls, val):
        """
        Create an instance of this class set to the
        ``paper_external_view_allow`` tag with value ``val``.

        :param PaperExternalViewAllowType val:
        :rtype: EventType
        """
        return cls('paper_external_view_allow', val)

    @classmethod
    def paper_external_view_default_team(cls, val):
        """
        Create an instance of this class set to the
        ``paper_external_view_default_team`` tag with value ``val``.

        :param PaperExternalViewDefaultTeamType val:
        :rtype: EventType
        """
        return cls('paper_external_view_default_team', val)

    @classmethod
    def paper_external_view_forbid(cls, val):
        """
        Create an instance of this class set to the
        ``paper_external_view_forbid`` tag with value ``val``.

        :param PaperExternalViewForbidType val:
        :rtype: EventType
        """
        return cls('paper_external_view_forbid', val)

    @classmethod
    def paper_folder_change_subscription(cls, val):
        """
        Create an instance of this class set to the
        ``paper_folder_change_subscription`` tag with value ``val``.

        :param PaperFolderChangeSubscriptionType val:
        :rtype: EventType
        """
        return cls('paper_folder_change_subscription', val)

    @classmethod
    def paper_folder_deleted(cls, val):
        """
        Create an instance of this class set to the ``paper_folder_deleted`` tag
        with value ``val``.

        :param PaperFolderDeletedType val:
        :rtype: EventType
        """
        return cls('paper_folder_deleted', val)

    @classmethod
    def paper_folder_followed(cls, val):
        """
        Create an instance of this class set to the ``paper_folder_followed``
        tag with value ``val``.

        :param PaperFolderFollowedType val:
        :rtype: EventType
        """
        return cls('paper_folder_followed', val)

    @classmethod
    def paper_folder_team_invite(cls, val):
        """
        Create an instance of this class set to the ``paper_folder_team_invite``
        tag with value ``val``.

        :param PaperFolderTeamInviteType val:
        :rtype: EventType
        """
        return cls('paper_folder_team_invite', val)

    @classmethod
    def password_change(cls, val):
        """
        Create an instance of this class set to the ``password_change`` tag with
        value ``val``.

        :param PasswordChangeType val:
        :rtype: EventType
        """
        return cls('password_change', val)

    @classmethod
    def password_reset(cls, val):
        """
        Create an instance of this class set to the ``password_reset`` tag with
        value ``val``.

        :param PasswordResetType val:
        :rtype: EventType
        """
        return cls('password_reset', val)

    @classmethod
    def password_reset_all(cls, val):
        """
        Create an instance of this class set to the ``password_reset_all`` tag
        with value ``val``.

        :param PasswordResetAllType val:
        :rtype: EventType
        """
        return cls('password_reset_all', val)

    @classmethod
    def emm_create_exceptions_report(cls, val):
        """
        Create an instance of this class set to the
        ``emm_create_exceptions_report`` tag with value ``val``.

        :param EmmCreateExceptionsReportType val:
        :rtype: EventType
        """
        return cls('emm_create_exceptions_report', val)

    @classmethod
    def emm_create_usage_report(cls, val):
        """
        Create an instance of this class set to the ``emm_create_usage_report``
        tag with value ``val``.

        :param EmmCreateUsageReportType val:
        :rtype: EventType
        """
        return cls('emm_create_usage_report', val)

    @classmethod
    def export_members_report(cls, val):
        """
        Create an instance of this class set to the ``export_members_report``
        tag with value ``val``.

        :param ExportMembersReportType val:
        :rtype: EventType
        """
        return cls('export_members_report', val)

    @classmethod
    def paper_admin_export_start(cls, val):
        """
        Create an instance of this class set to the ``paper_admin_export_start``
        tag with value ``val``.

        :param PaperAdminExportStartType val:
        :rtype: EventType
        """
        return cls('paper_admin_export_start', val)

    @classmethod
    def smart_sync_create_admin_privilege_report(cls, val):
        """
        Create an instance of this class set to the
        ``smart_sync_create_admin_privilege_report`` tag with value ``val``.

        :param SmartSyncCreateAdminPrivilegeReportType val:
        :rtype: EventType
        """
        return cls('smart_sync_create_admin_privilege_report', val)

    @classmethod
    def team_activity_create_report(cls, val):
        """
        Create an instance of this class set to the
        ``team_activity_create_report`` tag with value ``val``.

        :param TeamActivityCreateReportType val:
        :rtype: EventType
        """
        return cls('team_activity_create_report', val)

    @classmethod
    def collection_share(cls, val):
        """
        Create an instance of this class set to the ``collection_share`` tag
        with value ``val``.

        :param CollectionShareType val:
        :rtype: EventType
        """
        return cls('collection_share', val)

    @classmethod
    def note_acl_invite_only(cls, val):
        """
        Create an instance of this class set to the ``note_acl_invite_only`` tag
        with value ``val``.

        :param NoteAclInviteOnlyType val:
        :rtype: EventType
        """
        return cls('note_acl_invite_only', val)

    @classmethod
    def note_acl_link(cls, val):
        """
        Create an instance of this class set to the ``note_acl_link`` tag with
        value ``val``.

        :param NoteAclLinkType val:
        :rtype: EventType
        """
        return cls('note_acl_link', val)

    @classmethod
    def note_acl_team_link(cls, val):
        """
        Create an instance of this class set to the ``note_acl_team_link`` tag
        with value ``val``.

        :param NoteAclTeamLinkType val:
        :rtype: EventType
        """
        return cls('note_acl_team_link', val)

    @classmethod
    def note_shared(cls, val):
        """
        Create an instance of this class set to the ``note_shared`` tag with
        value ``val``.

        :param NoteSharedType val:
        :rtype: EventType
        """
        return cls('note_shared', val)

    @classmethod
    def note_share_receive(cls, val):
        """
        Create an instance of this class set to the ``note_share_receive`` tag
        with value ``val``.

        :param NoteShareReceiveType val:
        :rtype: EventType
        """
        return cls('note_share_receive', val)

    @classmethod
    def open_note_shared(cls, val):
        """
        Create an instance of this class set to the ``open_note_shared`` tag
        with value ``val``.

        :param OpenNoteSharedType val:
        :rtype: EventType
        """
        return cls('open_note_shared', val)

    @classmethod
    def sf_add_group(cls, val):
        """
        Create an instance of this class set to the ``sf_add_group`` tag with
        value ``val``.

        :param SfAddGroupType val:
        :rtype: EventType
        """
        return cls('sf_add_group', val)

    @classmethod
    def sf_allow_non_members_to_view_shared_links(cls, val):
        """
        Create an instance of this class set to the
        ``sf_allow_non_members_to_view_shared_links`` tag with value ``val``.

        :param SfAllowNonMembersToViewSharedLinksType val:
        :rtype: EventType
        """
        return cls('sf_allow_non_members_to_view_shared_links', val)

    @classmethod
    def sf_external_invite_warn(cls, val):
        """
        Create an instance of this class set to the ``sf_external_invite_warn``
        tag with value ``val``.

        :param SfExternalInviteWarnType val:
        :rtype: EventType
        """
        return cls('sf_external_invite_warn', val)

    @classmethod
    def sf_fb_invite(cls, val):
        """
        Create an instance of this class set to the ``sf_fb_invite`` tag with
        value ``val``.

        :param SfFbInviteType val:
        :rtype: EventType
        """
        return cls('sf_fb_invite', val)

    @classmethod
    def sf_fb_invite_change_role(cls, val):
        """
        Create an instance of this class set to the ``sf_fb_invite_change_role``
        tag with value ``val``.

        :param SfFbInviteChangeRoleType val:
        :rtype: EventType
        """
        return cls('sf_fb_invite_change_role', val)

    @classmethod
    def sf_fb_uninvite(cls, val):
        """
        Create an instance of this class set to the ``sf_fb_uninvite`` tag with
        value ``val``.

        :param SfFbUninviteType val:
        :rtype: EventType
        """
        return cls('sf_fb_uninvite', val)

    @classmethod
    def sf_invite_group(cls, val):
        """
        Create an instance of this class set to the ``sf_invite_group`` tag with
        value ``val``.

        :param SfInviteGroupType val:
        :rtype: EventType
        """
        return cls('sf_invite_group', val)

    @classmethod
    def sf_team_grant_access(cls, val):
        """
        Create an instance of this class set to the ``sf_team_grant_access`` tag
        with value ``val``.

        :param SfTeamGrantAccessType val:
        :rtype: EventType
        """
        return cls('sf_team_grant_access', val)

    @classmethod
    def sf_team_invite(cls, val):
        """
        Create an instance of this class set to the ``sf_team_invite`` tag with
        value ``val``.

        :param SfTeamInviteType val:
        :rtype: EventType
        """
        return cls('sf_team_invite', val)

    @classmethod
    def sf_team_invite_change_role(cls, val):
        """
        Create an instance of this class set to the
        ``sf_team_invite_change_role`` tag with value ``val``.

        :param SfTeamInviteChangeRoleType val:
        :rtype: EventType
        """
        return cls('sf_team_invite_change_role', val)

    @classmethod
    def sf_team_join(cls, val):
        """
        Create an instance of this class set to the ``sf_team_join`` tag with
        value ``val``.

        :param SfTeamJoinType val:
        :rtype: EventType
        """
        return cls('sf_team_join', val)

    @classmethod
    def sf_team_join_from_oob_link(cls, val):
        """
        Create an instance of this class set to the
        ``sf_team_join_from_oob_link`` tag with value ``val``.

        :param SfTeamJoinFromOobLinkType val:
        :rtype: EventType
        """
        return cls('sf_team_join_from_oob_link', val)

    @classmethod
    def sf_team_uninvite(cls, val):
        """
        Create an instance of this class set to the ``sf_team_uninvite`` tag
        with value ``val``.

        :param SfTeamUninviteType val:
        :rtype: EventType
        """
        return cls('sf_team_uninvite', val)

    @classmethod
    def shared_content_add_invitees(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_invitees`` tag with value ``val``.

        :param SharedContentAddInviteesType val:
        :rtype: EventType
        """
        return cls('shared_content_add_invitees', val)

    @classmethod
    def shared_content_add_link_expiry(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_link_expiry`` tag with value ``val``.

        :param SharedContentAddLinkExpiryType val:
        :rtype: EventType
        """
        return cls('shared_content_add_link_expiry', val)

    @classmethod
    def shared_content_add_link_password(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_link_password`` tag with value ``val``.

        :param SharedContentAddLinkPasswordType val:
        :rtype: EventType
        """
        return cls('shared_content_add_link_password', val)

    @classmethod
    def shared_content_add_member(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_add_member`` tag with value ``val``.

        :param SharedContentAddMemberType val:
        :rtype: EventType
        """
        return cls('shared_content_add_member', val)

    @classmethod
    def shared_content_change_downloads_policy(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_downloads_policy`` tag with value ``val``.

        :param SharedContentChangeDownloadsPolicyType val:
        :rtype: EventType
        """
        return cls('shared_content_change_downloads_policy', val)

    @classmethod
    def shared_content_change_invitee_role(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_invitee_role`` tag with value ``val``.

        :param SharedContentChangeInviteeRoleType val:
        :rtype: EventType
        """
        return cls('shared_content_change_invitee_role', val)

    @classmethod
    def shared_content_change_link_audience(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_link_audience`` tag with value ``val``.

        :param SharedContentChangeLinkAudienceType val:
        :rtype: EventType
        """
        return cls('shared_content_change_link_audience', val)

    @classmethod
    def shared_content_change_link_expiry(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_link_expiry`` tag with value ``val``.

        :param SharedContentChangeLinkExpiryType val:
        :rtype: EventType
        """
        return cls('shared_content_change_link_expiry', val)

    @classmethod
    def shared_content_change_link_password(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_link_password`` tag with value ``val``.

        :param SharedContentChangeLinkPasswordType val:
        :rtype: EventType
        """
        return cls('shared_content_change_link_password', val)

    @classmethod
    def shared_content_change_member_role(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_member_role`` tag with value ``val``.

        :param SharedContentChangeMemberRoleType val:
        :rtype: EventType
        """
        return cls('shared_content_change_member_role', val)

    @classmethod
    def shared_content_change_viewer_info_policy(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_change_viewer_info_policy`` tag with value ``val``.

        :param SharedContentChangeViewerInfoPolicyType val:
        :rtype: EventType
        """
        return cls('shared_content_change_viewer_info_policy', val)

    @classmethod
    def shared_content_claim_invitation(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_claim_invitation`` tag with value ``val``.

        :param SharedContentClaimInvitationType val:
        :rtype: EventType
        """
        return cls('shared_content_claim_invitation', val)

    @classmethod
    def shared_content_copy(cls, val):
        """
        Create an instance of this class set to the ``shared_content_copy`` tag
        with value ``val``.

        :param SharedContentCopyType val:
        :rtype: EventType
        """
        return cls('shared_content_copy', val)

    @classmethod
    def shared_content_download(cls, val):
        """
        Create an instance of this class set to the ``shared_content_download``
        tag with value ``val``.

        :param SharedContentDownloadType val:
        :rtype: EventType
        """
        return cls('shared_content_download', val)

    @classmethod
    def shared_content_relinquish_membership(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_relinquish_membership`` tag with value ``val``.

        :param SharedContentRelinquishMembershipType val:
        :rtype: EventType
        """
        return cls('shared_content_relinquish_membership', val)

    @classmethod
    def shared_content_remove_invitees(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_invitees`` tag with value ``val``.

        :param SharedContentRemoveInviteesType val:
        :rtype: EventType
        """
        return cls('shared_content_remove_invitees', val)

    @classmethod
    def shared_content_remove_link_expiry(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_link_expiry`` tag with value ``val``.

        :param SharedContentRemoveLinkExpiryType val:
        :rtype: EventType
        """
        return cls('shared_content_remove_link_expiry', val)

    @classmethod
    def shared_content_remove_link_password(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_link_password`` tag with value ``val``.

        :param SharedContentRemoveLinkPasswordType val:
        :rtype: EventType
        """
        return cls('shared_content_remove_link_password', val)

    @classmethod
    def shared_content_remove_member(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_remove_member`` tag with value ``val``.

        :param SharedContentRemoveMemberType val:
        :rtype: EventType
        """
        return cls('shared_content_remove_member', val)

    @classmethod
    def shared_content_request_access(cls, val):
        """
        Create an instance of this class set to the
        ``shared_content_request_access`` tag with value ``val``.

        :param SharedContentRequestAccessType val:
        :rtype: EventType
        """
        return cls('shared_content_request_access', val)

    @classmethod
    def shared_content_unshare(cls, val):
        """
        Create an instance of this class set to the ``shared_content_unshare``
        tag with value ``val``.

        :param SharedContentUnshareType val:
        :rtype: EventType
        """
        return cls('shared_content_unshare', val)

    @classmethod
    def shared_content_view(cls, val):
        """
        Create an instance of this class set to the ``shared_content_view`` tag
        with value ``val``.

        :param SharedContentViewType val:
        :rtype: EventType
        """
        return cls('shared_content_view', val)

    @classmethod
    def shared_folder_change_link_policy(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_link_policy`` tag with value ``val``.

        :param SharedFolderChangeLinkPolicyType val:
        :rtype: EventType
        """
        return cls('shared_folder_change_link_policy', val)

    @classmethod
    def shared_folder_change_members_inheritance_policy(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_members_inheritance_policy`` tag with value
        ``val``.

        :param SharedFolderChangeMembersInheritancePolicyType val:
        :rtype: EventType
        """
        return cls('shared_folder_change_members_inheritance_policy', val)

    @classmethod
    def shared_folder_change_members_management_policy(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_members_management_policy`` tag with value
        ``val``.

        :param SharedFolderChangeMembersManagementPolicyType val:
        :rtype: EventType
        """
        return cls('shared_folder_change_members_management_policy', val)

    @classmethod
    def shared_folder_change_members_policy(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_change_members_policy`` tag with value ``val``.

        :param SharedFolderChangeMembersPolicyType val:
        :rtype: EventType
        """
        return cls('shared_folder_change_members_policy', val)

    @classmethod
    def shared_folder_create(cls, val):
        """
        Create an instance of this class set to the ``shared_folder_create`` tag
        with value ``val``.

        :param SharedFolderCreateType val:
        :rtype: EventType
        """
        return cls('shared_folder_create', val)

    @classmethod
    def shared_folder_decline_invitation(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_decline_invitation`` tag with value ``val``.

        :param SharedFolderDeclineInvitationType val:
        :rtype: EventType
        """
        return cls('shared_folder_decline_invitation', val)

    @classmethod
    def shared_folder_mount(cls, val):
        """
        Create an instance of this class set to the ``shared_folder_mount`` tag
        with value ``val``.

        :param SharedFolderMountType val:
        :rtype: EventType
        """
        return cls('shared_folder_mount', val)

    @classmethod
    def shared_folder_nest(cls, val):
        """
        Create an instance of this class set to the ``shared_folder_nest`` tag
        with value ``val``.

        :param SharedFolderNestType val:
        :rtype: EventType
        """
        return cls('shared_folder_nest', val)

    @classmethod
    def shared_folder_transfer_ownership(cls, val):
        """
        Create an instance of this class set to the
        ``shared_folder_transfer_ownership`` tag with value ``val``.

        :param SharedFolderTransferOwnershipType val:
        :rtype: EventType
        """
        return cls('shared_folder_transfer_ownership', val)

    @classmethod
    def shared_folder_unmount(cls, val):
        """
        Create an instance of this class set to the ``shared_folder_unmount``
        tag with value ``val``.

        :param SharedFolderUnmountType val:
        :rtype: EventType
        """
        return cls('shared_folder_unmount', val)

    @classmethod
    def shared_link_add_expiry(cls, val):
        """
        Create an instance of this class set to the ``shared_link_add_expiry``
        tag with value ``val``.

        :param SharedLinkAddExpiryType val:
        :rtype: EventType
        """
        return cls('shared_link_add_expiry', val)

    @classmethod
    def shared_link_change_expiry(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_change_expiry`` tag with value ``val``.

        :param SharedLinkChangeExpiryType val:
        :rtype: EventType
        """
        return cls('shared_link_change_expiry', val)

    @classmethod
    def shared_link_change_visibility(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_change_visibility`` tag with value ``val``.

        :param SharedLinkChangeVisibilityType val:
        :rtype: EventType
        """
        return cls('shared_link_change_visibility', val)

    @classmethod
    def shared_link_copy(cls, val):
        """
        Create an instance of this class set to the ``shared_link_copy`` tag
        with value ``val``.

        :param SharedLinkCopyType val:
        :rtype: EventType
        """
        return cls('shared_link_copy', val)

    @classmethod
    def shared_link_create(cls, val):
        """
        Create an instance of this class set to the ``shared_link_create`` tag
        with value ``val``.

        :param SharedLinkCreateType val:
        :rtype: EventType
        """
        return cls('shared_link_create', val)

    @classmethod
    def shared_link_disable(cls, val):
        """
        Create an instance of this class set to the ``shared_link_disable`` tag
        with value ``val``.

        :param SharedLinkDisableType val:
        :rtype: EventType
        """
        return cls('shared_link_disable', val)

    @classmethod
    def shared_link_download(cls, val):
        """
        Create an instance of this class set to the ``shared_link_download`` tag
        with value ``val``.

        :param SharedLinkDownloadType val:
        :rtype: EventType
        """
        return cls('shared_link_download', val)

    @classmethod
    def shared_link_remove_expiry(cls, val):
        """
        Create an instance of this class set to the
        ``shared_link_remove_expiry`` tag with value ``val``.

        :param SharedLinkRemoveExpiryType val:
        :rtype: EventType
        """
        return cls('shared_link_remove_expiry', val)

    @classmethod
    def shared_link_share(cls, val):
        """
        Create an instance of this class set to the ``shared_link_share`` tag
        with value ``val``.

        :param SharedLinkShareType val:
        :rtype: EventType
        """
        return cls('shared_link_share', val)

    @classmethod
    def shared_link_view(cls, val):
        """
        Create an instance of this class set to the ``shared_link_view`` tag
        with value ``val``.

        :param SharedLinkViewType val:
        :rtype: EventType
        """
        return cls('shared_link_view', val)

    @classmethod
    def shared_note_opened(cls, val):
        """
        Create an instance of this class set to the ``shared_note_opened`` tag
        with value ``val``.

        :param SharedNoteOpenedType val:
        :rtype: EventType
        """
        return cls('shared_note_opened', val)

    @classmethod
    def shmodel_group_share(cls, val):
        """
        Create an instance of this class set to the ``shmodel_group_share`` tag
        with value ``val``.

        :param ShmodelGroupShareType val:
        :rtype: EventType
        """
        return cls('shmodel_group_share', val)

    @classmethod
    def showcase_access_granted(cls, val):
        """
        Create an instance of this class set to the ``showcase_access_granted``
        tag with value ``val``.

        :param ShowcaseAccessGrantedType val:
        :rtype: EventType
        """
        return cls('showcase_access_granted', val)

    @classmethod
    def showcase_add_member(cls, val):
        """
        Create an instance of this class set to the ``showcase_add_member`` tag
        with value ``val``.

        :param ShowcaseAddMemberType val:
        :rtype: EventType
        """
        return cls('showcase_add_member', val)

    @classmethod
    def showcase_archived(cls, val):
        """
        Create an instance of this class set to the ``showcase_archived`` tag
        with value ``val``.

        :param ShowcaseArchivedType val:
        :rtype: EventType
        """
        return cls('showcase_archived', val)

    @classmethod
    def showcase_created(cls, val):
        """
        Create an instance of this class set to the ``showcase_created`` tag
        with value ``val``.

        :param ShowcaseCreatedType val:
        :rtype: EventType
        """
        return cls('showcase_created', val)

    @classmethod
    def showcase_delete_comment(cls, val):
        """
        Create an instance of this class set to the ``showcase_delete_comment``
        tag with value ``val``.

        :param ShowcaseDeleteCommentType val:
        :rtype: EventType
        """
        return cls('showcase_delete_comment', val)

    @classmethod
    def showcase_edited(cls, val):
        """
        Create an instance of this class set to the ``showcase_edited`` tag with
        value ``val``.

        :param ShowcaseEditedType val:
        :rtype: EventType
        """
        return cls('showcase_edited', val)

    @classmethod
    def showcase_edit_comment(cls, val):
        """
        Create an instance of this class set to the ``showcase_edit_comment``
        tag with value ``val``.

        :param ShowcaseEditCommentType val:
        :rtype: EventType
        """
        return cls('showcase_edit_comment', val)

    @classmethod
    def showcase_file_added(cls, val):
        """
        Create an instance of this class set to the ``showcase_file_added`` tag
        with value ``val``.

        :param ShowcaseFileAddedType val:
        :rtype: EventType
        """
        return cls('showcase_file_added', val)

    @classmethod
    def showcase_file_download(cls, val):
        """
        Create an instance of this class set to the ``showcase_file_download``
        tag with value ``val``.

        :param ShowcaseFileDownloadType val:
        :rtype: EventType
        """
        return cls('showcase_file_download', val)

    @classmethod
    def showcase_file_removed(cls, val):
        """
        Create an instance of this class set to the ``showcase_file_removed``
        tag with value ``val``.

        :param ShowcaseFileRemovedType val:
        :rtype: EventType
        """
        return cls('showcase_file_removed', val)

    @classmethod
    def showcase_file_view(cls, val):
        """
        Create an instance of this class set to the ``showcase_file_view`` tag
        with value ``val``.

        :param ShowcaseFileViewType val:
        :rtype: EventType
        """
        return cls('showcase_file_view', val)

    @classmethod
    def showcase_permanently_deleted(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_permanently_deleted`` tag with value ``val``.

        :param ShowcasePermanentlyDeletedType val:
        :rtype: EventType
        """
        return cls('showcase_permanently_deleted', val)

    @classmethod
    def showcase_post_comment(cls, val):
        """
        Create an instance of this class set to the ``showcase_post_comment``
        tag with value ``val``.

        :param ShowcasePostCommentType val:
        :rtype: EventType
        """
        return cls('showcase_post_comment', val)

    @classmethod
    def showcase_remove_member(cls, val):
        """
        Create an instance of this class set to the ``showcase_remove_member``
        tag with value ``val``.

        :param ShowcaseRemoveMemberType val:
        :rtype: EventType
        """
        return cls('showcase_remove_member', val)

    @classmethod
    def showcase_renamed(cls, val):
        """
        Create an instance of this class set to the ``showcase_renamed`` tag
        with value ``val``.

        :param ShowcaseRenamedType val:
        :rtype: EventType
        """
        return cls('showcase_renamed', val)

    @classmethod
    def showcase_request_access(cls, val):
        """
        Create an instance of this class set to the ``showcase_request_access``
        tag with value ``val``.

        :param ShowcaseRequestAccessType val:
        :rtype: EventType
        """
        return cls('showcase_request_access', val)

    @classmethod
    def showcase_resolve_comment(cls, val):
        """
        Create an instance of this class set to the ``showcase_resolve_comment``
        tag with value ``val``.

        :param ShowcaseResolveCommentType val:
        :rtype: EventType
        """
        return cls('showcase_resolve_comment', val)

    @classmethod
    def showcase_restored(cls, val):
        """
        Create an instance of this class set to the ``showcase_restored`` tag
        with value ``val``.

        :param ShowcaseRestoredType val:
        :rtype: EventType
        """
        return cls('showcase_restored', val)

    @classmethod
    def showcase_trashed(cls, val):
        """
        Create an instance of this class set to the ``showcase_trashed`` tag
        with value ``val``.

        :param ShowcaseTrashedType val:
        :rtype: EventType
        """
        return cls('showcase_trashed', val)

    @classmethod
    def showcase_trashed_deprecated(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_trashed_deprecated`` tag with value ``val``.

        :param ShowcaseTrashedDeprecatedType val:
        :rtype: EventType
        """
        return cls('showcase_trashed_deprecated', val)

    @classmethod
    def showcase_unresolve_comment(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_unresolve_comment`` tag with value ``val``.

        :param ShowcaseUnresolveCommentType val:
        :rtype: EventType
        """
        return cls('showcase_unresolve_comment', val)

    @classmethod
    def showcase_untrashed(cls, val):
        """
        Create an instance of this class set to the ``showcase_untrashed`` tag
        with value ``val``.

        :param ShowcaseUntrashedType val:
        :rtype: EventType
        """
        return cls('showcase_untrashed', val)

    @classmethod
    def showcase_untrashed_deprecated(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_untrashed_deprecated`` tag with value ``val``.

        :param ShowcaseUntrashedDeprecatedType val:
        :rtype: EventType
        """
        return cls('showcase_untrashed_deprecated', val)

    @classmethod
    def showcase_view(cls, val):
        """
        Create an instance of this class set to the ``showcase_view`` tag with
        value ``val``.

        :param ShowcaseViewType val:
        :rtype: EventType
        """
        return cls('showcase_view', val)

    @classmethod
    def sso_add_cert(cls, val):
        """
        Create an instance of this class set to the ``sso_add_cert`` tag with
        value ``val``.

        :param SsoAddCertType val:
        :rtype: EventType
        """
        return cls('sso_add_cert', val)

    @classmethod
    def sso_add_login_url(cls, val):
        """
        Create an instance of this class set to the ``sso_add_login_url`` tag
        with value ``val``.

        :param SsoAddLoginUrlType val:
        :rtype: EventType
        """
        return cls('sso_add_login_url', val)

    @classmethod
    def sso_add_logout_url(cls, val):
        """
        Create an instance of this class set to the ``sso_add_logout_url`` tag
        with value ``val``.

        :param SsoAddLogoutUrlType val:
        :rtype: EventType
        """
        return cls('sso_add_logout_url', val)

    @classmethod
    def sso_change_cert(cls, val):
        """
        Create an instance of this class set to the ``sso_change_cert`` tag with
        value ``val``.

        :param SsoChangeCertType val:
        :rtype: EventType
        """
        return cls('sso_change_cert', val)

    @classmethod
    def sso_change_login_url(cls, val):
        """
        Create an instance of this class set to the ``sso_change_login_url`` tag
        with value ``val``.

        :param SsoChangeLoginUrlType val:
        :rtype: EventType
        """
        return cls('sso_change_login_url', val)

    @classmethod
    def sso_change_logout_url(cls, val):
        """
        Create an instance of this class set to the ``sso_change_logout_url``
        tag with value ``val``.

        :param SsoChangeLogoutUrlType val:
        :rtype: EventType
        """
        return cls('sso_change_logout_url', val)

    @classmethod
    def sso_change_saml_identity_mode(cls, val):
        """
        Create an instance of this class set to the
        ``sso_change_saml_identity_mode`` tag with value ``val``.

        :param SsoChangeSamlIdentityModeType val:
        :rtype: EventType
        """
        return cls('sso_change_saml_identity_mode', val)

    @classmethod
    def sso_remove_cert(cls, val):
        """
        Create an instance of this class set to the ``sso_remove_cert`` tag with
        value ``val``.

        :param SsoRemoveCertType val:
        :rtype: EventType
        """
        return cls('sso_remove_cert', val)

    @classmethod
    def sso_remove_login_url(cls, val):
        """
        Create an instance of this class set to the ``sso_remove_login_url`` tag
        with value ``val``.

        :param SsoRemoveLoginUrlType val:
        :rtype: EventType
        """
        return cls('sso_remove_login_url', val)

    @classmethod
    def sso_remove_logout_url(cls, val):
        """
        Create an instance of this class set to the ``sso_remove_logout_url``
        tag with value ``val``.

        :param SsoRemoveLogoutUrlType val:
        :rtype: EventType
        """
        return cls('sso_remove_logout_url', val)

    @classmethod
    def team_folder_change_status(cls, val):
        """
        Create an instance of this class set to the
        ``team_folder_change_status`` tag with value ``val``.

        :param TeamFolderChangeStatusType val:
        :rtype: EventType
        """
        return cls('team_folder_change_status', val)

    @classmethod
    def team_folder_create(cls, val):
        """
        Create an instance of this class set to the ``team_folder_create`` tag
        with value ``val``.

        :param TeamFolderCreateType val:
        :rtype: EventType
        """
        return cls('team_folder_create', val)

    @classmethod
    def team_folder_downgrade(cls, val):
        """
        Create an instance of this class set to the ``team_folder_downgrade``
        tag with value ``val``.

        :param TeamFolderDowngradeType val:
        :rtype: EventType
        """
        return cls('team_folder_downgrade', val)

    @classmethod
    def team_folder_permanently_delete(cls, val):
        """
        Create an instance of this class set to the
        ``team_folder_permanently_delete`` tag with value ``val``.

        :param TeamFolderPermanentlyDeleteType val:
        :rtype: EventType
        """
        return cls('team_folder_permanently_delete', val)

    @classmethod
    def team_folder_rename(cls, val):
        """
        Create an instance of this class set to the ``team_folder_rename`` tag
        with value ``val``.

        :param TeamFolderRenameType val:
        :rtype: EventType
        """
        return cls('team_folder_rename', val)

    @classmethod
    def team_selective_sync_settings_changed(cls, val):
        """
        Create an instance of this class set to the
        ``team_selective_sync_settings_changed`` tag with value ``val``.

        :param TeamSelectiveSyncSettingsChangedType val:
        :rtype: EventType
        """
        return cls('team_selective_sync_settings_changed', val)

    @classmethod
    def account_capture_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``account_capture_change_policy`` tag with value ``val``.

        :param AccountCaptureChangePolicyType val:
        :rtype: EventType
        """
        return cls('account_capture_change_policy', val)

    @classmethod
    def allow_download_disabled(cls, val):
        """
        Create an instance of this class set to the ``allow_download_disabled``
        tag with value ``val``.

        :param AllowDownloadDisabledType val:
        :rtype: EventType
        """
        return cls('allow_download_disabled', val)

    @classmethod
    def allow_download_enabled(cls, val):
        """
        Create an instance of this class set to the ``allow_download_enabled``
        tag with value ``val``.

        :param AllowDownloadEnabledType val:
        :rtype: EventType
        """
        return cls('allow_download_enabled', val)

    @classmethod
    def camera_uploads_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``camera_uploads_policy_changed`` tag with value ``val``.

        :param CameraUploadsPolicyChangedType val:
        :rtype: EventType
        """
        return cls('camera_uploads_policy_changed', val)

    @classmethod
    def data_placement_restriction_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``data_placement_restriction_change_policy`` tag with value ``val``.

        :param DataPlacementRestrictionChangePolicyType val:
        :rtype: EventType
        """
        return cls('data_placement_restriction_change_policy', val)

    @classmethod
    def data_placement_restriction_satisfy_policy(cls, val):
        """
        Create an instance of this class set to the
        ``data_placement_restriction_satisfy_policy`` tag with value ``val``.

        :param DataPlacementRestrictionSatisfyPolicyType val:
        :rtype: EventType
        """
        return cls('data_placement_restriction_satisfy_policy', val)

    @classmethod
    def device_approvals_change_desktop_policy(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_desktop_policy`` tag with value ``val``.

        :param DeviceApprovalsChangeDesktopPolicyType val:
        :rtype: EventType
        """
        return cls('device_approvals_change_desktop_policy', val)

    @classmethod
    def device_approvals_change_mobile_policy(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_mobile_policy`` tag with value ``val``.

        :param DeviceApprovalsChangeMobilePolicyType val:
        :rtype: EventType
        """
        return cls('device_approvals_change_mobile_policy', val)

    @classmethod
    def device_approvals_change_overage_action(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_overage_action`` tag with value ``val``.

        :param DeviceApprovalsChangeOverageActionType val:
        :rtype: EventType
        """
        return cls('device_approvals_change_overage_action', val)

    @classmethod
    def device_approvals_change_unlink_action(cls, val):
        """
        Create an instance of this class set to the
        ``device_approvals_change_unlink_action`` tag with value ``val``.

        :param DeviceApprovalsChangeUnlinkActionType val:
        :rtype: EventType
        """
        return cls('device_approvals_change_unlink_action', val)

    @classmethod
    def directory_restrictions_add_members(cls, val):
        """
        Create an instance of this class set to the
        ``directory_restrictions_add_members`` tag with value ``val``.

        :param DirectoryRestrictionsAddMembersType val:
        :rtype: EventType
        """
        return cls('directory_restrictions_add_members', val)

    @classmethod
    def directory_restrictions_remove_members(cls, val):
        """
        Create an instance of this class set to the
        ``directory_restrictions_remove_members`` tag with value ``val``.

        :param DirectoryRestrictionsRemoveMembersType val:
        :rtype: EventType
        """
        return cls('directory_restrictions_remove_members', val)

    @classmethod
    def emm_add_exception(cls, val):
        """
        Create an instance of this class set to the ``emm_add_exception`` tag
        with value ``val``.

        :param EmmAddExceptionType val:
        :rtype: EventType
        """
        return cls('emm_add_exception', val)

    @classmethod
    def emm_change_policy(cls, val):
        """
        Create an instance of this class set to the ``emm_change_policy`` tag
        with value ``val``.

        :param EmmChangePolicyType val:
        :rtype: EventType
        """
        return cls('emm_change_policy', val)

    @classmethod
    def emm_remove_exception(cls, val):
        """
        Create an instance of this class set to the ``emm_remove_exception`` tag
        with value ``val``.

        :param EmmRemoveExceptionType val:
        :rtype: EventType
        """
        return cls('emm_remove_exception', val)

    @classmethod
    def extended_version_history_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``extended_version_history_change_policy`` tag with value ``val``.

        :param ExtendedVersionHistoryChangePolicyType val:
        :rtype: EventType
        """
        return cls('extended_version_history_change_policy', val)

    @classmethod
    def file_comments_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``file_comments_change_policy`` tag with value ``val``.

        :param FileCommentsChangePolicyType val:
        :rtype: EventType
        """
        return cls('file_comments_change_policy', val)

    @classmethod
    def file_requests_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``file_requests_change_policy`` tag with value ``val``.

        :param FileRequestsChangePolicyType val:
        :rtype: EventType
        """
        return cls('file_requests_change_policy', val)

    @classmethod
    def file_requests_emails_enabled(cls, val):
        """
        Create an instance of this class set to the
        ``file_requests_emails_enabled`` tag with value ``val``.

        :param FileRequestsEmailsEnabledType val:
        :rtype: EventType
        """
        return cls('file_requests_emails_enabled', val)

    @classmethod
    def file_requests_emails_restricted_to_team_only(cls, val):
        """
        Create an instance of this class set to the
        ``file_requests_emails_restricted_to_team_only`` tag with value ``val``.

        :param FileRequestsEmailsRestrictedToTeamOnlyType val:
        :rtype: EventType
        """
        return cls('file_requests_emails_restricted_to_team_only', val)

    @classmethod
    def google_sso_change_policy(cls, val):
        """
        Create an instance of this class set to the ``google_sso_change_policy``
        tag with value ``val``.

        :param GoogleSsoChangePolicyType val:
        :rtype: EventType
        """
        return cls('google_sso_change_policy', val)

    @classmethod
    def group_user_management_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``group_user_management_change_policy`` tag with value ``val``.

        :param GroupUserManagementChangePolicyType val:
        :rtype: EventType
        """
        return cls('group_user_management_change_policy', val)

    @classmethod
    def member_requests_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``member_requests_change_policy`` tag with value ``val``.

        :param MemberRequestsChangePolicyType val:
        :rtype: EventType
        """
        return cls('member_requests_change_policy', val)

    @classmethod
    def member_space_limits_add_exception(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_add_exception`` tag with value ``val``.

        :param MemberSpaceLimitsAddExceptionType val:
        :rtype: EventType
        """
        return cls('member_space_limits_add_exception', val)

    @classmethod
    def member_space_limits_change_caps_type_policy(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_caps_type_policy`` tag with value ``val``.

        :param MemberSpaceLimitsChangeCapsTypePolicyType val:
        :rtype: EventType
        """
        return cls('member_space_limits_change_caps_type_policy', val)

    @classmethod
    def member_space_limits_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_change_policy`` tag with value ``val``.

        :param MemberSpaceLimitsChangePolicyType val:
        :rtype: EventType
        """
        return cls('member_space_limits_change_policy', val)

    @classmethod
    def member_space_limits_remove_exception(cls, val):
        """
        Create an instance of this class set to the
        ``member_space_limits_remove_exception`` tag with value ``val``.

        :param MemberSpaceLimitsRemoveExceptionType val:
        :rtype: EventType
        """
        return cls('member_space_limits_remove_exception', val)

    @classmethod
    def member_suggestions_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``member_suggestions_change_policy`` tag with value ``val``.

        :param MemberSuggestionsChangePolicyType val:
        :rtype: EventType
        """
        return cls('member_suggestions_change_policy', val)

    @classmethod
    def microsoft_office_addin_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``microsoft_office_addin_change_policy`` tag with value ``val``.

        :param MicrosoftOfficeAddinChangePolicyType val:
        :rtype: EventType
        """
        return cls('microsoft_office_addin_change_policy', val)

    @classmethod
    def network_control_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``network_control_change_policy`` tag with value ``val``.

        :param NetworkControlChangePolicyType val:
        :rtype: EventType
        """
        return cls('network_control_change_policy', val)

    @classmethod
    def paper_change_deployment_policy(cls, val):
        """
        Create an instance of this class set to the
        ``paper_change_deployment_policy`` tag with value ``val``.

        :param PaperChangeDeploymentPolicyType val:
        :rtype: EventType
        """
        return cls('paper_change_deployment_policy', val)

    @classmethod
    def paper_change_member_link_policy(cls, val):
        """
        Create an instance of this class set to the
        ``paper_change_member_link_policy`` tag with value ``val``.

        :param PaperChangeMemberLinkPolicyType val:
        :rtype: EventType
        """
        return cls('paper_change_member_link_policy', val)

    @classmethod
    def paper_change_member_policy(cls, val):
        """
        Create an instance of this class set to the
        ``paper_change_member_policy`` tag with value ``val``.

        :param PaperChangeMemberPolicyType val:
        :rtype: EventType
        """
        return cls('paper_change_member_policy', val)

    @classmethod
    def paper_change_policy(cls, val):
        """
        Create an instance of this class set to the ``paper_change_policy`` tag
        with value ``val``.

        :param PaperChangePolicyType val:
        :rtype: EventType
        """
        return cls('paper_change_policy', val)

    @classmethod
    def paper_enabled_users_group_addition(cls, val):
        """
        Create an instance of this class set to the
        ``paper_enabled_users_group_addition`` tag with value ``val``.

        :param PaperEnabledUsersGroupAdditionType val:
        :rtype: EventType
        """
        return cls('paper_enabled_users_group_addition', val)

    @classmethod
    def paper_enabled_users_group_removal(cls, val):
        """
        Create an instance of this class set to the
        ``paper_enabled_users_group_removal`` tag with value ``val``.

        :param PaperEnabledUsersGroupRemovalType val:
        :rtype: EventType
        """
        return cls('paper_enabled_users_group_removal', val)

    @classmethod
    def permanent_delete_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``permanent_delete_change_policy`` tag with value ``val``.

        :param PermanentDeleteChangePolicyType val:
        :rtype: EventType
        """
        return cls('permanent_delete_change_policy', val)

    @classmethod
    def sharing_change_folder_join_policy(cls, val):
        """
        Create an instance of this class set to the
        ``sharing_change_folder_join_policy`` tag with value ``val``.

        :param SharingChangeFolderJoinPolicyType val:
        :rtype: EventType
        """
        return cls('sharing_change_folder_join_policy', val)

    @classmethod
    def sharing_change_link_policy(cls, val):
        """
        Create an instance of this class set to the
        ``sharing_change_link_policy`` tag with value ``val``.

        :param SharingChangeLinkPolicyType val:
        :rtype: EventType
        """
        return cls('sharing_change_link_policy', val)

    @classmethod
    def sharing_change_member_policy(cls, val):
        """
        Create an instance of this class set to the
        ``sharing_change_member_policy`` tag with value ``val``.

        :param SharingChangeMemberPolicyType val:
        :rtype: EventType
        """
        return cls('sharing_change_member_policy', val)

    @classmethod
    def showcase_change_download_policy(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_change_download_policy`` tag with value ``val``.

        :param ShowcaseChangeDownloadPolicyType val:
        :rtype: EventType
        """
        return cls('showcase_change_download_policy', val)

    @classmethod
    def showcase_change_enabled_policy(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_change_enabled_policy`` tag with value ``val``.

        :param ShowcaseChangeEnabledPolicyType val:
        :rtype: EventType
        """
        return cls('showcase_change_enabled_policy', val)

    @classmethod
    def showcase_change_external_sharing_policy(cls, val):
        """
        Create an instance of this class set to the
        ``showcase_change_external_sharing_policy`` tag with value ``val``.

        :param ShowcaseChangeExternalSharingPolicyType val:
        :rtype: EventType
        """
        return cls('showcase_change_external_sharing_policy', val)

    @classmethod
    def smart_sync_change_policy(cls, val):
        """
        Create an instance of this class set to the ``smart_sync_change_policy``
        tag with value ``val``.

        :param SmartSyncChangePolicyType val:
        :rtype: EventType
        """
        return cls('smart_sync_change_policy', val)

    @classmethod
    def smart_sync_not_opt_out(cls, val):
        """
        Create an instance of this class set to the ``smart_sync_not_opt_out``
        tag with value ``val``.

        :param SmartSyncNotOptOutType val:
        :rtype: EventType
        """
        return cls('smart_sync_not_opt_out', val)

    @classmethod
    def smart_sync_opt_out(cls, val):
        """
        Create an instance of this class set to the ``smart_sync_opt_out`` tag
        with value ``val``.

        :param SmartSyncOptOutType val:
        :rtype: EventType
        """
        return cls('smart_sync_opt_out', val)

    @classmethod
    def sso_change_policy(cls, val):
        """
        Create an instance of this class set to the ``sso_change_policy`` tag
        with value ``val``.

        :param SsoChangePolicyType val:
        :rtype: EventType
        """
        return cls('sso_change_policy', val)

    @classmethod
    def team_selective_sync_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``team_selective_sync_policy_changed`` tag with value ``val``.

        :param TeamSelectiveSyncPolicyChangedType val:
        :rtype: EventType
        """
        return cls('team_selective_sync_policy_changed', val)

    @classmethod
    def tfa_change_policy(cls, val):
        """
        Create an instance of this class set to the ``tfa_change_policy`` tag
        with value ``val``.

        :param TfaChangePolicyType val:
        :rtype: EventType
        """
        return cls('tfa_change_policy', val)

    @classmethod
    def two_account_change_policy(cls, val):
        """
        Create an instance of this class set to the
        ``two_account_change_policy`` tag with value ``val``.

        :param TwoAccountChangePolicyType val:
        :rtype: EventType
        """
        return cls('two_account_change_policy', val)

    @classmethod
    def viewer_info_policy_changed(cls, val):
        """
        Create an instance of this class set to the
        ``viewer_info_policy_changed`` tag with value ``val``.

        :param ViewerInfoPolicyChangedType val:
        :rtype: EventType
        """
        return cls('viewer_info_policy_changed', val)

    @classmethod
    def web_sessions_change_fixed_length_policy(cls, val):
        """
        Create an instance of this class set to the
        ``web_sessions_change_fixed_length_policy`` tag with value ``val``.

        :param WebSessionsChangeFixedLengthPolicyType val:
        :rtype: EventType
        """
        return cls('web_sessions_change_fixed_length_policy', val)

    @classmethod
    def web_sessions_change_idle_length_policy(cls, val):
        """
        Create an instance of this class set to the
        ``web_sessions_change_idle_length_policy`` tag with value ``val``.

        :param WebSessionsChangeIdleLengthPolicyType val:
        :rtype: EventType
        """
        return cls('web_sessions_change_idle_length_policy', val)

    @classmethod
    def team_merge_from(cls, val):
        """
        Create an instance of this class set to the ``team_merge_from`` tag with
        value ``val``.

        :param TeamMergeFromType val:
        :rtype: EventType
        """
        return cls('team_merge_from', val)

    @classmethod
    def team_merge_to(cls, val):
        """
        Create an instance of this class set to the ``team_merge_to`` tag with
        value ``val``.

        :param TeamMergeToType val:
        :rtype: EventType
        """
        return cls('team_merge_to', val)

    @classmethod
    def team_profile_add_logo(cls, val):
        """
        Create an instance of this class set to the ``team_profile_add_logo``
        tag with value ``val``.

        :param TeamProfileAddLogoType val:
        :rtype: EventType
        """
        return cls('team_profile_add_logo', val)

    @classmethod
    def team_profile_change_default_language(cls, val):
        """
        Create an instance of this class set to the
        ``team_profile_change_default_language`` tag with value ``val``.

        :param TeamProfileChangeDefaultLanguageType val:
        :rtype: EventType
        """
        return cls('team_profile_change_default_language', val)

    @classmethod
    def team_profile_change_logo(cls, val):
        """
        Create an instance of this class set to the ``team_profile_change_logo``
        tag with value ``val``.

        :param TeamProfileChangeLogoType val:
        :rtype: EventType
        """
        return cls('team_profile_change_logo', val)

    @classmethod
    def team_profile_change_name(cls, val):
        """
        Create an instance of this class set to the ``team_profile_change_name``
        tag with value ``val``.

        :param TeamProfileChangeNameType val:
        :rtype: EventType
        """
        return cls('team_profile_change_name', val)

    @classmethod
    def team_profile_remove_logo(cls, val):
        """
        Create an instance of this class set to the ``team_profile_remove_logo``
        tag with value ``val``.

        :param TeamProfileRemoveLogoType val:
        :rtype: EventType
        """
        return cls('team_profile_remove_logo', val)

    @classmethod
    def tfa_add_backup_phone(cls, val):
        """
        Create an instance of this class set to the ``tfa_add_backup_phone`` tag
        with value ``val``.

        :param TfaAddBackupPhoneType val:
        :rtype: EventType
        """
        return cls('tfa_add_backup_phone', val)

    @classmethod
    def tfa_add_security_key(cls, val):
        """
        Create an instance of this class set to the ``tfa_add_security_key`` tag
        with value ``val``.

        :param TfaAddSecurityKeyType val:
        :rtype: EventType
        """
        return cls('tfa_add_security_key', val)

    @classmethod
    def tfa_change_backup_phone(cls, val):
        """
        Create an instance of this class set to the ``tfa_change_backup_phone``
        tag with value ``val``.

        :param TfaChangeBackupPhoneType val:
        :rtype: EventType
        """
        return cls('tfa_change_backup_phone', val)

    @classmethod
    def tfa_change_status(cls, val):
        """
        Create an instance of this class set to the ``tfa_change_status`` tag
        with value ``val``.

        :param TfaChangeStatusType val:
        :rtype: EventType
        """
        return cls('tfa_change_status', val)

    @classmethod
    def tfa_remove_backup_phone(cls, val):
        """
        Create an instance of this class set to the ``tfa_remove_backup_phone``
        tag with value ``val``.

        :param TfaRemoveBackupPhoneType val:
        :rtype: EventType
        """
        return cls('tfa_remove_backup_phone', val)

    @classmethod
    def tfa_remove_security_key(cls, val):
        """
        Create an instance of this class set to the ``tfa_remove_security_key``
        tag with value ``val``.

        :param TfaRemoveSecurityKeyType val:
        :rtype: EventType
        """
        return cls('tfa_remove_security_key', val)

    @classmethod
    def tfa_reset(cls, val):
        """
        Create an instance of this class set to the ``tfa_reset`` tag with value
        ``val``.

        :param TfaResetType val:
        :rtype: EventType
        """
        return cls('tfa_reset', val)

    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_edit_comment(self):
        """
        Check if the union tag is ``file_edit_comment``.

        :rtype: bool
        """
        return self._tag == 'file_edit_comment'

    def is_file_like_comment(self):
        """
        Check if the union tag is ``file_like_comment``.

        :rtype: bool
        """
        return self._tag == 'file_like_comment'

    def is_file_resolve_comment(self):
        """
        Check if the union tag is ``file_resolve_comment``.

        :rtype: bool
        """
        return self._tag == 'file_resolve_comment'

    def is_file_unlike_comment(self):
        """
        Check if the union tag is ``file_unlike_comment``.

        :rtype: bool
        """
        return self._tag == 'file_unlike_comment'

    def is_file_unresolve_comment(self):
        """
        Check if the union tag is ``file_unresolve_comment``.

        :rtype: bool
        """
        return self._tag == 'file_unresolve_comment'

    def is_device_change_ip_desktop(self):
        """
        Check if the union tag is ``device_change_ip_desktop``.

        :rtype: bool
        """
        return self._tag == 'device_change_ip_desktop'

    def is_device_change_ip_mobile(self):
        """
        Check if the union tag is ``device_change_ip_mobile``.

        :rtype: bool
        """
        return self._tag == 'device_change_ip_mobile'

    def is_device_change_ip_web(self):
        """
        Check if the union tag is ``device_change_ip_web``.

        :rtype: bool
        """
        return self._tag == 'device_change_ip_web'

    def is_device_delete_on_unlink_fail(self):
        """
        Check if the union tag is ``device_delete_on_unlink_fail``.

        :rtype: bool
        """
        return self._tag == 'device_delete_on_unlink_fail'

    def is_device_delete_on_unlink_success(self):
        """
        Check if the union tag is ``device_delete_on_unlink_success``.

        :rtype: bool
        """
        return self._tag == 'device_delete_on_unlink_success'

    def is_device_link_fail(self):
        """
        Check if the union tag is ``device_link_fail``.

        :rtype: bool
        """
        return self._tag == 'device_link_fail'

    def is_device_link_success(self):
        """
        Check if the union tag is ``device_link_success``.

        :rtype: bool
        """
        return self._tag == 'device_link_success'

    def is_device_management_disabled(self):
        """
        Check if the union tag is ``device_management_disabled``.

        :rtype: bool
        """
        return self._tag == 'device_management_disabled'

    def is_device_management_enabled(self):
        """
        Check if the union tag is ``device_management_enabled``.

        :rtype: bool
        """
        return self._tag == 'device_management_enabled'

    def is_device_unlink(self):
        """
        Check if the union tag is ``device_unlink``.

        :rtype: bool
        """
        return self._tag == 'device_unlink'

    def is_emm_refresh_auth_token(self):
        """
        Check if the union tag is ``emm_refresh_auth_token``.

        :rtype: bool
        """
        return self._tag == 'emm_refresh_auth_token'

    def is_account_capture_change_availability(self):
        """
        Check if the union tag is ``account_capture_change_availability``.

        :rtype: bool
        """
        return self._tag == 'account_capture_change_availability'

    def is_account_capture_migrate_account(self):
        """
        Check if the union tag is ``account_capture_migrate_account``.

        :rtype: bool
        """
        return self._tag == 'account_capture_migrate_account'

    def is_account_capture_notification_emails_sent(self):
        """
        Check if the union tag is ``account_capture_notification_emails_sent``.

        :rtype: bool
        """
        return self._tag == 'account_capture_notification_emails_sent'

    def is_account_capture_relinquish_account(self):
        """
        Check if the union tag is ``account_capture_relinquish_account``.

        :rtype: bool
        """
        return self._tag == 'account_capture_relinquish_account'

    def is_disabled_domain_invites(self):
        """
        Check if the union tag is ``disabled_domain_invites``.

        :rtype: bool
        """
        return self._tag == 'disabled_domain_invites'

    def is_domain_invites_approve_request_to_join_team(self):
        """
        Check if the union tag is ``domain_invites_approve_request_to_join_team``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_approve_request_to_join_team'

    def is_domain_invites_decline_request_to_join_team(self):
        """
        Check if the union tag is ``domain_invites_decline_request_to_join_team``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_decline_request_to_join_team'

    def is_domain_invites_email_existing_users(self):
        """
        Check if the union tag is ``domain_invites_email_existing_users``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_email_existing_users'

    def is_domain_invites_request_to_join_team(self):
        """
        Check if the union tag is ``domain_invites_request_to_join_team``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_request_to_join_team'

    def is_domain_invites_set_invite_new_user_pref_to_no(self):
        """
        Check if the union tag is ``domain_invites_set_invite_new_user_pref_to_no``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_set_invite_new_user_pref_to_no'

    def is_domain_invites_set_invite_new_user_pref_to_yes(self):
        """
        Check if the union tag is ``domain_invites_set_invite_new_user_pref_to_yes``.

        :rtype: bool
        """
        return self._tag == 'domain_invites_set_invite_new_user_pref_to_yes'

    def is_domain_verification_add_domain_fail(self):
        """
        Check if the union tag is ``domain_verification_add_domain_fail``.

        :rtype: bool
        """
        return self._tag == 'domain_verification_add_domain_fail'

    def is_domain_verification_add_domain_success(self):
        """
        Check if the union tag is ``domain_verification_add_domain_success``.

        :rtype: bool
        """
        return self._tag == 'domain_verification_add_domain_success'

    def is_domain_verification_remove_domain(self):
        """
        Check if the union tag is ``domain_verification_remove_domain``.

        :rtype: bool
        """
        return self._tag == 'domain_verification_remove_domain'

    def is_enabled_domain_invites(self):
        """
        Check if the union tag is ``enabled_domain_invites``.

        :rtype: bool
        """
        return self._tag == 'enabled_domain_invites'

    def is_create_folder(self):
        """
        Check if the union tag is ``create_folder``.

        :rtype: bool
        """
        return self._tag == 'create_folder'

    def is_file_add(self):
        """
        Check if the union tag is ``file_add``.

        :rtype: bool
        """
        return self._tag == 'file_add'

    def is_file_copy(self):
        """
        Check if the union tag is ``file_copy``.

        :rtype: bool
        """
        return self._tag == 'file_copy'

    def is_file_delete(self):
        """
        Check if the union tag is ``file_delete``.

        :rtype: bool
        """
        return self._tag == 'file_delete'

    def is_file_download(self):
        """
        Check if the union tag is ``file_download``.

        :rtype: bool
        """
        return self._tag == 'file_download'

    def is_file_edit(self):
        """
        Check if the union tag is ``file_edit``.

        :rtype: bool
        """
        return self._tag == 'file_edit'

    def is_file_get_copy_reference(self):
        """
        Check if the union tag is ``file_get_copy_reference``.

        :rtype: bool
        """
        return self._tag == 'file_get_copy_reference'

    def is_file_move(self):
        """
        Check if the union tag is ``file_move``.

        :rtype: bool
        """
        return self._tag == 'file_move'

    def is_file_permanently_delete(self):
        """
        Check if the union tag is ``file_permanently_delete``.

        :rtype: bool
        """
        return self._tag == 'file_permanently_delete'

    def is_file_preview(self):
        """
        Check if the union tag is ``file_preview``.

        :rtype: bool
        """
        return self._tag == 'file_preview'

    def is_file_rename(self):
        """
        Check if the union tag is ``file_rename``.

        :rtype: bool
        """
        return self._tag == 'file_rename'

    def is_file_restore(self):
        """
        Check if the union tag is ``file_restore``.

        :rtype: bool
        """
        return self._tag == 'file_restore'

    def is_file_revert(self):
        """
        Check if the union tag is ``file_revert``.

        :rtype: bool
        """
        return self._tag == 'file_revert'

    def is_file_rollback_changes(self):
        """
        Check if the union tag is ``file_rollback_changes``.

        :rtype: bool
        """
        return self._tag == 'file_rollback_changes'

    def is_file_save_copy_reference(self):
        """
        Check if the union tag is ``file_save_copy_reference``.

        :rtype: bool
        """
        return self._tag == 'file_save_copy_reference'

    def is_file_request_change(self):
        """
        Check if the union tag is ``file_request_change``.

        :rtype: bool
        """
        return self._tag == 'file_request_change'

    def is_file_request_close(self):
        """
        Check if the union tag is ``file_request_close``.

        :rtype: bool
        """
        return self._tag == 'file_request_close'

    def is_file_request_create(self):
        """
        Check if the union tag is ``file_request_create``.

        :rtype: bool
        """
        return self._tag == 'file_request_create'

    def is_file_request_receive_file(self):
        """
        Check if the union tag is ``file_request_receive_file``.

        :rtype: bool
        """
        return self._tag == 'file_request_receive_file'

    def is_group_add_external_id(self):
        """
        Check if the union tag is ``group_add_external_id``.

        :rtype: bool
        """
        return self._tag == 'group_add_external_id'

    def is_group_add_member(self):
        """
        Check if the union tag is ``group_add_member``.

        :rtype: bool
        """
        return self._tag == 'group_add_member'

    def is_group_change_external_id(self):
        """
        Check if the union tag is ``group_change_external_id``.

        :rtype: bool
        """
        return self._tag == 'group_change_external_id'

    def is_group_change_management_type(self):
        """
        Check if the union tag is ``group_change_management_type``.

        :rtype: bool
        """
        return self._tag == 'group_change_management_type'

    def is_group_change_member_role(self):
        """
        Check if the union tag is ``group_change_member_role``.

        :rtype: bool
        """
        return self._tag == 'group_change_member_role'

    def is_group_create(self):
        """
        Check if the union tag is ``group_create``.

        :rtype: bool
        """
        return self._tag == 'group_create'

    def is_group_delete(self):
        """
        Check if the union tag is ``group_delete``.

        :rtype: bool
        """
        return self._tag == 'group_delete'

    def is_group_description_updated(self):
        """
        Check if the union tag is ``group_description_updated``.

        :rtype: bool
        """
        return self._tag == 'group_description_updated'

    def is_group_join_policy_updated(self):
        """
        Check if the union tag is ``group_join_policy_updated``.

        :rtype: bool
        """
        return self._tag == 'group_join_policy_updated'

    def is_group_moved(self):
        """
        Check if the union tag is ``group_moved``.

        :rtype: bool
        """
        return self._tag == 'group_moved'

    def is_group_remove_external_id(self):
        """
        Check if the union tag is ``group_remove_external_id``.

        :rtype: bool
        """
        return self._tag == 'group_remove_external_id'

    def is_group_remove_member(self):
        """
        Check if the union tag is ``group_remove_member``.

        :rtype: bool
        """
        return self._tag == 'group_remove_member'

    def is_group_rename(self):
        """
        Check if the union tag is ``group_rename``.

        :rtype: bool
        """
        return self._tag == 'group_rename'

    def is_emm_error(self):
        """
        Check if the union tag is ``emm_error``.

        :rtype: bool
        """
        return self._tag == 'emm_error'

    def is_login_fail(self):
        """
        Check if the union tag is ``login_fail``.

        :rtype: bool
        """
        return self._tag == 'login_fail'

    def is_login_success(self):
        """
        Check if the union tag is ``login_success``.

        :rtype: bool
        """
        return self._tag == 'login_success'

    def is_logout(self):
        """
        Check if the union tag is ``logout``.

        :rtype: bool
        """
        return self._tag == 'logout'

    def is_reseller_support_session_end(self):
        """
        Check if the union tag is ``reseller_support_session_end``.

        :rtype: bool
        """
        return self._tag == 'reseller_support_session_end'

    def is_reseller_support_session_start(self):
        """
        Check if the union tag is ``reseller_support_session_start``.

        :rtype: bool
        """
        return self._tag == 'reseller_support_session_start'

    def is_sign_in_as_session_end(self):
        """
        Check if the union tag is ``sign_in_as_session_end``.

        :rtype: bool
        """
        return self._tag == 'sign_in_as_session_end'

    def is_sign_in_as_session_start(self):
        """
        Check if the union tag is ``sign_in_as_session_start``.

        :rtype: bool
        """
        return self._tag == 'sign_in_as_session_start'

    def is_sso_error(self):
        """
        Check if the union tag is ``sso_error``.

        :rtype: bool
        """
        return self._tag == 'sso_error'

    def is_member_add_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_membership_type(self):
        """
        Check if the union tag is ``member_change_membership_type``.

        :rtype: bool
        """
        return self._tag == 'member_change_membership_type'

    def is_member_change_name(self):
        """
        Check if the union tag is ``member_change_name``.

        :rtype: bool
        """
        return self._tag == 'member_change_name'

    def is_member_change_status(self):
        """
        Check if the union tag is ``member_change_status``.

        :rtype: bool
        """
        return self._tag == 'member_change_status'

    def is_member_delete_manual_contacts(self):
        """
        Check if the union tag is ``member_delete_manual_contacts``.

        :rtype: bool
        """
        return self._tag == 'member_delete_manual_contacts'

    def is_member_permanently_delete_account_contents(self):
        """
        Check if the union tag is ``member_permanently_delete_account_contents``.

        :rtype: bool
        """
        return self._tag == 'member_permanently_delete_account_contents'

    def is_member_space_limits_add_custom_quota(self):
        """
        Check if the union tag is ``member_space_limits_add_custom_quota``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_add_custom_quota'

    def is_member_space_limits_change_custom_quota(self):
        """
        Check if the union tag is ``member_space_limits_change_custom_quota``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_custom_quota'

    def is_member_space_limits_change_status(self):
        """
        Check if the union tag is ``member_space_limits_change_status``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_status'

    def is_member_space_limits_remove_custom_quota(self):
        """
        Check if the union tag is ``member_space_limits_remove_custom_quota``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_remove_custom_quota'

    def is_member_suggest(self):
        """
        Check if the union tag is ``member_suggest``.

        :rtype: bool
        """
        return self._tag == 'member_suggest'

    def is_member_transfer_account_contents(self):
        """
        Check if the union tag is ``member_transfer_account_contents``.

        :rtype: bool
        """
        return self._tag == 'member_transfer_account_contents'

    def is_secondary_mails_policy_changed(self):
        """
        Check if the union tag is ``secondary_mails_policy_changed``.

        :rtype: bool
        """
        return self._tag == 'secondary_mails_policy_changed'

    def is_paper_content_add_member(self):
        """
        Check if the union tag is ``paper_content_add_member``.

        :rtype: bool
        """
        return self._tag == 'paper_content_add_member'

    def is_paper_content_add_to_folder(self):
        """
        Check if the union tag is ``paper_content_add_to_folder``.

        :rtype: bool
        """
        return self._tag == 'paper_content_add_to_folder'

    def is_paper_content_archive(self):
        """
        Check if the union tag is ``paper_content_archive``.

        :rtype: bool
        """
        return self._tag == 'paper_content_archive'

    def is_paper_content_create(self):
        """
        Check if the union tag is ``paper_content_create``.

        :rtype: bool
        """
        return self._tag == 'paper_content_create'

    def is_paper_content_permanently_delete(self):
        """
        Check if the union tag is ``paper_content_permanently_delete``.

        :rtype: bool
        """
        return self._tag == 'paper_content_permanently_delete'

    def is_paper_content_remove_from_folder(self):
        """
        Check if the union tag is ``paper_content_remove_from_folder``.

        :rtype: bool
        """
        return self._tag == 'paper_content_remove_from_folder'

    def is_paper_content_remove_member(self):
        """
        Check if the union tag is ``paper_content_remove_member``.

        :rtype: bool
        """
        return self._tag == 'paper_content_remove_member'

    def is_paper_content_rename(self):
        """
        Check if the union tag is ``paper_content_rename``.

        :rtype: bool
        """
        return self._tag == 'paper_content_rename'

    def is_paper_content_restore(self):
        """
        Check if the union tag is ``paper_content_restore``.

        :rtype: bool
        """
        return self._tag == 'paper_content_restore'

    def is_paper_doc_add_comment(self):
        """
        Check if the union tag is ``paper_doc_add_comment``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_add_comment'

    def is_paper_doc_change_member_role(self):
        """
        Check if the union tag is ``paper_doc_change_member_role``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_change_member_role'

    def is_paper_doc_change_sharing_policy(self):
        """
        Check if the union tag is ``paper_doc_change_sharing_policy``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_change_sharing_policy'

    def is_paper_doc_change_subscription(self):
        """
        Check if the union tag is ``paper_doc_change_subscription``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_change_subscription'

    def is_paper_doc_deleted(self):
        """
        Check if the union tag is ``paper_doc_deleted``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_deleted'

    def is_paper_doc_delete_comment(self):
        """
        Check if the union tag is ``paper_doc_delete_comment``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_delete_comment'

    def is_paper_doc_download(self):
        """
        Check if the union tag is ``paper_doc_download``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_download'

    def is_paper_doc_edit(self):
        """
        Check if the union tag is ``paper_doc_edit``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_edit'

    def is_paper_doc_edit_comment(self):
        """
        Check if the union tag is ``paper_doc_edit_comment``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_edit_comment'

    def is_paper_doc_followed(self):
        """
        Check if the union tag is ``paper_doc_followed``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_followed'

    def is_paper_doc_mention(self):
        """
        Check if the union tag is ``paper_doc_mention``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_mention'

    def is_paper_doc_ownership_changed(self):
        """
        Check if the union tag is ``paper_doc_ownership_changed``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_ownership_changed'

    def is_paper_doc_request_access(self):
        """
        Check if the union tag is ``paper_doc_request_access``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_request_access'

    def is_paper_doc_resolve_comment(self):
        """
        Check if the union tag is ``paper_doc_resolve_comment``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_resolve_comment'

    def is_paper_doc_revert(self):
        """
        Check if the union tag is ``paper_doc_revert``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_revert'

    def is_paper_doc_slack_share(self):
        """
        Check if the union tag is ``paper_doc_slack_share``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_slack_share'

    def is_paper_doc_team_invite(self):
        """
        Check if the union tag is ``paper_doc_team_invite``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_team_invite'

    def is_paper_doc_trashed(self):
        """
        Check if the union tag is ``paper_doc_trashed``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_trashed'

    def is_paper_doc_unresolve_comment(self):
        """
        Check if the union tag is ``paper_doc_unresolve_comment``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_unresolve_comment'

    def is_paper_doc_untrashed(self):
        """
        Check if the union tag is ``paper_doc_untrashed``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_untrashed'

    def is_paper_doc_view(self):
        """
        Check if the union tag is ``paper_doc_view``.

        :rtype: bool
        """
        return self._tag == 'paper_doc_view'

    def is_paper_external_view_allow(self):
        """
        Check if the union tag is ``paper_external_view_allow``.

        :rtype: bool
        """
        return self._tag == 'paper_external_view_allow'

    def is_paper_external_view_default_team(self):
        """
        Check if the union tag is ``paper_external_view_default_team``.

        :rtype: bool
        """
        return self._tag == 'paper_external_view_default_team'

    def is_paper_external_view_forbid(self):
        """
        Check if the union tag is ``paper_external_view_forbid``.

        :rtype: bool
        """
        return self._tag == 'paper_external_view_forbid'

    def is_paper_folder_change_subscription(self):
        """
        Check if the union tag is ``paper_folder_change_subscription``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_change_subscription'

    def is_paper_folder_deleted(self):
        """
        Check if the union tag is ``paper_folder_deleted``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_deleted'

    def is_paper_folder_followed(self):
        """
        Check if the union tag is ``paper_folder_followed``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_followed'

    def is_paper_folder_team_invite(self):
        """
        Check if the union tag is ``paper_folder_team_invite``.

        :rtype: bool
        """
        return self._tag == 'paper_folder_team_invite'

    def is_password_change(self):
        """
        Check if the union tag is ``password_change``.

        :rtype: bool
        """
        return self._tag == 'password_change'

    def is_password_reset(self):
        """
        Check if the union tag is ``password_reset``.

        :rtype: bool
        """
        return self._tag == 'password_reset'

    def is_password_reset_all(self):
        """
        Check if the union tag is ``password_reset_all``.

        :rtype: bool
        """
        return self._tag == 'password_reset_all'

    def is_emm_create_exceptions_report(self):
        """
        Check if the union tag is ``emm_create_exceptions_report``.

        :rtype: bool
        """
        return self._tag == 'emm_create_exceptions_report'

    def is_emm_create_usage_report(self):
        """
        Check if the union tag is ``emm_create_usage_report``.

        :rtype: bool
        """
        return self._tag == 'emm_create_usage_report'

    def is_export_members_report(self):
        """
        Check if the union tag is ``export_members_report``.

        :rtype: bool
        """
        return self._tag == 'export_members_report'

    def is_paper_admin_export_start(self):
        """
        Check if the union tag is ``paper_admin_export_start``.

        :rtype: bool
        """
        return self._tag == 'paper_admin_export_start'

    def is_smart_sync_create_admin_privilege_report(self):
        """
        Check if the union tag is ``smart_sync_create_admin_privilege_report``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_create_admin_privilege_report'

    def is_team_activity_create_report(self):
        """
        Check if the union tag is ``team_activity_create_report``.

        :rtype: bool
        """
        return self._tag == 'team_activity_create_report'

    def is_collection_share(self):
        """
        Check if the union tag is ``collection_share``.

        :rtype: bool
        """
        return self._tag == 'collection_share'

    def is_note_acl_invite_only(self):
        """
        Check if the union tag is ``note_acl_invite_only``.

        :rtype: bool
        """
        return self._tag == 'note_acl_invite_only'

    def is_note_acl_link(self):
        """
        Check if the union tag is ``note_acl_link``.

        :rtype: bool
        """
        return self._tag == 'note_acl_link'

    def is_note_acl_team_link(self):
        """
        Check if the union tag is ``note_acl_team_link``.

        :rtype: bool
        """
        return self._tag == 'note_acl_team_link'

    def is_note_shared(self):
        """
        Check if the union tag is ``note_shared``.

        :rtype: bool
        """
        return self._tag == 'note_shared'

    def is_note_share_receive(self):
        """
        Check if the union tag is ``note_share_receive``.

        :rtype: bool
        """
        return self._tag == 'note_share_receive'

    def is_open_note_shared(self):
        """
        Check if the union tag is ``open_note_shared``.

        :rtype: bool
        """
        return self._tag == 'open_note_shared'

    def is_sf_add_group(self):
        """
        Check if the union tag is ``sf_add_group``.

        :rtype: bool
        """
        return self._tag == 'sf_add_group'

    def is_sf_allow_non_members_to_view_shared_links(self):
        """
        Check if the union tag is ``sf_allow_non_members_to_view_shared_links``.

        :rtype: bool
        """
        return self._tag == 'sf_allow_non_members_to_view_shared_links'

    def is_sf_external_invite_warn(self):
        """
        Check if the union tag is ``sf_external_invite_warn``.

        :rtype: bool
        """
        return self._tag == 'sf_external_invite_warn'

    def is_sf_fb_invite(self):
        """
        Check if the union tag is ``sf_fb_invite``.

        :rtype: bool
        """
        return self._tag == 'sf_fb_invite'

    def is_sf_fb_invite_change_role(self):
        """
        Check if the union tag is ``sf_fb_invite_change_role``.

        :rtype: bool
        """
        return self._tag == 'sf_fb_invite_change_role'

    def is_sf_fb_uninvite(self):
        """
        Check if the union tag is ``sf_fb_uninvite``.

        :rtype: bool
        """
        return self._tag == 'sf_fb_uninvite'

    def is_sf_invite_group(self):
        """
        Check if the union tag is ``sf_invite_group``.

        :rtype: bool
        """
        return self._tag == 'sf_invite_group'

    def is_sf_team_grant_access(self):
        """
        Check if the union tag is ``sf_team_grant_access``.

        :rtype: bool
        """
        return self._tag == 'sf_team_grant_access'

    def is_sf_team_invite(self):
        """
        Check if the union tag is ``sf_team_invite``.

        :rtype: bool
        """
        return self._tag == 'sf_team_invite'

    def is_sf_team_invite_change_role(self):
        """
        Check if the union tag is ``sf_team_invite_change_role``.

        :rtype: bool
        """
        return self._tag == 'sf_team_invite_change_role'

    def is_sf_team_join(self):
        """
        Check if the union tag is ``sf_team_join``.

        :rtype: bool
        """
        return self._tag == 'sf_team_join'

    def is_sf_team_join_from_oob_link(self):
        """
        Check if the union tag is ``sf_team_join_from_oob_link``.

        :rtype: bool
        """
        return self._tag == 'sf_team_join_from_oob_link'

    def is_sf_team_uninvite(self):
        """
        Check if the union tag is ``sf_team_uninvite``.

        :rtype: bool
        """
        return self._tag == 'sf_team_uninvite'

    def is_shared_content_add_invitees(self):
        """
        Check if the union tag is ``shared_content_add_invitees``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_invitees'

    def is_shared_content_add_link_expiry(self):
        """
        Check if the union tag is ``shared_content_add_link_expiry``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_link_expiry'

    def is_shared_content_add_link_password(self):
        """
        Check if the union tag is ``shared_content_add_link_password``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_link_password'

    def is_shared_content_add_member(self):
        """
        Check if the union tag is ``shared_content_add_member``.

        :rtype: bool
        """
        return self._tag == 'shared_content_add_member'

    def is_shared_content_change_downloads_policy(self):
        """
        Check if the union tag is ``shared_content_change_downloads_policy``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_downloads_policy'

    def is_shared_content_change_invitee_role(self):
        """
        Check if the union tag is ``shared_content_change_invitee_role``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_invitee_role'

    def is_shared_content_change_link_audience(self):
        """
        Check if the union tag is ``shared_content_change_link_audience``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_link_audience'

    def is_shared_content_change_link_expiry(self):
        """
        Check if the union tag is ``shared_content_change_link_expiry``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_link_expiry'

    def is_shared_content_change_link_password(self):
        """
        Check if the union tag is ``shared_content_change_link_password``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_link_password'

    def is_shared_content_change_member_role(self):
        """
        Check if the union tag is ``shared_content_change_member_role``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_member_role'

    def is_shared_content_change_viewer_info_policy(self):
        """
        Check if the union tag is ``shared_content_change_viewer_info_policy``.

        :rtype: bool
        """
        return self._tag == 'shared_content_change_viewer_info_policy'

    def is_shared_content_claim_invitation(self):
        """
        Check if the union tag is ``shared_content_claim_invitation``.

        :rtype: bool
        """
        return self._tag == 'shared_content_claim_invitation'

    def is_shared_content_copy(self):
        """
        Check if the union tag is ``shared_content_copy``.

        :rtype: bool
        """
        return self._tag == 'shared_content_copy'

    def is_shared_content_download(self):
        """
        Check if the union tag is ``shared_content_download``.

        :rtype: bool
        """
        return self._tag == 'shared_content_download'

    def is_shared_content_relinquish_membership(self):
        """
        Check if the union tag is ``shared_content_relinquish_membership``.

        :rtype: bool
        """
        return self._tag == 'shared_content_relinquish_membership'

    def is_shared_content_remove_invitees(self):
        """
        Check if the union tag is ``shared_content_remove_invitees``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_invitees'

    def is_shared_content_remove_link_expiry(self):
        """
        Check if the union tag is ``shared_content_remove_link_expiry``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_link_expiry'

    def is_shared_content_remove_link_password(self):
        """
        Check if the union tag is ``shared_content_remove_link_password``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_link_password'

    def is_shared_content_remove_member(self):
        """
        Check if the union tag is ``shared_content_remove_member``.

        :rtype: bool
        """
        return self._tag == 'shared_content_remove_member'

    def is_shared_content_request_access(self):
        """
        Check if the union tag is ``shared_content_request_access``.

        :rtype: bool
        """
        return self._tag == 'shared_content_request_access'

    def is_shared_content_unshare(self):
        """
        Check if the union tag is ``shared_content_unshare``.

        :rtype: bool
        """
        return self._tag == 'shared_content_unshare'

    def is_shared_content_view(self):
        """
        Check if the union tag is ``shared_content_view``.

        :rtype: bool
        """
        return self._tag == 'shared_content_view'

    def is_shared_folder_change_link_policy(self):
        """
        Check if the union tag is ``shared_folder_change_link_policy``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_link_policy'

    def is_shared_folder_change_members_inheritance_policy(self):
        """
        Check if the union tag is ``shared_folder_change_members_inheritance_policy``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_members_inheritance_policy'

    def is_shared_folder_change_members_management_policy(self):
        """
        Check if the union tag is ``shared_folder_change_members_management_policy``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_members_management_policy'

    def is_shared_folder_change_members_policy(self):
        """
        Check if the union tag is ``shared_folder_change_members_policy``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_change_members_policy'

    def is_shared_folder_create(self):
        """
        Check if the union tag is ``shared_folder_create``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_create'

    def is_shared_folder_decline_invitation(self):
        """
        Check if the union tag is ``shared_folder_decline_invitation``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_decline_invitation'

    def is_shared_folder_mount(self):
        """
        Check if the union tag is ``shared_folder_mount``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_mount'

    def is_shared_folder_nest(self):
        """
        Check if the union tag is ``shared_folder_nest``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_nest'

    def is_shared_folder_transfer_ownership(self):
        """
        Check if the union tag is ``shared_folder_transfer_ownership``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_transfer_ownership'

    def is_shared_folder_unmount(self):
        """
        Check if the union tag is ``shared_folder_unmount``.

        :rtype: bool
        """
        return self._tag == 'shared_folder_unmount'

    def is_shared_link_add_expiry(self):
        """
        Check if the union tag is ``shared_link_add_expiry``.

        :rtype: bool
        """
        return self._tag == 'shared_link_add_expiry'

    def is_shared_link_change_expiry(self):
        """
        Check if the union tag is ``shared_link_change_expiry``.

        :rtype: bool
        """
        return self._tag == 'shared_link_change_expiry'

    def is_shared_link_change_visibility(self):
        """
        Check if the union tag is ``shared_link_change_visibility``.

        :rtype: bool
        """
        return self._tag == 'shared_link_change_visibility'

    def is_shared_link_copy(self):
        """
        Check if the union tag is ``shared_link_copy``.

        :rtype: bool
        """
        return self._tag == 'shared_link_copy'

    def is_shared_link_create(self):
        """
        Check if the union tag is ``shared_link_create``.

        :rtype: bool
        """
        return self._tag == 'shared_link_create'

    def is_shared_link_disable(self):
        """
        Check if the union tag is ``shared_link_disable``.

        :rtype: bool
        """
        return self._tag == 'shared_link_disable'

    def is_shared_link_download(self):
        """
        Check if the union tag is ``shared_link_download``.

        :rtype: bool
        """
        return self._tag == 'shared_link_download'

    def is_shared_link_remove_expiry(self):
        """
        Check if the union tag is ``shared_link_remove_expiry``.

        :rtype: bool
        """
        return self._tag == 'shared_link_remove_expiry'

    def is_shared_link_share(self):
        """
        Check if the union tag is ``shared_link_share``.

        :rtype: bool
        """
        return self._tag == 'shared_link_share'

    def is_shared_link_view(self):
        """
        Check if the union tag is ``shared_link_view``.

        :rtype: bool
        """
        return self._tag == 'shared_link_view'

    def is_shared_note_opened(self):
        """
        Check if the union tag is ``shared_note_opened``.

        :rtype: bool
        """
        return self._tag == 'shared_note_opened'

    def is_shmodel_group_share(self):
        """
        Check if the union tag is ``shmodel_group_share``.

        :rtype: bool
        """
        return self._tag == 'shmodel_group_share'

    def is_showcase_access_granted(self):
        """
        Check if the union tag is ``showcase_access_granted``.

        :rtype: bool
        """
        return self._tag == 'showcase_access_granted'

    def is_showcase_add_member(self):
        """
        Check if the union tag is ``showcase_add_member``.

        :rtype: bool
        """
        return self._tag == 'showcase_add_member'

    def is_showcase_archived(self):
        """
        Check if the union tag is ``showcase_archived``.

        :rtype: bool
        """
        return self._tag == 'showcase_archived'

    def is_showcase_created(self):
        """
        Check if the union tag is ``showcase_created``.

        :rtype: bool
        """
        return self._tag == 'showcase_created'

    def is_showcase_delete_comment(self):
        """
        Check if the union tag is ``showcase_delete_comment``.

        :rtype: bool
        """
        return self._tag == 'showcase_delete_comment'

    def is_showcase_edited(self):
        """
        Check if the union tag is ``showcase_edited``.

        :rtype: bool
        """
        return self._tag == 'showcase_edited'

    def is_showcase_edit_comment(self):
        """
        Check if the union tag is ``showcase_edit_comment``.

        :rtype: bool
        """
        return self._tag == 'showcase_edit_comment'

    def is_showcase_file_added(self):
        """
        Check if the union tag is ``showcase_file_added``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_added'

    def is_showcase_file_download(self):
        """
        Check if the union tag is ``showcase_file_download``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_download'

    def is_showcase_file_removed(self):
        """
        Check if the union tag is ``showcase_file_removed``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_removed'

    def is_showcase_file_view(self):
        """
        Check if the union tag is ``showcase_file_view``.

        :rtype: bool
        """
        return self._tag == 'showcase_file_view'

    def is_showcase_permanently_deleted(self):
        """
        Check if the union tag is ``showcase_permanently_deleted``.

        :rtype: bool
        """
        return self._tag == 'showcase_permanently_deleted'

    def is_showcase_post_comment(self):
        """
        Check if the union tag is ``showcase_post_comment``.

        :rtype: bool
        """
        return self._tag == 'showcase_post_comment'

    def is_showcase_remove_member(self):
        """
        Check if the union tag is ``showcase_remove_member``.

        :rtype: bool
        """
        return self._tag == 'showcase_remove_member'

    def is_showcase_renamed(self):
        """
        Check if the union tag is ``showcase_renamed``.

        :rtype: bool
        """
        return self._tag == 'showcase_renamed'

    def is_showcase_request_access(self):
        """
        Check if the union tag is ``showcase_request_access``.

        :rtype: bool
        """
        return self._tag == 'showcase_request_access'

    def is_showcase_resolve_comment(self):
        """
        Check if the union tag is ``showcase_resolve_comment``.

        :rtype: bool
        """
        return self._tag == 'showcase_resolve_comment'

    def is_showcase_restored(self):
        """
        Check if the union tag is ``showcase_restored``.

        :rtype: bool
        """
        return self._tag == 'showcase_restored'

    def is_showcase_trashed(self):
        """
        Check if the union tag is ``showcase_trashed``.

        :rtype: bool
        """
        return self._tag == 'showcase_trashed'

    def is_showcase_trashed_deprecated(self):
        """
        Check if the union tag is ``showcase_trashed_deprecated``.

        :rtype: bool
        """
        return self._tag == 'showcase_trashed_deprecated'

    def is_showcase_unresolve_comment(self):
        """
        Check if the union tag is ``showcase_unresolve_comment``.

        :rtype: bool
        """
        return self._tag == 'showcase_unresolve_comment'

    def is_showcase_untrashed(self):
        """
        Check if the union tag is ``showcase_untrashed``.

        :rtype: bool
        """
        return self._tag == 'showcase_untrashed'

    def is_showcase_untrashed_deprecated(self):
        """
        Check if the union tag is ``showcase_untrashed_deprecated``.

        :rtype: bool
        """
        return self._tag == 'showcase_untrashed_deprecated'

    def is_showcase_view(self):
        """
        Check if the union tag is ``showcase_view``.

        :rtype: bool
        """
        return self._tag == 'showcase_view'

    def is_sso_add_cert(self):
        """
        Check if the union tag is ``sso_add_cert``.

        :rtype: bool
        """
        return self._tag == 'sso_add_cert'

    def is_sso_add_login_url(self):
        """
        Check if the union tag is ``sso_add_login_url``.

        :rtype: bool
        """
        return self._tag == 'sso_add_login_url'

    def is_sso_add_logout_url(self):
        """
        Check if the union tag is ``sso_add_logout_url``.

        :rtype: bool
        """
        return self._tag == 'sso_add_logout_url'

    def is_sso_change_cert(self):
        """
        Check if the union tag is ``sso_change_cert``.

        :rtype: bool
        """
        return self._tag == 'sso_change_cert'

    def is_sso_change_login_url(self):
        """
        Check if the union tag is ``sso_change_login_url``.

        :rtype: bool
        """
        return self._tag == 'sso_change_login_url'

    def is_sso_change_logout_url(self):
        """
        Check if the union tag is ``sso_change_logout_url``.

        :rtype: bool
        """
        return self._tag == 'sso_change_logout_url'

    def is_sso_change_saml_identity_mode(self):
        """
        Check if the union tag is ``sso_change_saml_identity_mode``.

        :rtype: bool
        """
        return self._tag == 'sso_change_saml_identity_mode'

    def is_sso_remove_cert(self):
        """
        Check if the union tag is ``sso_remove_cert``.

        :rtype: bool
        """
        return self._tag == 'sso_remove_cert'

    def is_sso_remove_login_url(self):
        """
        Check if the union tag is ``sso_remove_login_url``.

        :rtype: bool
        """
        return self._tag == 'sso_remove_login_url'

    def is_sso_remove_logout_url(self):
        """
        Check if the union tag is ``sso_remove_logout_url``.

        :rtype: bool
        """
        return self._tag == 'sso_remove_logout_url'

    def is_team_folder_change_status(self):
        """
        Check if the union tag is ``team_folder_change_status``.

        :rtype: bool
        """
        return self._tag == 'team_folder_change_status'

    def is_team_folder_create(self):
        """
        Check if the union tag is ``team_folder_create``.

        :rtype: bool
        """
        return self._tag == 'team_folder_create'

    def is_team_folder_downgrade(self):
        """
        Check if the union tag is ``team_folder_downgrade``.

        :rtype: bool
        """
        return self._tag == 'team_folder_downgrade'

    def is_team_folder_permanently_delete(self):
        """
        Check if the union tag is ``team_folder_permanently_delete``.

        :rtype: bool
        """
        return self._tag == 'team_folder_permanently_delete'

    def is_team_folder_rename(self):
        """
        Check if the union tag is ``team_folder_rename``.

        :rtype: bool
        """
        return self._tag == 'team_folder_rename'

    def is_team_selective_sync_settings_changed(self):
        """
        Check if the union tag is ``team_selective_sync_settings_changed``.

        :rtype: bool
        """
        return self._tag == 'team_selective_sync_settings_changed'

    def is_account_capture_change_policy(self):
        """
        Check if the union tag is ``account_capture_change_policy``.

        :rtype: bool
        """
        return self._tag == 'account_capture_change_policy'

    def is_allow_download_disabled(self):
        """
        Check if the union tag is ``allow_download_disabled``.

        :rtype: bool
        """
        return self._tag == 'allow_download_disabled'

    def is_allow_download_enabled(self):
        """
        Check if the union tag is ``allow_download_enabled``.

        :rtype: bool
        """
        return self._tag == 'allow_download_enabled'

    def is_camera_uploads_policy_changed(self):
        """
        Check if the union tag is ``camera_uploads_policy_changed``.

        :rtype: bool
        """
        return self._tag == 'camera_uploads_policy_changed'

    def is_data_placement_restriction_change_policy(self):
        """
        Check if the union tag is ``data_placement_restriction_change_policy``.

        :rtype: bool
        """
        return self._tag == 'data_placement_restriction_change_policy'

    def is_data_placement_restriction_satisfy_policy(self):
        """
        Check if the union tag is ``data_placement_restriction_satisfy_policy``.

        :rtype: bool
        """
        return self._tag == 'data_placement_restriction_satisfy_policy'

    def is_device_approvals_change_desktop_policy(self):
        """
        Check if the union tag is ``device_approvals_change_desktop_policy``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_desktop_policy'

    def is_device_approvals_change_mobile_policy(self):
        """
        Check if the union tag is ``device_approvals_change_mobile_policy``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_mobile_policy'

    def is_device_approvals_change_overage_action(self):
        """
        Check if the union tag is ``device_approvals_change_overage_action``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_overage_action'

    def is_device_approvals_change_unlink_action(self):
        """
        Check if the union tag is ``device_approvals_change_unlink_action``.

        :rtype: bool
        """
        return self._tag == 'device_approvals_change_unlink_action'

    def is_directory_restrictions_add_members(self):
        """
        Check if the union tag is ``directory_restrictions_add_members``.

        :rtype: bool
        """
        return self._tag == 'directory_restrictions_add_members'

    def is_directory_restrictions_remove_members(self):
        """
        Check if the union tag is ``directory_restrictions_remove_members``.

        :rtype: bool
        """
        return self._tag == 'directory_restrictions_remove_members'

    def is_emm_add_exception(self):
        """
        Check if the union tag is ``emm_add_exception``.

        :rtype: bool
        """
        return self._tag == 'emm_add_exception'

    def is_emm_change_policy(self):
        """
        Check if the union tag is ``emm_change_policy``.

        :rtype: bool
        """
        return self._tag == 'emm_change_policy'

    def is_emm_remove_exception(self):
        """
        Check if the union tag is ``emm_remove_exception``.

        :rtype: bool
        """
        return self._tag == 'emm_remove_exception'

    def is_extended_version_history_change_policy(self):
        """
        Check if the union tag is ``extended_version_history_change_policy``.

        :rtype: bool
        """
        return self._tag == 'extended_version_history_change_policy'

    def is_file_comments_change_policy(self):
        """
        Check if the union tag is ``file_comments_change_policy``.

        :rtype: bool
        """
        return self._tag == 'file_comments_change_policy'

    def is_file_requests_change_policy(self):
        """
        Check if the union tag is ``file_requests_change_policy``.

        :rtype: bool
        """
        return self._tag == 'file_requests_change_policy'

    def is_file_requests_emails_enabled(self):
        """
        Check if the union tag is ``file_requests_emails_enabled``.

        :rtype: bool
        """
        return self._tag == 'file_requests_emails_enabled'

    def is_file_requests_emails_restricted_to_team_only(self):
        """
        Check if the union tag is ``file_requests_emails_restricted_to_team_only``.

        :rtype: bool
        """
        return self._tag == 'file_requests_emails_restricted_to_team_only'

    def is_google_sso_change_policy(self):
        """
        Check if the union tag is ``google_sso_change_policy``.

        :rtype: bool
        """
        return self._tag == 'google_sso_change_policy'

    def is_group_user_management_change_policy(self):
        """
        Check if the union tag is ``group_user_management_change_policy``.

        :rtype: bool
        """
        return self._tag == 'group_user_management_change_policy'

    def is_member_requests_change_policy(self):
        """
        Check if the union tag is ``member_requests_change_policy``.

        :rtype: bool
        """
        return self._tag == 'member_requests_change_policy'

    def is_member_space_limits_add_exception(self):
        """
        Check if the union tag is ``member_space_limits_add_exception``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_add_exception'

    def is_member_space_limits_change_caps_type_policy(self):
        """
        Check if the union tag is ``member_space_limits_change_caps_type_policy``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_caps_type_policy'

    def is_member_space_limits_change_policy(self):
        """
        Check if the union tag is ``member_space_limits_change_policy``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_change_policy'

    def is_member_space_limits_remove_exception(self):
        """
        Check if the union tag is ``member_space_limits_remove_exception``.

        :rtype: bool
        """
        return self._tag == 'member_space_limits_remove_exception'

    def is_member_suggestions_change_policy(self):
        """
        Check if the union tag is ``member_suggestions_change_policy``.

        :rtype: bool
        """
        return self._tag == 'member_suggestions_change_policy'

    def is_microsoft_office_addin_change_policy(self):
        """
        Check if the union tag is ``microsoft_office_addin_change_policy``.

        :rtype: bool
        """
        return self._tag == 'microsoft_office_addin_change_policy'

    def is_network_control_change_policy(self):
        """
        Check if the union tag is ``network_control_change_policy``.

        :rtype: bool
        """
        return self._tag == 'network_control_change_policy'

    def is_paper_change_deployment_policy(self):
        """
        Check if the union tag is ``paper_change_deployment_policy``.

        :rtype: bool
        """
        return self._tag == 'paper_change_deployment_policy'

    def is_paper_change_member_link_policy(self):
        """
        Check if the union tag is ``paper_change_member_link_policy``.

        :rtype: bool
        """
        return self._tag == 'paper_change_member_link_policy'

    def is_paper_change_member_policy(self):
        """
        Check if the union tag is ``paper_change_member_policy``.

        :rtype: bool
        """
        return self._tag == 'paper_change_member_policy'

    def is_paper_change_policy(self):
        """
        Check if the union tag is ``paper_change_policy``.

        :rtype: bool
        """
        return self._tag == 'paper_change_policy'

    def is_paper_enabled_users_group_addition(self):
        """
        Check if the union tag is ``paper_enabled_users_group_addition``.

        :rtype: bool
        """
        return self._tag == 'paper_enabled_users_group_addition'

    def is_paper_enabled_users_group_removal(self):
        """
        Check if the union tag is ``paper_enabled_users_group_removal``.

        :rtype: bool
        """
        return self._tag == 'paper_enabled_users_group_removal'

    def is_permanent_delete_change_policy(self):
        """
        Check if the union tag is ``permanent_delete_change_policy``.

        :rtype: bool
        """
        return self._tag == 'permanent_delete_change_policy'

    def is_sharing_change_folder_join_policy(self):
        """
        Check if the union tag is ``sharing_change_folder_join_policy``.

        :rtype: bool
        """
        return self._tag == 'sharing_change_folder_join_policy'

    def is_sharing_change_link_policy(self):
        """
        Check if the union tag is ``sharing_change_link_policy``.

        :rtype: bool
        """
        return self._tag == 'sharing_change_link_policy'

    def is_sharing_change_member_policy(self):
        """
        Check if the union tag is ``sharing_change_member_policy``.

        :rtype: bool
        """
        return self._tag == 'sharing_change_member_policy'

    def is_showcase_change_download_policy(self):
        """
        Check if the union tag is ``showcase_change_download_policy``.

        :rtype: bool
        """
        return self._tag == 'showcase_change_download_policy'

    def is_showcase_change_enabled_policy(self):
        """
        Check if the union tag is ``showcase_change_enabled_policy``.

        :rtype: bool
        """
        return self._tag == 'showcase_change_enabled_policy'

    def is_showcase_change_external_sharing_policy(self):
        """
        Check if the union tag is ``showcase_change_external_sharing_policy``.

        :rtype: bool
        """
        return self._tag == 'showcase_change_external_sharing_policy'

    def is_smart_sync_change_policy(self):
        """
        Check if the union tag is ``smart_sync_change_policy``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_change_policy'

    def is_smart_sync_not_opt_out(self):
        """
        Check if the union tag is ``smart_sync_not_opt_out``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_not_opt_out'

    def is_smart_sync_opt_out(self):
        """
        Check if the union tag is ``smart_sync_opt_out``.

        :rtype: bool
        """
        return self._tag == 'smart_sync_opt_out'

    def is_sso_change_policy(self):
        """
        Check if the union tag is ``sso_change_policy``.

        :rtype: bool
        """
        return self._tag == 'sso_change_policy'

    def is_team_selective_sync_policy_changed(self):
        """
        Check if the union tag is ``team_selective_sync_policy_changed``.

        :rtype: bool
        """
        return self._tag == 'team_selective_sync_policy_changed'

    def is_tfa_change_policy(self):
        """
        Check if the union tag is ``tfa_change_policy``.

        :rtype: bool
        """
        return self._tag == 'tfa_change_policy'

    def is_two_account_change_policy(self):
        """
        Check if the union tag is ``two_account_change_policy``.

        :rtype: bool
        """
        return self._tag == 'two_account_change_policy'

    def is_viewer_info_policy_changed(self):
        """
        Check if the union tag is ``viewer_info_policy_changed``.

        :rtype: bool
        """
        return self._tag == 'viewer_info_policy_changed'

    def is_web_sessions_change_fixed_length_policy(self):
        """
        Check if the union tag is ``web_sessions_change_fixed_length_policy``.

        :rtype: bool
        """
        return self._tag == 'web_sessions_change_fixed_length_policy'

    def is_web_sessions_change_idle_length_policy(self):
        """
        Check if the union tag is ``web_sessions_change_idle_length_policy``.

        :rtype: bool
        """
        return self._tag == 'web_sessions_change_idle_length_policy'

    def is_team_merge_from(self):
        """
        Check if the union tag is ``team_merge_from``.

        :rtype: bool
        """
        return self._tag == 'team_merge_from'

    def is_team_merge_to(self):
        """
        Check if the union tag is ``team_merge_to``.

        :rtype: bool
        """
        return self._tag == 'team_merge_to'

    def is_team_profile_add_logo(self):
        """
        Check if the union tag is ``team_profile_add_logo``.

        :rtype: bool
        """
        return self._tag == 'team_profile_add_logo'

    def is_team_profile_change_default_language(self):
        """
        Check if the union tag is ``team_profile_change_default_language``.

        :rtype: bool
        """
        return self._tag == 'team_profile_change_default_language'

    def is_team_profile_change_logo(self):
        """
        Check if the union tag is ``team_profile_change_logo``.

        :rtype: bool
        """
        return self._tag == 'team_profile_change_logo'

    def is_team_profile_change_name(self):
        """
        Check if the union tag is ``team_profile_change_name``.

        :rtype: bool
        """
        return self._tag == 'team_profile_change_name'

    def is_team_profile_remove_logo(self):
        """
        Check if the union tag is ``team_profile_remove_logo``.

        :rtype: bool
        """
        return self._tag == 'team_profile_remove_logo'

    def is_tfa_add_backup_phone(self):
        """
        Check if the union tag is ``tfa_add_backup_phone``.

        :rtype: bool
        """
        return self._tag == 'tfa_add_backup_phone'

    def is_tfa_add_security_key(self):
        """
        Check if the union tag is ``tfa_add_security_key``.

        :rtype: bool
        """
        return self._tag == 'tfa_add_security_key'

    def is_tfa_change_backup_phone(self):
        """
        Check if the union tag is ``tfa_change_backup_phone``.

        :rtype: bool
        """
        return self._tag == 'tfa_change_backup_phone'

    def is_tfa_change_status(self):
        """
        Check if the union tag is ``tfa_change_status``.

        :rtype: bool
        """
        return self._tag == 'tfa_change_status'

    def is_tfa_remove_backup_phone(self):
        """
        Check if the union tag is ``tfa_remove_backup_phone``.

        :rtype: bool
        """
        return self._tag == 'tfa_remove_backup_phone'

    def is_tfa_remove_security_key(self):
        """
        Check if the union tag is ``tfa_remove_security_key``.

        :rtype: bool
        """
        return self._tag == 'tfa_remove_security_key'

    def is_tfa_reset(self):
        """
        Check if the union tag is ``tfa_reset``.

        :rtype: bool
        """
        return self._tag == 'tfa_reset'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_app_link_team(self):
        """
        (apps) Linked app for team

        Only call this if :meth:`is_app_link_team` is true.

        :rtype: AppLinkTeamType
        """
        if not self.is_app_link_team():
            raise AttributeError("tag 'app_link_team' not set")
        return self._value

    def get_app_link_user(self):
        """
        (apps) Linked app for member

        Only call this if :meth:`is_app_link_user` is true.

        :rtype: AppLinkUserType
        """
        if not self.is_app_link_user():
            raise AttributeError("tag 'app_link_user' not set")
        return self._value

    def get_app_unlink_team(self):
        """
        (apps) Unlinked app for team

        Only call this if :meth:`is_app_unlink_team` is true.

        :rtype: AppUnlinkTeamType
        """
        if not self.is_app_unlink_team():
            raise AttributeError("tag 'app_unlink_team' not set")
        return self._value

    def get_app_unlink_user(self):
        """
        (apps) Unlinked app for member

        Only call this if :meth:`is_app_unlink_user` is true.

        :rtype: AppUnlinkUserType
        """
        if not self.is_app_unlink_user():
            raise AttributeError("tag 'app_unlink_user' not set")
        return self._value

    def get_file_add_comment(self):
        """
        (comments) Added file comment

        Only call this if :meth:`is_file_add_comment` is true.

        :rtype: FileAddCommentType
        """
        if not self.is_file_add_comment():
            raise AttributeError("tag 'file_add_comment' not set")
        return self._value

    def get_file_change_comment_subscription(self):
        """
        (comments) Subscribed to or unsubscribed from comment notifications for
        file

        Only call this if :meth:`is_file_change_comment_subscription` is true.

        :rtype: FileChangeCommentSubscriptionType
        """
        if not self.is_file_change_comment_subscription():
            raise AttributeError("tag 'file_change_comment_subscription' not set")
        return self._value

    def get_file_delete_comment(self):
        """
        (comments) Deleted file comment

        Only call this if :meth:`is_file_delete_comment` is true.

        :rtype: FileDeleteCommentType
        """
        if not self.is_file_delete_comment():
            raise AttributeError("tag 'file_delete_comment' not set")
        return self._value

    def get_file_edit_comment(self):
        """
        (comments) Edited file comment

        Only call this if :meth:`is_file_edit_comment` is true.

        :rtype: FileEditCommentType
        """
        if not self.is_file_edit_comment():
            raise AttributeError("tag 'file_edit_comment' not set")
        return self._value

    def get_file_like_comment(self):
        """
        (comments) Liked file comment (deprecated, no longer logged)

        Only call this if :meth:`is_file_like_comment` is true.

        :rtype: FileLikeCommentType
        """
        if not self.is_file_like_comment():
            raise AttributeError("tag 'file_like_comment' not set")
        return self._value

    def get_file_resolve_comment(self):
        """
        (comments) Resolved file comment

        Only call this if :meth:`is_file_resolve_comment` is true.

        :rtype: FileResolveCommentType
        """
        if not self.is_file_resolve_comment():
            raise AttributeError("tag 'file_resolve_comment' not set")
        return self._value

    def get_file_unlike_comment(self):
        """
        (comments) Unliked file comment (deprecated, no longer logged)

        Only call this if :meth:`is_file_unlike_comment` is true.

        :rtype: FileUnlikeCommentType
        """
        if not self.is_file_unlike_comment():
            raise AttributeError("tag 'file_unlike_comment' not set")
        return self._value

    def get_file_unresolve_comment(self):
        """
        (comments) Unresolved file comment

        Only call this if :meth:`is_file_unresolve_comment` is true.

        :rtype: FileUnresolveCommentType
        """
        if not self.is_file_unresolve_comment():
            raise AttributeError("tag 'file_unresolve_comment' not set")
        return self._value

    def get_device_change_ip_desktop(self):
        """
        (devices) Changed IP address associated with active desktop session

        Only call this if :meth:`is_device_change_ip_desktop` is true.

        :rtype: DeviceChangeIpDesktopType
        """
        if not self.is_device_change_ip_desktop():
            raise AttributeError("tag 'device_change_ip_desktop' not set")
        return self._value

    def get_device_change_ip_mobile(self):
        """
        (devices) Changed IP address associated with active mobile session

        Only call this if :meth:`is_device_change_ip_mobile` is true.

        :rtype: DeviceChangeIpMobileType
        """
        if not self.is_device_change_ip_mobile():
            raise AttributeError("tag 'device_change_ip_mobile' not set")
        return self._value

    def get_device_change_ip_web(self):
        """
        (devices) Changed IP address associated with active web session

        Only call this if :meth:`is_device_change_ip_web` is true.

        :rtype: DeviceChangeIpWebType
        """
        if not self.is_device_change_ip_web():
            raise AttributeError("tag 'device_change_ip_web' not set")
        return self._value

    def get_device_delete_on_unlink_fail(self):
        """
        (devices) Failed to delete all files from unlinked device

        Only call this if :meth:`is_device_delete_on_unlink_fail` is true.

        :rtype: DeviceDeleteOnUnlinkFailType
        """
        if not self.is_device_delete_on_unlink_fail():
            raise AttributeError("tag 'device_delete_on_unlink_fail' not set")
        return self._value

    def get_device_delete_on_unlink_success(self):
        """
        (devices) Deleted all files from unlinked device

        Only call this if :meth:`is_device_delete_on_unlink_success` is true.

        :rtype: DeviceDeleteOnUnlinkSuccessType
        """
        if not self.is_device_delete_on_unlink_success():
            raise AttributeError("tag 'device_delete_on_unlink_success' not set")
        return self._value

    def get_device_link_fail(self):
        """
        (devices) Failed to link device

        Only call this if :meth:`is_device_link_fail` is true.

        :rtype: DeviceLinkFailType
        """
        if not self.is_device_link_fail():
            raise AttributeError("tag 'device_link_fail' not set")
        return self._value

    def get_device_link_success(self):
        """
        (devices) Linked device

        Only call this if :meth:`is_device_link_success` is true.

        :rtype: DeviceLinkSuccessType
        """
        if not self.is_device_link_success():
            raise AttributeError("tag 'device_link_success' not set")
        return self._value

    def get_device_management_disabled(self):
        """
        (devices) Disabled device management (deprecated, no longer logged)

        Only call this if :meth:`is_device_management_disabled` is true.

        :rtype: DeviceManagementDisabledType
        """
        if not self.is_device_management_disabled():
            raise AttributeError("tag 'device_management_disabled' not set")
        return self._value

    def get_device_management_enabled(self):
        """
        (devices) Enabled device management (deprecated, no longer logged)

        Only call this if :meth:`is_device_management_enabled` is true.

        :rtype: DeviceManagementEnabledType
        """
        if not self.is_device_management_enabled():
            raise AttributeError("tag 'device_management_enabled' not set")
        return self._value

    def get_device_unlink(self):
        """
        (devices) Disconnected device

        Only call this if :meth:`is_device_unlink` is true.

        :rtype: DeviceUnlinkType
        """
        if not self.is_device_unlink():
            raise AttributeError("tag 'device_unlink' not set")
        return self._value

    def get_emm_refresh_auth_token(self):
        """
        (devices) Refreshed auth token used for setting up enterprise mobility
        management

        Only call this if :meth:`is_emm_refresh_auth_token` is true.

        :rtype: EmmRefreshAuthTokenType
        """
        if not self.is_emm_refresh_auth_token():
            raise AttributeError("tag 'emm_refresh_auth_token' not set")
        return self._value

    def get_account_capture_change_availability(self):
        """
        (domains) Granted/revoked option to enable account capture on team
        domains

        Only call this if :meth:`is_account_capture_change_availability` is true.

        :rtype: AccountCaptureChangeAvailabilityType
        """
        if not self.is_account_capture_change_availability():
            raise AttributeError("tag 'account_capture_change_availability' not set")
        return self._value

    def get_account_capture_migrate_account(self):
        """
        (domains) Account-captured user migrated account to team

        Only call this if :meth:`is_account_capture_migrate_account` is true.

        :rtype: AccountCaptureMigrateAccountType
        """
        if not self.is_account_capture_migrate_account():
            raise AttributeError("tag 'account_capture_migrate_account' not set")
        return self._value

    def get_account_capture_notification_emails_sent(self):
        """
        (domains) Sent proactive account capture email to all unmanaged members

        Only call this if :meth:`is_account_capture_notification_emails_sent` is true.

        :rtype: AccountCaptureNotificationEmailsSentType
        """
        if not self.is_account_capture_notification_emails_sent():
            raise AttributeError("tag 'account_capture_notification_emails_sent' not set")
        return self._value

    def get_account_capture_relinquish_account(self):
        """
        (domains) Account-captured user changed account email to personal email

        Only call this if :meth:`is_account_capture_relinquish_account` is true.

        :rtype: AccountCaptureRelinquishAccountType
        """
        if not self.is_account_capture_relinquish_account():
            raise AttributeError("tag 'account_capture_relinquish_account' not set")
        return self._value

    def get_disabled_domain_invites(self):
        """
        (domains) Disabled domain invites (deprecated, no longer logged)

        Only call this if :meth:`is_disabled_domain_invites` is true.

        :rtype: DisabledDomainInvitesType
        """
        if not self.is_disabled_domain_invites():
            raise AttributeError("tag 'disabled_domain_invites' not set")
        return self._value

    def get_domain_invites_approve_request_to_join_team(self):
        """
        (domains) Approved user's request to join team

        Only call this if :meth:`is_domain_invites_approve_request_to_join_team` is true.

        :rtype: DomainInvitesApproveRequestToJoinTeamType
        """
        if not self.is_domain_invites_approve_request_to_join_team():
            raise AttributeError("tag 'domain_invites_approve_request_to_join_team' not set")
        return self._value

    def get_domain_invites_decline_request_to_join_team(self):
        """
        (domains) Declined user's request to join team

        Only call this if :meth:`is_domain_invites_decline_request_to_join_team` is true.

        :rtype: DomainInvitesDeclineRequestToJoinTeamType
        """
        if not self.is_domain_invites_decline_request_to_join_team():
            raise AttributeError("tag 'domain_invites_decline_request_to_join_team' not set")
        return self._value

    def get_domain_invites_email_existing_users(self):
        """
        (domains) Sent domain invites to existing domain accounts (deprecated,
        no longer logged)

        Only call this if :meth:`is_domain_invites_email_existing_users` is true.

        :rtype: DomainInvitesEmailExistingUsersType
        """
        if not self.is_domain_invites_email_existing_users():
            raise AttributeError("tag 'domain_invites_email_existing_users' not set")
        return self._value

    def get_domain_invites_request_to_join_team(self):
        """
        (domains) Requested to join team

        Only call this if :meth:`is_domain_invites_request_to_join_team` is true.

        :rtype: DomainInvitesRequestToJoinTeamType
        """
        if not self.is_domain_invites_request_to_join_team():
            raise AttributeError("tag 'domain_invites_request_to_join_team' not set")
        return self._value

    def get_domain_invites_set_invite_new_user_pref_to_no(self):
        """
        (domains) Disabled "Automatically invite new users" (deprecated, no
        longer logged)

        Only call this if :meth:`is_domain_invites_set_invite_new_user_pref_to_no` is true.

        :rtype: DomainInvitesSetInviteNewUserPrefToNoType
        """
        if not self.is_domain_invites_set_invite_new_user_pref_to_no():
            raise AttributeError("tag 'domain_invites_set_invite_new_user_pref_to_no' not set")
        return self._value

    def get_domain_invites_set_invite_new_user_pref_to_yes(self):
        """
        (domains) Enabled "Automatically invite new users" (deprecated, no
        longer logged)

        Only call this if :meth:`is_domain_invites_set_invite_new_user_pref_to_yes` is true.

        :rtype: DomainInvitesSetInviteNewUserPrefToYesType
        """
        if not self.is_domain_invites_set_invite_new_user_pref_to_yes():
            raise AttributeError("tag 'domain_invites_set_invite_new_user_pref_to_yes' not set")
        return self._value

    def get_domain_verification_add_domain_fail(self):
        """
        (domains) Failed to verify team domain

        Only call this if :meth:`is_domain_verification_add_domain_fail` is true.

        :rtype: DomainVerificationAddDomainFailType
        """
        if not self.is_domain_verification_add_domain_fail():
            raise AttributeError("tag 'domain_verification_add_domain_fail' not set")
        return self._value

    def get_domain_verification_add_domain_success(self):
        """
        (domains) Verified team domain

        Only call this if :meth:`is_domain_verification_add_domain_success` is true.

        :rtype: DomainVerificationAddDomainSuccessType
        """
        if not self.is_domain_verification_add_domain_success():
            raise AttributeError("tag 'domain_verification_add_domain_success' not set")
        return self._value

    def get_domain_verification_remove_domain(self):
        """
        (domains) Removed domain from list of verified team domains

        Only call this if :meth:`is_domain_verification_remove_domain` is true.

        :rtype: DomainVerificationRemoveDomainType
        """
        if not self.is_domain_verification_remove_domain():
            raise AttributeError("tag 'domain_verification_remove_domain' not set")
        return self._value

    def get_enabled_domain_invites(self):
        """
        (domains) Enabled domain invites (deprecated, no longer logged)

        Only call this if :meth:`is_enabled_domain_invites` is true.

        :rtype: EnabledDomainInvitesType
        """
        if not self.is_enabled_domain_invites():
            raise AttributeError("tag 'enabled_domain_invites' not set")
        return self._value

    def get_create_folder(self):
        """
        (file_operations) Created folders (deprecated, no longer logged)

        Only call this if :meth:`is_create_folder` is true.

        :rtype: CreateFolderType
        """
        if not self.is_create_folder():
            raise AttributeError("tag 'create_folder' not set")
        return self._value

    def get_file_add(self):
        """
        (file_operations) Added files and/or folders

        Only call this if :meth:`is_file_add` is true.

        :rtype: FileAddType
        """
        if not self.is_file_add():
            raise AttributeError("tag 'file_add' not set")
        return self._value

    def get_file_copy(self):
        """
        (file_operations) Copied files and/or folders

        Only call this if :meth:`is_file_copy` is true.

        :rtype: FileCopyType
        """
        if not self.is_file_copy():
            raise AttributeError("tag 'file_copy' not set")
        return self._value

    def get_file_delete(self):
        """
        (file_operations) Deleted files and/or folders

        Only call this if :meth:`is_file_delete` is true.

        :rtype: FileDeleteType
        """
        if not self.is_file_delete():
            raise AttributeError("tag 'file_delete' not set")
        return self._value

    def get_file_download(self):
        """
        (file_operations) Downloaded files and/or folders

        Only call this if :meth:`is_file_download` is true.

        :rtype: FileDownloadType
        """
        if not self.is_file_download():
            raise AttributeError("tag 'file_download' not set")
        return self._value

    def get_file_edit(self):
        """
        (file_operations) Edited files

        Only call this if :meth:`is_file_edit` is true.

        :rtype: FileEditType
        """
        if not self.is_file_edit():
            raise AttributeError("tag 'file_edit' not set")
        return self._value

    def get_file_get_copy_reference(self):
        """
        (file_operations) Created copy reference to file/folder

        Only call this if :meth:`is_file_get_copy_reference` is true.

        :rtype: FileGetCopyReferenceType
        """
        if not self.is_file_get_copy_reference():
            raise AttributeError("tag 'file_get_copy_reference' not set")
        return self._value

    def get_file_move(self):
        """
        (file_operations) Moved files and/or folders

        Only call this if :meth:`is_file_move` is true.

        :rtype: FileMoveType
        """
        if not self.is_file_move():
            raise AttributeError("tag 'file_move' not set")
        return self._value

    def get_file_permanently_delete(self):
        """
        (file_operations) Permanently deleted files and/or folders

        Only call this if :meth:`is_file_permanently_delete` is true.

        :rtype: FilePermanentlyDeleteType
        """
        if not self.is_file_permanently_delete():
            raise AttributeError("tag 'file_permanently_delete' not set")
        return self._value

    def get_file_preview(self):
        """
        (file_operations) Previewed files and/or folders

        Only call this if :meth:`is_file_preview` is true.

        :rtype: FilePreviewType
        """
        if not self.is_file_preview():
            raise AttributeError("tag 'file_preview' not set")
        return self._value

    def get_file_rename(self):
        """
        (file_operations) Renamed files and/or folders

        Only call this if :meth:`is_file_rename` is true.

        :rtype: FileRenameType
        """
        if not self.is_file_rename():
            raise AttributeError("tag 'file_rename' not set")
        return self._value

    def get_file_restore(self):
        """
        (file_operations) Restored deleted files and/or folders

        Only call this if :meth:`is_file_restore` is true.

        :rtype: FileRestoreType
        """
        if not self.is_file_restore():
            raise AttributeError("tag 'file_restore' not set")
        return self._value

    def get_file_revert(self):
        """
        (file_operations) Reverted files to previous version

        Only call this if :meth:`is_file_revert` is true.

        :rtype: FileRevertType
        """
        if not self.is_file_revert():
            raise AttributeError("tag 'file_revert' not set")
        return self._value

    def get_file_rollback_changes(self):
        """
        (file_operations) Rolled back file actions

        Only call this if :meth:`is_file_rollback_changes` is true.

        :rtype: FileRollbackChangesType
        """
        if not self.is_file_rollback_changes():
            raise AttributeError("tag 'file_rollback_changes' not set")
        return self._value

    def get_file_save_copy_reference(self):
        """
        (file_operations) Saved file/folder using copy reference

        Only call this if :meth:`is_file_save_copy_reference` is true.

        :rtype: FileSaveCopyReferenceType
        """
        if not self.is_file_save_copy_reference():
            raise AttributeError("tag 'file_save_copy_reference' not set")
        return self._value

    def get_file_request_change(self):
        """
        (file_requests) Changed file request

        Only call this if :meth:`is_file_request_change` is true.

        :rtype: FileRequestChangeType
        """
        if not self.is_file_request_change():
            raise AttributeError("tag 'file_request_change' not set")
        return self._value

    def get_file_request_close(self):
        """
        (file_requests) Closed file request

        Only call this if :meth:`is_file_request_close` is true.

        :rtype: FileRequestCloseType
        """
        if not self.is_file_request_close():
            raise AttributeError("tag 'file_request_close' not set")
        return self._value

    def get_file_request_create(self):
        """
        (file_requests) Created file request

        Only call this if :meth:`is_file_request_create` is true.

        :rtype: FileRequestCreateType
        """
        if not self.is_file_request_create():
            raise AttributeError("tag 'file_request_create' not set")
        return self._value

    def get_file_request_receive_file(self):
        """
        (file_requests) Received files for file request

        Only call this if :meth:`is_file_request_receive_file` is true.

        :rtype: FileRequestReceiveFileType
        """
        if not self.is_file_request_receive_file():
            raise AttributeError("tag 'file_request_receive_file' not set")
        return self._value

    def get_group_add_external_id(self):
        """
        (groups) Added external ID for group

        Only call this if :meth:`is_group_add_external_id` is true.

        :rtype: GroupAddExternalIdType
        """
        if not self.is_group_add_external_id():
            raise AttributeError("tag 'group_add_external_id' not set")
        return self._value

    def get_group_add_member(self):
        """
        (groups) Added team members to group

        Only call this if :meth:`is_group_add_member` is true.

        :rtype: GroupAddMemberType
        """
        if not self.is_group_add_member():
            raise AttributeError("tag 'group_add_member' not set")
        return self._value

    def get_group_change_external_id(self):
        """
        (groups) Changed external ID for group

        Only call this if :meth:`is_group_change_external_id` is true.

        :rtype: GroupChangeExternalIdType
        """
        if not self.is_group_change_external_id():
            raise AttributeError("tag 'group_change_external_id' not set")
        return self._value

    def get_group_change_management_type(self):
        """
        (groups) Changed group management type

        Only call this if :meth:`is_group_change_management_type` is true.

        :rtype: GroupChangeManagementTypeType
        """
        if not self.is_group_change_management_type():
            raise AttributeError("tag 'group_change_management_type' not set")
        return self._value

    def get_group_change_member_role(self):
        """
        (groups) Changed manager permissions of group member

        Only call this if :meth:`is_group_change_member_role` is true.

        :rtype: GroupChangeMemberRoleType
        """
        if not self.is_group_change_member_role():
            raise AttributeError("tag 'group_change_member_role' not set")
        return self._value

    def get_group_create(self):
        """
        (groups) Created group

        Only call this if :meth:`is_group_create` is true.

        :rtype: GroupCreateType
        """
        if not self.is_group_create():
            raise AttributeError("tag 'group_create' not set")
        return self._value

    def get_group_delete(self):
        """
        (groups) Deleted group

        Only call this if :meth:`is_group_delete` is true.

        :rtype: GroupDeleteType
        """
        if not self.is_group_delete():
            raise AttributeError("tag 'group_delete' not set")
        return self._value

    def get_group_description_updated(self):
        """
        (groups) Updated group (deprecated, no longer logged)

        Only call this if :meth:`is_group_description_updated` is true.

        :rtype: GroupDescriptionUpdatedType
        """
        if not self.is_group_description_updated():
            raise AttributeError("tag 'group_description_updated' not set")
        return self._value

    def get_group_join_policy_updated(self):
        """
        (groups) Updated group join policy (deprecated, no longer logged)

        Only call this if :meth:`is_group_join_policy_updated` is true.

        :rtype: GroupJoinPolicyUpdatedType
        """
        if not self.is_group_join_policy_updated():
            raise AttributeError("tag 'group_join_policy_updated' not set")
        return self._value

    def get_group_moved(self):
        """
        (groups) Moved group (deprecated, no longer logged)

        Only call this if :meth:`is_group_moved` is true.

        :rtype: GroupMovedType
        """
        if not self.is_group_moved():
            raise AttributeError("tag 'group_moved' not set")
        return self._value

    def get_group_remove_external_id(self):
        """
        (groups) Removed external ID for group

        Only call this if :meth:`is_group_remove_external_id` is true.

        :rtype: GroupRemoveExternalIdType
        """
        if not self.is_group_remove_external_id():
            raise AttributeError("tag 'group_remove_external_id' not set")
        return self._value

    def get_group_remove_member(self):
        """
        (groups) Removed team members from group

        Only call this if :meth:`is_group_remove_member` is true.

        :rtype: GroupRemoveMemberType
        """
        if not self.is_group_remove_member():
            raise AttributeError("tag 'group_remove_member' not set")
        return self._value

    def get_group_rename(self):
        """
        (groups) Renamed group

        Only call this if :meth:`is_group_rename` is true.

        :rtype: GroupRenameType
        """
        if not self.is_group_rename():
            raise AttributeError("tag 'group_rename' not set")
        return self._value

    def get_emm_error(self):
        """
        (logins) Failed to sign in via EMM (deprecated, replaced by 'Failed to
        sign in')

        Only call this if :meth:`is_emm_error` is true.

        :rtype: EmmErrorType
        """
        if not self.is_emm_error():
            raise AttributeError("tag 'emm_error' not set")
        return self._value

    def get_login_fail(self):
        """
        (logins) Failed to sign in

        Only call this if :meth:`is_login_fail` is true.

        :rtype: LoginFailType
        """
        if not self.is_login_fail():
            raise AttributeError("tag 'login_fail' not set")
        return self._value

    def get_login_success(self):
        """
        (logins) Signed in

        Only call this if :meth:`is_login_success` is true.

        :rtype: LoginSuccessType
        """
        if not self.is_login_success():
            raise AttributeError("tag 'login_success' not set")
        return self._value

    def get_logout(self):
        """
        (logins) Signed out

        Only call this if :meth:`is_logout` is true.

        :rtype: LogoutType
        """
        if not self.is_logout():
            raise AttributeError("tag 'logout' not set")
        return self._value

    def get_reseller_support_session_end(self):
        """
        (logins) Ended reseller support session

        Only call this if :meth:`is_reseller_support_session_end` is true.

        :rtype: ResellerSupportSessionEndType
        """
        if not self.is_reseller_support_session_end():
            raise AttributeError("tag 'reseller_support_session_end' not set")
        return self._value

    def get_reseller_support_session_start(self):
        """
        (logins) Started reseller support session

        Only call this if :meth:`is_reseller_support_session_start` is true.

        :rtype: ResellerSupportSessionStartType
        """
        if not self.is_reseller_support_session_start():
            raise AttributeError("tag 'reseller_support_session_start' not set")
        return self._value

    def get_sign_in_as_session_end(self):
        """
        (logins) Ended admin sign-in-as session

        Only call this if :meth:`is_sign_in_as_session_end` is true.

        :rtype: SignInAsSessionEndType
        """
        if not self.is_sign_in_as_session_end():
            raise AttributeError("tag 'sign_in_as_session_end' not set")
        return self._value

    def get_sign_in_as_session_start(self):
        """
        (logins) Started admin sign-in-as session

        Only call this if :meth:`is_sign_in_as_session_start` is true.

        :rtype: SignInAsSessionStartType
        """
        if not self.is_sign_in_as_session_start():
            raise AttributeError("tag 'sign_in_as_session_start' not set")
        return self._value

    def get_sso_error(self):
        """
        (logins) Failed to sign in via SSO (deprecated, replaced by 'Failed to
        sign in')

        Only call this if :meth:`is_sso_error` is true.

        :rtype: SsoErrorType
        """
        if not self.is_sso_error():
            raise AttributeError("tag 'sso_error' not set")
        return self._value

    def get_member_add_name(self):
        """
        (members) Added team member name

        Only call this if :meth:`is_member_add_name` is true.

        :rtype: MemberAddNameType
        """
        if not self.is_member_add_name():
            raise AttributeError("tag 'member_add_name' not set")
        return self._value

    def get_member_change_admin_role(self):
        """
        (members) Changed team member admin role

        Only call this if :meth:`is_member_change_admin_role` is true.

        :rtype: MemberChangeAdminRoleType
        """
        if not self.is_member_change_admin_role():
            raise AttributeError("tag 'member_change_admin_role' not set")
        return self._value

    def get_member_change_email(self):
        """
        (members) Changed team member email

        Only call this if :meth:`is_member_change_email` is true.

        :rtype: MemberChangeEmailType
        """
        if not self.is_member_change_email():
            raise AttributeError("tag 'member_change_email' not set")
        return self._value

    def get_member_change_membership_type(self):
        """
        (members) Changed membership type (limited/full) of member (deprecated,
        no longer logged)

        Only call this if :meth:`is_member_change_membership_type` is true.

        :rtype: MemberChangeMembershipTypeType
        """
        if not self.is_member_change_membership_type():
            raise AttributeError("tag 'member_change_membership_type' not set")
        return self._value

    def get_member_change_name(self):
        """
        (members) Changed team member name

        Only call this if :meth:`is_member_change_name` is true.

        :rtype: MemberChangeNameType
        """
        if not self.is_member_change_name():
            raise AttributeError("tag 'member_change_name' not set")
        return self._value

    def get_member_change_status(self):
        """
        (members) Changed member status (invited, joined, suspended, etc.)

        Only call this if :meth:`is_member_change_status` is true.

        :rtype: MemberChangeStatusType
        """
        if not self.is_member_change_status():
            raise AttributeError("tag 'member_change_status' not set")
        return self._value

    def get_member_delete_manual_contacts(self):
        """
        (members) Cleared manually added contacts

        Only call this if :meth:`is_member_delete_manual_contacts` is true.

        :rtype: MemberDeleteManualContactsType
        """
        if not self.is_member_delete_manual_contacts():
            raise AttributeError("tag 'member_delete_manual_contacts' not set")
        return self._value

    def get_member_permanently_delete_account_contents(self):
        """
        (members) Permanently deleted contents of deleted team member account

        Only call this if :meth:`is_member_permanently_delete_account_contents` is true.

        :rtype: MemberPermanentlyDeleteAccountContentsType
        """
        if not self.is_member_permanently_delete_account_contents():
            raise AttributeError("tag 'member_permanently_delete_account_contents' not set")
        return self._value

    def get_member_space_limits_add_custom_quota(self):
        """
        (members) Set custom member space limit

        Only call this if :meth:`is_member_space_limits_add_custom_quota` is true.

        :rtype: MemberSpaceLimitsAddCustomQuotaType
        """
        if not self.is_member_space_limits_add_custom_quota():
            raise AttributeError("tag 'member_space_limits_add_custom_quota' not set")
        return self._value

    def get_member_space_limits_change_custom_quota(self):
        """
        (members) Changed custom member space limit

        Only call this if :meth:`is_member_space_limits_change_custom_quota` is true.

        :rtype: MemberSpaceLimitsChangeCustomQuotaType
        """
        if not self.is_member_space_limits_change_custom_quota():
            raise AttributeError("tag 'member_space_limits_change_custom_quota' not set")
        return self._value

    def get_member_space_limits_change_status(self):
        """
        (members) Changed space limit status

        Only call this if :meth:`is_member_space_limits_change_status` is true.

        :rtype: MemberSpaceLimitsChangeStatusType
        """
        if not self.is_member_space_limits_change_status():
            raise AttributeError("tag 'member_space_limits_change_status' not set")
        return self._value

    def get_member_space_limits_remove_custom_quota(self):
        """
        (members) Removed custom member space limit

        Only call this if :meth:`is_member_space_limits_remove_custom_quota` is true.

        :rtype: MemberSpaceLimitsRemoveCustomQuotaType
        """
        if not self.is_member_space_limits_remove_custom_quota():
            raise AttributeError("tag 'member_space_limits_remove_custom_quota' not set")
        return self._value

    def get_member_suggest(self):
        """
        (members) Suggested person to add to team

        Only call this if :meth:`is_member_suggest` is true.

        :rtype: MemberSuggestType
        """
        if not self.is_member_suggest():
            raise AttributeError("tag 'member_suggest' not set")
        return self._value

    def get_member_transfer_account_contents(self):
        """
        (members) Transferred contents of deleted member account to another
        member

        Only call this if :meth:`is_member_transfer_account_contents` is true.

        :rtype: MemberTransferAccountContentsType
        """
        if not self.is_member_transfer_account_contents():
            raise AttributeError("tag 'member_transfer_account_contents' not set")
        return self._value

    def get_secondary_mails_policy_changed(self):
        """
        (members) Secondary mails policy changed

        Only call this if :meth:`is_secondary_mails_policy_changed` is true.

        :rtype: SecondaryMailsPolicyChangedType
        """
        if not self.is_secondary_mails_policy_changed():
            raise AttributeError("tag 'secondary_mails_policy_changed' not set")
        return self._value

    def get_paper_content_add_member(self):
        """
        (paper) Added team member to Paper doc/folder

        Only call this if :meth:`is_paper_content_add_member` is true.

        :rtype: PaperContentAddMemberType
        """
        if not self.is_paper_content_add_member():
            raise AttributeError("tag 'paper_content_add_member' not set")
        return self._value

    def get_paper_content_add_to_folder(self):
        """
        (paper) Added Paper doc/folder to folder

        Only call this if :meth:`is_paper_content_add_to_folder` is true.

        :rtype: PaperContentAddToFolderType
        """
        if not self.is_paper_content_add_to_folder():
            raise AttributeError("tag 'paper_content_add_to_folder' not set")
        return self._value

    def get_paper_content_archive(self):
        """
        (paper) Archived Paper doc/folder

        Only call this if :meth:`is_paper_content_archive` is true.

        :rtype: PaperContentArchiveType
        """
        if not self.is_paper_content_archive():
            raise AttributeError("tag 'paper_content_archive' not set")
        return self._value

    def get_paper_content_create(self):
        """
        (paper) Created Paper doc/folder

        Only call this if :meth:`is_paper_content_create` is true.

        :rtype: PaperContentCreateType
        """
        if not self.is_paper_content_create():
            raise AttributeError("tag 'paper_content_create' not set")
        return self._value

    def get_paper_content_permanently_delete(self):
        """
        (paper) Permanently deleted Paper doc/folder

        Only call this if :meth:`is_paper_content_permanently_delete` is true.

        :rtype: PaperContentPermanentlyDeleteType
        """
        if not self.is_paper_content_permanently_delete():
            raise AttributeError("tag 'paper_content_permanently_delete' not set")
        return self._value

    def get_paper_content_remove_from_folder(self):
        """
        (paper) Removed Paper doc/folder from folder

        Only call this if :meth:`is_paper_content_remove_from_folder` is true.

        :rtype: PaperContentRemoveFromFolderType
        """
        if not self.is_paper_content_remove_from_folder():
            raise AttributeError("tag 'paper_content_remove_from_folder' not set")
        return self._value

    def get_paper_content_remove_member(self):
        """
        (paper) Removed team member from Paper doc/folder

        Only call this if :meth:`is_paper_content_remove_member` is true.

        :rtype: PaperContentRemoveMemberType
        """
        if not self.is_paper_content_remove_member():
            raise AttributeError("tag 'paper_content_remove_member' not set")
        return self._value

    def get_paper_content_rename(self):
        """
        (paper) Renamed Paper doc/folder

        Only call this if :meth:`is_paper_content_rename` is true.

        :rtype: PaperContentRenameType
        """
        if not self.is_paper_content_rename():
            raise AttributeError("tag 'paper_content_rename' not set")
        return self._value

    def get_paper_content_restore(self):
        """
        (paper) Restored archived Paper doc/folder

        Only call this if :meth:`is_paper_content_restore` is true.

        :rtype: PaperContentRestoreType
        """
        if not self.is_paper_content_restore():
            raise AttributeError("tag 'paper_content_restore' not set")
        return self._value

    def get_paper_doc_add_comment(self):
        """
        (paper) Added Paper doc comment

        Only call this if :meth:`is_paper_doc_add_comment` is true.

        :rtype: PaperDocAddCommentType
        """
        if not self.is_paper_doc_add_comment():
            raise AttributeError("tag 'paper_doc_add_comment' not set")
        return self._value

    def get_paper_doc_change_member_role(self):
        """
        (paper) Changed team member permissions for Paper doc

        Only call this if :meth:`is_paper_doc_change_member_role` is true.

        :rtype: PaperDocChangeMemberRoleType
        """
        if not self.is_paper_doc_change_member_role():
            raise AttributeError("tag 'paper_doc_change_member_role' not set")
        return self._value

    def get_paper_doc_change_sharing_policy(self):
        """
        (paper) Changed sharing setting for Paper doc

        Only call this if :meth:`is_paper_doc_change_sharing_policy` is true.

        :rtype: PaperDocChangeSharingPolicyType
        """
        if not self.is_paper_doc_change_sharing_policy():
            raise AttributeError("tag 'paper_doc_change_sharing_policy' not set")
        return self._value

    def get_paper_doc_change_subscription(self):
        """
        (paper) Followed/unfollowed Paper doc

        Only call this if :meth:`is_paper_doc_change_subscription` is true.

        :rtype: PaperDocChangeSubscriptionType
        """
        if not self.is_paper_doc_change_subscription():
            raise AttributeError("tag 'paper_doc_change_subscription' not set")
        return self._value

    def get_paper_doc_deleted(self):
        """
        (paper) Archived Paper doc (deprecated, no longer logged)

        Only call this if :meth:`is_paper_doc_deleted` is true.

        :rtype: PaperDocDeletedType
        """
        if not self.is_paper_doc_deleted():
            raise AttributeError("tag 'paper_doc_deleted' not set")
        return self._value

    def get_paper_doc_delete_comment(self):
        """
        (paper) Deleted Paper doc comment

        Only call this if :meth:`is_paper_doc_delete_comment` is true.

        :rtype: PaperDocDeleteCommentType
        """
        if not self.is_paper_doc_delete_comment():
            raise AttributeError("tag 'paper_doc_delete_comment' not set")
        return self._value

    def get_paper_doc_download(self):
        """
        (paper) Downloaded Paper doc in specific format

        Only call this if :meth:`is_paper_doc_download` is true.

        :rtype: PaperDocDownloadType
        """
        if not self.is_paper_doc_download():
            raise AttributeError("tag 'paper_doc_download' not set")
        return self._value

    def get_paper_doc_edit(self):
        """
        (paper) Edited Paper doc

        Only call this if :meth:`is_paper_doc_edit` is true.

        :rtype: PaperDocEditType
        """
        if not self.is_paper_doc_edit():
            raise AttributeError("tag 'paper_doc_edit' not set")
        return self._value

    def get_paper_doc_edit_comment(self):
        """
        (paper) Edited Paper doc comment

        Only call this if :meth:`is_paper_doc_edit_comment` is true.

        :rtype: PaperDocEditCommentType
        """
        if not self.is_paper_doc_edit_comment():
            raise AttributeError("tag 'paper_doc_edit_comment' not set")
        return self._value

    def get_paper_doc_followed(self):
        """
        (paper) Followed Paper doc (deprecated, replaced by 'Followed/unfollowed
        Paper doc')

        Only call this if :meth:`is_paper_doc_followed` is true.

        :rtype: PaperDocFollowedType
        """
        if not self.is_paper_doc_followed():
            raise AttributeError("tag 'paper_doc_followed' not set")
        return self._value

    def get_paper_doc_mention(self):
        """
        (paper) Mentioned team member in Paper doc

        Only call this if :meth:`is_paper_doc_mention` is true.

        :rtype: PaperDocMentionType
        """
        if not self.is_paper_doc_mention():
            raise AttributeError("tag 'paper_doc_mention' not set")
        return self._value

    def get_paper_doc_ownership_changed(self):
        """
        (paper) Transferred ownership of Paper doc

        Only call this if :meth:`is_paper_doc_ownership_changed` is true.

        :rtype: PaperDocOwnershipChangedType
        """
        if not self.is_paper_doc_ownership_changed():
            raise AttributeError("tag 'paper_doc_ownership_changed' not set")
        return self._value

    def get_paper_doc_request_access(self):
        """
        (paper) Requested access to Paper doc

        Only call this if :meth:`is_paper_doc_request_access` is true.

        :rtype: PaperDocRequestAccessType
        """
        if not self.is_paper_doc_request_access():
            raise AttributeError("tag 'paper_doc_request_access' not set")
        return self._value

    def get_paper_doc_resolve_comment(self):
        """
        (paper) Resolved Paper doc comment

        Only call this if :meth:`is_paper_doc_resolve_comment` is true.

        :rtype: PaperDocResolveCommentType
        """
        if not self.is_paper_doc_resolve_comment():
            raise AttributeError("tag 'paper_doc_resolve_comment' not set")
        return self._value

    def get_paper_doc_revert(self):
        """
        (paper) Restored Paper doc to previous version

        Only call this if :meth:`is_paper_doc_revert` is true.

        :rtype: PaperDocRevertType
        """
        if not self.is_paper_doc_revert():
            raise AttributeError("tag 'paper_doc_revert' not set")
        return self._value

    def get_paper_doc_slack_share(self):
        """
        (paper) Shared Paper doc via Slack

        Only call this if :meth:`is_paper_doc_slack_share` is true.

        :rtype: PaperDocSlackShareType
        """
        if not self.is_paper_doc_slack_share():
            raise AttributeError("tag 'paper_doc_slack_share' not set")
        return self._value

    def get_paper_doc_team_invite(self):
        """
        (paper) Shared Paper doc with team member (deprecated, no longer logged)

        Only call this if :meth:`is_paper_doc_team_invite` is true.

        :rtype: PaperDocTeamInviteType
        """
        if not self.is_paper_doc_team_invite():
            raise AttributeError("tag 'paper_doc_team_invite' not set")
        return self._value

    def get_paper_doc_trashed(self):
        """
        (paper) Deleted Paper doc

        Only call this if :meth:`is_paper_doc_trashed` is true.

        :rtype: PaperDocTrashedType
        """
        if not self.is_paper_doc_trashed():
            raise AttributeError("tag 'paper_doc_trashed' not set")
        return self._value

    def get_paper_doc_unresolve_comment(self):
        """
        (paper) Unresolved Paper doc comment

        Only call this if :meth:`is_paper_doc_unresolve_comment` is true.

        :rtype: PaperDocUnresolveCommentType
        """
        if not self.is_paper_doc_unresolve_comment():
            raise AttributeError("tag 'paper_doc_unresolve_comment' not set")
        return self._value

    def get_paper_doc_untrashed(self):
        """
        (paper) Restored Paper doc

        Only call this if :meth:`is_paper_doc_untrashed` is true.

        :rtype: PaperDocUntrashedType
        """
        if not self.is_paper_doc_untrashed():
            raise AttributeError("tag 'paper_doc_untrashed' not set")
        return self._value

    def get_paper_doc_view(self):
        """
        (paper) Viewed Paper doc

        Only call this if :meth:`is_paper_doc_view` is true.

        :rtype: PaperDocViewType
        """
        if not self.is_paper_doc_view():
            raise AttributeError("tag 'paper_doc_view' not set")
        return self._value

    def get_paper_external_view_allow(self):
        """
        (paper) Changed Paper external sharing setting to anyone (deprecated, no
        longer logged)

        Only call this if :meth:`is_paper_external_view_allow` is true.

        :rtype: PaperExternalViewAllowType
        """
        if not self.is_paper_external_view_allow():
            raise AttributeError("tag 'paper_external_view_allow' not set")
        return self._value

    def get_paper_external_view_default_team(self):
        """
        (paper) Changed Paper external sharing setting to default team
        (deprecated, no longer logged)

        Only call this if :meth:`is_paper_external_view_default_team` is true.

        :rtype: PaperExternalViewDefaultTeamType
        """
        if not self.is_paper_external_view_default_team():
            raise AttributeError("tag 'paper_external_view_default_team' not set")
        return self._value

    def get_paper_external_view_forbid(self):
        """
        (paper) Changed Paper external sharing setting to team-only (deprecated,
        no longer logged)

        Only call this if :meth:`is_paper_external_view_forbid` is true.

        :rtype: PaperExternalViewForbidType
        """
        if not self.is_paper_external_view_forbid():
            raise AttributeError("tag 'paper_external_view_forbid' not set")
        return self._value

    def get_paper_folder_change_subscription(self):
        """
        (paper) Followed/unfollowed Paper folder

        Only call this if :meth:`is_paper_folder_change_subscription` is true.

        :rtype: PaperFolderChangeSubscriptionType
        """
        if not self.is_paper_folder_change_subscription():
            raise AttributeError("tag 'paper_folder_change_subscription' not set")
        return self._value

    def get_paper_folder_deleted(self):
        """
        (paper) Archived Paper folder (deprecated, no longer logged)

        Only call this if :meth:`is_paper_folder_deleted` is true.

        :rtype: PaperFolderDeletedType
        """
        if not self.is_paper_folder_deleted():
            raise AttributeError("tag 'paper_folder_deleted' not set")
        return self._value

    def get_paper_folder_followed(self):
        """
        (paper) Followed Paper folder (deprecated, replaced by
        'Followed/unfollowed Paper folder')

        Only call this if :meth:`is_paper_folder_followed` is true.

        :rtype: PaperFolderFollowedType
        """
        if not self.is_paper_folder_followed():
            raise AttributeError("tag 'paper_folder_followed' not set")
        return self._value

    def get_paper_folder_team_invite(self):
        """
        (paper) Shared Paper folder with member (deprecated, no longer logged)

        Only call this if :meth:`is_paper_folder_team_invite` is true.

        :rtype: PaperFolderTeamInviteType
        """
        if not self.is_paper_folder_team_invite():
            raise AttributeError("tag 'paper_folder_team_invite' not set")
        return self._value

    def get_password_change(self):
        """
        (passwords) Changed password

        Only call this if :meth:`is_password_change` is true.

        :rtype: PasswordChangeType
        """
        if not self.is_password_change():
            raise AttributeError("tag 'password_change' not set")
        return self._value

    def get_password_reset(self):
        """
        (passwords) Reset password

        Only call this if :meth:`is_password_reset` is true.

        :rtype: PasswordResetType
        """
        if not self.is_password_reset():
            raise AttributeError("tag 'password_reset' not set")
        return self._value

    def get_password_reset_all(self):
        """
        (passwords) Reset all team member passwords

        Only call this if :meth:`is_password_reset_all` is true.

        :rtype: PasswordResetAllType
        """
        if not self.is_password_reset_all():
            raise AttributeError("tag 'password_reset_all' not set")
        return self._value

    def get_emm_create_exceptions_report(self):
        """
        (reports) Created EMM-excluded users report

        Only call this if :meth:`is_emm_create_exceptions_report` is true.

        :rtype: EmmCreateExceptionsReportType
        """
        if not self.is_emm_create_exceptions_report():
            raise AttributeError("tag 'emm_create_exceptions_report' not set")
        return self._value

    def get_emm_create_usage_report(self):
        """
        (reports) Created EMM mobile app usage report

        Only call this if :meth:`is_emm_create_usage_report` is true.

        :rtype: EmmCreateUsageReportType
        """
        if not self.is_emm_create_usage_report():
            raise AttributeError("tag 'emm_create_usage_report' not set")
        return self._value

    def get_export_members_report(self):
        """
        (reports) Created member data report

        Only call this if :meth:`is_export_members_report` is true.

        :rtype: ExportMembersReportType
        """
        if not self.is_export_members_report():
            raise AttributeError("tag 'export_members_report' not set")
        return self._value

    def get_paper_admin_export_start(self):
        """
        (reports) Exported all team Paper docs

        Only call this if :meth:`is_paper_admin_export_start` is true.

        :rtype: PaperAdminExportStartType
        """
        if not self.is_paper_admin_export_start():
            raise AttributeError("tag 'paper_admin_export_start' not set")
        return self._value

    def get_smart_sync_create_admin_privilege_report(self):
        """
        (reports) Created Smart Sync non-admin devices report

        Only call this if :meth:`is_smart_sync_create_admin_privilege_report` is true.

        :rtype: SmartSyncCreateAdminPrivilegeReportType
        """
        if not self.is_smart_sync_create_admin_privilege_report():
            raise AttributeError("tag 'smart_sync_create_admin_privilege_report' not set")
        return self._value

    def get_team_activity_create_report(self):
        """
        (reports) Created team activity report

        Only call this if :meth:`is_team_activity_create_report` is true.

        :rtype: TeamActivityCreateReportType
        """
        if not self.is_team_activity_create_report():
            raise AttributeError("tag 'team_activity_create_report' not set")
        return self._value

    def get_collection_share(self):
        """
        (sharing) Shared album

        Only call this if :meth:`is_collection_share` is true.

        :rtype: CollectionShareType
        """
        if not self.is_collection_share():
            raise AttributeError("tag 'collection_share' not set")
        return self._value

    def get_note_acl_invite_only(self):
        """
        (sharing) Changed Paper doc to invite-only (deprecated, no longer
        logged)

        Only call this if :meth:`is_note_acl_invite_only` is true.

        :rtype: NoteAclInviteOnlyType
        """
        if not self.is_note_acl_invite_only():
            raise AttributeError("tag 'note_acl_invite_only' not set")
        return self._value

    def get_note_acl_link(self):
        """
        (sharing) Changed Paper doc to link-accessible (deprecated, no longer
        logged)

        Only call this if :meth:`is_note_acl_link` is true.

        :rtype: NoteAclLinkType
        """
        if not self.is_note_acl_link():
            raise AttributeError("tag 'note_acl_link' not set")
        return self._value

    def get_note_acl_team_link(self):
        """
        (sharing) Changed Paper doc to link-accessible for team (deprecated, no
        longer logged)

        Only call this if :meth:`is_note_acl_team_link` is true.

        :rtype: NoteAclTeamLinkType
        """
        if not self.is_note_acl_team_link():
            raise AttributeError("tag 'note_acl_team_link' not set")
        return self._value

    def get_note_shared(self):
        """
        (sharing) Shared Paper doc (deprecated, no longer logged)

        Only call this if :meth:`is_note_shared` is true.

        :rtype: NoteSharedType
        """
        if not self.is_note_shared():
            raise AttributeError("tag 'note_shared' not set")
        return self._value

    def get_note_share_receive(self):
        """
        (sharing) Shared received Paper doc (deprecated, no longer logged)

        Only call this if :meth:`is_note_share_receive` is true.

        :rtype: NoteShareReceiveType
        """
        if not self.is_note_share_receive():
            raise AttributeError("tag 'note_share_receive' not set")
        return self._value

    def get_open_note_shared(self):
        """
        (sharing) Opened shared Paper doc (deprecated, no longer logged)

        Only call this if :meth:`is_open_note_shared` is true.

        :rtype: OpenNoteSharedType
        """
        if not self.is_open_note_shared():
            raise AttributeError("tag 'open_note_shared' not set")
        return self._value

    def get_sf_add_group(self):
        """
        (sharing) Added team to shared folder (deprecated, no longer logged)

        Only call this if :meth:`is_sf_add_group` is true.

        :rtype: SfAddGroupType
        """
        if not self.is_sf_add_group():
            raise AttributeError("tag 'sf_add_group' not set")
        return self._value

    def get_sf_allow_non_members_to_view_shared_links(self):
        """
        (sharing) Allowed non-collaborators to view links to files in shared
        folder (deprecated, no longer logged)

        Only call this if :meth:`is_sf_allow_non_members_to_view_shared_links` is true.

        :rtype: SfAllowNonMembersToViewSharedLinksType
        """
        if not self.is_sf_allow_non_members_to_view_shared_links():
            raise AttributeError("tag 'sf_allow_non_members_to_view_shared_links' not set")
        return self._value

    def get_sf_external_invite_warn(self):
        """
        (sharing) Set team members to see warning before sharing folders outside
        team (deprecated, no longer logged)

        Only call this if :meth:`is_sf_external_invite_warn` is true.

        :rtype: SfExternalInviteWarnType
        """
        if not self.is_sf_external_invite_warn():
            raise AttributeError("tag 'sf_external_invite_warn' not set")
        return self._value

    def get_sf_fb_invite(self):
        """
        (sharing) Invited Facebook users to shared folder (deprecated, no longer
        logged)

        Only call this if :meth:`is_sf_fb_invite` is true.

        :rtype: SfFbInviteType
        """
        if not self.is_sf_fb_invite():
            raise AttributeError("tag 'sf_fb_invite' not set")
        return self._value

    def get_sf_fb_invite_change_role(self):
        """
        (sharing) Changed Facebook user's role in shared folder (deprecated, no
        longer logged)

        Only call this if :meth:`is_sf_fb_invite_change_role` is true.

        :rtype: SfFbInviteChangeRoleType
        """
        if not self.is_sf_fb_invite_change_role():
            raise AttributeError("tag 'sf_fb_invite_change_role' not set")
        return self._value

    def get_sf_fb_uninvite(self):
        """
        (sharing) Uninvited Facebook user from shared folder (deprecated, no
        longer logged)

        Only call this if :meth:`is_sf_fb_uninvite` is true.

        :rtype: SfFbUninviteType
        """
        if not self.is_sf_fb_uninvite():
            raise AttributeError("tag 'sf_fb_uninvite' not set")
        return self._value

    def get_sf_invite_group(self):
        """
        (sharing) Invited group to shared folder (deprecated, no longer logged)

        Only call this if :meth:`is_sf_invite_group` is true.

        :rtype: SfInviteGroupType
        """
        if not self.is_sf_invite_group():
            raise AttributeError("tag 'sf_invite_group' not set")
        return self._value

    def get_sf_team_grant_access(self):
        """
        (sharing) Granted access to shared folder (deprecated, no longer logged)

        Only call this if :meth:`is_sf_team_grant_access` is true.

        :rtype: SfTeamGrantAccessType
        """
        if not self.is_sf_team_grant_access():
            raise AttributeError("tag 'sf_team_grant_access' not set")
        return self._value

    def get_sf_team_invite(self):
        """
        (sharing) Invited team members to shared folder (deprecated, replaced by
        'Invited user to Dropbox and added them to shared file/folder')

        Only call this if :meth:`is_sf_team_invite` is true.

        :rtype: SfTeamInviteType
        """
        if not self.is_sf_team_invite():
            raise AttributeError("tag 'sf_team_invite' not set")
        return self._value

    def get_sf_team_invite_change_role(self):
        """
        (sharing) Changed team member's role in shared folder (deprecated, no
        longer logged)

        Only call this if :meth:`is_sf_team_invite_change_role` is true.

        :rtype: SfTeamInviteChangeRoleType
        """
        if not self.is_sf_team_invite_change_role():
            raise AttributeError("tag 'sf_team_invite_change_role' not set")
        return self._value

    def get_sf_team_join(self):
        """
        (sharing) Joined team member's shared folder (deprecated, no longer
        logged)

        Only call this if :meth:`is_sf_team_join` is true.

        :rtype: SfTeamJoinType
        """
        if not self.is_sf_team_join():
            raise AttributeError("tag 'sf_team_join' not set")
        return self._value

    def get_sf_team_join_from_oob_link(self):
        """
        (sharing) Joined team member's shared folder from link (deprecated, no
        longer logged)

        Only call this if :meth:`is_sf_team_join_from_oob_link` is true.

        :rtype: SfTeamJoinFromOobLinkType
        """
        if not self.is_sf_team_join_from_oob_link():
            raise AttributeError("tag 'sf_team_join_from_oob_link' not set")
        return self._value

    def get_sf_team_uninvite(self):
        """
        (sharing) Unshared folder with team member (deprecated, replaced by
        'Removed invitee from shared file/folder before invite was accepted')

        Only call this if :meth:`is_sf_team_uninvite` is true.

        :rtype: SfTeamUninviteType
        """
        if not self.is_sf_team_uninvite():
            raise AttributeError("tag 'sf_team_uninvite' not set")
        return self._value

    def get_shared_content_add_invitees(self):
        """
        (sharing) Invited user to Dropbox and added them to shared file/folder

        Only call this if :meth:`is_shared_content_add_invitees` is true.

        :rtype: SharedContentAddInviteesType
        """
        if not self.is_shared_content_add_invitees():
            raise AttributeError("tag 'shared_content_add_invitees' not set")
        return self._value

    def get_shared_content_add_link_expiry(self):
        """
        (sharing) Added expiration date to link for shared file/folder

        Only call this if :meth:`is_shared_content_add_link_expiry` is true.

        :rtype: SharedContentAddLinkExpiryType
        """
        if not self.is_shared_content_add_link_expiry():
            raise AttributeError("tag 'shared_content_add_link_expiry' not set")
        return self._value

    def get_shared_content_add_link_password(self):
        """
        (sharing) Added password to link for shared file/folder

        Only call this if :meth:`is_shared_content_add_link_password` is true.

        :rtype: SharedContentAddLinkPasswordType
        """
        if not self.is_shared_content_add_link_password():
            raise AttributeError("tag 'shared_content_add_link_password' not set")
        return self._value

    def get_shared_content_add_member(self):
        """
        (sharing) Added users and/or groups to shared file/folder

        Only call this if :meth:`is_shared_content_add_member` is true.

        :rtype: SharedContentAddMemberType
        """
        if not self.is_shared_content_add_member():
            raise AttributeError("tag 'shared_content_add_member' not set")
        return self._value

    def get_shared_content_change_downloads_policy(self):
        """
        (sharing) Changed whether members can download shared file/folder

        Only call this if :meth:`is_shared_content_change_downloads_policy` is true.

        :rtype: SharedContentChangeDownloadsPolicyType
        """
        if not self.is_shared_content_change_downloads_policy():
            raise AttributeError("tag 'shared_content_change_downloads_policy' not set")
        return self._value

    def get_shared_content_change_invitee_role(self):
        """
        (sharing) Changed access type of invitee to shared file/folder before
        invite was accepted

        Only call this if :meth:`is_shared_content_change_invitee_role` is true.

        :rtype: SharedContentChangeInviteeRoleType
        """
        if not self.is_shared_content_change_invitee_role():
            raise AttributeError("tag 'shared_content_change_invitee_role' not set")
        return self._value

    def get_shared_content_change_link_audience(self):
        """
        (sharing) Changed link audience of shared file/folder

        Only call this if :meth:`is_shared_content_change_link_audience` is true.

        :rtype: SharedContentChangeLinkAudienceType
        """
        if not self.is_shared_content_change_link_audience():
            raise AttributeError("tag 'shared_content_change_link_audience' not set")
        return self._value

    def get_shared_content_change_link_expiry(self):
        """
        (sharing) Changed link expiration of shared file/folder

        Only call this if :meth:`is_shared_content_change_link_expiry` is true.

        :rtype: SharedContentChangeLinkExpiryType
        """
        if not self.is_shared_content_change_link_expiry():
            raise AttributeError("tag 'shared_content_change_link_expiry' not set")
        return self._value

    def get_shared_content_change_link_password(self):
        """
        (sharing) Changed link password of shared file/folder

        Only call this if :meth:`is_shared_content_change_link_password` is true.

        :rtype: SharedContentChangeLinkPasswordType
        """
        if not self.is_shared_content_change_link_password():
            raise AttributeError("tag 'shared_content_change_link_password' not set")
        return self._value

    def get_shared_content_change_member_role(self):
        """
        (sharing) Changed access type of shared file/folder member

        Only call this if :meth:`is_shared_content_change_member_role` is true.

        :rtype: SharedContentChangeMemberRoleType
        """
        if not self.is_shared_content_change_member_role():
            raise AttributeError("tag 'shared_content_change_member_role' not set")
        return self._value

    def get_shared_content_change_viewer_info_policy(self):
        """
        (sharing) Changed whether members can see who viewed shared file/folder

        Only call this if :meth:`is_shared_content_change_viewer_info_policy` is true.

        :rtype: SharedContentChangeViewerInfoPolicyType
        """
        if not self.is_shared_content_change_viewer_info_policy():
            raise AttributeError("tag 'shared_content_change_viewer_info_policy' not set")
        return self._value

    def get_shared_content_claim_invitation(self):
        """
        (sharing) Acquired membership of shared file/folder by accepting invite

        Only call this if :meth:`is_shared_content_claim_invitation` is true.

        :rtype: SharedContentClaimInvitationType
        """
        if not self.is_shared_content_claim_invitation():
            raise AttributeError("tag 'shared_content_claim_invitation' not set")
        return self._value

    def get_shared_content_copy(self):
        """
        (sharing) Copied shared file/folder to own Dropbox

        Only call this if :meth:`is_shared_content_copy` is true.

        :rtype: SharedContentCopyType
        """
        if not self.is_shared_content_copy():
            raise AttributeError("tag 'shared_content_copy' not set")
        return self._value

    def get_shared_content_download(self):
        """
        (sharing) Downloaded shared file/folder

        Only call this if :meth:`is_shared_content_download` is true.

        :rtype: SharedContentDownloadType
        """
        if not self.is_shared_content_download():
            raise AttributeError("tag 'shared_content_download' not set")
        return self._value

    def get_shared_content_relinquish_membership(self):
        """
        (sharing) Left shared file/folder

        Only call this if :meth:`is_shared_content_relinquish_membership` is true.

        :rtype: SharedContentRelinquishMembershipType
        """
        if not self.is_shared_content_relinquish_membership():
            raise AttributeError("tag 'shared_content_relinquish_membership' not set")
        return self._value

    def get_shared_content_remove_invitees(self):
        """
        (sharing) Removed invitee from shared file/folder before invite was
        accepted

        Only call this if :meth:`is_shared_content_remove_invitees` is true.

        :rtype: SharedContentRemoveInviteesType
        """
        if not self.is_shared_content_remove_invitees():
            raise AttributeError("tag 'shared_content_remove_invitees' not set")
        return self._value

    def get_shared_content_remove_link_expiry(self):
        """
        (sharing) Removed link expiration date of shared file/folder

        Only call this if :meth:`is_shared_content_remove_link_expiry` is true.

        :rtype: SharedContentRemoveLinkExpiryType
        """
        if not self.is_shared_content_remove_link_expiry():
            raise AttributeError("tag 'shared_content_remove_link_expiry' not set")
        return self._value

    def get_shared_content_remove_link_password(self):
        """
        (sharing) Removed link password of shared file/folder

        Only call this if :meth:`is_shared_content_remove_link_password` is true.

        :rtype: SharedContentRemoveLinkPasswordType
        """
        if not self.is_shared_content_remove_link_password():
            raise AttributeError("tag 'shared_content_remove_link_password' not set")
        return self._value

    def get_shared_content_remove_member(self):
        """
        (sharing) Removed user/group from shared file/folder

        Only call this if :meth:`is_shared_content_remove_member` is true.

        :rtype: SharedContentRemoveMemberType
        """
        if not self.is_shared_content_remove_member():
            raise AttributeError("tag 'shared_content_remove_member' not set")
        return self._value

    def get_shared_content_request_access(self):
        """
        (sharing) Requested access to shared file/folder

        Only call this if :meth:`is_shared_content_request_access` is true.

        :rtype: SharedContentRequestAccessType
        """
        if not self.is_shared_content_request_access():
            raise AttributeError("tag 'shared_content_request_access' not set")
        return self._value

    def get_shared_content_unshare(self):
        """
        (sharing) Unshared file/folder by clearing membership and turning off
        link

        Only call this if :meth:`is_shared_content_unshare` is true.

        :rtype: SharedContentUnshareType
        """
        if not self.is_shared_content_unshare():
            raise AttributeError("tag 'shared_content_unshare' not set")
        return self._value

    def get_shared_content_view(self):
        """
        (sharing) Previewed shared file/folder

        Only call this if :meth:`is_shared_content_view` is true.

        :rtype: SharedContentViewType
        """
        if not self.is_shared_content_view():
            raise AttributeError("tag 'shared_content_view' not set")
        return self._value

    def get_shared_folder_change_link_policy(self):
        """
        (sharing) Changed who can access shared folder via link

        Only call this if :meth:`is_shared_folder_change_link_policy` is true.

        :rtype: SharedFolderChangeLinkPolicyType
        """
        if not self.is_shared_folder_change_link_policy():
            raise AttributeError("tag 'shared_folder_change_link_policy' not set")
        return self._value

    def get_shared_folder_change_members_inheritance_policy(self):
        """
        (sharing) Changed whether shared folder inherits members from parent
        folder

        Only call this if :meth:`is_shared_folder_change_members_inheritance_policy` is true.

        :rtype: SharedFolderChangeMembersInheritancePolicyType
        """
        if not self.is_shared_folder_change_members_inheritance_policy():
            raise AttributeError("tag 'shared_folder_change_members_inheritance_policy' not set")
        return self._value

    def get_shared_folder_change_members_management_policy(self):
        """
        (sharing) Changed who can add/remove members of shared folder

        Only call this if :meth:`is_shared_folder_change_members_management_policy` is true.

        :rtype: SharedFolderChangeMembersManagementPolicyType
        """
        if not self.is_shared_folder_change_members_management_policy():
            raise AttributeError("tag 'shared_folder_change_members_management_policy' not set")
        return self._value

    def get_shared_folder_change_members_policy(self):
        """
        (sharing) Changed who can become member of shared folder

        Only call this if :meth:`is_shared_folder_change_members_policy` is true.

        :rtype: SharedFolderChangeMembersPolicyType
        """
        if not self.is_shared_folder_change_members_policy():
            raise AttributeError("tag 'shared_folder_change_members_policy' not set")
        return self._value

    def get_shared_folder_create(self):
        """
        (sharing) Created shared folder

        Only call this if :meth:`is_shared_folder_create` is true.

        :rtype: SharedFolderCreateType
        """
        if not self.is_shared_folder_create():
            raise AttributeError("tag 'shared_folder_create' not set")
        return self._value

    def get_shared_folder_decline_invitation(self):
        """
        (sharing) Declined team member's invite to shared folder

        Only call this if :meth:`is_shared_folder_decline_invitation` is true.

        :rtype: SharedFolderDeclineInvitationType
        """
        if not self.is_shared_folder_decline_invitation():
            raise AttributeError("tag 'shared_folder_decline_invitation' not set")
        return self._value

    def get_shared_folder_mount(self):
        """
        (sharing) Added shared folder to own Dropbox

        Only call this if :meth:`is_shared_folder_mount` is true.

        :rtype: SharedFolderMountType
        """
        if not self.is_shared_folder_mount():
            raise AttributeError("tag 'shared_folder_mount' not set")
        return self._value

    def get_shared_folder_nest(self):
        """
        (sharing) Changed parent of shared folder

        Only call this if :meth:`is_shared_folder_nest` is true.

        :rtype: SharedFolderNestType
        """
        if not self.is_shared_folder_nest():
            raise AttributeError("tag 'shared_folder_nest' not set")
        return self._value

    def get_shared_folder_transfer_ownership(self):
        """
        (sharing) Transferred ownership of shared folder to another member

        Only call this if :meth:`is_shared_folder_transfer_ownership` is true.

        :rtype: SharedFolderTransferOwnershipType
        """
        if not self.is_shared_folder_transfer_ownership():
            raise AttributeError("tag 'shared_folder_transfer_ownership' not set")
        return self._value

    def get_shared_folder_unmount(self):
        """
        (sharing) Deleted shared folder from Dropbox

        Only call this if :meth:`is_shared_folder_unmount` is true.

        :rtype: SharedFolderUnmountType
        """
        if not self.is_shared_folder_unmount():
            raise AttributeError("tag 'shared_folder_unmount' not set")
        return self._value

    def get_shared_link_add_expiry(self):
        """
        (sharing) Added shared link expiration date

        Only call this if :meth:`is_shared_link_add_expiry` is true.

        :rtype: SharedLinkAddExpiryType
        """
        if not self.is_shared_link_add_expiry():
            raise AttributeError("tag 'shared_link_add_expiry' not set")
        return self._value

    def get_shared_link_change_expiry(self):
        """
        (sharing) Changed shared link expiration date

        Only call this if :meth:`is_shared_link_change_expiry` is true.

        :rtype: SharedLinkChangeExpiryType
        """
        if not self.is_shared_link_change_expiry():
            raise AttributeError("tag 'shared_link_change_expiry' not set")
        return self._value

    def get_shared_link_change_visibility(self):
        """
        (sharing) Changed visibility of shared link

        Only call this if :meth:`is_shared_link_change_visibility` is true.

        :rtype: SharedLinkChangeVisibilityType
        """
        if not self.is_shared_link_change_visibility():
            raise AttributeError("tag 'shared_link_change_visibility' not set")
        return self._value

    def get_shared_link_copy(self):
        """
        (sharing) Added file/folder to Dropbox from shared link

        Only call this if :meth:`is_shared_link_copy` is true.

        :rtype: SharedLinkCopyType
        """
        if not self.is_shared_link_copy():
            raise AttributeError("tag 'shared_link_copy' not set")
        return self._value

    def get_shared_link_create(self):
        """
        (sharing) Created shared link

        Only call this if :meth:`is_shared_link_create` is true.

        :rtype: SharedLinkCreateType
        """
        if not self.is_shared_link_create():
            raise AttributeError("tag 'shared_link_create' not set")
        return self._value

    def get_shared_link_disable(self):
        """
        (sharing) Removed shared link

        Only call this if :meth:`is_shared_link_disable` is true.

        :rtype: SharedLinkDisableType
        """
        if not self.is_shared_link_disable():
            raise AttributeError("tag 'shared_link_disable' not set")
        return self._value

    def get_shared_link_download(self):
        """
        (sharing) Downloaded file/folder from shared link

        Only call this if :meth:`is_shared_link_download` is true.

        :rtype: SharedLinkDownloadType
        """
        if not self.is_shared_link_download():
            raise AttributeError("tag 'shared_link_download' not set")
        return self._value

    def get_shared_link_remove_expiry(self):
        """
        (sharing) Removed shared link expiration date

        Only call this if :meth:`is_shared_link_remove_expiry` is true.

        :rtype: SharedLinkRemoveExpiryType
        """
        if not self.is_shared_link_remove_expiry():
            raise AttributeError("tag 'shared_link_remove_expiry' not set")
        return self._value

    def get_shared_link_share(self):
        """
        (sharing) Added members as audience of shared link

        Only call this if :meth:`is_shared_link_share` is true.

        :rtype: SharedLinkShareType
        """
        if not self.is_shared_link_share():
            raise AttributeError("tag 'shared_link_share' not set")
        return self._value

    def get_shared_link_view(self):
        """
        (sharing) Opened shared link

        Only call this if :meth:`is_shared_link_view` is true.

        :rtype: SharedLinkViewType
        """
        if not self.is_shared_link_view():
            raise AttributeError("tag 'shared_link_view' not set")
        return self._value

    def get_shared_note_opened(self):
        """
        (sharing) Opened shared Paper doc (deprecated, no longer logged)

        Only call this if :meth:`is_shared_note_opened` is true.

        :rtype: SharedNoteOpenedType
        """
        if not self.is_shared_note_opened():
            raise AttributeError("tag 'shared_note_opened' not set")
        return self._value

    def get_shmodel_group_share(self):
        """
        (sharing) Shared link with group (deprecated, no longer logged)

        Only call this if :meth:`is_shmodel_group_share` is true.

        :rtype: ShmodelGroupShareType
        """
        if not self.is_shmodel_group_share():
            raise AttributeError("tag 'shmodel_group_share' not set")
        return self._value

    def get_showcase_access_granted(self):
        """
        (showcase) Granted access to showcase

        Only call this if :meth:`is_showcase_access_granted` is true.

        :rtype: ShowcaseAccessGrantedType
        """
        if not self.is_showcase_access_granted():
            raise AttributeError("tag 'showcase_access_granted' not set")
        return self._value

    def get_showcase_add_member(self):
        """
        (showcase) Added member to showcase

        Only call this if :meth:`is_showcase_add_member` is true.

        :rtype: ShowcaseAddMemberType
        """
        if not self.is_showcase_add_member():
            raise AttributeError("tag 'showcase_add_member' not set")
        return self._value

    def get_showcase_archived(self):
        """
        (showcase) Archived showcase

        Only call this if :meth:`is_showcase_archived` is true.

        :rtype: ShowcaseArchivedType
        """
        if not self.is_showcase_archived():
            raise AttributeError("tag 'showcase_archived' not set")
        return self._value

    def get_showcase_created(self):
        """
        (showcase) Created showcase

        Only call this if :meth:`is_showcase_created` is true.

        :rtype: ShowcaseCreatedType
        """
        if not self.is_showcase_created():
            raise AttributeError("tag 'showcase_created' not set")
        return self._value

    def get_showcase_delete_comment(self):
        """
        (showcase) Deleted showcase comment

        Only call this if :meth:`is_showcase_delete_comment` is true.

        :rtype: ShowcaseDeleteCommentType
        """
        if not self.is_showcase_delete_comment():
            raise AttributeError("tag 'showcase_delete_comment' not set")
        return self._value

    def get_showcase_edited(self):
        """
        (showcase) Edited showcase

        Only call this if :meth:`is_showcase_edited` is true.

        :rtype: ShowcaseEditedType
        """
        if not self.is_showcase_edited():
            raise AttributeError("tag 'showcase_edited' not set")
        return self._value

    def get_showcase_edit_comment(self):
        """
        (showcase) Edited showcase comment

        Only call this if :meth:`is_showcase_edit_comment` is true.

        :rtype: ShowcaseEditCommentType
        """
        if not self.is_showcase_edit_comment():
            raise AttributeError("tag 'showcase_edit_comment' not set")
        return self._value

    def get_showcase_file_added(self):
        """
        (showcase) Added file to showcase

        Only call this if :meth:`is_showcase_file_added` is true.

        :rtype: ShowcaseFileAddedType
        """
        if not self.is_showcase_file_added():
            raise AttributeError("tag 'showcase_file_added' not set")
        return self._value

    def get_showcase_file_download(self):
        """
        (showcase) Downloaded file from showcase

        Only call this if :meth:`is_showcase_file_download` is true.

        :rtype: ShowcaseFileDownloadType
        """
        if not self.is_showcase_file_download():
            raise AttributeError("tag 'showcase_file_download' not set")
        return self._value

    def get_showcase_file_removed(self):
        """
        (showcase) Removed file from showcase

        Only call this if :meth:`is_showcase_file_removed` is true.

        :rtype: ShowcaseFileRemovedType
        """
        if not self.is_showcase_file_removed():
            raise AttributeError("tag 'showcase_file_removed' not set")
        return self._value

    def get_showcase_file_view(self):
        """
        (showcase) Viewed file in showcase

        Only call this if :meth:`is_showcase_file_view` is true.

        :rtype: ShowcaseFileViewType
        """
        if not self.is_showcase_file_view():
            raise AttributeError("tag 'showcase_file_view' not set")
        return self._value

    def get_showcase_permanently_deleted(self):
        """
        (showcase) Permanently deleted showcase

        Only call this if :meth:`is_showcase_permanently_deleted` is true.

        :rtype: ShowcasePermanentlyDeletedType
        """
        if not self.is_showcase_permanently_deleted():
            raise AttributeError("tag 'showcase_permanently_deleted' not set")
        return self._value

    def get_showcase_post_comment(self):
        """
        (showcase) Added showcase comment

        Only call this if :meth:`is_showcase_post_comment` is true.

        :rtype: ShowcasePostCommentType
        """
        if not self.is_showcase_post_comment():
            raise AttributeError("tag 'showcase_post_comment' not set")
        return self._value

    def get_showcase_remove_member(self):
        """
        (showcase) Removed member from showcase

        Only call this if :meth:`is_showcase_remove_member` is true.

        :rtype: ShowcaseRemoveMemberType
        """
        if not self.is_showcase_remove_member():
            raise AttributeError("tag 'showcase_remove_member' not set")
        return self._value

    def get_showcase_renamed(self):
        """
        (showcase) Renamed showcase

        Only call this if :meth:`is_showcase_renamed` is true.

        :rtype: ShowcaseRenamedType
        """
        if not self.is_showcase_renamed():
            raise AttributeError("tag 'showcase_renamed' not set")
        return self._value

    def get_showcase_request_access(self):
        """
        (showcase) Requested access to showcase

        Only call this if :meth:`is_showcase_request_access` is true.

        :rtype: ShowcaseRequestAccessType
        """
        if not self.is_showcase_request_access():
            raise AttributeError("tag 'showcase_request_access' not set")
        return self._value

    def get_showcase_resolve_comment(self):
        """
        (showcase) Resolved showcase comment

        Only call this if :meth:`is_showcase_resolve_comment` is true.

        :rtype: ShowcaseResolveCommentType
        """
        if not self.is_showcase_resolve_comment():
            raise AttributeError("tag 'showcase_resolve_comment' not set")
        return self._value

    def get_showcase_restored(self):
        """
        (showcase) Unarchived showcase

        Only call this if :meth:`is_showcase_restored` is true.

        :rtype: ShowcaseRestoredType
        """
        if not self.is_showcase_restored():
            raise AttributeError("tag 'showcase_restored' not set")
        return self._value

    def get_showcase_trashed(self):
        """
        (showcase) Deleted showcase

        Only call this if :meth:`is_showcase_trashed` is true.

        :rtype: ShowcaseTrashedType
        """
        if not self.is_showcase_trashed():
            raise AttributeError("tag 'showcase_trashed' not set")
        return self._value

    def get_showcase_trashed_deprecated(self):
        """
        (showcase) Deleted showcase (old version) (deprecated, replaced by
        'Deleted showcase')

        Only call this if :meth:`is_showcase_trashed_deprecated` is true.

        :rtype: ShowcaseTrashedDeprecatedType
        """
        if not self.is_showcase_trashed_deprecated():
            raise AttributeError("tag 'showcase_trashed_deprecated' not set")
        return self._value

    def get_showcase_unresolve_comment(self):
        """
        (showcase) Unresolved showcase comment

        Only call this if :meth:`is_showcase_unresolve_comment` is true.

        :rtype: ShowcaseUnresolveCommentType
        """
        if not self.is_showcase_unresolve_comment():
            raise AttributeError("tag 'showcase_unresolve_comment' not set")
        return self._value

    def get_showcase_untrashed(self):
        """
        (showcase) Restored showcase

        Only call this if :meth:`is_showcase_untrashed` is true.

        :rtype: ShowcaseUntrashedType
        """
        if not self.is_showcase_untrashed():
            raise AttributeError("tag 'showcase_untrashed' not set")
        return self._value

    def get_showcase_untrashed_deprecated(self):
        """
        (showcase) Restored showcase (old version) (deprecated, replaced by
        'Restored showcase')

        Only call this if :meth:`is_showcase_untrashed_deprecated` is true.

        :rtype: ShowcaseUntrashedDeprecatedType
        """
        if not self.is_showcase_untrashed_deprecated():
            raise AttributeError("tag 'showcase_untrashed_deprecated' not set")
        return self._value

    def get_showcase_view(self):
        """
        (showcase) Viewed showcase

        Only call this if :meth:`is_showcase_view` is true.

        :rtype: ShowcaseViewType
        """
        if not self.is_showcase_view():
            raise AttributeError("tag 'showcase_view' not set")
        return self._value

    def get_sso_add_cert(self):
        """
        (sso) Added X.509 certificate for SSO

        Only call this if :meth:`is_sso_add_cert` is true.

        :rtype: SsoAddCertType
        """
        if not self.is_sso_add_cert():
            raise AttributeError("tag 'sso_add_cert' not set")
        return self._value

    def get_sso_add_login_url(self):
        """
        (sso) Added sign-in URL for SSO

        Only call this if :meth:`is_sso_add_login_url` is true.

        :rtype: SsoAddLoginUrlType
        """
        if not self.is_sso_add_login_url():
            raise AttributeError("tag 'sso_add_login_url' not set")
        return self._value

    def get_sso_add_logout_url(self):
        """
        (sso) Added sign-out URL for SSO

        Only call this if :meth:`is_sso_add_logout_url` is true.

        :rtype: SsoAddLogoutUrlType
        """
        if not self.is_sso_add_logout_url():
            raise AttributeError("tag 'sso_add_logout_url' not set")
        return self._value

    def get_sso_change_cert(self):
        """
        (sso) Changed X.509 certificate for SSO

        Only call this if :meth:`is_sso_change_cert` is true.

        :rtype: SsoChangeCertType
        """
        if not self.is_sso_change_cert():
            raise AttributeError("tag 'sso_change_cert' not set")
        return self._value

    def get_sso_change_login_url(self):
        """
        (sso) Changed sign-in URL for SSO

        Only call this if :meth:`is_sso_change_login_url` is true.

        :rtype: SsoChangeLoginUrlType
        """
        if not self.is_sso_change_login_url():
            raise AttributeError("tag 'sso_change_login_url' not set")
        return self._value

    def get_sso_change_logout_url(self):
        """
        (sso) Changed sign-out URL for SSO

        Only call this if :meth:`is_sso_change_logout_url` is true.

        :rtype: SsoChangeLogoutUrlType
        """
        if not self.is_sso_change_logout_url():
            raise AttributeError("tag 'sso_change_logout_url' not set")
        return self._value

    def get_sso_change_saml_identity_mode(self):
        """
        (sso) Changed SAML identity mode for SSO

        Only call this if :meth:`is_sso_change_saml_identity_mode` is true.

        :rtype: SsoChangeSamlIdentityModeType
        """
        if not self.is_sso_change_saml_identity_mode():
            raise AttributeError("tag 'sso_change_saml_identity_mode' not set")
        return self._value

    def get_sso_remove_cert(self):
        """
        (sso) Removed X.509 certificate for SSO

        Only call this if :meth:`is_sso_remove_cert` is true.

        :rtype: SsoRemoveCertType
        """
        if not self.is_sso_remove_cert():
            raise AttributeError("tag 'sso_remove_cert' not set")
        return self._value

    def get_sso_remove_login_url(self):
        """
        (sso) Removed sign-in URL for SSO

        Only call this if :meth:`is_sso_remove_login_url` is true.

        :rtype: SsoRemoveLoginUrlType
        """
        if not self.is_sso_remove_login_url():
            raise AttributeError("tag 'sso_remove_login_url' not set")
        return self._value

    def get_sso_remove_logout_url(self):
        """
        (sso) Removed sign-out URL for SSO

        Only call this if :meth:`is_sso_remove_logout_url` is true.

        :rtype: SsoRemoveLogoutUrlType
        """
        if not self.is_sso_remove_logout_url():
            raise AttributeError("tag 'sso_remove_logout_url' not set")
        return self._value

    def get_team_folder_change_status(self):
        """
        (team_folders) Changed archival status of team folder

        Only call this if :meth:`is_team_folder_change_status` is true.

        :rtype: TeamFolderChangeStatusType
        """
        if not self.is_team_folder_change_status():
            raise AttributeError("tag 'team_folder_change_status' not set")
        return self._value

    def get_team_folder_create(self):
        """
        (team_folders) Created team folder in active status

        Only call this if :meth:`is_team_folder_create` is true.

        :rtype: TeamFolderCreateType
        """
        if not self.is_team_folder_create():
            raise AttributeError("tag 'team_folder_create' not set")
        return self._value

    def get_team_folder_downgrade(self):
        """
        (team_folders) Downgraded team folder to regular shared folder

        Only call this if :meth:`is_team_folder_downgrade` is true.

        :rtype: TeamFolderDowngradeType
        """
        if not self.is_team_folder_downgrade():
            raise AttributeError("tag 'team_folder_downgrade' not set")
        return self._value

    def get_team_folder_permanently_delete(self):
        """
        (team_folders) Permanently deleted archived team folder

        Only call this if :meth:`is_team_folder_permanently_delete` is true.

        :rtype: TeamFolderPermanentlyDeleteType
        """
        if not self.is_team_folder_permanently_delete():
            raise AttributeError("tag 'team_folder_permanently_delete' not set")
        return self._value

    def get_team_folder_rename(self):
        """
        (team_folders) Renamed active/archived team folder

        Only call this if :meth:`is_team_folder_rename` is true.

        :rtype: TeamFolderRenameType
        """
        if not self.is_team_folder_rename():
            raise AttributeError("tag 'team_folder_rename' not set")
        return self._value

    def get_team_selective_sync_settings_changed(self):
        """
        (team_folders) Changed sync default

        Only call this if :meth:`is_team_selective_sync_settings_changed` is true.

        :rtype: TeamSelectiveSyncSettingsChangedType
        """
        if not self.is_team_selective_sync_settings_changed():
            raise AttributeError("tag 'team_selective_sync_settings_changed' not set")
        return self._value

    def get_account_capture_change_policy(self):
        """
        (team_policies) Changed account capture setting on team domain

        Only call this if :meth:`is_account_capture_change_policy` is true.

        :rtype: AccountCaptureChangePolicyType
        """
        if not self.is_account_capture_change_policy():
            raise AttributeError("tag 'account_capture_change_policy' not set")
        return self._value

    def get_allow_download_disabled(self):
        """
        (team_policies) Disabled downloads (deprecated, no longer logged)

        Only call this if :meth:`is_allow_download_disabled` is true.

        :rtype: AllowDownloadDisabledType
        """
        if not self.is_allow_download_disabled():
            raise AttributeError("tag 'allow_download_disabled' not set")
        return self._value

    def get_allow_download_enabled(self):
        """
        (team_policies) Enabled downloads (deprecated, no longer logged)

        Only call this if :meth:`is_allow_download_enabled` is true.

        :rtype: AllowDownloadEnabledType
        """
        if not self.is_allow_download_enabled():
            raise AttributeError("tag 'allow_download_enabled' not set")
        return self._value

    def get_camera_uploads_policy_changed(self):
        """
        (team_policies) Changed camera uploads setting for team

        Only call this if :meth:`is_camera_uploads_policy_changed` is true.

        :rtype: CameraUploadsPolicyChangedType
        """
        if not self.is_camera_uploads_policy_changed():
            raise AttributeError("tag 'camera_uploads_policy_changed' not set")
        return self._value

    def get_data_placement_restriction_change_policy(self):
        """
        (team_policies) Set restrictions on data center locations where team
        data resides

        Only call this if :meth:`is_data_placement_restriction_change_policy` is true.

        :rtype: DataPlacementRestrictionChangePolicyType
        """
        if not self.is_data_placement_restriction_change_policy():
            raise AttributeError("tag 'data_placement_restriction_change_policy' not set")
        return self._value

    def get_data_placement_restriction_satisfy_policy(self):
        """
        (team_policies) Completed restrictions on data center locations where
        team data resides

        Only call this if :meth:`is_data_placement_restriction_satisfy_policy` is true.

        :rtype: DataPlacementRestrictionSatisfyPolicyType
        """
        if not self.is_data_placement_restriction_satisfy_policy():
            raise AttributeError("tag 'data_placement_restriction_satisfy_policy' not set")
        return self._value

    def get_device_approvals_change_desktop_policy(self):
        """
        (team_policies) Set/removed limit on number of computers member can link
        to team Dropbox account

        Only call this if :meth:`is_device_approvals_change_desktop_policy` is true.

        :rtype: DeviceApprovalsChangeDesktopPolicyType
        """
        if not self.is_device_approvals_change_desktop_policy():
            raise AttributeError("tag 'device_approvals_change_desktop_policy' not set")
        return self._value

    def get_device_approvals_change_mobile_policy(self):
        """
        (team_policies) Set/removed limit on number of mobile devices member can
        link to team Dropbox account

        Only call this if :meth:`is_device_approvals_change_mobile_policy` is true.

        :rtype: DeviceApprovalsChangeMobilePolicyType
        """
        if not self.is_device_approvals_change_mobile_policy():
            raise AttributeError("tag 'device_approvals_change_mobile_policy' not set")
        return self._value

    def get_device_approvals_change_overage_action(self):
        """
        (team_policies) Changed device approvals setting when member is over
        limit

        Only call this if :meth:`is_device_approvals_change_overage_action` is true.

        :rtype: DeviceApprovalsChangeOverageActionType
        """
        if not self.is_device_approvals_change_overage_action():
            raise AttributeError("tag 'device_approvals_change_overage_action' not set")
        return self._value

    def get_device_approvals_change_unlink_action(self):
        """
        (team_policies) Changed device approvals setting when member unlinks
        approved device

        Only call this if :meth:`is_device_approvals_change_unlink_action` is true.

        :rtype: DeviceApprovalsChangeUnlinkActionType
        """
        if not self.is_device_approvals_change_unlink_action():
            raise AttributeError("tag 'device_approvals_change_unlink_action' not set")
        return self._value

    def get_directory_restrictions_add_members(self):
        """
        (team_policies) Added members to directory restrictions list

        Only call this if :meth:`is_directory_restrictions_add_members` is true.

        :rtype: DirectoryRestrictionsAddMembersType
        """
        if not self.is_directory_restrictions_add_members():
            raise AttributeError("tag 'directory_restrictions_add_members' not set")
        return self._value

    def get_directory_restrictions_remove_members(self):
        """
        (team_policies) Removed members from directory restrictions list

        Only call this if :meth:`is_directory_restrictions_remove_members` is true.

        :rtype: DirectoryRestrictionsRemoveMembersType
        """
        if not self.is_directory_restrictions_remove_members():
            raise AttributeError("tag 'directory_restrictions_remove_members' not set")
        return self._value

    def get_emm_add_exception(self):
        """
        (team_policies) Added members to EMM exception list

        Only call this if :meth:`is_emm_add_exception` is true.

        :rtype: EmmAddExceptionType
        """
        if not self.is_emm_add_exception():
            raise AttributeError("tag 'emm_add_exception' not set")
        return self._value

    def get_emm_change_policy(self):
        """
        (team_policies) Enabled/disabled enterprise mobility management for
        members

        Only call this if :meth:`is_emm_change_policy` is true.

        :rtype: EmmChangePolicyType
        """
        if not self.is_emm_change_policy():
            raise AttributeError("tag 'emm_change_policy' not set")
        return self._value

    def get_emm_remove_exception(self):
        """
        (team_policies) Removed members from EMM exception list

        Only call this if :meth:`is_emm_remove_exception` is true.

        :rtype: EmmRemoveExceptionType
        """
        if not self.is_emm_remove_exception():
            raise AttributeError("tag 'emm_remove_exception' not set")
        return self._value

    def get_extended_version_history_change_policy(self):
        """
        (team_policies) Accepted/opted out of extended version history

        Only call this if :meth:`is_extended_version_history_change_policy` is true.

        :rtype: ExtendedVersionHistoryChangePolicyType
        """
        if not self.is_extended_version_history_change_policy():
            raise AttributeError("tag 'extended_version_history_change_policy' not set")
        return self._value

    def get_file_comments_change_policy(self):
        """
        (team_policies) Enabled/disabled commenting on team files

        Only call this if :meth:`is_file_comments_change_policy` is true.

        :rtype: FileCommentsChangePolicyType
        """
        if not self.is_file_comments_change_policy():
            raise AttributeError("tag 'file_comments_change_policy' not set")
        return self._value

    def get_file_requests_change_policy(self):
        """
        (team_policies) Enabled/disabled file requests

        Only call this if :meth:`is_file_requests_change_policy` is true.

        :rtype: FileRequestsChangePolicyType
        """
        if not self.is_file_requests_change_policy():
            raise AttributeError("tag 'file_requests_change_policy' not set")
        return self._value

    def get_file_requests_emails_enabled(self):
        """
        (team_policies) Enabled file request emails for everyone (deprecated, no
        longer logged)

        Only call this if :meth:`is_file_requests_emails_enabled` is true.

        :rtype: FileRequestsEmailsEnabledType
        """
        if not self.is_file_requests_emails_enabled():
            raise AttributeError("tag 'file_requests_emails_enabled' not set")
        return self._value

    def get_file_requests_emails_restricted_to_team_only(self):
        """
        (team_policies) Enabled file request emails for team (deprecated, no
        longer logged)

        Only call this if :meth:`is_file_requests_emails_restricted_to_team_only` is true.

        :rtype: FileRequestsEmailsRestrictedToTeamOnlyType
        """
        if not self.is_file_requests_emails_restricted_to_team_only():
            raise AttributeError("tag 'file_requests_emails_restricted_to_team_only' not set")
        return self._value

    def get_google_sso_change_policy(self):
        """
        (team_policies) Enabled/disabled Google single sign-on for team

        Only call this if :meth:`is_google_sso_change_policy` is true.

        :rtype: GoogleSsoChangePolicyType
        """
        if not self.is_google_sso_change_policy():
            raise AttributeError("tag 'google_sso_change_policy' not set")
        return self._value

    def get_group_user_management_change_policy(self):
        """
        (team_policies) Changed who can create groups

        Only call this if :meth:`is_group_user_management_change_policy` is true.

        :rtype: GroupUserManagementChangePolicyType
        """
        if not self.is_group_user_management_change_policy():
            raise AttributeError("tag 'group_user_management_change_policy' not set")
        return self._value

    def get_member_requests_change_policy(self):
        """
        (team_policies) Changed whether users can find team when not invited

        Only call this if :meth:`is_member_requests_change_policy` is true.

        :rtype: MemberRequestsChangePolicyType
        """
        if not self.is_member_requests_change_policy():
            raise AttributeError("tag 'member_requests_change_policy' not set")
        return self._value

    def get_member_space_limits_add_exception(self):
        """
        (team_policies) Added members to member space limit exception list

        Only call this if :meth:`is_member_space_limits_add_exception` is true.

        :rtype: MemberSpaceLimitsAddExceptionType
        """
        if not self.is_member_space_limits_add_exception():
            raise AttributeError("tag 'member_space_limits_add_exception' not set")
        return self._value

    def get_member_space_limits_change_caps_type_policy(self):
        """
        (team_policies) Changed member space limit type for team

        Only call this if :meth:`is_member_space_limits_change_caps_type_policy` is true.

        :rtype: MemberSpaceLimitsChangeCapsTypePolicyType
        """
        if not self.is_member_space_limits_change_caps_type_policy():
            raise AttributeError("tag 'member_space_limits_change_caps_type_policy' not set")
        return self._value

    def get_member_space_limits_change_policy(self):
        """
        (team_policies) Changed team default member space limit

        Only call this if :meth:`is_member_space_limits_change_policy` is true.

        :rtype: MemberSpaceLimitsChangePolicyType
        """
        if not self.is_member_space_limits_change_policy():
            raise AttributeError("tag 'member_space_limits_change_policy' not set")
        return self._value

    def get_member_space_limits_remove_exception(self):
        """
        (team_policies) Removed members from member space limit exception list

        Only call this if :meth:`is_member_space_limits_remove_exception` is true.

        :rtype: MemberSpaceLimitsRemoveExceptionType
        """
        if not self.is_member_space_limits_remove_exception():
            raise AttributeError("tag 'member_space_limits_remove_exception' not set")
        return self._value

    def get_member_suggestions_change_policy(self):
        """
        (team_policies) Enabled/disabled option for team members to suggest
        people to add to team

        Only call this if :meth:`is_member_suggestions_change_policy` is true.

        :rtype: MemberSuggestionsChangePolicyType
        """
        if not self.is_member_suggestions_change_policy():
            raise AttributeError("tag 'member_suggestions_change_policy' not set")
        return self._value

    def get_microsoft_office_addin_change_policy(self):
        """
        (team_policies) Enabled/disabled Microsoft Office add-in

        Only call this if :meth:`is_microsoft_office_addin_change_policy` is true.

        :rtype: MicrosoftOfficeAddinChangePolicyType
        """
        if not self.is_microsoft_office_addin_change_policy():
            raise AttributeError("tag 'microsoft_office_addin_change_policy' not set")
        return self._value

    def get_network_control_change_policy(self):
        """
        (team_policies) Enabled/disabled network control

        Only call this if :meth:`is_network_control_change_policy` is true.

        :rtype: NetworkControlChangePolicyType
        """
        if not self.is_network_control_change_policy():
            raise AttributeError("tag 'network_control_change_policy' not set")
        return self._value

    def get_paper_change_deployment_policy(self):
        """
        (team_policies) Changed whether Dropbox Paper, when enabled, is deployed
        to all members or to specific members

        Only call this if :meth:`is_paper_change_deployment_policy` is true.

        :rtype: PaperChangeDeploymentPolicyType
        """
        if not self.is_paper_change_deployment_policy():
            raise AttributeError("tag 'paper_change_deployment_policy' not set")
        return self._value

    def get_paper_change_member_link_policy(self):
        """
        (team_policies) Changed whether non-members can view Paper docs with
        link (deprecated, no longer logged)

        Only call this if :meth:`is_paper_change_member_link_policy` is true.

        :rtype: PaperChangeMemberLinkPolicyType
        """
        if not self.is_paper_change_member_link_policy():
            raise AttributeError("tag 'paper_change_member_link_policy' not set")
        return self._value

    def get_paper_change_member_policy(self):
        """
        (team_policies) Changed whether members can share Paper docs outside
        team, and if docs are accessible only by team members or anyone by
        default

        Only call this if :meth:`is_paper_change_member_policy` is true.

        :rtype: PaperChangeMemberPolicyType
        """
        if not self.is_paper_change_member_policy():
            raise AttributeError("tag 'paper_change_member_policy' not set")
        return self._value

    def get_paper_change_policy(self):
        """
        (team_policies) Enabled/disabled Dropbox Paper for team

        Only call this if :meth:`is_paper_change_policy` is true.

        :rtype: PaperChangePolicyType
        """
        if not self.is_paper_change_policy():
            raise AttributeError("tag 'paper_change_policy' not set")
        return self._value

    def get_paper_enabled_users_group_addition(self):
        """
        (team_policies) Added users to Paper-enabled users list

        Only call this if :meth:`is_paper_enabled_users_group_addition` is true.

        :rtype: PaperEnabledUsersGroupAdditionType
        """
        if not self.is_paper_enabled_users_group_addition():
            raise AttributeError("tag 'paper_enabled_users_group_addition' not set")
        return self._value

    def get_paper_enabled_users_group_removal(self):
        """
        (team_policies) Removed users from Paper-enabled users list

        Only call this if :meth:`is_paper_enabled_users_group_removal` is true.

        :rtype: PaperEnabledUsersGroupRemovalType
        """
        if not self.is_paper_enabled_users_group_removal():
            raise AttributeError("tag 'paper_enabled_users_group_removal' not set")
        return self._value

    def get_permanent_delete_change_policy(self):
        """
        (team_policies) Enabled/disabled ability of team members to permanently
        delete content

        Only call this if :meth:`is_permanent_delete_change_policy` is true.

        :rtype: PermanentDeleteChangePolicyType
        """
        if not self.is_permanent_delete_change_policy():
            raise AttributeError("tag 'permanent_delete_change_policy' not set")
        return self._value

    def get_sharing_change_folder_join_policy(self):
        """
        (team_policies) Changed whether team members can join shared folders
        owned outside team

        Only call this if :meth:`is_sharing_change_folder_join_policy` is true.

        :rtype: SharingChangeFolderJoinPolicyType
        """
        if not self.is_sharing_change_folder_join_policy():
            raise AttributeError("tag 'sharing_change_folder_join_policy' not set")
        return self._value

    def get_sharing_change_link_policy(self):
        """
        (team_policies) Changed whether members can share links outside team,
        and if links are accessible only by team members or anyone by default

        Only call this if :meth:`is_sharing_change_link_policy` is true.

        :rtype: SharingChangeLinkPolicyType
        """
        if not self.is_sharing_change_link_policy():
            raise AttributeError("tag 'sharing_change_link_policy' not set")
        return self._value

    def get_sharing_change_member_policy(self):
        """
        (team_policies) Changed whether members can share files/folders outside
        team

        Only call this if :meth:`is_sharing_change_member_policy` is true.

        :rtype: SharingChangeMemberPolicyType
        """
        if not self.is_sharing_change_member_policy():
            raise AttributeError("tag 'sharing_change_member_policy' not set")
        return self._value

    def get_showcase_change_download_policy(self):
        """
        (team_policies) Enabled/disabled downloading files from Dropbox Showcase
        for team

        Only call this if :meth:`is_showcase_change_download_policy` is true.

        :rtype: ShowcaseChangeDownloadPolicyType
        """
        if not self.is_showcase_change_download_policy():
            raise AttributeError("tag 'showcase_change_download_policy' not set")
        return self._value

    def get_showcase_change_enabled_policy(self):
        """
        (team_policies) Enabled/disabled Dropbox Showcase for team

        Only call this if :meth:`is_showcase_change_enabled_policy` is true.

        :rtype: ShowcaseChangeEnabledPolicyType
        """
        if not self.is_showcase_change_enabled_policy():
            raise AttributeError("tag 'showcase_change_enabled_policy' not set")
        return self._value

    def get_showcase_change_external_sharing_policy(self):
        """
        (team_policies) Enabled/disabled sharing Dropbox Showcase externally for
        team

        Only call this if :meth:`is_showcase_change_external_sharing_policy` is true.

        :rtype: ShowcaseChangeExternalSharingPolicyType
        """
        if not self.is_showcase_change_external_sharing_policy():
            raise AttributeError("tag 'showcase_change_external_sharing_policy' not set")
        return self._value

    def get_smart_sync_change_policy(self):
        """
        (team_policies) Changed default Smart Sync setting for team members

        Only call this if :meth:`is_smart_sync_change_policy` is true.

        :rtype: SmartSyncChangePolicyType
        """
        if not self.is_smart_sync_change_policy():
            raise AttributeError("tag 'smart_sync_change_policy' not set")
        return self._value

    def get_smart_sync_not_opt_out(self):
        """
        (team_policies) Opted team into Smart Sync

        Only call this if :meth:`is_smart_sync_not_opt_out` is true.

        :rtype: SmartSyncNotOptOutType
        """
        if not self.is_smart_sync_not_opt_out():
            raise AttributeError("tag 'smart_sync_not_opt_out' not set")
        return self._value

    def get_smart_sync_opt_out(self):
        """
        (team_policies) Opted team out of Smart Sync

        Only call this if :meth:`is_smart_sync_opt_out` is true.

        :rtype: SmartSyncOptOutType
        """
        if not self.is_smart_sync_opt_out():
            raise AttributeError("tag 'smart_sync_opt_out' not set")
        return self._value

    def get_sso_change_policy(self):
        """
        (team_policies) Changed single sign-on setting for team

        Only call this if :meth:`is_sso_change_policy` is true.

        :rtype: SsoChangePolicyType
        """
        if not self.is_sso_change_policy():
            raise AttributeError("tag 'sso_change_policy' not set")
        return self._value

    def get_team_selective_sync_policy_changed(self):
        """
        (team_policies) Enabled/disabled Team Selective Sync for team

        Only call this if :meth:`is_team_selective_sync_policy_changed` is true.

        :rtype: TeamSelectiveSyncPolicyChangedType
        """
        if not self.is_team_selective_sync_policy_changed():
            raise AttributeError("tag 'team_selective_sync_policy_changed' not set")
        return self._value

    def get_tfa_change_policy(self):
        """
        (team_policies) Changed two-step verification setting for team

        Only call this if :meth:`is_tfa_change_policy` is true.

        :rtype: TfaChangePolicyType
        """
        if not self.is_tfa_change_policy():
            raise AttributeError("tag 'tfa_change_policy' not set")
        return self._value

    def get_two_account_change_policy(self):
        """
        (team_policies) Enabled/disabled option for members to link personal
        Dropbox account and team account to same computer

        Only call this if :meth:`is_two_account_change_policy` is true.

        :rtype: TwoAccountChangePolicyType
        """
        if not self.is_two_account_change_policy():
            raise AttributeError("tag 'two_account_change_policy' not set")
        return self._value

    def get_viewer_info_policy_changed(self):
        """
        (team_policies) Changed team policy for viewer info

        Only call this if :meth:`is_viewer_info_policy_changed` is true.

        :rtype: ViewerInfoPolicyChangedType
        """
        if not self.is_viewer_info_policy_changed():
            raise AttributeError("tag 'viewer_info_policy_changed' not set")
        return self._value

    def get_web_sessions_change_fixed_length_policy(self):
        """
        (team_policies) Changed how long members can stay signed in to
        Dropbox.com

        Only call this if :meth:`is_web_sessions_change_fixed_length_policy` is true.

        :rtype: WebSessionsChangeFixedLengthPolicyType
        """
        if not self.is_web_sessions_change_fixed_length_policy():
            raise AttributeError("tag 'web_sessions_change_fixed_length_policy' not set")
        return self._value

    def get_web_sessions_change_idle_length_policy(self):
        """
        (team_policies) Changed how long team members can be idle while signed
        in to Dropbox.com

        Only call this if :meth:`is_web_sessions_change_idle_length_policy` is true.

        :rtype: WebSessionsChangeIdleLengthPolicyType
        """
        if not self.is_web_sessions_change_idle_length_policy():
            raise AttributeError("tag 'web_sessions_change_idle_length_policy' not set")
        return self._value

    def get_team_merge_from(self):
        """
        (team_profile) Merged another team into this team

        Only call this if :meth:`is_team_merge_from` is true.

        :rtype: TeamMergeFromType
        """
        if not self.is_team_merge_from():
            raise AttributeError("tag 'team_merge_from' not set")
        return self._value

    def get_team_merge_to(self):
        """
        (team_profile) Merged this team into another team

        Only call this if :meth:`is_team_merge_to` is true.

        :rtype: TeamMergeToType
        """
        if not self.is_team_merge_to():
            raise AttributeError("tag 'team_merge_to' not set")
        return self._value

    def get_team_profile_add_logo(self):
        """
        (team_profile) Added team logo to display on shared link headers

        Only call this if :meth:`is_team_profile_add_logo` is true.

        :rtype: TeamProfileAddLogoType
        """
        if not self.is_team_profile_add_logo():
            raise AttributeError("tag 'team_profile_add_logo' not set")
        return self._value

    def get_team_profile_change_default_language(self):
        """
        (team_profile) Changed default language for team

        Only call this if :meth:`is_team_profile_change_default_language` is true.

        :rtype: TeamProfileChangeDefaultLanguageType
        """
        if not self.is_team_profile_change_default_language():
            raise AttributeError("tag 'team_profile_change_default_language' not set")
        return self._value

    def get_team_profile_change_logo(self):
        """
        (team_profile) Changed team logo displayed on shared link headers

        Only call this if :meth:`is_team_profile_change_logo` is true.

        :rtype: TeamProfileChangeLogoType
        """
        if not self.is_team_profile_change_logo():
            raise AttributeError("tag 'team_profile_change_logo' not set")
        return self._value

    def get_team_profile_change_name(self):
        """
        (team_profile) Changed team name

        Only call this if :meth:`is_team_profile_change_name` is true.

        :rtype: TeamProfileChangeNameType
        """
        if not self.is_team_profile_change_name():
            raise AttributeError("tag 'team_profile_change_name' not set")
        return self._value

    def get_team_profile_remove_logo(self):
        """
        (team_profile) Removed team logo displayed on shared link headers

        Only call this if :meth:`is_team_profile_remove_logo` is true.

        :rtype: TeamProfileRemoveLogoType
        """
        if not self.is_team_profile_remove_logo():
            raise AttributeError("tag 'team_profile_remove_logo' not set")
        return self._value

    def get_tfa_add_backup_phone(self):
        """
        (tfa) Added backup phone for two-step verification

        Only call this if :meth:`is_tfa_add_backup_phone` is true.

        :rtype: TfaAddBackupPhoneType
        """
        if not self.is_tfa_add_backup_phone():
            raise AttributeError("tag 'tfa_add_backup_phone' not set")
        return self._value

    def get_tfa_add_security_key(self):
        """
        (tfa) Added security key for two-step verification

        Only call this if :meth:`is_tfa_add_security_key` is true.

        :rtype: TfaAddSecurityKeyType
        """
        if not self.is_tfa_add_security_key():
            raise AttributeError("tag 'tfa_add_security_key' not set")
        return self._value

    def get_tfa_change_backup_phone(self):
        """
        (tfa) Changed backup phone for two-step verification

        Only call this if :meth:`is_tfa_change_backup_phone` is true.

        :rtype: TfaChangeBackupPhoneType
        """
        if not self.is_tfa_change_backup_phone():
            raise AttributeError("tag 'tfa_change_backup_phone' not set")
        return self._value

    def get_tfa_change_status(self):
        """
        (tfa) Enabled/disabled/changed two-step verification setting

        Only call this if :meth:`is_tfa_change_status` is true.

        :rtype: TfaChangeStatusType
        """
        if not self.is_tfa_change_status():
            raise AttributeError("tag 'tfa_change_status' not set")
        return self._value

    def get_tfa_remove_backup_phone(self):
        """
        (tfa) Removed backup phone for two-step verification

        Only call this if :meth:`is_tfa_remove_backup_phone` is true.

        :rtype: TfaRemoveBackupPhoneType
        """
        if not self.is_tfa_remove_backup_phone():
            raise AttributeError("tag 'tfa_remove_backup_phone' not set")
        return self._value

    def get_tfa_remove_security_key(self):
        """
        (tfa) Removed security key for two-step verification

        Only call this if :meth:`is_tfa_remove_security_key` is true.

        :rtype: TfaRemoveSecurityKeyType
        """
        if not self.is_tfa_remove_security_key():
            raise AttributeError("tag 'tfa_remove_security_key' not set")
        return self._value

    def get_tfa_reset(self):
        """
        (tfa) Reset two-step verification for team member

        Only call this if :meth:`is_tfa_reset` is true.

        :rtype: TfaResetType
        """
        if not self.is_tfa_reset():
            raise AttributeError("tag 'tfa_reset' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, processor):
        super(EventType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'EventType(%r, %r)' % (self._tag, self._value)

EventType_validator = bv.Union(EventType)

class ExportMembersReportDetails(bb.Struct):
    """
    Created member data report.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(ExportMembersReportDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ExportMembersReportDetails()'

ExportMembersReportDetails_validator = bv.Struct(ExportMembersReportDetails)

class ExportMembersReportType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ExportMembersReportType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ExportMembersReportType(description={!r})'.format(
            self._description_value,
        )

ExportMembersReportType_validator = bv.Struct(ExportMembersReportType)

class ExtendedVersionHistoryChangePolicyDetails(bb.Struct):
    """
    Accepted/opted out of extended version history.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(ExtendedVersionHistoryChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ExtendedVersionHistoryChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

ExtendedVersionHistoryChangePolicyDetails_validator = bv.Struct(ExtendedVersionHistoryChangePolicyDetails)

class ExtendedVersionHistoryChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ExtendedVersionHistoryChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ExtendedVersionHistoryChangePolicyType(description={!r})'.format(
            self._description_value,
        )

ExtendedVersionHistoryChangePolicyType_validator = bv.Struct(ExtendedVersionHistoryChangePolicyType)

class ExtendedVersionHistoryPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    explicitly_limited = None
    # Attribute is overwritten below the class definition
    explicitly_unlimited = None
    # Attribute is overwritten below the class definition
    implicitly_limited = None
    # Attribute is overwritten below the class definition
    implicitly_unlimited = None
    # Attribute is overwritten below the class definition
    other = None

    def is_explicitly_limited(self):
        """
        Check if the union tag is ``explicitly_limited``.

        :rtype: bool
        """
        return self._tag == 'explicitly_limited'

    def is_explicitly_unlimited(self):
        """
        Check if the union tag is ``explicitly_unlimited``.

        :rtype: bool
        """
        return self._tag == 'explicitly_unlimited'

    def is_implicitly_limited(self):
        """
        Check if the union tag is ``implicitly_limited``.

        :rtype: bool
        """
        return self._tag == 'implicitly_limited'

    def is_implicitly_unlimited(self):
        """
        Check if the union tag is ``implicitly_unlimited``.

        :rtype: bool
        """
        return self._tag == 'implicitly_unlimited'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(ExtendedVersionHistoryPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ExtendedVersionHistoryPolicy(%r, %r)' % (self._tag, self._value)

ExtendedVersionHistoryPolicy_validator = bv.Union(ExtendedVersionHistoryPolicy)

class ExternalUserLogInfo(bb.Struct):
    """
    A user without a Dropbox account.

    :ivar user_identifier: An external user identifier.
    :ivar identifier_type: Identifier type.
    """

    __slots__ = [
        '_user_identifier_value',
        '_user_identifier_present',
        '_identifier_type_value',
        '_identifier_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 user_identifier=None,
                 identifier_type=None):
        self._user_identifier_value = None
        self._user_identifier_present = False
        self._identifier_type_value = None
        self._identifier_type_present = False
        if user_identifier is not None:
            self.user_identifier = user_identifier
        if identifier_type is not None:
            self.identifier_type = identifier_type

    @property
    def user_identifier(self):
        """
        An external user identifier.

        :rtype: str
        """
        if self._user_identifier_present:
            return self._user_identifier_value
        else:
            raise AttributeError("missing required field 'user_identifier'")

    @user_identifier.setter
    def user_identifier(self, val):
        val = self._user_identifier_validator.validate(val)
        self._user_identifier_value = val
        self._user_identifier_present = True

    @user_identifier.deleter
    def user_identifier(self):
        self._user_identifier_value = None
        self._user_identifier_present = False

    @property
    def identifier_type(self):
        """
        Identifier type.

        :rtype: IdentifierType
        """
        if self._identifier_type_present:
            return self._identifier_type_value
        else:
            raise AttributeError("missing required field 'identifier_type'")

    @identifier_type.setter
    def identifier_type(self, val):
        self._identifier_type_validator.validate_type_only(val)
        self._identifier_type_value = val
        self._identifier_type_present = True

    @identifier_type.deleter
    def identifier_type(self):
        self._identifier_type_value = None
        self._identifier_type_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ExternalUserLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ExternalUserLogInfo(user_identifier={!r}, identifier_type={!r})'.format(
            self._user_identifier_value,
            self._identifier_type_value,
        )

ExternalUserLogInfo_validator = bv.Struct(ExternalUserLogInfo)

class FailureDetailsLogInfo(bb.Struct):
    """
    Provides details about a failure

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(FailureDetailsLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FailureDetailsLogInfo(user_friendly_message={!r}, technical_error_message={!r})'.format(
            self._user_friendly_message_value,
            self._technical_error_message_value,
        )

FailureDetailsLogInfo_validator = bv.Struct(FailureDetailsLogInfo)

class FileAddCommentDetails(bb.Struct):
    """
    Added file comment.

    :ivar comment_text: Comment text. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 comment_text=None):
        self._comment_text_value = None
        self._comment_text_present = False
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileAddCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileAddCommentDetails(comment_text={!r})'.format(
            self._comment_text_value,
        )

FileAddCommentDetails_validator = bv.Struct(FileAddCommentDetails)

class FileAddCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileAddCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileAddCommentType(description={!r})'.format(
            self._description_value,
        )

FileAddCommentType_validator = bv.Struct(FileAddCommentType)

class FileAddDetails(bb.Struct):
    """
    Added files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileAddDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileAddDetails()'

FileAddDetails_validator = bv.Struct(FileAddDetails)

class FileAddType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileAddType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileAddType(description={!r})'.format(
            self._description_value,
        )

FileAddType_validator = bv.Struct(FileAddType)

class FileChangeCommentSubscriptionDetails(bb.Struct):
    """
    Subscribed to or unsubscribed from comment notifications for file.

    :ivar new_value: New file comment subscription.
    :ivar previous_value: Previous file comment subscription. Might be missing
        due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New file comment subscription.

        :rtype: FileCommentNotificationPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous file comment subscription. Might be missing due to historical
        data gap.

        :rtype: FileCommentNotificationPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileChangeCommentSubscriptionDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileChangeCommentSubscriptionDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

FileChangeCommentSubscriptionDetails_validator = bv.Struct(FileChangeCommentSubscriptionDetails)

class FileChangeCommentSubscriptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileChangeCommentSubscriptionType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileChangeCommentSubscriptionType(description={!r})'.format(
            self._description_value,
        )

FileChangeCommentSubscriptionType_validator = bv.Struct(FileChangeCommentSubscriptionType)

class FileCommentNotificationPolicy(bb.Union):
    """
    Enable or disable file comments notifications

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileCommentNotificationPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileCommentNotificationPolicy(%r, %r)' % (self._tag, self._value)

FileCommentNotificationPolicy_validator = bv.Union(FileCommentNotificationPolicy)

class FileCommentsChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled commenting on team files.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(FileCommentsChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileCommentsChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

FileCommentsChangePolicyDetails_validator = bv.Struct(FileCommentsChangePolicyDetails)

class FileCommentsChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileCommentsChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileCommentsChangePolicyType(description={!r})'.format(
            self._description_value,
        )

FileCommentsChangePolicyType_validator = bv.Struct(FileCommentsChangePolicyType)

class FileCommentsPolicy(bb.Union):
    """
    File comments policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileCommentsPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileCommentsPolicy(%r, %r)' % (self._tag, self._value)

FileCommentsPolicy_validator = bv.Union(FileCommentsPolicy)

class FileCopyDetails(bb.Struct):
    """
    Copied files and/or folders.

    :ivar relocate_action_details: Relocate action details.
    """

    __slots__ = [
        '_relocate_action_details_value',
        '_relocate_action_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 relocate_action_details=None):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False
        if relocate_action_details is not None:
            self.relocate_action_details = relocate_action_details

    @property
    def relocate_action_details(self):
        """
        Relocate action details.

        :rtype: list of [RelocateAssetReferencesLogInfo]
        """
        if self._relocate_action_details_present:
            return self._relocate_action_details_value
        else:
            raise AttributeError("missing required field 'relocate_action_details'")

    @relocate_action_details.setter
    def relocate_action_details(self, val):
        val = self._relocate_action_details_validator.validate(val)
        self._relocate_action_details_value = val
        self._relocate_action_details_present = True

    @relocate_action_details.deleter
    def relocate_action_details(self):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileCopyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileCopyDetails(relocate_action_details={!r})'.format(
            self._relocate_action_details_value,
        )

FileCopyDetails_validator = bv.Struct(FileCopyDetails)

class FileCopyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileCopyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileCopyType(description={!r})'.format(
            self._description_value,
        )

FileCopyType_validator = bv.Struct(FileCopyType)

class FileDeleteCommentDetails(bb.Struct):
    """
    Deleted file comment.

    :ivar comment_text: Comment text. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 comment_text=None):
        self._comment_text_value = None
        self._comment_text_present = False
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileDeleteCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileDeleteCommentDetails(comment_text={!r})'.format(
            self._comment_text_value,
        )

FileDeleteCommentDetails_validator = bv.Struct(FileDeleteCommentDetails)

class FileDeleteCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileDeleteCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileDeleteCommentType(description={!r})'.format(
            self._description_value,
        )

FileDeleteCommentType_validator = bv.Struct(FileDeleteCommentType)

class FileDeleteDetails(bb.Struct):
    """
    Deleted files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileDeleteDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileDeleteDetails()'

FileDeleteDetails_validator = bv.Struct(FileDeleteDetails)

class FileDeleteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileDeleteType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileDeleteType(description={!r})'.format(
            self._description_value,
        )

FileDeleteType_validator = bv.Struct(FileDeleteType)

class FileDownloadDetails(bb.Struct):
    """
    Downloaded files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileDownloadDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileDownloadDetails()'

FileDownloadDetails_validator = bv.Struct(FileDownloadDetails)

class FileDownloadType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileDownloadType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileDownloadType(description={!r})'.format(
            self._description_value,
        )

FileDownloadType_validator = bv.Struct(FileDownloadType)

class FileEditCommentDetails(bb.Struct):
    """
    Edited file comment.

    :ivar comment_text: Comment text. Might be missing due to historical data
        gap.
    :ivar previous_comment_text: Previous comment text.
    """

    __slots__ = [
        '_comment_text_value',
        '_comment_text_present',
        '_previous_comment_text_value',
        '_previous_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_comment_text=None,
                 comment_text=None):
        self._comment_text_value = None
        self._comment_text_present = False
        self._previous_comment_text_value = None
        self._previous_comment_text_present = False
        if comment_text is not None:
            self.comment_text = comment_text
        if previous_comment_text is not None:
            self.previous_comment_text = previous_comment_text

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    @property
    def previous_comment_text(self):
        """
        Previous comment text.

        :rtype: str
        """
        if self._previous_comment_text_present:
            return self._previous_comment_text_value
        else:
            raise AttributeError("missing required field 'previous_comment_text'")

    @previous_comment_text.setter
    def previous_comment_text(self, val):
        val = self._previous_comment_text_validator.validate(val)
        self._previous_comment_text_value = val
        self._previous_comment_text_present = True

    @previous_comment_text.deleter
    def previous_comment_text(self):
        self._previous_comment_text_value = None
        self._previous_comment_text_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileEditCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileEditCommentDetails(previous_comment_text={!r}, comment_text={!r})'.format(
            self._previous_comment_text_value,
            self._comment_text_value,
        )

FileEditCommentDetails_validator = bv.Struct(FileEditCommentDetails)

class FileEditCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileEditCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileEditCommentType(description={!r})'.format(
            self._description_value,
        )

FileEditCommentType_validator = bv.Struct(FileEditCommentType)

class FileEditDetails(bb.Struct):
    """
    Edited files.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileEditDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileEditDetails()'

FileEditDetails_validator = bv.Struct(FileEditDetails)

class FileEditType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileEditType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileEditType(description={!r})'.format(
            self._description_value,
        )

FileEditType_validator = bv.Struct(FileEditType)

class FileGetCopyReferenceDetails(bb.Struct):
    """
    Created copy reference to file/folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileGetCopyReferenceDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileGetCopyReferenceDetails()'

FileGetCopyReferenceDetails_validator = bv.Struct(FileGetCopyReferenceDetails)

class FileGetCopyReferenceType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileGetCopyReferenceType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileGetCopyReferenceType(description={!r})'.format(
            self._description_value,
        )

FileGetCopyReferenceType_validator = bv.Struct(FileGetCopyReferenceType)

class FileLikeCommentDetails(bb.Struct):
    """
    Liked file comment.

    :ivar comment_text: Comment text. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 comment_text=None):
        self._comment_text_value = None
        self._comment_text_present = False
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileLikeCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileLikeCommentDetails(comment_text={!r})'.format(
            self._comment_text_value,
        )

FileLikeCommentDetails_validator = bv.Struct(FileLikeCommentDetails)

class FileLikeCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileLikeCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileLikeCommentType(description={!r})'.format(
            self._description_value,
        )

FileLikeCommentType_validator = bv.Struct(FileLikeCommentType)

class FileOrFolderLogInfo(bb.Struct):
    """
    Generic information relevant both for files and folders

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(FileOrFolderLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileOrFolderLogInfo(path={!r}, display_name={!r}, file_id={!r})'.format(
            self._path_value,
            self._display_name_value,
            self._file_id_value,
        )

FileOrFolderLogInfo_validator = bv.Struct(FileOrFolderLogInfo)

class FileLogInfo(FileOrFolderLogInfo):
    """
    File's logged information.
    """

    __slots__ = [
    ]

    _has_required_fields = True

    def __init__(self,
                 path=None,
                 display_name=None,
                 file_id=None):
        super(FileLogInfo, self).__init__(path,
                                          display_name,
                                          file_id)

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileLogInfo(path={!r}, display_name={!r}, file_id={!r})'.format(
            self._path_value,
            self._display_name_value,
            self._file_id_value,
        )

FileLogInfo_validator = bv.Struct(FileLogInfo)

class FileMoveDetails(bb.Struct):
    """
    Moved files and/or folders.

    :ivar relocate_action_details: Relocate action details.
    """

    __slots__ = [
        '_relocate_action_details_value',
        '_relocate_action_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 relocate_action_details=None):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False
        if relocate_action_details is not None:
            self.relocate_action_details = relocate_action_details

    @property
    def relocate_action_details(self):
        """
        Relocate action details.

        :rtype: list of [RelocateAssetReferencesLogInfo]
        """
        if self._relocate_action_details_present:
            return self._relocate_action_details_value
        else:
            raise AttributeError("missing required field 'relocate_action_details'")

    @relocate_action_details.setter
    def relocate_action_details(self, val):
        val = self._relocate_action_details_validator.validate(val)
        self._relocate_action_details_value = val
        self._relocate_action_details_present = True

    @relocate_action_details.deleter
    def relocate_action_details(self):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileMoveDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileMoveDetails(relocate_action_details={!r})'.format(
            self._relocate_action_details_value,
        )

FileMoveDetails_validator = bv.Struct(FileMoveDetails)

class FileMoveType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileMoveType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileMoveType(description={!r})'.format(
            self._description_value,
        )

FileMoveType_validator = bv.Struct(FileMoveType)

class FilePermanentlyDeleteDetails(bb.Struct):
    """
    Permanently deleted files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(FilePermanentlyDeleteDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FilePermanentlyDeleteDetails()'

FilePermanentlyDeleteDetails_validator = bv.Struct(FilePermanentlyDeleteDetails)

class FilePermanentlyDeleteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FilePermanentlyDeleteType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FilePermanentlyDeleteType(description={!r})'.format(
            self._description_value,
        )

FilePermanentlyDeleteType_validator = bv.Struct(FilePermanentlyDeleteType)

class FilePreviewDetails(bb.Struct):
    """
    Previewed files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(FilePreviewDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FilePreviewDetails()'

FilePreviewDetails_validator = bv.Struct(FilePreviewDetails)

class FilePreviewType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FilePreviewType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FilePreviewType(description={!r})'.format(
            self._description_value,
        )

FilePreviewType_validator = bv.Struct(FilePreviewType)

class FileRenameDetails(bb.Struct):
    """
    Renamed files and/or folders.

    :ivar relocate_action_details: Relocate action details.
    """

    __slots__ = [
        '_relocate_action_details_value',
        '_relocate_action_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 relocate_action_details=None):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False
        if relocate_action_details is not None:
            self.relocate_action_details = relocate_action_details

    @property
    def relocate_action_details(self):
        """
        Relocate action details.

        :rtype: list of [RelocateAssetReferencesLogInfo]
        """
        if self._relocate_action_details_present:
            return self._relocate_action_details_value
        else:
            raise AttributeError("missing required field 'relocate_action_details'")

    @relocate_action_details.setter
    def relocate_action_details(self, val):
        val = self._relocate_action_details_validator.validate(val)
        self._relocate_action_details_value = val
        self._relocate_action_details_present = True

    @relocate_action_details.deleter
    def relocate_action_details(self):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRenameDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRenameDetails(relocate_action_details={!r})'.format(
            self._relocate_action_details_value,
        )

FileRenameDetails_validator = bv.Struct(FileRenameDetails)

class FileRenameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRenameType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRenameType(description={!r})'.format(
            self._description_value,
        )

FileRenameType_validator = bv.Struct(FileRenameType)

class FileRequestChangeDetails(bb.Struct):
    """
    Changed file request.

    :ivar file_request_id: File request id. Might be missing due to historical
        data gap.
    :ivar previous_details: Previous file request details. Might be missing due
        to historical data gap.
    :ivar new_details: New file request details.
    """

    __slots__ = [
        '_file_request_id_value',
        '_file_request_id_present',
        '_previous_details_value',
        '_previous_details_present',
        '_new_details_value',
        '_new_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_details=None,
                 file_request_id=None,
                 previous_details=None):
        self._file_request_id_value = None
        self._file_request_id_present = False
        self._previous_details_value = None
        self._previous_details_present = False
        self._new_details_value = None
        self._new_details_present = False
        if file_request_id is not None:
            self.file_request_id = file_request_id
        if previous_details is not None:
            self.previous_details = previous_details
        if new_details is not None:
            self.new_details = new_details

    @property
    def file_request_id(self):
        """
        File request id. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._file_request_id_present:
            return self._file_request_id_value
        else:
            return None

    @file_request_id.setter
    def file_request_id(self, val):
        if val is None:
            del self.file_request_id
            return
        val = self._file_request_id_validator.validate(val)
        self._file_request_id_value = val
        self._file_request_id_present = True

    @file_request_id.deleter
    def file_request_id(self):
        self._file_request_id_value = None
        self._file_request_id_present = False

    @property
    def previous_details(self):
        """
        Previous file request details. Might be missing due to historical data
        gap.

        :rtype: FileRequestDetails
        """
        if self._previous_details_present:
            return self._previous_details_value
        else:
            return None

    @previous_details.setter
    def previous_details(self, val):
        if val is None:
            del self.previous_details
            return
        self._previous_details_validator.validate_type_only(val)
        self._previous_details_value = val
        self._previous_details_present = True

    @previous_details.deleter
    def previous_details(self):
        self._previous_details_value = None
        self._previous_details_present = False

    @property
    def new_details(self):
        """
        New file request details.

        :rtype: FileRequestDetails
        """
        if self._new_details_present:
            return self._new_details_value
        else:
            raise AttributeError("missing required field 'new_details'")

    @new_details.setter
    def new_details(self, val):
        self._new_details_validator.validate_type_only(val)
        self._new_details_value = val
        self._new_details_present = True

    @new_details.deleter
    def new_details(self):
        self._new_details_value = None
        self._new_details_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestChangeDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestChangeDetails(new_details={!r}, file_request_id={!r}, previous_details={!r})'.format(
            self._new_details_value,
            self._file_request_id_value,
            self._previous_details_value,
        )

FileRequestChangeDetails_validator = bv.Struct(FileRequestChangeDetails)

class FileRequestChangeType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestChangeType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestChangeType(description={!r})'.format(
            self._description_value,
        )

FileRequestChangeType_validator = bv.Struct(FileRequestChangeType)

class FileRequestCloseDetails(bb.Struct):
    """
    Closed file request.

    :ivar file_request_id: File request id. Might be missing due to historical
        data gap.
    :ivar previous_details: Previous file request details. Might be missing due
        to historical data gap.
    """

    __slots__ = [
        '_file_request_id_value',
        '_file_request_id_present',
        '_previous_details_value',
        '_previous_details_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 file_request_id=None,
                 previous_details=None):
        self._file_request_id_value = None
        self._file_request_id_present = False
        self._previous_details_value = None
        self._previous_details_present = False
        if file_request_id is not None:
            self.file_request_id = file_request_id
        if previous_details is not None:
            self.previous_details = previous_details

    @property
    def file_request_id(self):
        """
        File request id. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._file_request_id_present:
            return self._file_request_id_value
        else:
            return None

    @file_request_id.setter
    def file_request_id(self, val):
        if val is None:
            del self.file_request_id
            return
        val = self._file_request_id_validator.validate(val)
        self._file_request_id_value = val
        self._file_request_id_present = True

    @file_request_id.deleter
    def file_request_id(self):
        self._file_request_id_value = None
        self._file_request_id_present = False

    @property
    def previous_details(self):
        """
        Previous file request details. Might be missing due to historical data
        gap.

        :rtype: FileRequestDetails
        """
        if self._previous_details_present:
            return self._previous_details_value
        else:
            return None

    @previous_details.setter
    def previous_details(self, val):
        if val is None:
            del self.previous_details
            return
        self._previous_details_validator.validate_type_only(val)
        self._previous_details_value = val
        self._previous_details_present = True

    @previous_details.deleter
    def previous_details(self):
        self._previous_details_value = None
        self._previous_details_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestCloseDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestCloseDetails(file_request_id={!r}, previous_details={!r})'.format(
            self._file_request_id_value,
            self._previous_details_value,
        )

FileRequestCloseDetails_validator = bv.Struct(FileRequestCloseDetails)

class FileRequestCloseType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestCloseType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestCloseType(description={!r})'.format(
            self._description_value,
        )

FileRequestCloseType_validator = bv.Struct(FileRequestCloseType)

class FileRequestCreateDetails(bb.Struct):
    """
    Created file request.

    :ivar file_request_id: File request id. Might be missing due to historical
        data gap.
    :ivar request_details: File request details. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_file_request_id_value',
        '_file_request_id_present',
        '_request_details_value',
        '_request_details_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 file_request_id=None,
                 request_details=None):
        self._file_request_id_value = None
        self._file_request_id_present = False
        self._request_details_value = None
        self._request_details_present = False
        if file_request_id is not None:
            self.file_request_id = file_request_id
        if request_details is not None:
            self.request_details = request_details

    @property
    def file_request_id(self):
        """
        File request id. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._file_request_id_present:
            return self._file_request_id_value
        else:
            return None

    @file_request_id.setter
    def file_request_id(self, val):
        if val is None:
            del self.file_request_id
            return
        val = self._file_request_id_validator.validate(val)
        self._file_request_id_value = val
        self._file_request_id_present = True

    @file_request_id.deleter
    def file_request_id(self):
        self._file_request_id_value = None
        self._file_request_id_present = False

    @property
    def request_details(self):
        """
        File request details. Might be missing due to historical data gap.

        :rtype: FileRequestDetails
        """
        if self._request_details_present:
            return self._request_details_value
        else:
            return None

    @request_details.setter
    def request_details(self, val):
        if val is None:
            del self.request_details
            return
        self._request_details_validator.validate_type_only(val)
        self._request_details_value = val
        self._request_details_present = True

    @request_details.deleter
    def request_details(self):
        self._request_details_value = None
        self._request_details_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestCreateDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestCreateDetails(file_request_id={!r}, request_details={!r})'.format(
            self._file_request_id_value,
            self._request_details_value,
        )

FileRequestCreateDetails_validator = bv.Struct(FileRequestCreateDetails)

class FileRequestCreateType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestCreateType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestCreateType(description={!r})'.format(
            self._description_value,
        )

FileRequestCreateType_validator = bv.Struct(FileRequestCreateType)

class FileRequestDeadline(bb.Struct):
    """
    File request deadline

    :ivar deadline: The deadline for this file request. Might be missing due to
        historical data gap.
    :ivar allow_late_uploads: If set, allow uploads after the deadline has
        passed. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_deadline_value',
        '_deadline_present',
        '_allow_late_uploads_value',
        '_allow_late_uploads_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 deadline=None,
                 allow_late_uploads=None):
        self._deadline_value = None
        self._deadline_present = False
        self._allow_late_uploads_value = None
        self._allow_late_uploads_present = False
        if deadline is not None:
            self.deadline = deadline
        if allow_late_uploads is not None:
            self.allow_late_uploads = allow_late_uploads

    @property
    def deadline(self):
        """
        The deadline for this file request. Might be missing due to historical
        data gap.

        :rtype: datetime.datetime
        """
        if self._deadline_present:
            return self._deadline_value
        else:
            return None

    @deadline.setter
    def deadline(self, val):
        if val is None:
            del self.deadline
            return
        val = self._deadline_validator.validate(val)
        self._deadline_value = val
        self._deadline_present = True

    @deadline.deleter
    def deadline(self):
        self._deadline_value = None
        self._deadline_present = False

    @property
    def allow_late_uploads(self):
        """
        If set, allow uploads after the deadline has passed. Might be missing
        due to historical data gap.

        :rtype: str
        """
        if self._allow_late_uploads_present:
            return self._allow_late_uploads_value
        else:
            return None

    @allow_late_uploads.setter
    def allow_late_uploads(self, val):
        if val is None:
            del self.allow_late_uploads
            return
        val = self._allow_late_uploads_validator.validate(val)
        self._allow_late_uploads_value = val
        self._allow_late_uploads_present = True

    @allow_late_uploads.deleter
    def allow_late_uploads(self):
        self._allow_late_uploads_value = None
        self._allow_late_uploads_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestDeadline, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestDeadline(deadline={!r}, allow_late_uploads={!r})'.format(
            self._deadline_value,
            self._allow_late_uploads_value,
        )

FileRequestDeadline_validator = bv.Struct(FileRequestDeadline)

class FileRequestDetails(bb.Struct):
    """
    File request details

    :ivar asset_index: Asset position in the Assets list.
    :ivar deadline: File request deadline. Might be missing due to historical
        data gap.
    """

    __slots__ = [
        '_asset_index_value',
        '_asset_index_present',
        '_deadline_value',
        '_deadline_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 asset_index=None,
                 deadline=None):
        self._asset_index_value = None
        self._asset_index_present = False
        self._deadline_value = None
        self._deadline_present = False
        if asset_index is not None:
            self.asset_index = asset_index
        if deadline is not None:
            self.deadline = deadline

    @property
    def asset_index(self):
        """
        Asset position in the Assets list.

        :rtype: int
        """
        if self._asset_index_present:
            return self._asset_index_value
        else:
            raise AttributeError("missing required field 'asset_index'")

    @asset_index.setter
    def asset_index(self, val):
        val = self._asset_index_validator.validate(val)
        self._asset_index_value = val
        self._asset_index_present = True

    @asset_index.deleter
    def asset_index(self):
        self._asset_index_value = None
        self._asset_index_present = False

    @property
    def deadline(self):
        """
        File request deadline. Might be missing due to historical data gap.

        :rtype: FileRequestDeadline
        """
        if self._deadline_present:
            return self._deadline_value
        else:
            return None

    @deadline.setter
    def deadline(self, val):
        if val is None:
            del self.deadline
            return
        self._deadline_validator.validate_type_only(val)
        self._deadline_value = val
        self._deadline_present = True

    @deadline.deleter
    def deadline(self):
        self._deadline_value = None
        self._deadline_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestDetails(asset_index={!r}, deadline={!r})'.format(
            self._asset_index_value,
            self._deadline_value,
        )

FileRequestDetails_validator = bv.Struct(FileRequestDetails)

class FileRequestReceiveFileDetails(bb.Struct):
    """
    Received files for file request.

    :ivar file_request_id: File request id. Might be missing due to historical
        data gap.
    :ivar file_request_details: File request details. Might be missing due to
        historical data gap.
    :ivar submitted_file_names: Submitted file names.
    :ivar submitter_name: The name as provided by the submitter. Might be
        missing due to historical data gap.
    :ivar submitter_email: The email as provided by the submitter. Might be
        missing due to historical data gap.
    """

    __slots__ = [
        '_file_request_id_value',
        '_file_request_id_present',
        '_file_request_details_value',
        '_file_request_details_present',
        '_submitted_file_names_value',
        '_submitted_file_names_present',
        '_submitter_name_value',
        '_submitter_name_present',
        '_submitter_email_value',
        '_submitter_email_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 submitted_file_names=None,
                 file_request_id=None,
                 file_request_details=None,
                 submitter_name=None,
                 submitter_email=None):
        self._file_request_id_value = None
        self._file_request_id_present = False
        self._file_request_details_value = None
        self._file_request_details_present = False
        self._submitted_file_names_value = None
        self._submitted_file_names_present = False
        self._submitter_name_value = None
        self._submitter_name_present = False
        self._submitter_email_value = None
        self._submitter_email_present = False
        if file_request_id is not None:
            self.file_request_id = file_request_id
        if file_request_details is not None:
            self.file_request_details = file_request_details
        if submitted_file_names is not None:
            self.submitted_file_names = submitted_file_names
        if submitter_name is not None:
            self.submitter_name = submitter_name
        if submitter_email is not None:
            self.submitter_email = submitter_email

    @property
    def file_request_id(self):
        """
        File request id. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._file_request_id_present:
            return self._file_request_id_value
        else:
            return None

    @file_request_id.setter
    def file_request_id(self, val):
        if val is None:
            del self.file_request_id
            return
        val = self._file_request_id_validator.validate(val)
        self._file_request_id_value = val
        self._file_request_id_present = True

    @file_request_id.deleter
    def file_request_id(self):
        self._file_request_id_value = None
        self._file_request_id_present = False

    @property
    def file_request_details(self):
        """
        File request details. Might be missing due to historical data gap.

        :rtype: FileRequestDetails
        """
        if self._file_request_details_present:
            return self._file_request_details_value
        else:
            return None

    @file_request_details.setter
    def file_request_details(self, val):
        if val is None:
            del self.file_request_details
            return
        self._file_request_details_validator.validate_type_only(val)
        self._file_request_details_value = val
        self._file_request_details_present = True

    @file_request_details.deleter
    def file_request_details(self):
        self._file_request_details_value = None
        self._file_request_details_present = False

    @property
    def submitted_file_names(self):
        """
        Submitted file names.

        :rtype: list of [str]
        """
        if self._submitted_file_names_present:
            return self._submitted_file_names_value
        else:
            raise AttributeError("missing required field 'submitted_file_names'")

    @submitted_file_names.setter
    def submitted_file_names(self, val):
        val = self._submitted_file_names_validator.validate(val)
        self._submitted_file_names_value = val
        self._submitted_file_names_present = True

    @submitted_file_names.deleter
    def submitted_file_names(self):
        self._submitted_file_names_value = None
        self._submitted_file_names_present = False

    @property
    def submitter_name(self):
        """
        The name as provided by the submitter. Might be missing due to
        historical data gap.

        :rtype: str
        """
        if self._submitter_name_present:
            return self._submitter_name_value
        else:
            return None

    @submitter_name.setter
    def submitter_name(self, val):
        if val is None:
            del self.submitter_name
            return
        val = self._submitter_name_validator.validate(val)
        self._submitter_name_value = val
        self._submitter_name_present = True

    @submitter_name.deleter
    def submitter_name(self):
        self._submitter_name_value = None
        self._submitter_name_present = False

    @property
    def submitter_email(self):
        """
        The email as provided by the submitter. Might be missing due to
        historical data gap.

        :rtype: str
        """
        if self._submitter_email_present:
            return self._submitter_email_value
        else:
            return None

    @submitter_email.setter
    def submitter_email(self, val):
        if val is None:
            del self.submitter_email
            return
        val = self._submitter_email_validator.validate(val)
        self._submitter_email_value = val
        self._submitter_email_present = True

    @submitter_email.deleter
    def submitter_email(self):
        self._submitter_email_value = None
        self._submitter_email_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestReceiveFileDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestReceiveFileDetails(submitted_file_names={!r}, file_request_id={!r}, file_request_details={!r}, submitter_name={!r}, submitter_email={!r})'.format(
            self._submitted_file_names_value,
            self._file_request_id_value,
            self._file_request_details_value,
            self._submitter_name_value,
            self._submitter_email_value,
        )

FileRequestReceiveFileDetails_validator = bv.Struct(FileRequestReceiveFileDetails)

class FileRequestReceiveFileType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestReceiveFileType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestReceiveFileType(description={!r})'.format(
            self._description_value,
        )

FileRequestReceiveFileType_validator = bv.Struct(FileRequestReceiveFileType)

class FileRequestsChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled file requests.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestsChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestsChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

FileRequestsChangePolicyDetails_validator = bv.Struct(FileRequestsChangePolicyDetails)

class FileRequestsChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestsChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestsChangePolicyType(description={!r})'.format(
            self._description_value,
        )

FileRequestsChangePolicyType_validator = bv.Struct(FileRequestsChangePolicyType)

class FileRequestsEmailsEnabledDetails(bb.Struct):
    """
    Enabled file request emails for everyone.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestsEmailsEnabledDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestsEmailsEnabledDetails()'

FileRequestsEmailsEnabledDetails_validator = bv.Struct(FileRequestsEmailsEnabledDetails)

class FileRequestsEmailsEnabledType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestsEmailsEnabledType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestsEmailsEnabledType(description={!r})'.format(
            self._description_value,
        )

FileRequestsEmailsEnabledType_validator = bv.Struct(FileRequestsEmailsEnabledType)

class FileRequestsEmailsRestrictedToTeamOnlyDetails(bb.Struct):
    """
    Enabled file request emails for team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestsEmailsRestrictedToTeamOnlyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestsEmailsRestrictedToTeamOnlyDetails()'

FileRequestsEmailsRestrictedToTeamOnlyDetails_validator = bv.Struct(FileRequestsEmailsRestrictedToTeamOnlyDetails)

class FileRequestsEmailsRestrictedToTeamOnlyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestsEmailsRestrictedToTeamOnlyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestsEmailsRestrictedToTeamOnlyType(description={!r})'.format(
            self._description_value,
        )

FileRequestsEmailsRestrictedToTeamOnlyType_validator = bv.Struct(FileRequestsEmailsRestrictedToTeamOnlyType)

class FileRequestsPolicy(bb.Union):
    """
    File requests policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRequestsPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRequestsPolicy(%r, %r)' % (self._tag, self._value)

FileRequestsPolicy_validator = bv.Union(FileRequestsPolicy)

class FileResolveCommentDetails(bb.Struct):
    """
    Resolved file comment.

    :ivar comment_text: Comment text. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 comment_text=None):
        self._comment_text_value = None
        self._comment_text_present = False
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileResolveCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileResolveCommentDetails(comment_text={!r})'.format(
            self._comment_text_value,
        )

FileResolveCommentDetails_validator = bv.Struct(FileResolveCommentDetails)

class FileResolveCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileResolveCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileResolveCommentType(description={!r})'.format(
            self._description_value,
        )

FileResolveCommentType_validator = bv.Struct(FileResolveCommentType)

class FileRestoreDetails(bb.Struct):
    """
    Restored deleted files and/or folders.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRestoreDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRestoreDetails()'

FileRestoreDetails_validator = bv.Struct(FileRestoreDetails)

class FileRestoreType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRestoreType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRestoreType(description={!r})'.format(
            self._description_value,
        )

FileRestoreType_validator = bv.Struct(FileRestoreType)

class FileRevertDetails(bb.Struct):
    """
    Reverted files to previous version.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRevertDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRevertDetails()'

FileRevertDetails_validator = bv.Struct(FileRevertDetails)

class FileRevertType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRevertType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRevertType(description={!r})'.format(
            self._description_value,
        )

FileRevertType_validator = bv.Struct(FileRevertType)

class FileRollbackChangesDetails(bb.Struct):
    """
    Rolled back file actions.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRollbackChangesDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRollbackChangesDetails()'

FileRollbackChangesDetails_validator = bv.Struct(FileRollbackChangesDetails)

class FileRollbackChangesType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileRollbackChangesType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileRollbackChangesType(description={!r})'.format(
            self._description_value,
        )

FileRollbackChangesType_validator = bv.Struct(FileRollbackChangesType)

class FileSaveCopyReferenceDetails(bb.Struct):
    """
    Saved file/folder using copy reference.

    :ivar relocate_action_details: Relocate action details.
    """

    __slots__ = [
        '_relocate_action_details_value',
        '_relocate_action_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 relocate_action_details=None):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False
        if relocate_action_details is not None:
            self.relocate_action_details = relocate_action_details

    @property
    def relocate_action_details(self):
        """
        Relocate action details.

        :rtype: list of [RelocateAssetReferencesLogInfo]
        """
        if self._relocate_action_details_present:
            return self._relocate_action_details_value
        else:
            raise AttributeError("missing required field 'relocate_action_details'")

    @relocate_action_details.setter
    def relocate_action_details(self, val):
        val = self._relocate_action_details_validator.validate(val)
        self._relocate_action_details_value = val
        self._relocate_action_details_present = True

    @relocate_action_details.deleter
    def relocate_action_details(self):
        self._relocate_action_details_value = None
        self._relocate_action_details_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileSaveCopyReferenceDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileSaveCopyReferenceDetails(relocate_action_details={!r})'.format(
            self._relocate_action_details_value,
        )

FileSaveCopyReferenceDetails_validator = bv.Struct(FileSaveCopyReferenceDetails)

class FileSaveCopyReferenceType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileSaveCopyReferenceType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileSaveCopyReferenceType(description={!r})'.format(
            self._description_value,
        )

FileSaveCopyReferenceType_validator = bv.Struct(FileSaveCopyReferenceType)

class FileUnlikeCommentDetails(bb.Struct):
    """
    Unliked file comment.

    :ivar comment_text: Comment text. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 comment_text=None):
        self._comment_text_value = None
        self._comment_text_present = False
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileUnlikeCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileUnlikeCommentDetails(comment_text={!r})'.format(
            self._comment_text_value,
        )

FileUnlikeCommentDetails_validator = bv.Struct(FileUnlikeCommentDetails)

class FileUnlikeCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileUnlikeCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileUnlikeCommentType(description={!r})'.format(
            self._description_value,
        )

FileUnlikeCommentType_validator = bv.Struct(FileUnlikeCommentType)

class FileUnresolveCommentDetails(bb.Struct):
    """
    Unresolved file comment.

    :ivar comment_text: Comment text. Might be missing due to historical data
        gap.
    """

    __slots__ = [
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 comment_text=None):
        self._comment_text_value = None
        self._comment_text_present = False
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def comment_text(self):
        """
        Comment text. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileUnresolveCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileUnresolveCommentDetails(comment_text={!r})'.format(
            self._comment_text_value,
        )

FileUnresolveCommentDetails_validator = bv.Struct(FileUnresolveCommentDetails)

class FileUnresolveCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(FileUnresolveCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FileUnresolveCommentType(description={!r})'.format(
            self._description_value,
        )

FileUnresolveCommentType_validator = bv.Struct(FileUnresolveCommentType)

class FolderLogInfo(FileOrFolderLogInfo):
    """
    Folder's logged information.
    """

    __slots__ = [
    ]

    _has_required_fields = True

    def __init__(self,
                 path=None,
                 display_name=None,
                 file_id=None):
        super(FolderLogInfo, self).__init__(path,
                                            display_name,
                                            file_id)

    def _process_custom_annotations(self, annotation_type, processor):
        super(FolderLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'FolderLogInfo(path={!r}, display_name={!r}, file_id={!r})'.format(
            self._path_value,
            self._display_name_value,
            self._file_id_value,
        )

FolderLogInfo_validator = bv.Struct(FolderLogInfo)

class GeoLocationLogInfo(bb.Struct):
    """
    Geographic location details.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(GeoLocationLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GeoLocationLogInfo(ip_address={!r}, city={!r}, region={!r}, country={!r})'.format(
            self._ip_address_value,
            self._city_value,
            self._region_value,
            self._country_value,
        )

GeoLocationLogInfo_validator = bv.Struct(GeoLocationLogInfo)

class GetTeamEventsArg(bb.Struct):
    """
    :ivar limit: The maximal number of results to return per call. Note that
        some calls may not return ``limit`` number of events, and may even
        return no events, even with `has_more` set to true. In this case,
        callers should fetch again using
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue`.
    :ivar 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):
        """
        The maximal number of results to return per call. Note that some calls
        may not return ``limit`` number of events, and may even return no
        events, even with `has_more` set to true. In this case, callers should
        fetch again using
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue`.

        :rtype: int
        """
        if self._limit_present:
            return self._limit_value
        else:
            return 1000

    @limit.setter
    def limit(self, val):
        val = self._limit_validator.validate(val)
        self._limit_value = val
        self._limit_present = True

    @limit.deleter
    def limit(self):
        self._limit_value = None
        self._limit_present = False

    @property
    def account_id(self):
        """
        Filter the events by account ID. Return ony events with this account_id
        as either Actor, Context, or Participants.

        :rtype: str
        """
        if self._account_id_present:
            return self._account_id_value
        else:
            return None

    @account_id.setter
    def account_id(self, val):
        if val is None:
            del self.account_id
            return
        val = self._account_id_validator.validate(val)
        self._account_id_value = val
        self._account_id_present = True

    @account_id.deleter
    def account_id(self):
        self._account_id_value = None
        self._account_id_present = False

    @property
    def time(self):
        """
        Filter by time range.

        :rtype: team_common.TimeRange
        """
        if self._time_present:
            return self._time_value
        else:
            return None

    @time.setter
    def time(self, val):
        if val is None:
            del self.time
            return
        self._time_validator.validate_type_only(val)
        self._time_value = val
        self._time_present = True

    @time.deleter
    def time(self):
        self._time_value = None
        self._time_present = False

    @property
    def category(self):
        """
        Filter the returned events to a single category.

        :rtype: EventCategory
        """
        if self._category_present:
            return self._category_value
        else:
            return None

    @category.setter
    def category(self, val):
        if val is None:
            del self.category
            return
        self._category_validator.validate_type_only(val)
        self._category_value = val
        self._category_present = True

    @category.deleter
    def category(self):
        self._category_value = None
        self._category_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GetTeamEventsArg, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GetTeamEventsArg(limit={!r}, account_id={!r}, time={!r}, category={!r})'.format(
            self._limit_value,
            self._account_id_value,
            self._time_value,
            self._category_value,
        )

GetTeamEventsArg_validator = bv.Struct(GetTeamEventsArg)

class GetTeamEventsContinueArg(bb.Struct):
    """
    :ivar cursor: Indicates from what point to get the next set of events.
    """

    __slots__ = [
        '_cursor_value',
        '_cursor_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 cursor=None):
        self._cursor_value = None
        self._cursor_present = False
        if cursor is not None:
            self.cursor = cursor

    @property
    def cursor(self):
        """
        Indicates from what point to get the next set of events.

        :rtype: str
        """
        if self._cursor_present:
            return self._cursor_value
        else:
            raise AttributeError("missing required field 'cursor'")

    @cursor.setter
    def cursor(self, val):
        val = self._cursor_validator.validate(val)
        self._cursor_value = val
        self._cursor_present = True

    @cursor.deleter
    def cursor(self):
        self._cursor_value = None
        self._cursor_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GetTeamEventsContinueArg, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GetTeamEventsContinueArg(cursor={!r})'.format(
            self._cursor_value,
        )

GetTeamEventsContinueArg_validator = bv.Struct(GetTeamEventsContinueArg)

class GetTeamEventsContinueError(bb.Union):
    """
    Errors that can be raised when calling
    :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue`.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar bad_cursor: Bad cursor.
    :ivar datetime.datetime reset: Cursors are intended to be used quickly.
        Individual cursor values are normally valid for days, but in rare cases
        may be reset sooner. Cursor reset errors should be handled by fetching a
        new cursor from :route:`get_events`. The associated value is the
        approximate timestamp of the most recent event returned by the cursor.
        This should be used as a resumption point when calling
        :route:`get_events` to obtain a new cursor.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    bad_cursor = None
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def reset(cls, val):
        """
        Create an instance of this class set to the ``reset`` tag with value
        ``val``.

        :param datetime.datetime val:
        :rtype: GetTeamEventsContinueError
        """
        return cls('reset', val)

    def is_bad_cursor(self):
        """
        Check if the union tag is ``bad_cursor``.

        :rtype: bool
        """
        return self._tag == 'bad_cursor'

    def is_reset(self):
        """
        Check if the union tag is ``reset``.

        :rtype: bool
        """
        return self._tag == 'reset'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_reset(self):
        """
        Cursors are intended to be used quickly. Individual cursor values are
        normally valid for days, but in rare cases may be reset sooner. Cursor
        reset errors should be handled by fetching a new cursor from
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events`. The associated
        value is the approximate timestamp of the most recent event returned by
        the cursor. This should be used as a resumption point when calling
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events` to obtain a new
        cursor.

        Only call this if :meth:`is_reset` is true.

        :rtype: datetime.datetime
        """
        if not self.is_reset():
            raise AttributeError("tag 'reset' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, processor):
        super(GetTeamEventsContinueError, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GetTeamEventsContinueError(%r, %r)' % (self._tag, self._value)

GetTeamEventsContinueError_validator = bv.Union(GetTeamEventsContinueError)

class GetTeamEventsError(bb.Union):
    """
    Errors that can be raised when calling
    :meth:`dropbox.dropbox.Dropbox.team_log_get_events`.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(GetTeamEventsError, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GetTeamEventsError(%r, %r)' % (self._tag, self._value)

GetTeamEventsError_validator = bv.Union(GetTeamEventsError)

class GetTeamEventsResult(bb.Struct):
    """
    :ivar events: List of events. Note that events are not guaranteed to be
        sorted by their timestamp value.
    :ivar cursor: Pass the cursor into
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue` to obtain
        additional events. The value of ``cursor`` may change for each response
        from :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue`,
        regardless of the value of ``has_more``; older cursor strings may
        expire. Thus, callers should ensure that they update their cursor based
        on the latest value of ``cursor`` after each call, and poll regularly if
        they wish to poll for new events. Callers should handle reset exceptions
        for expired cursors.
    :ivar has_more: Is true if there may be additional events that have not been
        returned yet. An additional call to
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue` can
        retrieve them. Note that ``has_more`` may be ``True``, even if
        ``events`` is empty.
    """

    __slots__ = [
        '_events_value',
        '_events_present',
        '_cursor_value',
        '_cursor_present',
        '_has_more_value',
        '_has_more_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 events=None,
                 cursor=None,
                 has_more=None):
        self._events_value = None
        self._events_present = False
        self._cursor_value = None
        self._cursor_present = False
        self._has_more_value = None
        self._has_more_present = False
        if events is not None:
            self.events = events
        if cursor is not None:
            self.cursor = cursor
        if has_more is not None:
            self.has_more = has_more

    @property
    def events(self):
        """
        List of events. Note that events are not guaranteed to be sorted by
        their timestamp value.

        :rtype: list of [TeamEvent]
        """
        if self._events_present:
            return self._events_value
        else:
            raise AttributeError("missing required field 'events'")

    @events.setter
    def events(self, val):
        val = self._events_validator.validate(val)
        self._events_value = val
        self._events_present = True

    @events.deleter
    def events(self):
        self._events_value = None
        self._events_present = False

    @property
    def cursor(self):
        """
        Pass the cursor into
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue` to obtain
        additional events. The value of ``cursor`` may change for each response
        from :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue`,
        regardless of the value of ``has_more``; older cursor strings may
        expire. Thus, callers should ensure that they update their cursor based
        on the latest value of ``cursor`` after each call, and poll regularly if
        they wish to poll for new events. Callers should handle reset exceptions
        for expired cursors.

        :rtype: str
        """
        if self._cursor_present:
            return self._cursor_value
        else:
            raise AttributeError("missing required field 'cursor'")

    @cursor.setter
    def cursor(self, val):
        val = self._cursor_validator.validate(val)
        self._cursor_value = val
        self._cursor_present = True

    @cursor.deleter
    def cursor(self):
        self._cursor_value = None
        self._cursor_present = False

    @property
    def has_more(self):
        """
        Is true if there may be additional events that have not been returned
        yet. An additional call to
        :meth:`dropbox.dropbox.Dropbox.team_log_get_events_continue` can
        retrieve them. Note that ``has_more`` may be ``True``, even if
        ``events`` is empty.

        :rtype: bool
        """
        if self._has_more_present:
            return self._has_more_value
        else:
            raise AttributeError("missing required field 'has_more'")

    @has_more.setter
    def has_more(self, val):
        val = self._has_more_validator.validate(val)
        self._has_more_value = val
        self._has_more_present = True

    @has_more.deleter
    def has_more(self):
        self._has_more_value = None
        self._has_more_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GetTeamEventsResult, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GetTeamEventsResult(events={!r}, cursor={!r}, has_more={!r})'.format(
            self._events_value,
            self._cursor_value,
            self._has_more_value,
        )

GetTeamEventsResult_validator = bv.Struct(GetTeamEventsResult)

class GoogleSsoChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled Google single sign-on for team.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(GoogleSsoChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GoogleSsoChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

GoogleSsoChangePolicyDetails_validator = bv.Struct(GoogleSsoChangePolicyDetails)

class GoogleSsoChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GoogleSsoChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GoogleSsoChangePolicyType(description={!r})'.format(
            self._description_value,
        )

GoogleSsoChangePolicyType_validator = bv.Struct(GoogleSsoChangePolicyType)

class GoogleSsoPolicy(bb.Union):
    """
    Google SSO policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(GoogleSsoPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GoogleSsoPolicy(%r, %r)' % (self._tag, self._value)

GoogleSsoPolicy_validator = bv.Union(GoogleSsoPolicy)

class GroupAddExternalIdDetails(bb.Struct):
    """
    Added external ID for group.

    :ivar new_value: Current external id.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        Current external id.

        :rtype: str
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupAddExternalIdDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupAddExternalIdDetails(new_value={!r})'.format(
            self._new_value_value,
        )

GroupAddExternalIdDetails_validator = bv.Struct(GroupAddExternalIdDetails)

class GroupAddExternalIdType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupAddExternalIdType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupAddExternalIdType(description={!r})'.format(
            self._description_value,
        )

GroupAddExternalIdType_validator = bv.Struct(GroupAddExternalIdType)

class GroupAddMemberDetails(bb.Struct):
    """
    Added team members to group.

    :ivar is_group_owner: Is group owner.
    """

    __slots__ = [
        '_is_group_owner_value',
        '_is_group_owner_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 is_group_owner=None):
        self._is_group_owner_value = None
        self._is_group_owner_present = False
        if is_group_owner is not None:
            self.is_group_owner = is_group_owner

    @property
    def is_group_owner(self):
        """
        Is group owner.

        :rtype: bool
        """
        if self._is_group_owner_present:
            return self._is_group_owner_value
        else:
            raise AttributeError("missing required field 'is_group_owner'")

    @is_group_owner.setter
    def is_group_owner(self, val):
        val = self._is_group_owner_validator.validate(val)
        self._is_group_owner_value = val
        self._is_group_owner_present = True

    @is_group_owner.deleter
    def is_group_owner(self):
        self._is_group_owner_value = None
        self._is_group_owner_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupAddMemberDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupAddMemberDetails(is_group_owner={!r})'.format(
            self._is_group_owner_value,
        )

GroupAddMemberDetails_validator = bv.Struct(GroupAddMemberDetails)

class GroupAddMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupAddMemberType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupAddMemberType(description={!r})'.format(
            self._description_value,
        )

GroupAddMemberType_validator = bv.Struct(GroupAddMemberType)

class GroupChangeExternalIdDetails(bb.Struct):
    """
    Changed external ID for group.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(GroupChangeExternalIdDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupChangeExternalIdDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

GroupChangeExternalIdDetails_validator = bv.Struct(GroupChangeExternalIdDetails)

class GroupChangeExternalIdType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupChangeExternalIdType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupChangeExternalIdType(description={!r})'.format(
            self._description_value,
        )

GroupChangeExternalIdType_validator = bv.Struct(GroupChangeExternalIdType)

class GroupChangeManagementTypeDetails(bb.Struct):
    """
    Changed group management type.

    :ivar 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
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous group management type. Might be missing due to historical data
        gap.

        :rtype: team_common.GroupManagementType
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupChangeManagementTypeDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupChangeManagementTypeDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

GroupChangeManagementTypeDetails_validator = bv.Struct(GroupChangeManagementTypeDetails)

class GroupChangeManagementTypeType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupChangeManagementTypeType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupChangeManagementTypeType(description={!r})'.format(
            self._description_value,
        )

GroupChangeManagementTypeType_validator = bv.Struct(GroupChangeManagementTypeType)

class GroupChangeMemberRoleDetails(bb.Struct):
    """
    Changed manager permissions of group member.

    :ivar is_group_owner: Is group owner.
    """

    __slots__ = [
        '_is_group_owner_value',
        '_is_group_owner_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 is_group_owner=None):
        self._is_group_owner_value = None
        self._is_group_owner_present = False
        if is_group_owner is not None:
            self.is_group_owner = is_group_owner

    @property
    def is_group_owner(self):
        """
        Is group owner.

        :rtype: bool
        """
        if self._is_group_owner_present:
            return self._is_group_owner_value
        else:
            raise AttributeError("missing required field 'is_group_owner'")

    @is_group_owner.setter
    def is_group_owner(self, val):
        val = self._is_group_owner_validator.validate(val)
        self._is_group_owner_value = val
        self._is_group_owner_present = True

    @is_group_owner.deleter
    def is_group_owner(self):
        self._is_group_owner_value = None
        self._is_group_owner_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupChangeMemberRoleDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupChangeMemberRoleDetails(is_group_owner={!r})'.format(
            self._is_group_owner_value,
        )

GroupChangeMemberRoleDetails_validator = bv.Struct(GroupChangeMemberRoleDetails)

class GroupChangeMemberRoleType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupChangeMemberRoleType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupChangeMemberRoleType(description={!r})'.format(
            self._description_value,
        )

GroupChangeMemberRoleType_validator = bv.Struct(GroupChangeMemberRoleType)

class GroupCreateDetails(bb.Struct):
    """
    Created 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 = False

    def __init__(self,
                 is_company_managed=None,
                 join_policy=None):
        self._is_company_managed_value = None
        self._is_company_managed_present = False
        self._join_policy_value = None
        self._join_policy_present = False
        if is_company_managed is not None:
            self.is_company_managed = is_company_managed
        if join_policy is not None:
            self.join_policy = join_policy

    @property
    def is_company_managed(self):
        """
        Is company managed group. Might be missing due to historical data gap.

        :rtype: bool
        """
        if self._is_company_managed_present:
            return self._is_company_managed_value
        else:
            return None

    @is_company_managed.setter
    def is_company_managed(self, val):
        if val is None:
            del self.is_company_managed
            return
        val = self._is_company_managed_validator.validate(val)
        self._is_company_managed_value = val
        self._is_company_managed_present = True

    @is_company_managed.deleter
    def is_company_managed(self):
        self._is_company_managed_value = None
        self._is_company_managed_present = False

    @property
    def join_policy(self):
        """
        Group join policy.

        :rtype: GroupJoinPolicy
        """
        if self._join_policy_present:
            return self._join_policy_value
        else:
            return None

    @join_policy.setter
    def join_policy(self, val):
        if val is None:
            del self.join_policy
            return
        self._join_policy_validator.validate_type_only(val)
        self._join_policy_value = val
        self._join_policy_present = True

    @join_policy.deleter
    def join_policy(self):
        self._join_policy_value = None
        self._join_policy_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupCreateDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupCreateDetails(is_company_managed={!r}, join_policy={!r})'.format(
            self._is_company_managed_value,
            self._join_policy_value,
        )

GroupCreateDetails_validator = bv.Struct(GroupCreateDetails)

class GroupCreateType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupCreateType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupCreateType(description={!r})'.format(
            self._description_value,
        )

GroupCreateType_validator = bv.Struct(GroupCreateType)

class GroupDeleteDetails(bb.Struct):
    """
    Deleted 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 _process_custom_annotations(self, annotation_type, processor):
        super(GroupDeleteDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupDeleteDetails(is_company_managed={!r})'.format(
            self._is_company_managed_value,
        )

GroupDeleteDetails_validator = bv.Struct(GroupDeleteDetails)

class GroupDeleteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupDeleteType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupDeleteType(description={!r})'.format(
            self._description_value,
        )

GroupDeleteType_validator = bv.Struct(GroupDeleteType)

class GroupDescriptionUpdatedDetails(bb.Struct):
    """
    Updated group.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupDescriptionUpdatedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupDescriptionUpdatedDetails()'

GroupDescriptionUpdatedDetails_validator = bv.Struct(GroupDescriptionUpdatedDetails)

class GroupDescriptionUpdatedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupDescriptionUpdatedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupDescriptionUpdatedType(description={!r})'.format(
            self._description_value,
        )

GroupDescriptionUpdatedType_validator = bv.Struct(GroupDescriptionUpdatedType)

class GroupJoinPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    open = None
    # Attribute is overwritten below the class definition
    request_to_join = None
    # Attribute is overwritten below the class definition
    other = None

    def is_open(self):
        """
        Check if the union tag is ``open``.

        :rtype: bool
        """
        return self._tag == 'open'

    def is_request_to_join(self):
        """
        Check if the union tag is ``request_to_join``.

        :rtype: bool
        """
        return self._tag == 'request_to_join'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupJoinPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupJoinPolicy(%r, %r)' % (self._tag, self._value)

GroupJoinPolicy_validator = bv.Union(GroupJoinPolicy)

class GroupJoinPolicyUpdatedDetails(bb.Struct):
    """
    Updated group join policy.

    :ivar 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 = False

    def __init__(self,
                 is_company_managed=None,
                 join_policy=None):
        self._is_company_managed_value = None
        self._is_company_managed_present = False
        self._join_policy_value = None
        self._join_policy_present = False
        if is_company_managed is not None:
            self.is_company_managed = is_company_managed
        if join_policy is not None:
            self.join_policy = join_policy

    @property
    def is_company_managed(self):
        """
        Is company managed group. Might be missing due to historical data gap.

        :rtype: bool
        """
        if self._is_company_managed_present:
            return self._is_company_managed_value
        else:
            return None

    @is_company_managed.setter
    def is_company_managed(self, val):
        if val is None:
            del self.is_company_managed
            return
        val = self._is_company_managed_validator.validate(val)
        self._is_company_managed_value = val
        self._is_company_managed_present = True

    @is_company_managed.deleter
    def is_company_managed(self):
        self._is_company_managed_value = None
        self._is_company_managed_present = False

    @property
    def join_policy(self):
        """
        Group join policy.

        :rtype: GroupJoinPolicy
        """
        if self._join_policy_present:
            return self._join_policy_value
        else:
            return None

    @join_policy.setter
    def join_policy(self, val):
        if val is None:
            del self.join_policy
            return
        self._join_policy_validator.validate_type_only(val)
        self._join_policy_value = val
        self._join_policy_present = True

    @join_policy.deleter
    def join_policy(self):
        self._join_policy_value = None
        self._join_policy_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupJoinPolicyUpdatedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupJoinPolicyUpdatedDetails(is_company_managed={!r}, join_policy={!r})'.format(
            self._is_company_managed_value,
            self._join_policy_value,
        )

GroupJoinPolicyUpdatedDetails_validator = bv.Struct(GroupJoinPolicyUpdatedDetails)

class GroupJoinPolicyUpdatedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupJoinPolicyUpdatedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupJoinPolicyUpdatedType(description={!r})'.format(
            self._description_value,
        )

GroupJoinPolicyUpdatedType_validator = bv.Struct(GroupJoinPolicyUpdatedType)

class GroupLogInfo(bb.Struct):
    """
    Group's logged information.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(GroupLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupLogInfo(display_name={!r}, group_id={!r}, external_id={!r})'.format(
            self._display_name_value,
            self._group_id_value,
            self._external_id_value,
        )

GroupLogInfo_validator = bv.Struct(GroupLogInfo)

class GroupMovedDetails(bb.Struct):
    """
    Moved group.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupMovedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupMovedDetails()'

GroupMovedDetails_validator = bv.Struct(GroupMovedDetails)

class GroupMovedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupMovedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupMovedType(description={!r})'.format(
            self._description_value,
        )

GroupMovedType_validator = bv.Struct(GroupMovedType)

class GroupRemoveExternalIdDetails(bb.Struct):
    """
    Removed external ID for group.

    :ivar previous_value: Old external id.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def previous_value(self):
        """
        Old external id.

        :rtype: str
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupRemoveExternalIdDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupRemoveExternalIdDetails(previous_value={!r})'.format(
            self._previous_value_value,
        )

GroupRemoveExternalIdDetails_validator = bv.Struct(GroupRemoveExternalIdDetails)

class GroupRemoveExternalIdType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupRemoveExternalIdType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupRemoveExternalIdType(description={!r})'.format(
            self._description_value,
        )

GroupRemoveExternalIdType_validator = bv.Struct(GroupRemoveExternalIdType)

class GroupRemoveMemberDetails(bb.Struct):
    """
    Removed team members from group.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupRemoveMemberDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupRemoveMemberDetails()'

GroupRemoveMemberDetails_validator = bv.Struct(GroupRemoveMemberDetails)

class GroupRemoveMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupRemoveMemberType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupRemoveMemberType(description={!r})'.format(
            self._description_value,
        )

GroupRemoveMemberType_validator = bv.Struct(GroupRemoveMemberType)

class GroupRenameDetails(bb.Struct):
    """
    Renamed 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 _process_custom_annotations(self, annotation_type, processor):
        super(GroupRenameDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupRenameDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

GroupRenameDetails_validator = bv.Struct(GroupRenameDetails)

class GroupRenameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupRenameType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupRenameType(description={!r})'.format(
            self._description_value,
        )

GroupRenameType_validator = bv.Struct(GroupRenameType)

class GroupUserManagementChangePolicyDetails(bb.Struct):
    """
    Changed who can create groups.

    :ivar 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: team_policies.GroupCreation
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous group users management policy. Might be missing due to
        historical data gap.

        :rtype: team_policies.GroupCreation
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupUserManagementChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupUserManagementChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

GroupUserManagementChangePolicyDetails_validator = bv.Struct(GroupUserManagementChangePolicyDetails)

class GroupUserManagementChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(GroupUserManagementChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'GroupUserManagementChangePolicyType(description={!r})'.format(
            self._description_value,
        )

GroupUserManagementChangePolicyType_validator = bv.Struct(GroupUserManagementChangePolicyType)

class IdentifierType(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    email = None
    # Attribute is overwritten below the class definition
    facebook_profile_name = None
    # Attribute is overwritten below the class definition
    other = None

    def is_email(self):
        """
        Check if the union tag is ``email``.

        :rtype: bool
        """
        return self._tag == 'email'

    def is_facebook_profile_name(self):
        """
        Check if the union tag is ``facebook_profile_name``.

        :rtype: bool
        """
        return self._tag == 'facebook_profile_name'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(IdentifierType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'IdentifierType(%r, %r)' % (self._tag, self._value)

IdentifierType_validator = bv.Union(IdentifierType)

class JoinTeamDetails(bb.Struct):
    """
    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 [UserLinkedAppLogInfo]
        """
        if self._linked_apps_present:
            return self._linked_apps_value
        else:
            raise AttributeError("missing required field 'linked_apps'")

    @linked_apps.setter
    def linked_apps(self, val):
        val = self._linked_apps_validator.validate(val)
        self._linked_apps_value = val
        self._linked_apps_present = True

    @linked_apps.deleter
    def linked_apps(self):
        self._linked_apps_value = None
        self._linked_apps_present = False

    @property
    def linked_devices(self):
        """
        Linked devices.

        :rtype: list of [LinkedDeviceLogInfo]
        """
        if self._linked_devices_present:
            return self._linked_devices_value
        else:
            raise AttributeError("missing required field 'linked_devices'")

    @linked_devices.setter
    def linked_devices(self, val):
        val = self._linked_devices_validator.validate(val)
        self._linked_devices_value = val
        self._linked_devices_present = True

    @linked_devices.deleter
    def linked_devices(self):
        self._linked_devices_value = None
        self._linked_devices_present = False

    @property
    def linked_shared_folders(self):
        """
        Linked shared folders.

        :rtype: list of [FolderLogInfo]
        """
        if self._linked_shared_folders_present:
            return self._linked_shared_folders_value
        else:
            raise AttributeError("missing required field 'linked_shared_folders'")

    @linked_shared_folders.setter
    def linked_shared_folders(self, val):
        val = self._linked_shared_folders_validator.validate(val)
        self._linked_shared_folders_value = val
        self._linked_shared_folders_present = True

    @linked_shared_folders.deleter
    def linked_shared_folders(self):
        self._linked_shared_folders_value = None
        self._linked_shared_folders_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(JoinTeamDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'JoinTeamDetails(linked_apps={!r}, linked_devices={!r}, linked_shared_folders={!r})'.format(
            self._linked_apps_value,
            self._linked_devices_value,
            self._linked_shared_folders_value,
        )

JoinTeamDetails_validator = bv.Struct(JoinTeamDetails)

class LegacyDeviceSessionLogInfo(DeviceSessionLogInfo):
    """
    Information on sessions, in legacy format

    :ivar session_info: Session unique id. Might be missing due to historical
        data gap.
    :ivar display_name: The device name. Might be missing due to historical data
        gap.
    :ivar is_emm_managed: Is device managed by emm. Might be missing due to
        historical data gap.
    :ivar platform: Information on the hosting platform. Might be missing due to
        historical data gap.
    :ivar mac_address: The mac address of the last activity from this session.
        Might be missing due to historical data gap.
    :ivar os_version: The hosting OS version. Might be missing due to historical
        data gap.
    :ivar device_type: Information on the hosting device type. Might be missing
        due to historical data gap.
    :ivar client_version: The Dropbox client version. Might be missing due to
        historical data gap.
    :ivar legacy_uniq_id: Alternative unique device session id, instead of
        session id field. Might be missing due to historical data gap.
    """

    __slots__ = [
        '_session_info_value',
        '_session_info_present',
        '_display_name_value',
        '_display_name_present',
        '_is_emm_managed_value',
        '_is_emm_managed_present',
        '_platform_value',
        '_platform_present',
        '_mac_address_value',
        '_mac_address_present',
        '_os_version_value',
        '_os_version_present',
        '_device_type_value',
        '_device_type_present',
        '_client_version_value',
        '_client_version_present',
        '_legacy_uniq_id_value',
        '_legacy_uniq_id_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 ip_address=None,
                 created=None,
                 updated=None,
                 session_info=None,
                 display_name=None,
                 is_emm_managed=None,
                 platform=None,
                 mac_address=None,
                 os_version=None,
                 device_type=None,
                 client_version=None,
                 legacy_uniq_id=None):
        super(LegacyDeviceSessionLogInfo, self).__init__(ip_address,
                                                         created,
                                                         updated)
        self._session_info_value = None
        self._session_info_present = False
        self._display_name_value = None
        self._display_name_present = False
        self._is_emm_managed_value = None
        self._is_emm_managed_present = False
        self._platform_value = None
        self._platform_present = False
        self._mac_address_value = None
        self._mac_address_present = False
        self._os_version_value = None
        self._os_version_present = False
        self._device_type_value = None
        self._device_type_present = False
        self._client_version_value = None
        self._client_version_present = False
        self._legacy_uniq_id_value = None
        self._legacy_uniq_id_present = False
        if session_info is not None:
            self.session_info = session_info
        if display_name is not None:
            self.display_name = display_name
        if is_emm_managed is not None:
            self.is_emm_managed = is_emm_managed
        if platform is not None:
            self.platform = platform
        if mac_address is not None:
            self.mac_address = mac_address
        if os_version is not None:
            self.os_version = os_version
        if device_type is not None:
            self.device_type = device_type
        if client_version is not None:
            self.client_version = client_version
        if legacy_uniq_id is not None:
            self.legacy_uniq_id = legacy_uniq_id

    @property
    def session_info(self):
        """
        Session unique id. Might be missing due to historical data gap.

        :rtype: SessionLogInfo
        """
        if self._session_info_present:
            return self._session_info_value
        else:
            return None

    @session_info.setter
    def session_info(self, val):
        if val is None:
            del self.session_info
            return
        self._session_info_validator.validate_type_only(val)
        self._session_info_value = val
        self._session_info_present = True

    @session_info.deleter
    def session_info(self):
        self._session_info_value = None
        self._session_info_present = False

    @property
    def display_name(self):
        """
        The device name. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._display_name_present:
            return self._display_name_value
        else:
            return None

    @display_name.setter
    def display_name(self, val):
        if val is None:
            del self.display_name
            return
        val = self._display_name_validator.validate(val)
        self._display_name_value = val
        self._display_name_present = True

    @display_name.deleter
    def display_name(self):
        self._display_name_value = None
        self._display_name_present = False

    @property
    def is_emm_managed(self):
        """
        Is device managed by emm. Might be missing due to historical data gap.

        :rtype: bool
        """
        if self._is_emm_managed_present:
            return self._is_emm_managed_value
        else:
            return None

    @is_emm_managed.setter
    def is_emm_managed(self, val):
        if val is None:
            del self.is_emm_managed
            return
        val = self._is_emm_managed_validator.validate(val)
        self._is_emm_managed_value = val
        self._is_emm_managed_present = True

    @is_emm_managed.deleter
    def is_emm_managed(self):
        self._is_emm_managed_value = None
        self._is_emm_managed_present = False

    @property
    def platform(self):
        """
        Information on the hosting platform. Might be missing due to historical
        data gap.

        :rtype: str
        """
        if self._platform_present:
            return self._platform_value
        else:
            return None

    @platform.setter
    def platform(self, val):
        if val is None:
            del self.platform
            return
        val = self._platform_validator.validate(val)
        self._platform_value = val
        self._platform_present = True

    @platform.deleter
    def platform(self):
        self._platform_value = None
        self._platform_present = False

    @property
    def mac_address(self):
        """
        The mac address of the last activity from this session. Might be missing
        due to historical data gap.

        :rtype: str
        """
        if self._mac_address_present:
            return self._mac_address_value
        else:
            return None

    @mac_address.setter
    def mac_address(self, val):
        if val is None:
            del self.mac_address
            return
        val = self._mac_address_validator.validate(val)
        self._mac_address_value = val
        self._mac_address_present = True

    @mac_address.deleter
    def mac_address(self):
        self._mac_address_value = None
        self._mac_address_present = False

    @property
    def os_version(self):
        """
        The hosting OS version. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._os_version_present:
            return self._os_version_value
        else:
            return None

    @os_version.setter
    def os_version(self, val):
        if val is None:
            del self.os_version
            return
        val = self._os_version_validator.validate(val)
        self._os_version_value = val
        self._os_version_present = True

    @os_version.deleter
    def os_version(self):
        self._os_version_value = None
        self._os_version_present = False

    @property
    def device_type(self):
        """
        Information on the hosting device type. Might be missing due to
        historical data gap.

        :rtype: str
        """
        if self._device_type_present:
            return self._device_type_value
        else:
            return None

    @device_type.setter
    def device_type(self, val):
        if val is None:
            del self.device_type
            return
        val = self._device_type_validator.validate(val)
        self._device_type_value = val
        self._device_type_present = True

    @device_type.deleter
    def device_type(self):
        self._device_type_value = None
        self._device_type_present = False

    @property
    def client_version(self):
        """
        The Dropbox client version. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._client_version_present:
            return self._client_version_value
        else:
            return None

    @client_version.setter
    def client_version(self, val):
        if val is None:
            del self.client_version
            return
        val = self._client_version_validator.validate(val)
        self._client_version_value = val
        self._client_version_present = True

    @client_version.deleter
    def client_version(self):
        self._client_version_value = None
        self._client_version_present = False

    @property
    def legacy_uniq_id(self):
        """
        Alternative unique device session id, instead of session id field. Might
        be missing due to historical data gap.

        :rtype: str
        """
        if self._legacy_uniq_id_present:
            return self._legacy_uniq_id_value
        else:
            return None

    @legacy_uniq_id.setter
    def legacy_uniq_id(self, val):
        if val is None:
            del self.legacy_uniq_id
            return
        val = self._legacy_uniq_id_validator.validate(val)
        self._legacy_uniq_id_value = val
        self._legacy_uniq_id_present = True

    @legacy_uniq_id.deleter
    def legacy_uniq_id(self):
        self._legacy_uniq_id_value = None
        self._legacy_uniq_id_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(LegacyDeviceSessionLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'LegacyDeviceSessionLogInfo(ip_address={!r}, created={!r}, updated={!r}, session_info={!r}, display_name={!r}, is_emm_managed={!r}, platform={!r}, mac_address={!r}, os_version={!r}, device_type={!r}, client_version={!r}, legacy_uniq_id={!r})'.format(
            self._ip_address_value,
            self._created_value,
            self._updated_value,
            self._session_info_value,
            self._display_name_value,
            self._is_emm_managed_value,
            self._platform_value,
            self._mac_address_value,
            self._os_version_value,
            self._device_type_value,
            self._client_version_value,
            self._legacy_uniq_id_value,
        )

LegacyDeviceSessionLogInfo_validator = bv.Struct(LegacyDeviceSessionLogInfo)

class LinkedDeviceLogInfo(bb.Union):
    """
    The device sessions that user is linked to.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar MobileDeviceSessionLogInfo mobile_device_session: mobile device
        session's details.
    :ivar DesktopDeviceSessionLogInfo desktop_device_session: desktop device
        session's details.
    :ivar WebDeviceSessionLogInfo web_device_session: web device session's
        details.
    :ivar LegacyDeviceSessionLogInfo legacy_device_session: legacy device
        session's details.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    other = None

    @classmethod
    def mobile_device_session(cls, val):
        """
        Create an instance of this class set to the ``mobile_device_session``
        tag with value ``val``.

        :param MobileDeviceSessionLogInfo val:
        :rtype: LinkedDeviceLogInfo
        """
        return cls('mobile_device_session', val)

    @classmethod
    def desktop_device_session(cls, val):
        """
        Create an instance of this class set to the ``desktop_device_session``
        tag with value ``val``.

        :param DesktopDeviceSessionLogInfo val:
        :rtype: LinkedDeviceLogInfo
        """
        return cls('desktop_device_session', val)

    @classmethod
    def web_device_session(cls, val):
        """
        Create an instance of this class set to the ``web_device_session`` tag
        with value ``val``.

        :param WebDeviceSessionLogInfo val:
        :rtype: LinkedDeviceLogInfo
        """
        return cls('web_device_session', val)

    @classmethod
    def legacy_device_session(cls, val):
        """
        Create an instance of this class set to the ``legacy_device_session``
        tag with value ``val``.

        :param LegacyDeviceSessionLogInfo val:
        :rtype: LinkedDeviceLogInfo
        """
        return cls('legacy_device_session', val)

    def is_mobile_device_session(self):
        """
        Check if the union tag is ``mobile_device_session``.

        :rtype: bool
        """
        return self._tag == 'mobile_device_session'

    def is_desktop_device_session(self):
        """
        Check if the union tag is ``desktop_device_session``.

        :rtype: bool
        """
        return self._tag == 'desktop_device_session'

    def is_web_device_session(self):
        """
        Check if the union tag is ``web_device_session``.

        :rtype: bool
        """
        return self._tag == 'web_device_session'

    def is_legacy_device_session(self):
        """
        Check if the union tag is ``legacy_device_session``.

        :rtype: bool
        """
        return self._tag == 'legacy_device_session'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def get_mobile_device_session(self):
        """
        mobile device session's details.

        Only call this if :meth:`is_mobile_device_session` is true.

        :rtype: MobileDeviceSessionLogInfo
        """
        if not self.is_mobile_device_session():
            raise AttributeError("tag 'mobile_device_session' not set")
        return self._value

    def get_desktop_device_session(self):
        """
        desktop device session's details.

        Only call this if :meth:`is_desktop_device_session` is true.

        :rtype: DesktopDeviceSessionLogInfo
        """
        if not self.is_desktop_device_session():
            raise AttributeError("tag 'desktop_device_session' not set")
        return self._value

    def get_web_device_session(self):
        """
        web device session's details.

        Only call this if :meth:`is_web_device_session` is true.

        :rtype: WebDeviceSessionLogInfo
        """
        if not self.is_web_device_session():
            raise AttributeError("tag 'web_device_session' not set")
        return self._value

    def get_legacy_device_session(self):
        """
        legacy device session's details.

        Only call this if :meth:`is_legacy_device_session` is true.

        :rtype: LegacyDeviceSessionLogInfo
        """
        if not self.is_legacy_device_session():
            raise AttributeError("tag 'legacy_device_session' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, processor):
        super(LinkedDeviceLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'LinkedDeviceLogInfo(%r, %r)' % (self._tag, self._value)

LinkedDeviceLogInfo_validator = bv.Union(LinkedDeviceLogInfo)

class LoginFailDetails(bb.Struct):
    """
    Failed to sign in.

    :ivar is_emm_managed: Tells if the login device is EMM managed. Might be
        missing due to historical data gap.
    :ivar login_method: Login method.
    :ivar error_details: Error details.
    """

    __slots__ = [
        '_is_emm_managed_value',
        '_is_emm_managed_present',
        '_login_method_value',
        '_login_method_present',
        '_error_details_value',
        '_error_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 login_method=None,
                 error_details=None,
                 is_emm_managed=None):
        self._is_emm_managed_value = None
        self._is_emm_managed_present = False
        self._login_method_value = None
        self._login_method_present = False
        self._error_details_value = None
        self._error_details_present = False
        if is_emm_managed is not None:
            self.is_emm_managed = is_emm_managed
        if login_method is not None:
            self.login_method = login_method
        if error_details is not None:
            self.error_details = error_details

    @property
    def is_emm_managed(self):
        """
        Tells if the login device is EMM managed. Might be missing due to
        historical data gap.

        :rtype: bool
        """
        if self._is_emm_managed_present:
            return self._is_emm_managed_value
        else:
            return None

    @is_emm_managed.setter
    def is_emm_managed(self, val):
        if val is None:
            del self.is_emm_managed
            return
        val = self._is_emm_managed_validator.validate(val)
        self._is_emm_managed_value = val
        self._is_emm_managed_present = True

    @is_emm_managed.deleter
    def is_emm_managed(self):
        self._is_emm_managed_value = None
        self._is_emm_managed_present = False

    @property
    def login_method(self):
        """
        Login method.

        :rtype: LoginMethod
        """
        if self._login_method_present:
            return self._login_method_value
        else:
            raise AttributeError("missing required field 'login_method'")

    @login_method.setter
    def login_method(self, val):
        self._login_method_validator.validate_type_only(val)
        self._login_method_value = val
        self._login_method_present = True

    @login_method.deleter
    def login_method(self):
        self._login_method_value = None
        self._login_method_present = False

    @property
    def error_details(self):
        """
        Error details.

        :rtype: FailureDetailsLogInfo
        """
        if self._error_details_present:
            return self._error_details_value
        else:
            raise AttributeError("missing required field 'error_details'")

    @error_details.setter
    def error_details(self, val):
        self._error_details_validator.validate_type_only(val)
        self._error_details_value = val
        self._error_details_present = True

    @error_details.deleter
    def error_details(self):
        self._error_details_value = None
        self._error_details_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(LoginFailDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'LoginFailDetails(login_method={!r}, error_details={!r}, is_emm_managed={!r})'.format(
            self._login_method_value,
            self._error_details_value,
            self._is_emm_managed_value,
        )

LoginFailDetails_validator = bv.Struct(LoginFailDetails)

class LoginFailType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(LoginFailType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'LoginFailType(description={!r})'.format(
            self._description_value,
        )

LoginFailType_validator = bv.Struct(LoginFailType)

class LoginMethod(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    password = None
    # Attribute is overwritten below the class definition
    two_factor_authentication = None
    # Attribute is overwritten below the class definition
    saml = None
    # Attribute is overwritten below the class definition
    other = None

    def is_password(self):
        """
        Check if the union tag is ``password``.

        :rtype: bool
        """
        return self._tag == 'password'

    def is_two_factor_authentication(self):
        """
        Check if the union tag is ``two_factor_authentication``.

        :rtype: bool
        """
        return self._tag == 'two_factor_authentication'

    def is_saml(self):
        """
        Check if the union tag is ``saml``.

        :rtype: bool
        """
        return self._tag == 'saml'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(LoginMethod, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'LoginMethod(%r, %r)' % (self._tag, self._value)

LoginMethod_validator = bv.Union(LoginMethod)

class LoginSuccessDetails(bb.Struct):
    """
    Signed in.

    :ivar is_emm_managed: Tells if the login device is EMM managed. Might be
        missing due to historical data gap.
    :ivar login_method: Login method.
    """

    __slots__ = [
        '_is_emm_managed_value',
        '_is_emm_managed_present',
        '_login_method_value',
        '_login_method_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 login_method=None,
                 is_emm_managed=None):
        self._is_emm_managed_value = None
        self._is_emm_managed_present = False
        self._login_method_value = None
        self._login_method_present = False
        if is_emm_managed is not None:
            self.is_emm_managed = is_emm_managed
        if login_method is not None:
            self.login_method = login_method

    @property
    def is_emm_managed(self):
        """
        Tells if the login device is EMM managed. Might be missing due to
        historical data gap.

        :rtype: bool
        """
        if self._is_emm_managed_present:
            return self._is_emm_managed_value
        else:
            return None

    @is_emm_managed.setter
    def is_emm_managed(self, val):
        if val is None:
            del self.is_emm_managed
            return
        val = self._is_emm_managed_validator.validate(val)
        self._is_emm_managed_value = val
        self._is_emm_managed_present = True

    @is_emm_managed.deleter
    def is_emm_managed(self):
        self._is_emm_managed_value = None
        self._is_emm_managed_present = False

    @property
    def login_method(self):
        """
        Login method.

        :rtype: LoginMethod
        """
        if self._login_method_present:
            return self._login_method_value
        else:
            raise AttributeError("missing required field 'login_method'")

    @login_method.setter
    def login_method(self, val):
        self._login_method_validator.validate_type_only(val)
        self._login_method_value = val
        self._login_method_present = True

    @login_method.deleter
    def login_method(self):
        self._login_method_value = None
        self._login_method_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(LoginSuccessDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'LoginSuccessDetails(login_method={!r}, is_emm_managed={!r})'.format(
            self._login_method_value,
            self._is_emm_managed_value,
        )

LoginSuccessDetails_validator = bv.Struct(LoginSuccessDetails)

class LoginSuccessType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(LoginSuccessType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'LoginSuccessType(description={!r})'.format(
            self._description_value,
        )

LoginSuccessType_validator = bv.Struct(LoginSuccessType)

class LogoutDetails(bb.Struct):
    """
    Signed out.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(LogoutDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'LogoutDetails()'

LogoutDetails_validator = bv.Struct(LogoutDetails)

class LogoutType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(LogoutType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'LogoutType(description={!r})'.format(
            self._description_value,
        )

LogoutType_validator = bv.Struct(LogoutType)

class MemberAddNameDetails(bb.Struct):
    """
    Added team member name.

    :ivar new_value: New user's name.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        New user's name.

        :rtype: UserNameLogInfo
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberAddNameDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberAddNameDetails(new_value={!r})'.format(
            self._new_value_value,
        )

MemberAddNameDetails_validator = bv.Struct(MemberAddNameDetails)

class MemberAddNameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberAddNameType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberAddNameType(description={!r})'.format(
            self._description_value,
        )

MemberAddNameType_validator = bv.Struct(MemberAddNameType)

class MemberChangeAdminRoleDetails(bb.Struct):
    """
    Changed team member admin role.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(MemberChangeAdminRoleDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberChangeAdminRoleDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

MemberChangeAdminRoleDetails_validator = bv.Struct(MemberChangeAdminRoleDetails)

class MemberChangeAdminRoleType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberChangeAdminRoleType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberChangeAdminRoleType(description={!r})'.format(
            self._description_value,
        )

MemberChangeAdminRoleType_validator = bv.Struct(MemberChangeAdminRoleType)

class MemberChangeEmailDetails(bb.Struct):
    """
    Changed team member email.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(MemberChangeEmailDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberChangeEmailDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

MemberChangeEmailDetails_validator = bv.Struct(MemberChangeEmailDetails)

class MemberChangeEmailType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberChangeEmailType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberChangeEmailType(description={!r})'.format(
            self._description_value,
        )

MemberChangeEmailType_validator = bv.Struct(MemberChangeEmailType)

class MemberChangeMembershipTypeDetails(bb.Struct):
    """
    Changed membership type (limited/full) of 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 _process_custom_annotations(self, annotation_type, processor):
        super(MemberChangeMembershipTypeDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberChangeMembershipTypeDetails(prev_value={!r}, new_value={!r})'.format(
            self._prev_value_value,
            self._new_value_value,
        )

MemberChangeMembershipTypeDetails_validator = bv.Struct(MemberChangeMembershipTypeDetails)

class MemberChangeMembershipTypeType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberChangeMembershipTypeType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberChangeMembershipTypeType(description={!r})'.format(
            self._description_value,
        )

MemberChangeMembershipTypeType_validator = bv.Struct(MemberChangeMembershipTypeType)

class MemberChangeNameDetails(bb.Struct):
    """
    Changed team member name.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(MemberChangeNameDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberChangeNameDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

MemberChangeNameDetails_validator = bv.Struct(MemberChangeNameDetails)

class MemberChangeNameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberChangeNameType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberChangeNameType(description={!r})'.format(
            self._description_value,
        )

MemberChangeNameType_validator = bv.Struct(MemberChangeNameType)

class MemberChangeStatusDetails(bb.Struct):
    """
    Changed member status (invited, joined, suspended, etc.).

    :ivar previous_value: Previous member status. Might be missing due to
        historical data gap.
    :ivar new_value: New member status.
    :ivar action: Additional information indicating the action taken that caused
        status change.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
        '_action_value',
        '_action_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None,
                 action=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        self._action_value = None
        self._action_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value
        if action is not None:
            self.action = action

    @property
    def previous_value(self):
        """
        Previous member status. Might be missing due to historical data gap.

        :rtype: MemberStatus
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New member status.

        :rtype: MemberStatus
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def action(self):
        """
        Additional information indicating the action taken that caused status
        change.

        :rtype: ActionDetails
        """
        if self._action_present:
            return self._action_value
        else:
            return None

    @action.setter
    def action(self, val):
        if val is None:
            del self.action
            return
        self._action_validator.validate_type_only(val)
        self._action_value = val
        self._action_present = True

    @action.deleter
    def action(self):
        self._action_value = None
        self._action_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberChangeStatusDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberChangeStatusDetails(new_value={!r}, previous_value={!r}, action={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
            self._action_value,
        )

MemberChangeStatusDetails_validator = bv.Struct(MemberChangeStatusDetails)

class MemberChangeStatusType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberChangeStatusType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberChangeStatusType(description={!r})'.format(
            self._description_value,
        )

MemberChangeStatusType_validator = bv.Struct(MemberChangeStatusType)

class MemberDeleteManualContactsDetails(bb.Struct):
    """
    Cleared manually added contacts.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberDeleteManualContactsDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberDeleteManualContactsDetails()'

MemberDeleteManualContactsDetails_validator = bv.Struct(MemberDeleteManualContactsDetails)

class MemberDeleteManualContactsType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberDeleteManualContactsType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberDeleteManualContactsType(description={!r})'.format(
            self._description_value,
        )

MemberDeleteManualContactsType_validator = bv.Struct(MemberDeleteManualContactsType)

class MemberPermanentlyDeleteAccountContentsDetails(bb.Struct):
    """
    Permanently deleted contents of deleted team member account.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberPermanentlyDeleteAccountContentsDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberPermanentlyDeleteAccountContentsDetails()'

MemberPermanentlyDeleteAccountContentsDetails_validator = bv.Struct(MemberPermanentlyDeleteAccountContentsDetails)

class MemberPermanentlyDeleteAccountContentsType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberPermanentlyDeleteAccountContentsType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberPermanentlyDeleteAccountContentsType(description={!r})'.format(
            self._description_value,
        )

MemberPermanentlyDeleteAccountContentsType_validator = bv.Struct(MemberPermanentlyDeleteAccountContentsType)

class MemberRemoveActionType(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    delete = None
    # Attribute is overwritten below the class definition
    offboard = None
    # Attribute is overwritten below the class definition
    leave = None
    # Attribute is overwritten below the class definition
    other = None

    def is_delete(self):
        """
        Check if the union tag is ``delete``.

        :rtype: bool
        """
        return self._tag == 'delete'

    def is_offboard(self):
        """
        Check if the union tag is ``offboard``.

        :rtype: bool
        """
        return self._tag == 'offboard'

    def is_leave(self):
        """
        Check if the union tag is ``leave``.

        :rtype: bool
        """
        return self._tag == 'leave'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberRemoveActionType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberRemoveActionType(%r, %r)' % (self._tag, self._value)

MemberRemoveActionType_validator = bv.Union(MemberRemoveActionType)

class MemberRequestsChangePolicyDetails(bb.Struct):
    """
    Changed whether users can find 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 _process_custom_annotations(self, annotation_type, processor):
        super(MemberRequestsChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberRequestsChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

MemberRequestsChangePolicyDetails_validator = bv.Struct(MemberRequestsChangePolicyDetails)

class MemberRequestsChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberRequestsChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberRequestsChangePolicyType(description={!r})'.format(
            self._description_value,
        )

MemberRequestsChangePolicyType_validator = bv.Struct(MemberRequestsChangePolicyType)

class MemberRequestsPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    auto_accept = None
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    require_approval = None
    # Attribute is overwritten below the class definition
    other = None

    def is_auto_accept(self):
        """
        Check if the union tag is ``auto_accept``.

        :rtype: bool
        """
        return self._tag == 'auto_accept'

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_require_approval(self):
        """
        Check if the union tag is ``require_approval``.

        :rtype: bool
        """
        return self._tag == 'require_approval'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberRequestsPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberRequestsPolicy(%r, %r)' % (self._tag, self._value)

MemberRequestsPolicy_validator = bv.Union(MemberRequestsPolicy)

class MemberSpaceLimitsAddCustomQuotaDetails(bb.Struct):
    """
    Set custom member space limit.

    :ivar new_value: New custom quota value in bytes.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        New custom quota value in bytes.

        :rtype: int
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsAddCustomQuotaDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsAddCustomQuotaDetails(new_value={!r})'.format(
            self._new_value_value,
        )

MemberSpaceLimitsAddCustomQuotaDetails_validator = bv.Struct(MemberSpaceLimitsAddCustomQuotaDetails)

class MemberSpaceLimitsAddCustomQuotaType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsAddCustomQuotaType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsAddCustomQuotaType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsAddCustomQuotaType_validator = bv.Struct(MemberSpaceLimitsAddCustomQuotaType)

class MemberSpaceLimitsAddExceptionDetails(bb.Struct):
    """
    Added members to member space limit exception list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsAddExceptionDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsAddExceptionDetails()'

MemberSpaceLimitsAddExceptionDetails_validator = bv.Struct(MemberSpaceLimitsAddExceptionDetails)

class MemberSpaceLimitsAddExceptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsAddExceptionType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsAddExceptionType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsAddExceptionType_validator = bv.Struct(MemberSpaceLimitsAddExceptionType)

class MemberSpaceLimitsChangeCapsTypePolicyDetails(bb.Struct):
    """
    Changed member space limit type for team.

    :ivar previous_value: Previous space limit type.
    :ivar new_value: New space limit type.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous space limit type.

        :rtype: SpaceCapsType
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New space limit type.

        :rtype: SpaceCapsType
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsChangeCapsTypePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangeCapsTypePolicyDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

MemberSpaceLimitsChangeCapsTypePolicyDetails_validator = bv.Struct(MemberSpaceLimitsChangeCapsTypePolicyDetails)

class MemberSpaceLimitsChangeCapsTypePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsChangeCapsTypePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangeCapsTypePolicyType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsChangeCapsTypePolicyType_validator = bv.Struct(MemberSpaceLimitsChangeCapsTypePolicyType)

class MemberSpaceLimitsChangeCustomQuotaDetails(bb.Struct):
    """
    Changed custom member space limit.

    :ivar previous_value: Previous custom quota value in bytes.
    :ivar new_value: New custom quota value in bytes.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous custom quota value in bytes.

        :rtype: int
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New custom quota value in bytes.

        :rtype: int
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsChangeCustomQuotaDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangeCustomQuotaDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

MemberSpaceLimitsChangeCustomQuotaDetails_validator = bv.Struct(MemberSpaceLimitsChangeCustomQuotaDetails)

class MemberSpaceLimitsChangeCustomQuotaType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsChangeCustomQuotaType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangeCustomQuotaType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsChangeCustomQuotaType_validator = bv.Struct(MemberSpaceLimitsChangeCustomQuotaType)

class MemberSpaceLimitsChangePolicyDetails(bb.Struct):
    """
    Changed team default member space limit.

    :ivar previous_value: Previous team default limit value in bytes. Might be
        missing due to historical data gap.
    :ivar new_value: New team default limit value in bytes. Might be missing due
        to historical data gap.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous team default limit value in bytes. Might be missing due to
        historical data gap.

        :rtype: int
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New team default limit value in bytes. Might be missing due to
        historical data gap.

        :rtype: int
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangePolicyDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

MemberSpaceLimitsChangePolicyDetails_validator = bv.Struct(MemberSpaceLimitsChangePolicyDetails)

class MemberSpaceLimitsChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangePolicyType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsChangePolicyType_validator = bv.Struct(MemberSpaceLimitsChangePolicyType)

class MemberSpaceLimitsChangeStatusDetails(bb.Struct):
    """
    Changed space limit status.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsChangeStatusDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangeStatusDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

MemberSpaceLimitsChangeStatusDetails_validator = bv.Struct(MemberSpaceLimitsChangeStatusDetails)

class MemberSpaceLimitsChangeStatusType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsChangeStatusType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsChangeStatusType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsChangeStatusType_validator = bv.Struct(MemberSpaceLimitsChangeStatusType)

class MemberSpaceLimitsRemoveCustomQuotaDetails(bb.Struct):
    """
    Removed custom member space limit.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsRemoveCustomQuotaDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsRemoveCustomQuotaDetails()'

MemberSpaceLimitsRemoveCustomQuotaDetails_validator = bv.Struct(MemberSpaceLimitsRemoveCustomQuotaDetails)

class MemberSpaceLimitsRemoveCustomQuotaType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsRemoveCustomQuotaType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsRemoveCustomQuotaType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsRemoveCustomQuotaType_validator = bv.Struct(MemberSpaceLimitsRemoveCustomQuotaType)

class MemberSpaceLimitsRemoveExceptionDetails(bb.Struct):
    """
    Removed members from member space limit exception list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsRemoveExceptionDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsRemoveExceptionDetails()'

MemberSpaceLimitsRemoveExceptionDetails_validator = bv.Struct(MemberSpaceLimitsRemoveExceptionDetails)

class MemberSpaceLimitsRemoveExceptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSpaceLimitsRemoveExceptionType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSpaceLimitsRemoveExceptionType(description={!r})'.format(
            self._description_value,
        )

MemberSpaceLimitsRemoveExceptionType_validator = bv.Struct(MemberSpaceLimitsRemoveExceptionType)

class MemberStatus(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    not_joined = None
    # Attribute is overwritten below the class definition
    invited = None
    # Attribute is overwritten below the class definition
    active = None
    # Attribute is overwritten below the class definition
    suspended = None
    # Attribute is overwritten below the class definition
    removed = None
    # Attribute is overwritten below the class definition
    other = None

    def is_not_joined(self):
        """
        Check if the union tag is ``not_joined``.

        :rtype: bool
        """
        return self._tag == 'not_joined'

    def is_invited(self):
        """
        Check if the union tag is ``invited``.

        :rtype: bool
        """
        return self._tag == 'invited'

    def is_active(self):
        """
        Check if the union tag is ``active``.

        :rtype: bool
        """
        return self._tag == 'active'

    def is_suspended(self):
        """
        Check if the union tag is ``suspended``.

        :rtype: bool
        """
        return self._tag == 'suspended'

    def is_removed(self):
        """
        Check if the union tag is ``removed``.

        :rtype: bool
        """
        return self._tag == 'removed'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberStatus, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberStatus(%r, %r)' % (self._tag, self._value)

MemberStatus_validator = bv.Union(MemberStatus)

class MemberSuggestDetails(bb.Struct):
    """
    Suggested person to add to team.

    :ivar suggested_members: suggested users emails.
    """

    __slots__ = [
        '_suggested_members_value',
        '_suggested_members_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 suggested_members=None):
        self._suggested_members_value = None
        self._suggested_members_present = False
        if suggested_members is not None:
            self.suggested_members = suggested_members

    @property
    def suggested_members(self):
        """
        suggested users emails.

        :rtype: list of [str]
        """
        if self._suggested_members_present:
            return self._suggested_members_value
        else:
            raise AttributeError("missing required field 'suggested_members'")

    @suggested_members.setter
    def suggested_members(self, val):
        val = self._suggested_members_validator.validate(val)
        self._suggested_members_value = val
        self._suggested_members_present = True

    @suggested_members.deleter
    def suggested_members(self):
        self._suggested_members_value = None
        self._suggested_members_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSuggestDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSuggestDetails(suggested_members={!r})'.format(
            self._suggested_members_value,
        )

MemberSuggestDetails_validator = bv.Struct(MemberSuggestDetails)

class MemberSuggestType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSuggestType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSuggestType(description={!r})'.format(
            self._description_value,
        )

MemberSuggestType_validator = bv.Struct(MemberSuggestType)

class MemberSuggestionsChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled option for team members to suggest people to add to team.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(MemberSuggestionsChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSuggestionsChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

MemberSuggestionsChangePolicyDetails_validator = bv.Struct(MemberSuggestionsChangePolicyDetails)

class MemberSuggestionsChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSuggestionsChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSuggestionsChangePolicyType(description={!r})'.format(
            self._description_value,
        )

MemberSuggestionsChangePolicyType_validator = bv.Struct(MemberSuggestionsChangePolicyType)

class MemberSuggestionsPolicy(bb.Union):
    """
    Member suggestions policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberSuggestionsPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberSuggestionsPolicy(%r, %r)' % (self._tag, self._value)

MemberSuggestionsPolicy_validator = bv.Union(MemberSuggestionsPolicy)

class MemberTransferAccountContentsDetails(bb.Struct):
    """
    Transferred contents of deleted member account to another member.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberTransferAccountContentsDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberTransferAccountContentsDetails()'

MemberTransferAccountContentsDetails_validator = bv.Struct(MemberTransferAccountContentsDetails)

class MemberTransferAccountContentsType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MemberTransferAccountContentsType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MemberTransferAccountContentsType(description={!r})'.format(
            self._description_value,
        )

MemberTransferAccountContentsType_validator = bv.Struct(MemberTransferAccountContentsType)

class MicrosoftOfficeAddinChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled Microsoft Office add-in.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(MicrosoftOfficeAddinChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MicrosoftOfficeAddinChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

MicrosoftOfficeAddinChangePolicyDetails_validator = bv.Struct(MicrosoftOfficeAddinChangePolicyDetails)

class MicrosoftOfficeAddinChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MicrosoftOfficeAddinChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MicrosoftOfficeAddinChangePolicyType(description={!r})'.format(
            self._description_value,
        )

MicrosoftOfficeAddinChangePolicyType_validator = bv.Struct(MicrosoftOfficeAddinChangePolicyType)

class MicrosoftOfficeAddinPolicy(bb.Union):
    """
    Microsoft Office addin policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(MicrosoftOfficeAddinPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MicrosoftOfficeAddinPolicy(%r, %r)' % (self._tag, self._value)

MicrosoftOfficeAddinPolicy_validator = bv.Union(MicrosoftOfficeAddinPolicy)

class MissingDetails(bb.Struct):
    """
    An indication that an error occurred while retrieving the event. Some
    attributes of the event may be omitted as a result.

    :ivar source_event_fields: All the data that could be retrieved and
        converted from the source event.
    """

    __slots__ = [
        '_source_event_fields_value',
        '_source_event_fields_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 source_event_fields=None):
        self._source_event_fields_value = None
        self._source_event_fields_present = False
        if source_event_fields is not None:
            self.source_event_fields = source_event_fields

    @property
    def source_event_fields(self):
        """
        All the data that could be retrieved and converted from the source
        event.

        :rtype: str
        """
        if self._source_event_fields_present:
            return self._source_event_fields_value
        else:
            return None

    @source_event_fields.setter
    def source_event_fields(self, val):
        if val is None:
            del self.source_event_fields
            return
        val = self._source_event_fields_validator.validate(val)
        self._source_event_fields_value = val
        self._source_event_fields_present = True

    @source_event_fields.deleter
    def source_event_fields(self):
        self._source_event_fields_value = None
        self._source_event_fields_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MissingDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MissingDetails(source_event_fields={!r})'.format(
            self._source_event_fields_value,
        )

MissingDetails_validator = bv.Struct(MissingDetails)

class MobileDeviceSessionLogInfo(DeviceSessionLogInfo):
    """
    Information about linked Dropbox mobile client sessions

    :ivar session_info: Mobile session unique id. Might be missing due to
        historical data gap.
    :ivar device_name: The device name.
    :ivar client_type: The mobile application type.
    :ivar client_version: The Dropbox client version.
    :ivar os_version: The hosting OS version.
    :ivar last_carrier: last carrier used by the device.
    """

    __slots__ = [
        '_session_info_value',
        '_session_info_present',
        '_device_name_value',
        '_device_name_present',
        '_client_type_value',
        '_client_type_present',
        '_client_version_value',
        '_client_version_present',
        '_os_version_value',
        '_os_version_present',
        '_last_carrier_value',
        '_last_carrier_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 device_name=None,
                 client_type=None,
                 ip_address=None,
                 created=None,
                 updated=None,
                 session_info=None,
                 client_version=None,
                 os_version=None,
                 last_carrier=None):
        super(MobileDeviceSessionLogInfo, self).__init__(ip_address,
                                                         created,
                                                         updated)
        self._session_info_value = None
        self._session_info_present = False
        self._device_name_value = None
        self._device_name_present = False
        self._client_type_value = None
        self._client_type_present = False
        self._client_version_value = None
        self._client_version_present = False
        self._os_version_value = None
        self._os_version_present = False
        self._last_carrier_value = None
        self._last_carrier_present = False
        if session_info is not None:
            self.session_info = session_info
        if device_name is not None:
            self.device_name = device_name
        if client_type is not None:
            self.client_type = client_type
        if client_version is not None:
            self.client_version = client_version
        if os_version is not None:
            self.os_version = os_version
        if last_carrier is not None:
            self.last_carrier = last_carrier

    @property
    def session_info(self):
        """
        Mobile session unique id. Might be missing due to historical data gap.

        :rtype: MobileSessionLogInfo
        """
        if self._session_info_present:
            return self._session_info_value
        else:
            return None

    @session_info.setter
    def session_info(self, val):
        if val is None:
            del self.session_info
            return
        self._session_info_validator.validate_type_only(val)
        self._session_info_value = val
        self._session_info_present = True

    @session_info.deleter
    def session_info(self):
        self._session_info_value = None
        self._session_info_present = False

    @property
    def device_name(self):
        """
        The device name.

        :rtype: str
        """
        if self._device_name_present:
            return self._device_name_value
        else:
            raise AttributeError("missing required field 'device_name'")

    @device_name.setter
    def device_name(self, val):
        val = self._device_name_validator.validate(val)
        self._device_name_value = val
        self._device_name_present = True

    @device_name.deleter
    def device_name(self):
        self._device_name_value = None
        self._device_name_present = False

    @property
    def client_type(self):
        """
        The mobile application type.

        :rtype: team.MobileClientPlatform
        """
        if self._client_type_present:
            return self._client_type_value
        else:
            raise AttributeError("missing required field 'client_type'")

    @client_type.setter
    def client_type(self, val):
        self._client_type_validator.validate_type_only(val)
        self._client_type_value = val
        self._client_type_present = True

    @client_type.deleter
    def client_type(self):
        self._client_type_value = None
        self._client_type_present = False

    @property
    def client_version(self):
        """
        The Dropbox client version.

        :rtype: str
        """
        if self._client_version_present:
            return self._client_version_value
        else:
            return None

    @client_version.setter
    def client_version(self, val):
        if val is None:
            del self.client_version
            return
        val = self._client_version_validator.validate(val)
        self._client_version_value = val
        self._client_version_present = True

    @client_version.deleter
    def client_version(self):
        self._client_version_value = None
        self._client_version_present = False

    @property
    def os_version(self):
        """
        The hosting OS version.

        :rtype: str
        """
        if self._os_version_present:
            return self._os_version_value
        else:
            return None

    @os_version.setter
    def os_version(self, val):
        if val is None:
            del self.os_version
            return
        val = self._os_version_validator.validate(val)
        self._os_version_value = val
        self._os_version_present = True

    @os_version.deleter
    def os_version(self):
        self._os_version_value = None
        self._os_version_present = False

    @property
    def last_carrier(self):
        """
        last carrier used by the device.

        :rtype: str
        """
        if self._last_carrier_present:
            return self._last_carrier_value
        else:
            return None

    @last_carrier.setter
    def last_carrier(self, val):
        if val is None:
            del self.last_carrier
            return
        val = self._last_carrier_validator.validate(val)
        self._last_carrier_value = val
        self._last_carrier_present = True

    @last_carrier.deleter
    def last_carrier(self):
        self._last_carrier_value = None
        self._last_carrier_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(MobileDeviceSessionLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MobileDeviceSessionLogInfo(device_name={!r}, client_type={!r}, ip_address={!r}, created={!r}, updated={!r}, session_info={!r}, client_version={!r}, os_version={!r}, last_carrier={!r})'.format(
            self._device_name_value,
            self._client_type_value,
            self._ip_address_value,
            self._created_value,
            self._updated_value,
            self._session_info_value,
            self._client_version_value,
            self._os_version_value,
            self._last_carrier_value,
        )

MobileDeviceSessionLogInfo_validator = bv.Struct(MobileDeviceSessionLogInfo)

class MobileSessionLogInfo(SessionLogInfo):
    """
    Mobile session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self,
                 session_id=None):
        super(MobileSessionLogInfo, self).__init__(session_id)

    def _process_custom_annotations(self, annotation_type, processor):
        super(MobileSessionLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'MobileSessionLogInfo(session_id={!r})'.format(
            self._session_id_value,
        )

MobileSessionLogInfo_validator = bv.Struct(MobileSessionLogInfo)

class NamespaceRelativePathLogInfo(bb.Struct):
    """
    Namespace relative path details.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(NamespaceRelativePathLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NamespaceRelativePathLogInfo(ns_id={!r}, relative_path={!r})'.format(
            self._ns_id_value,
            self._relative_path_value,
        )

NamespaceRelativePathLogInfo_validator = bv.Struct(NamespaceRelativePathLogInfo)

class NetworkControlChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled network control.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(NetworkControlChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NetworkControlChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

NetworkControlChangePolicyDetails_validator = bv.Struct(NetworkControlChangePolicyDetails)

class NetworkControlChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(NetworkControlChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NetworkControlChangePolicyType(description={!r})'.format(
            self._description_value,
        )

NetworkControlChangePolicyType_validator = bv.Struct(NetworkControlChangePolicyType)

class NetworkControlPolicy(bb.Union):
    """
    Network control policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(NetworkControlPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NetworkControlPolicy(%r, %r)' % (self._tag, self._value)

NetworkControlPolicy_validator = bv.Union(NetworkControlPolicy)

class UserLogInfo(bb.Struct):
    """
    User's logged information.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(UserLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'UserLogInfo(account_id={!r}, display_name={!r}, email={!r})'.format(
            self._account_id_value,
            self._display_name_value,
            self._email_value,
        )

UserLogInfo_validator = bv.StructTree(UserLogInfo)

class NonTeamMemberLogInfo(UserLogInfo):
    """
    Non team member's logged information.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self,
                 account_id=None,
                 display_name=None,
                 email=None):
        super(NonTeamMemberLogInfo, self).__init__(account_id,
                                                   display_name,
                                                   email)

    def _process_custom_annotations(self, annotation_type, processor):
        super(NonTeamMemberLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NonTeamMemberLogInfo(account_id={!r}, display_name={!r}, email={!r})'.format(
            self._account_id_value,
            self._display_name_value,
            self._email_value,
        )

NonTeamMemberLogInfo_validator = bv.Struct(NonTeamMemberLogInfo)

class NoteAclInviteOnlyDetails(bb.Struct):
    """
    Changed Paper doc to invite-only.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(NoteAclInviteOnlyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NoteAclInviteOnlyDetails()'

NoteAclInviteOnlyDetails_validator = bv.Struct(NoteAclInviteOnlyDetails)

class NoteAclInviteOnlyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(NoteAclInviteOnlyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NoteAclInviteOnlyType(description={!r})'.format(
            self._description_value,
        )

NoteAclInviteOnlyType_validator = bv.Struct(NoteAclInviteOnlyType)

class NoteAclLinkDetails(bb.Struct):
    """
    Changed Paper doc to link-accessible.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(NoteAclLinkDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NoteAclLinkDetails()'

NoteAclLinkDetails_validator = bv.Struct(NoteAclLinkDetails)

class NoteAclLinkType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(NoteAclLinkType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NoteAclLinkType(description={!r})'.format(
            self._description_value,
        )

NoteAclLinkType_validator = bv.Struct(NoteAclLinkType)

class NoteAclTeamLinkDetails(bb.Struct):
    """
    Changed Paper doc to link-accessible for team.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(NoteAclTeamLinkDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NoteAclTeamLinkDetails()'

NoteAclTeamLinkDetails_validator = bv.Struct(NoteAclTeamLinkDetails)

class NoteAclTeamLinkType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(NoteAclTeamLinkType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NoteAclTeamLinkType(description={!r})'.format(
            self._description_value,
        )

NoteAclTeamLinkType_validator = bv.Struct(NoteAclTeamLinkType)

class NoteShareReceiveDetails(bb.Struct):
    """
    Shared received Paper doc.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(NoteShareReceiveDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NoteShareReceiveDetails()'

NoteShareReceiveDetails_validator = bv.Struct(NoteShareReceiveDetails)

class NoteShareReceiveType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(NoteShareReceiveType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NoteShareReceiveType(description={!r})'.format(
            self._description_value,
        )

NoteShareReceiveType_validator = bv.Struct(NoteShareReceiveType)

class NoteSharedDetails(bb.Struct):
    """
    Shared Paper doc.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(NoteSharedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NoteSharedDetails()'

NoteSharedDetails_validator = bv.Struct(NoteSharedDetails)

class NoteSharedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(NoteSharedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'NoteSharedType(description={!r})'.format(
            self._description_value,
        )

NoteSharedType_validator = bv.Struct(NoteSharedType)

class OpenNoteSharedDetails(bb.Struct):
    """
    Opened shared Paper doc.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(OpenNoteSharedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'OpenNoteSharedDetails()'

OpenNoteSharedDetails_validator = bv.Struct(OpenNoteSharedDetails)

class OpenNoteSharedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(OpenNoteSharedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'OpenNoteSharedType(description={!r})'.format(
            self._description_value,
        )

OpenNoteSharedType_validator = bv.Struct(OpenNoteSharedType)

class OriginLogInfo(bb.Struct):
    """
    The origin from which the actor performed the action.

    :ivar geo_location: Geographic location details.
    :ivar access_method: The method that was used to perform the action.
    """

    __slots__ = [
        '_geo_location_value',
        '_geo_location_present',
        '_access_method_value',
        '_access_method_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 access_method=None,
                 geo_location=None):
        self._geo_location_value = None
        self._geo_location_present = False
        self._access_method_value = None
        self._access_method_present = False
        if geo_location is not None:
            self.geo_location = geo_location
        if access_method is not None:
            self.access_method = access_method

    @property
    def geo_location(self):
        """
        Geographic location details.

        :rtype: GeoLocationLogInfo
        """
        if self._geo_location_present:
            return self._geo_location_value
        else:
            return None

    @geo_location.setter
    def geo_location(self, val):
        if val is None:
            del self.geo_location
            return
        self._geo_location_validator.validate_type_only(val)
        self._geo_location_value = val
        self._geo_location_present = True

    @geo_location.deleter
    def geo_location(self):
        self._geo_location_value = None
        self._geo_location_present = False

    @property
    def access_method(self):
        """
        The method that was used to perform the action.

        :rtype: AccessMethodLogInfo
        """
        if self._access_method_present:
            return self._access_method_value
        else:
            raise AttributeError("missing required field 'access_method'")

    @access_method.setter
    def access_method(self, val):
        self._access_method_validator.validate_type_only(val)
        self._access_method_value = val
        self._access_method_present = True

    @access_method.deleter
    def access_method(self):
        self._access_method_value = None
        self._access_method_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(OriginLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'OriginLogInfo(access_method={!r}, geo_location={!r})'.format(
            self._access_method_value,
            self._geo_location_value,
        )

OriginLogInfo_validator = bv.Struct(OriginLogInfo)

class PaperAccessType(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    viewer = None
    # Attribute is overwritten below the class definition
    commenter = None
    # Attribute is overwritten below the class definition
    editor = None
    # Attribute is overwritten below the class definition
    other = None

    def is_viewer(self):
        """
        Check if the union tag is ``viewer``.

        :rtype: bool
        """
        return self._tag == 'viewer'

    def is_commenter(self):
        """
        Check if the union tag is ``commenter``.

        :rtype: bool
        """
        return self._tag == 'commenter'

    def is_editor(self):
        """
        Check if the union tag is ``editor``.

        :rtype: bool
        """
        return self._tag == 'editor'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperAccessType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperAccessType(%r, %r)' % (self._tag, self._value)

PaperAccessType_validator = bv.Union(PaperAccessType)

class PaperAdminExportStartDetails(bb.Struct):
    """
    Exported all team Paper docs.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperAdminExportStartDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperAdminExportStartDetails()'

PaperAdminExportStartDetails_validator = bv.Struct(PaperAdminExportStartDetails)

class PaperAdminExportStartType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperAdminExportStartType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperAdminExportStartType(description={!r})'.format(
            self._description_value,
        )

PaperAdminExportStartType_validator = bv.Struct(PaperAdminExportStartType)

class PaperChangeDeploymentPolicyDetails(bb.Struct):
    """
    Changed whether Dropbox Paper, when enabled, is deployed to all members or
    to specific members.

    :ivar 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
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Dropbox Paper deployment policy. Might be missing due to
        historical data gap.

        :rtype: team_policies.PaperDeploymentPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperChangeDeploymentPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperChangeDeploymentPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

PaperChangeDeploymentPolicyDetails_validator = bv.Struct(PaperChangeDeploymentPolicyDetails)

class PaperChangeDeploymentPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperChangeDeploymentPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperChangeDeploymentPolicyType(description={!r})'.format(
            self._description_value,
        )

PaperChangeDeploymentPolicyType_validator = bv.Struct(PaperChangeDeploymentPolicyType)

class PaperChangeMemberLinkPolicyDetails(bb.Struct):
    """
    Changed whether non-members can view Paper docs with link.

    :ivar new_value: New paper external link accessibility policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        New paper external link accessibility policy.

        :rtype: PaperMemberPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperChangeMemberLinkPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperChangeMemberLinkPolicyDetails(new_value={!r})'.format(
            self._new_value_value,
        )

PaperChangeMemberLinkPolicyDetails_validator = bv.Struct(PaperChangeMemberLinkPolicyDetails)

class PaperChangeMemberLinkPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperChangeMemberLinkPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperChangeMemberLinkPolicyType(description={!r})'.format(
            self._description_value,
        )

PaperChangeMemberLinkPolicyType_validator = bv.Struct(PaperChangeMemberLinkPolicyType)

class PaperChangeMemberPolicyDetails(bb.Struct):
    """
    Changed whether members can share Paper docs outside team, and if docs are
    accessible only by team members or anyone by default.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(PaperChangeMemberPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperChangeMemberPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

PaperChangeMemberPolicyDetails_validator = bv.Struct(PaperChangeMemberPolicyDetails)

class PaperChangeMemberPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperChangeMemberPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperChangeMemberPolicyType(description={!r})'.format(
            self._description_value,
        )

PaperChangeMemberPolicyType_validator = bv.Struct(PaperChangeMemberPolicyType)

class PaperChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled Dropbox Paper for team.

    :ivar 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
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Dropbox Paper policy. Might be missing due to historical data
        gap.

        :rtype: team_policies.PaperEnabledPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

PaperChangePolicyDetails_validator = bv.Struct(PaperChangePolicyDetails)

class PaperChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperChangePolicyType(description={!r})'.format(
            self._description_value,
        )

PaperChangePolicyType_validator = bv.Struct(PaperChangePolicyType)

class PaperContentAddMemberDetails(bb.Struct):
    """
    Added team member to Paper doc/folder.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentAddMemberDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentAddMemberDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentAddMemberDetails_validator = bv.Struct(PaperContentAddMemberDetails)

class PaperContentAddMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentAddMemberType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentAddMemberType(description={!r})'.format(
            self._description_value,
        )

PaperContentAddMemberType_validator = bv.Struct(PaperContentAddMemberType)

class PaperContentAddToFolderDetails(bb.Struct):
    """
    Added Paper doc/folder to folder.

    :ivar 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: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def parent_asset_index(self):
        """
        Parent asset position in the Assets list.

        :rtype: int
        """
        if self._parent_asset_index_present:
            return self._parent_asset_index_value
        else:
            raise AttributeError("missing required field 'parent_asset_index'")

    @parent_asset_index.setter
    def parent_asset_index(self, val):
        val = self._parent_asset_index_validator.validate(val)
        self._parent_asset_index_value = val
        self._parent_asset_index_present = True

    @parent_asset_index.deleter
    def parent_asset_index(self):
        self._parent_asset_index_value = None
        self._parent_asset_index_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentAddToFolderDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentAddToFolderDetails(event_uuid={!r}, target_asset_index={!r}, parent_asset_index={!r})'.format(
            self._event_uuid_value,
            self._target_asset_index_value,
            self._parent_asset_index_value,
        )

PaperContentAddToFolderDetails_validator = bv.Struct(PaperContentAddToFolderDetails)

class PaperContentAddToFolderType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentAddToFolderType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentAddToFolderType(description={!r})'.format(
            self._description_value,
        )

PaperContentAddToFolderType_validator = bv.Struct(PaperContentAddToFolderType)

class PaperContentArchiveDetails(bb.Struct):
    """
    Archived Paper doc/folder.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentArchiveDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentArchiveDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentArchiveDetails_validator = bv.Struct(PaperContentArchiveDetails)

class PaperContentArchiveType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentArchiveType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentArchiveType(description={!r})'.format(
            self._description_value,
        )

PaperContentArchiveType_validator = bv.Struct(PaperContentArchiveType)

class PaperContentCreateDetails(bb.Struct):
    """
    Created Paper doc/folder.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentCreateDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentCreateDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentCreateDetails_validator = bv.Struct(PaperContentCreateDetails)

class PaperContentCreateType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentCreateType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentCreateType(description={!r})'.format(
            self._description_value,
        )

PaperContentCreateType_validator = bv.Struct(PaperContentCreateType)

class PaperContentPermanentlyDeleteDetails(bb.Struct):
    """
    Permanently deleted Paper doc/folder.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentPermanentlyDeleteDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentPermanentlyDeleteDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentPermanentlyDeleteDetails_validator = bv.Struct(PaperContentPermanentlyDeleteDetails)

class PaperContentPermanentlyDeleteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentPermanentlyDeleteType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentPermanentlyDeleteType(description={!r})'.format(
            self._description_value,
        )

PaperContentPermanentlyDeleteType_validator = bv.Struct(PaperContentPermanentlyDeleteType)

class PaperContentRemoveFromFolderDetails(bb.Struct):
    """
    Removed Paper doc/folder from folder.

    :ivar 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: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def parent_asset_index(self):
        """
        Parent asset position in the Assets list.

        :rtype: int
        """
        if self._parent_asset_index_present:
            return self._parent_asset_index_value
        else:
            raise AttributeError("missing required field 'parent_asset_index'")

    @parent_asset_index.setter
    def parent_asset_index(self, val):
        val = self._parent_asset_index_validator.validate(val)
        self._parent_asset_index_value = val
        self._parent_asset_index_present = True

    @parent_asset_index.deleter
    def parent_asset_index(self):
        self._parent_asset_index_value = None
        self._parent_asset_index_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentRemoveFromFolderDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentRemoveFromFolderDetails(event_uuid={!r}, target_asset_index={!r}, parent_asset_index={!r})'.format(
            self._event_uuid_value,
            self._target_asset_index_value,
            self._parent_asset_index_value,
        )

PaperContentRemoveFromFolderDetails_validator = bv.Struct(PaperContentRemoveFromFolderDetails)

class PaperContentRemoveFromFolderType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentRemoveFromFolderType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentRemoveFromFolderType(description={!r})'.format(
            self._description_value,
        )

PaperContentRemoveFromFolderType_validator = bv.Struct(PaperContentRemoveFromFolderType)

class PaperContentRemoveMemberDetails(bb.Struct):
    """
    Removed team member from Paper doc/folder.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentRemoveMemberDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentRemoveMemberDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentRemoveMemberDetails_validator = bv.Struct(PaperContentRemoveMemberDetails)

class PaperContentRemoveMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentRemoveMemberType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentRemoveMemberType(description={!r})'.format(
            self._description_value,
        )

PaperContentRemoveMemberType_validator = bv.Struct(PaperContentRemoveMemberType)

class PaperContentRenameDetails(bb.Struct):
    """
    Renamed Paper doc/folder.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentRenameDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentRenameDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentRenameDetails_validator = bv.Struct(PaperContentRenameDetails)

class PaperContentRenameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentRenameType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentRenameType(description={!r})'.format(
            self._description_value,
        )

PaperContentRenameType_validator = bv.Struct(PaperContentRenameType)

class PaperContentRestoreDetails(bb.Struct):
    """
    Restored archived Paper doc/folder.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentRestoreDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentRestoreDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperContentRestoreDetails_validator = bv.Struct(PaperContentRestoreDetails)

class PaperContentRestoreType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperContentRestoreType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperContentRestoreType(description={!r})'.format(
            self._description_value,
        )

PaperContentRestoreType_validator = bv.Struct(PaperContentRestoreType)

class PaperDocAddCommentDetails(bb.Struct):
    """
    Added 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 _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocAddCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocAddCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

PaperDocAddCommentDetails_validator = bv.Struct(PaperDocAddCommentDetails)

class PaperDocAddCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocAddCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocAddCommentType(description={!r})'.format(
            self._description_value,
        )

PaperDocAddCommentType_validator = bv.Struct(PaperDocAddCommentType)

class PaperDocChangeMemberRoleDetails(bb.Struct):
    """
    Changed team member permissions for Paper doc.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocChangeMemberRoleDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocChangeMemberRoleDetails(event_uuid={!r}, access_type={!r})'.format(
            self._event_uuid_value,
            self._access_type_value,
        )

PaperDocChangeMemberRoleDetails_validator = bv.Struct(PaperDocChangeMemberRoleDetails)

class PaperDocChangeMemberRoleType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocChangeMemberRoleType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocChangeMemberRoleType(description={!r})'.format(
            self._description_value,
        )

PaperDocChangeMemberRoleType_validator = bv.Struct(PaperDocChangeMemberRoleType)

class PaperDocChangeSharingPolicyDetails(bb.Struct):
    """
    Changed sharing setting for Paper doc.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocChangeSharingPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocChangeSharingPolicyDetails(event_uuid={!r}, public_sharing_policy={!r}, team_sharing_policy={!r})'.format(
            self._event_uuid_value,
            self._public_sharing_policy_value,
            self._team_sharing_policy_value,
        )

PaperDocChangeSharingPolicyDetails_validator = bv.Struct(PaperDocChangeSharingPolicyDetails)

class PaperDocChangeSharingPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocChangeSharingPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocChangeSharingPolicyType(description={!r})'.format(
            self._description_value,
        )

PaperDocChangeSharingPolicyType_validator = bv.Struct(PaperDocChangeSharingPolicyType)

class PaperDocChangeSubscriptionDetails(bb.Struct):
    """
    Followed/unfollowed Paper doc.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocChangeSubscriptionDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocChangeSubscriptionDetails(event_uuid={!r}, new_subscription_level={!r}, previous_subscription_level={!r})'.format(
            self._event_uuid_value,
            self._new_subscription_level_value,
            self._previous_subscription_level_value,
        )

PaperDocChangeSubscriptionDetails_validator = bv.Struct(PaperDocChangeSubscriptionDetails)

class PaperDocChangeSubscriptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocChangeSubscriptionType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocChangeSubscriptionType(description={!r})'.format(
            self._description_value,
        )

PaperDocChangeSubscriptionType_validator = bv.Struct(PaperDocChangeSubscriptionType)

class PaperDocDeleteCommentDetails(bb.Struct):
    """
    Deleted Paper doc comment.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocDeleteCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocDeleteCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

PaperDocDeleteCommentDetails_validator = bv.Struct(PaperDocDeleteCommentDetails)

class PaperDocDeleteCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocDeleteCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocDeleteCommentType(description={!r})'.format(
            self._description_value,
        )

PaperDocDeleteCommentType_validator = bv.Struct(PaperDocDeleteCommentType)

class PaperDocDeletedDetails(bb.Struct):
    """
    Archived Paper doc.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocDeletedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocDeletedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocDeletedDetails_validator = bv.Struct(PaperDocDeletedDetails)

class PaperDocDeletedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocDeletedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocDeletedType(description={!r})'.format(
            self._description_value,
        )

PaperDocDeletedType_validator = bv.Struct(PaperDocDeletedType)

class PaperDocDownloadDetails(bb.Struct):
    """
    Downloaded Paper doc in specific format.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocDownloadDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocDownloadDetails(event_uuid={!r}, export_file_format={!r})'.format(
            self._event_uuid_value,
            self._export_file_format_value,
        )

PaperDocDownloadDetails_validator = bv.Struct(PaperDocDownloadDetails)

class PaperDocDownloadType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocDownloadType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocDownloadType(description={!r})'.format(
            self._description_value,
        )

PaperDocDownloadType_validator = bv.Struct(PaperDocDownloadType)

class PaperDocEditCommentDetails(bb.Struct):
    """
    Edited Paper doc comment.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocEditCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocEditCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

PaperDocEditCommentDetails_validator = bv.Struct(PaperDocEditCommentDetails)

class PaperDocEditCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocEditCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocEditCommentType(description={!r})'.format(
            self._description_value,
        )

PaperDocEditCommentType_validator = bv.Struct(PaperDocEditCommentType)

class PaperDocEditDetails(bb.Struct):
    """
    Edited Paper doc.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocEditDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocEditDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocEditDetails_validator = bv.Struct(PaperDocEditDetails)

class PaperDocEditType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocEditType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocEditType(description={!r})'.format(
            self._description_value,
        )

PaperDocEditType_validator = bv.Struct(PaperDocEditType)

class PaperDocFollowedDetails(bb.Struct):
    """
    Followed Paper doc.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocFollowedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocFollowedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocFollowedDetails_validator = bv.Struct(PaperDocFollowedDetails)

class PaperDocFollowedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocFollowedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocFollowedType(description={!r})'.format(
            self._description_value,
        )

PaperDocFollowedType_validator = bv.Struct(PaperDocFollowedType)

class PaperDocMentionDetails(bb.Struct):
    """
    Mentioned team member in Paper doc.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocMentionDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocMentionDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocMentionDetails_validator = bv.Struct(PaperDocMentionDetails)

class PaperDocMentionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocMentionType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocMentionType(description={!r})'.format(
            self._description_value,
        )

PaperDocMentionType_validator = bv.Struct(PaperDocMentionType)

class PaperDocOwnershipChangedDetails(bb.Struct):
    """
    Transferred ownership of Paper doc.

    :ivar event_uuid: Event unique identifier.
    :ivar old_owner_user_id: Previous owner.
    :ivar new_owner_user_id: New owner.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_old_owner_user_id_value',
        '_old_owner_user_id_present',
        '_new_owner_user_id_value',
        '_new_owner_user_id_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 new_owner_user_id=None,
                 old_owner_user_id=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._old_owner_user_id_value = None
        self._old_owner_user_id_present = False
        self._new_owner_user_id_value = None
        self._new_owner_user_id_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if old_owner_user_id is not None:
            self.old_owner_user_id = old_owner_user_id
        if new_owner_user_id is not None:
            self.new_owner_user_id = new_owner_user_id

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def old_owner_user_id(self):
        """
        Previous owner.

        :rtype: str
        """
        if self._old_owner_user_id_present:
            return self._old_owner_user_id_value
        else:
            return None

    @old_owner_user_id.setter
    def old_owner_user_id(self, val):
        if val is None:
            del self.old_owner_user_id
            return
        val = self._old_owner_user_id_validator.validate(val)
        self._old_owner_user_id_value = val
        self._old_owner_user_id_present = True

    @old_owner_user_id.deleter
    def old_owner_user_id(self):
        self._old_owner_user_id_value = None
        self._old_owner_user_id_present = False

    @property
    def new_owner_user_id(self):
        """
        New owner.

        :rtype: str
        """
        if self._new_owner_user_id_present:
            return self._new_owner_user_id_value
        else:
            raise AttributeError("missing required field 'new_owner_user_id'")

    @new_owner_user_id.setter
    def new_owner_user_id(self, val):
        val = self._new_owner_user_id_validator.validate(val)
        self._new_owner_user_id_value = val
        self._new_owner_user_id_present = True

    @new_owner_user_id.deleter
    def new_owner_user_id(self):
        self._new_owner_user_id_value = None
        self._new_owner_user_id_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocOwnershipChangedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocOwnershipChangedDetails(event_uuid={!r}, new_owner_user_id={!r}, old_owner_user_id={!r})'.format(
            self._event_uuid_value,
            self._new_owner_user_id_value,
            self._old_owner_user_id_value,
        )

PaperDocOwnershipChangedDetails_validator = bv.Struct(PaperDocOwnershipChangedDetails)

class PaperDocOwnershipChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocOwnershipChangedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocOwnershipChangedType(description={!r})'.format(
            self._description_value,
        )

PaperDocOwnershipChangedType_validator = bv.Struct(PaperDocOwnershipChangedType)

class PaperDocRequestAccessDetails(bb.Struct):
    """
    Requested access to Paper doc.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocRequestAccessDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocRequestAccessDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocRequestAccessDetails_validator = bv.Struct(PaperDocRequestAccessDetails)

class PaperDocRequestAccessType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocRequestAccessType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocRequestAccessType(description={!r})'.format(
            self._description_value,
        )

PaperDocRequestAccessType_validator = bv.Struct(PaperDocRequestAccessType)

class PaperDocResolveCommentDetails(bb.Struct):
    """
    Resolved Paper doc comment.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocResolveCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocResolveCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

PaperDocResolveCommentDetails_validator = bv.Struct(PaperDocResolveCommentDetails)

class PaperDocResolveCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocResolveCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocResolveCommentType(description={!r})'.format(
            self._description_value,
        )

PaperDocResolveCommentType_validator = bv.Struct(PaperDocResolveCommentType)

class PaperDocRevertDetails(bb.Struct):
    """
    Restored Paper doc to previous version.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocRevertDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocRevertDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocRevertDetails_validator = bv.Struct(PaperDocRevertDetails)

class PaperDocRevertType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocRevertType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocRevertType(description={!r})'.format(
            self._description_value,
        )

PaperDocRevertType_validator = bv.Struct(PaperDocRevertType)

class PaperDocSlackShareDetails(bb.Struct):
    """
    Shared Paper doc via Slack.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocSlackShareDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocSlackShareDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocSlackShareDetails_validator = bv.Struct(PaperDocSlackShareDetails)

class PaperDocSlackShareType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocSlackShareType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocSlackShareType(description={!r})'.format(
            self._description_value,
        )

PaperDocSlackShareType_validator = bv.Struct(PaperDocSlackShareType)

class PaperDocTeamInviteDetails(bb.Struct):
    """
    Shared Paper doc with team member.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocTeamInviteDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocTeamInviteDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocTeamInviteDetails_validator = bv.Struct(PaperDocTeamInviteDetails)

class PaperDocTeamInviteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocTeamInviteType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocTeamInviteType(description={!r})'.format(
            self._description_value,
        )

PaperDocTeamInviteType_validator = bv.Struct(PaperDocTeamInviteType)

class PaperDocTrashedDetails(bb.Struct):
    """
    Deleted Paper doc.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocTrashedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocTrashedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocTrashedDetails_validator = bv.Struct(PaperDocTrashedDetails)

class PaperDocTrashedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocTrashedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocTrashedType(description={!r})'.format(
            self._description_value,
        )

PaperDocTrashedType_validator = bv.Struct(PaperDocTrashedType)

class PaperDocUnresolveCommentDetails(bb.Struct):
    """
    Unresolved Paper doc comment.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocUnresolveCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocUnresolveCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

PaperDocUnresolveCommentDetails_validator = bv.Struct(PaperDocUnresolveCommentDetails)

class PaperDocUnresolveCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocUnresolveCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocUnresolveCommentType(description={!r})'.format(
            self._description_value,
        )

PaperDocUnresolveCommentType_validator = bv.Struct(PaperDocUnresolveCommentType)

class PaperDocUntrashedDetails(bb.Struct):
    """
    Restored Paper doc.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocUntrashedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocUntrashedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocUntrashedDetails_validator = bv.Struct(PaperDocUntrashedDetails)

class PaperDocUntrashedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocUntrashedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocUntrashedType(description={!r})'.format(
            self._description_value,
        )

PaperDocUntrashedType_validator = bv.Struct(PaperDocUntrashedType)

class PaperDocViewDetails(bb.Struct):
    """
    Viewed Paper doc.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocViewDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocViewDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperDocViewDetails_validator = bv.Struct(PaperDocViewDetails)

class PaperDocViewType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocViewType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocViewType(description={!r})'.format(
            self._description_value,
        )

PaperDocViewType_validator = bv.Struct(PaperDocViewType)

class PaperDocumentLogInfo(bb.Struct):
    """
    Paper document's logged information.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(PaperDocumentLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDocumentLogInfo(doc_id={!r}, doc_title={!r})'.format(
            self._doc_id_value,
            self._doc_title_value,
        )

PaperDocumentLogInfo_validator = bv.Struct(PaperDocumentLogInfo)

class PaperDownloadFormat(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    docx = None
    # Attribute is overwritten below the class definition
    html = None
    # Attribute is overwritten below the class definition
    markdown = None
    # Attribute is overwritten below the class definition
    pdf = None
    # Attribute is overwritten below the class definition
    other = None

    def is_docx(self):
        """
        Check if the union tag is ``docx``.

        :rtype: bool
        """
        return self._tag == 'docx'

    def is_html(self):
        """
        Check if the union tag is ``html``.

        :rtype: bool
        """
        return self._tag == 'html'

    def is_markdown(self):
        """
        Check if the union tag is ``markdown``.

        :rtype: bool
        """
        return self._tag == 'markdown'

    def is_pdf(self):
        """
        Check if the union tag is ``pdf``.

        :rtype: bool
        """
        return self._tag == 'pdf'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperDownloadFormat, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperDownloadFormat(%r, %r)' % (self._tag, self._value)

PaperDownloadFormat_validator = bv.Union(PaperDownloadFormat)

class PaperEnabledUsersGroupAdditionDetails(bb.Struct):
    """
    Added users to Paper-enabled users list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperEnabledUsersGroupAdditionDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperEnabledUsersGroupAdditionDetails()'

PaperEnabledUsersGroupAdditionDetails_validator = bv.Struct(PaperEnabledUsersGroupAdditionDetails)

class PaperEnabledUsersGroupAdditionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperEnabledUsersGroupAdditionType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperEnabledUsersGroupAdditionType(description={!r})'.format(
            self._description_value,
        )

PaperEnabledUsersGroupAdditionType_validator = bv.Struct(PaperEnabledUsersGroupAdditionType)

class PaperEnabledUsersGroupRemovalDetails(bb.Struct):
    """
    Removed users from Paper-enabled users list.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperEnabledUsersGroupRemovalDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperEnabledUsersGroupRemovalDetails()'

PaperEnabledUsersGroupRemovalDetails_validator = bv.Struct(PaperEnabledUsersGroupRemovalDetails)

class PaperEnabledUsersGroupRemovalType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperEnabledUsersGroupRemovalType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperEnabledUsersGroupRemovalType(description={!r})'.format(
            self._description_value,
        )

PaperEnabledUsersGroupRemovalType_validator = bv.Struct(PaperEnabledUsersGroupRemovalType)

class PaperExternalViewAllowDetails(bb.Struct):
    """
    Changed Paper external sharing setting to anyone.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperExternalViewAllowDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperExternalViewAllowDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperExternalViewAllowDetails_validator = bv.Struct(PaperExternalViewAllowDetails)

class PaperExternalViewAllowType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperExternalViewAllowType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperExternalViewAllowType(description={!r})'.format(
            self._description_value,
        )

PaperExternalViewAllowType_validator = bv.Struct(PaperExternalViewAllowType)

class PaperExternalViewDefaultTeamDetails(bb.Struct):
    """
    Changed Paper external sharing setting to default team.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperExternalViewDefaultTeamDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperExternalViewDefaultTeamDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperExternalViewDefaultTeamDetails_validator = bv.Struct(PaperExternalViewDefaultTeamDetails)

class PaperExternalViewDefaultTeamType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperExternalViewDefaultTeamType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperExternalViewDefaultTeamType(description={!r})'.format(
            self._description_value,
        )

PaperExternalViewDefaultTeamType_validator = bv.Struct(PaperExternalViewDefaultTeamType)

class PaperExternalViewForbidDetails(bb.Struct):
    """
    Changed Paper external sharing setting to team-only.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperExternalViewForbidDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperExternalViewForbidDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperExternalViewForbidDetails_validator = bv.Struct(PaperExternalViewForbidDetails)

class PaperExternalViewForbidType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperExternalViewForbidType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperExternalViewForbidType(description={!r})'.format(
            self._description_value,
        )

PaperExternalViewForbidType_validator = bv.Struct(PaperExternalViewForbidType)

class PaperFolderChangeSubscriptionDetails(bb.Struct):
    """
    Followed/unfollowed Paper folder.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(PaperFolderChangeSubscriptionDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperFolderChangeSubscriptionDetails(event_uuid={!r}, new_subscription_level={!r}, previous_subscription_level={!r})'.format(
            self._event_uuid_value,
            self._new_subscription_level_value,
            self._previous_subscription_level_value,
        )

PaperFolderChangeSubscriptionDetails_validator = bv.Struct(PaperFolderChangeSubscriptionDetails)

class PaperFolderChangeSubscriptionType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperFolderChangeSubscriptionType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperFolderChangeSubscriptionType(description={!r})'.format(
            self._description_value,
        )

PaperFolderChangeSubscriptionType_validator = bv.Struct(PaperFolderChangeSubscriptionType)

class PaperFolderDeletedDetails(bb.Struct):
    """
    Archived Paper folder.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperFolderDeletedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperFolderDeletedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperFolderDeletedDetails_validator = bv.Struct(PaperFolderDeletedDetails)

class PaperFolderDeletedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperFolderDeletedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperFolderDeletedType(description={!r})'.format(
            self._description_value,
        )

PaperFolderDeletedType_validator = bv.Struct(PaperFolderDeletedType)

class PaperFolderFollowedDetails(bb.Struct):
    """
    Followed Paper folder.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperFolderFollowedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperFolderFollowedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperFolderFollowedDetails_validator = bv.Struct(PaperFolderFollowedDetails)

class PaperFolderFollowedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperFolderFollowedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperFolderFollowedType(description={!r})'.format(
            self._description_value,
        )

PaperFolderFollowedType_validator = bv.Struct(PaperFolderFollowedType)

class PaperFolderLogInfo(bb.Struct):
    """
    Paper folder's logged information.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(PaperFolderLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperFolderLogInfo(folder_id={!r}, folder_name={!r})'.format(
            self._folder_id_value,
            self._folder_name_value,
        )

PaperFolderLogInfo_validator = bv.Struct(PaperFolderLogInfo)

class PaperFolderTeamInviteDetails(bb.Struct):
    """
    Shared Paper folder with member.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperFolderTeamInviteDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperFolderTeamInviteDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

PaperFolderTeamInviteDetails_validator = bv.Struct(PaperFolderTeamInviteDetails)

class PaperFolderTeamInviteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperFolderTeamInviteType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PaperFolderTeamInviteType(description={!r})'.format(
            self._description_value,
        )

PaperFolderTeamInviteType_validator = bv.Struct(PaperFolderTeamInviteType)

class PaperMemberPolicy(bb.Union):
    """
    Policy for controlling if team members can share Paper documents externally.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    anyone_with_link = None
    # Attribute is overwritten below the class definition
    only_team = None
    # Attribute is overwritten below the class definition
    team_and_explicitly_shared = None
    # Attribute is overwritten below the class definition
    other = None

    def is_anyone_with_link(self):
        """
        Check if the union tag is ``anyone_with_link``.

        :rtype: bool
        """
        return self._tag == 'anyone_with_link'

    def is_only_team(self):
        """
        Check if the union tag is ``only_team``.

        :rtype: bool
        """
        return self._tag == 'only_team'

    def is_team_and_explicitly_shared(self):
        """
        Check if the union tag is ``team_and_explicitly_shared``.

        :rtype: bool
        """
        return self._tag == 'team_and_explicitly_shared'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(PaperMemberPolicy, self)._process_custom_annotations(annotation_type, processor)

    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: A user with a Dropbox account.
    :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):
        """
        A user with a Dropbox account.

        Only call this if :meth:`is_user` is true.

        :rtype: UserLogInfo
        """
        if not self.is_user():
            raise AttributeError("tag 'user' not set")
        return self._value

    def get_group(self):
        """
        Group details.

        Only call this if :meth:`is_group` is true.

        :rtype: GroupLogInfo
        """
        if not self.is_group():
            raise AttributeError("tag 'group' not set")
        return self._value

    def _process_custom_annotations(self, annotation_type, processor):
        super(ParticipantLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ParticipantLogInfo(%r, %r)' % (self._tag, self._value)

ParticipantLogInfo_validator = bv.Union(ParticipantLogInfo)

class PassPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    allow = None
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_allow(self):
        """
        Check if the union tag is ``allow``.

        :rtype: bool
        """
        return self._tag == 'allow'

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(PassPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PassPolicy(%r, %r)' % (self._tag, self._value)

PassPolicy_validator = bv.Union(PassPolicy)

class PasswordChangeDetails(bb.Struct):
    """
    Changed password.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(PasswordChangeDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PasswordChangeDetails()'

PasswordChangeDetails_validator = bv.Struct(PasswordChangeDetails)

class PasswordChangeType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PasswordChangeType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PasswordChangeType(description={!r})'.format(
            self._description_value,
        )

PasswordChangeType_validator = bv.Struct(PasswordChangeType)

class PasswordResetAllDetails(bb.Struct):
    """
    Reset all team member passwords.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(PasswordResetAllDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PasswordResetAllDetails()'

PasswordResetAllDetails_validator = bv.Struct(PasswordResetAllDetails)

class PasswordResetAllType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PasswordResetAllType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PasswordResetAllType(description={!r})'.format(
            self._description_value,
        )

PasswordResetAllType_validator = bv.Struct(PasswordResetAllType)

class PasswordResetDetails(bb.Struct):
    """
    Reset password.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(PasswordResetDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PasswordResetDetails()'

PasswordResetDetails_validator = bv.Struct(PasswordResetDetails)

class PasswordResetType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PasswordResetType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PasswordResetType(description={!r})'.format(
            self._description_value,
        )

PasswordResetType_validator = bv.Struct(PasswordResetType)

class PathLogInfo(bb.Struct):
    """
    Path's details.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(PathLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PathLogInfo(namespace_relative={!r}, contextual={!r})'.format(
            self._namespace_relative_value,
            self._contextual_value,
        )

PathLogInfo_validator = bv.Struct(PathLogInfo)

class PermanentDeleteChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled ability of team members to permanently delete content.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(PermanentDeleteChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PermanentDeleteChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

PermanentDeleteChangePolicyDetails_validator = bv.Struct(PermanentDeleteChangePolicyDetails)

class PermanentDeleteChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(PermanentDeleteChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PermanentDeleteChangePolicyType(description={!r})'.format(
            self._description_value,
        )

PermanentDeleteChangePolicyType_validator = bv.Struct(PermanentDeleteChangePolicyType)

class PlacementRestriction(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    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 _process_custom_annotations(self, annotation_type, processor):
        super(PlacementRestriction, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'PlacementRestriction(%r, %r)' % (self._tag, self._value)

PlacementRestriction_validator = bv.Union(PlacementRestriction)

class QuickActionType(bb.Union):
    """
    Quick action type.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    delete_shared_link = None
    # Attribute is overwritten below the class definition
    other = None

    def is_delete_shared_link(self):
        """
        Check if the union tag is ``delete_shared_link``.

        :rtype: bool
        """
        return self._tag == 'delete_shared_link'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(QuickActionType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'QuickActionType(%r, %r)' % (self._tag, self._value)

QuickActionType_validator = bv.Union(QuickActionType)

class RelocateAssetReferencesLogInfo(bb.Struct):
    """
    Provides the indices of the source asset and the destination asset for a
    relocate action.

    :ivar 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: int
        """
        if self._src_asset_index_present:
            return self._src_asset_index_value
        else:
            raise AttributeError("missing required field 'src_asset_index'")

    @src_asset_index.setter
    def src_asset_index(self, val):
        val = self._src_asset_index_validator.validate(val)
        self._src_asset_index_value = val
        self._src_asset_index_present = True

    @src_asset_index.deleter
    def src_asset_index(self):
        self._src_asset_index_value = None
        self._src_asset_index_present = False

    @property
    def dest_asset_index(self):
        """
        Destination asset position in the Assets list.

        :rtype: int
        """
        if self._dest_asset_index_present:
            return self._dest_asset_index_value
        else:
            raise AttributeError("missing required field 'dest_asset_index'")

    @dest_asset_index.setter
    def dest_asset_index(self, val):
        val = self._dest_asset_index_validator.validate(val)
        self._dest_asset_index_value = val
        self._dest_asset_index_present = True

    @dest_asset_index.deleter
    def dest_asset_index(self):
        self._dest_asset_index_value = None
        self._dest_asset_index_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(RelocateAssetReferencesLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'RelocateAssetReferencesLogInfo(src_asset_index={!r}, dest_asset_index={!r})'.format(
            self._src_asset_index_value,
            self._dest_asset_index_value,
        )

RelocateAssetReferencesLogInfo_validator = bv.Struct(RelocateAssetReferencesLogInfo)

class ResellerLogInfo(bb.Struct):
    """
    Reseller information.

    :ivar reseller_name: Reseller name.
    :ivar reseller_email: Reseller email.
    """

    __slots__ = [
        '_reseller_name_value',
        '_reseller_name_present',
        '_reseller_email_value',
        '_reseller_email_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 reseller_name=None,
                 reseller_email=None):
        self._reseller_name_value = None
        self._reseller_name_present = False
        self._reseller_email_value = None
        self._reseller_email_present = False
        if reseller_name is not None:
            self.reseller_name = reseller_name
        if reseller_email is not None:
            self.reseller_email = reseller_email

    @property
    def reseller_name(self):
        """
        Reseller name.

        :rtype: str
        """
        if self._reseller_name_present:
            return self._reseller_name_value
        else:
            raise AttributeError("missing required field 'reseller_name'")

    @reseller_name.setter
    def reseller_name(self, val):
        val = self._reseller_name_validator.validate(val)
        self._reseller_name_value = val
        self._reseller_name_present = True

    @reseller_name.deleter
    def reseller_name(self):
        self._reseller_name_value = None
        self._reseller_name_present = False

    @property
    def reseller_email(self):
        """
        Reseller email.

        :rtype: str
        """
        if self._reseller_email_present:
            return self._reseller_email_value
        else:
            raise AttributeError("missing required field 'reseller_email'")

    @reseller_email.setter
    def reseller_email(self, val):
        val = self._reseller_email_validator.validate(val)
        self._reseller_email_value = val
        self._reseller_email_present = True

    @reseller_email.deleter
    def reseller_email(self):
        self._reseller_email_value = None
        self._reseller_email_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ResellerLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ResellerLogInfo(reseller_name={!r}, reseller_email={!r})'.format(
            self._reseller_name_value,
            self._reseller_email_value,
        )

ResellerLogInfo_validator = bv.Struct(ResellerLogInfo)

class ResellerSupportSessionEndDetails(bb.Struct):
    """
    Ended reseller support session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(ResellerSupportSessionEndDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ResellerSupportSessionEndDetails()'

ResellerSupportSessionEndDetails_validator = bv.Struct(ResellerSupportSessionEndDetails)

class ResellerSupportSessionEndType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ResellerSupportSessionEndType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ResellerSupportSessionEndType(description={!r})'.format(
            self._description_value,
        )

ResellerSupportSessionEndType_validator = bv.Struct(ResellerSupportSessionEndType)

class ResellerSupportSessionStartDetails(bb.Struct):
    """
    Started reseller support session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(ResellerSupportSessionStartDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ResellerSupportSessionStartDetails()'

ResellerSupportSessionStartDetails_validator = bv.Struct(ResellerSupportSessionStartDetails)

class ResellerSupportSessionStartType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ResellerSupportSessionStartType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ResellerSupportSessionStartType(description={!r})'.format(
            self._description_value,
        )

ResellerSupportSessionStartType_validator = bv.Struct(ResellerSupportSessionStartType)

class SecondaryMailsPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(SecondaryMailsPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SecondaryMailsPolicy(%r, %r)' % (self._tag, self._value)

SecondaryMailsPolicy_validator = bv.Union(SecondaryMailsPolicy)

class SecondaryMailsPolicyChangedDetails(bb.Struct):
    """
    Secondary mails policy changed.

    :ivar previous_value: Previous secondary mails policy.
    :ivar new_value: New secondary mails policy.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous secondary mails policy.

        :rtype: SecondaryMailsPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New secondary mails policy.

        :rtype: SecondaryMailsPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SecondaryMailsPolicyChangedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SecondaryMailsPolicyChangedDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

SecondaryMailsPolicyChangedDetails_validator = bv.Struct(SecondaryMailsPolicyChangedDetails)

class SecondaryMailsPolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SecondaryMailsPolicyChangedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SecondaryMailsPolicyChangedType(description={!r})'.format(
            self._description_value,
        )

SecondaryMailsPolicyChangedType_validator = bv.Struct(SecondaryMailsPolicyChangedType)

class SfAddGroupDetails(bb.Struct):
    """
    Added team to 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: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def sharing_permission(self):
        """
        Sharing permission. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._sharing_permission_present:
            return self._sharing_permission_value
        else:
            return None

    @sharing_permission.setter
    def sharing_permission(self, val):
        if val is None:
            del self.sharing_permission
            return
        val = self._sharing_permission_validator.validate(val)
        self._sharing_permission_value = val
        self._sharing_permission_present = True

    @sharing_permission.deleter
    def sharing_permission(self):
        self._sharing_permission_value = None
        self._sharing_permission_present = False

    @property
    def team_name(self):
        """
        Team name.

        :rtype: str
        """
        if self._team_name_present:
            return self._team_name_value
        else:
            raise AttributeError("missing required field 'team_name'")

    @team_name.setter
    def team_name(self, val):
        val = self._team_name_validator.validate(val)
        self._team_name_value = val
        self._team_name_present = True

    @team_name.deleter
    def team_name(self):
        self._team_name_value = None
        self._team_name_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfAddGroupDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfAddGroupDetails(target_asset_index={!r}, original_folder_name={!r}, team_name={!r}, sharing_permission={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._team_name_value,
            self._sharing_permission_value,
        )

SfAddGroupDetails_validator = bv.Struct(SfAddGroupDetails)

class SfAddGroupType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfAddGroupType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfAddGroupType(description={!r})'.format(
            self._description_value,
        )

SfAddGroupType_validator = bv.Struct(SfAddGroupType)

class SfAllowNonMembersToViewSharedLinksDetails(bb.Struct):
    """
    Allowed non-collaborators to view links to files in shared folder.

    :ivar 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: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def shared_folder_type(self):
        """
        Shared folder type. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._shared_folder_type_present:
            return self._shared_folder_type_value
        else:
            return None

    @shared_folder_type.setter
    def shared_folder_type(self, val):
        if val is None:
            del self.shared_folder_type
            return
        val = self._shared_folder_type_validator.validate(val)
        self._shared_folder_type_value = val
        self._shared_folder_type_present = True

    @shared_folder_type.deleter
    def shared_folder_type(self):
        self._shared_folder_type_value = None
        self._shared_folder_type_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfAllowNonMembersToViewSharedLinksDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfAllowNonMembersToViewSharedLinksDetails(target_asset_index={!r}, original_folder_name={!r}, shared_folder_type={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._shared_folder_type_value,
        )

SfAllowNonMembersToViewSharedLinksDetails_validator = bv.Struct(SfAllowNonMembersToViewSharedLinksDetails)

class SfAllowNonMembersToViewSharedLinksType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfAllowNonMembersToViewSharedLinksType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfAllowNonMembersToViewSharedLinksType(description={!r})'.format(
            self._description_value,
        )

SfAllowNonMembersToViewSharedLinksType_validator = bv.Struct(SfAllowNonMembersToViewSharedLinksType)

class SfExternalInviteWarnDetails(bb.Struct):
    """
    Set team members to see warning before sharing folders outside team.

    :ivar 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: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def new_sharing_permission(self):
        """
        New sharing permission. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._new_sharing_permission_present:
            return self._new_sharing_permission_value
        else:
            return None

    @new_sharing_permission.setter
    def new_sharing_permission(self, val):
        if val is None:
            del self.new_sharing_permission
            return
        val = self._new_sharing_permission_validator.validate(val)
        self._new_sharing_permission_value = val
        self._new_sharing_permission_present = True

    @new_sharing_permission.deleter
    def new_sharing_permission(self):
        self._new_sharing_permission_value = None
        self._new_sharing_permission_present = False

    @property
    def previous_sharing_permission(self):
        """
        Previous sharing permission. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._previous_sharing_permission_present:
            return self._previous_sharing_permission_value
        else:
            return None

    @previous_sharing_permission.setter
    def previous_sharing_permission(self, val):
        if val is None:
            del self.previous_sharing_permission
            return
        val = self._previous_sharing_permission_validator.validate(val)
        self._previous_sharing_permission_value = val
        self._previous_sharing_permission_present = True

    @previous_sharing_permission.deleter
    def previous_sharing_permission(self):
        self._previous_sharing_permission_value = None
        self._previous_sharing_permission_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfExternalInviteWarnDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfExternalInviteWarnDetails(target_asset_index={!r}, original_folder_name={!r}, new_sharing_permission={!r}, previous_sharing_permission={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._new_sharing_permission_value,
            self._previous_sharing_permission_value,
        )

SfExternalInviteWarnDetails_validator = bv.Struct(SfExternalInviteWarnDetails)

class SfExternalInviteWarnType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfExternalInviteWarnType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfExternalInviteWarnType(description={!r})'.format(
            self._description_value,
        )

SfExternalInviteWarnType_validator = bv.Struct(SfExternalInviteWarnType)

class SfFbInviteChangeRoleDetails(bb.Struct):
    """
    Changed Facebook user's role in shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    :ivar original_folder_name: Original shared folder name.
    :ivar previous_sharing_permission: Previous sharing permission. Might be
        missing due to historical data gap.
    :ivar new_sharing_permission: New sharing permission. Might be missing due
        to historical data gap.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
        '_original_folder_name_value',
        '_original_folder_name_present',
        '_previous_sharing_permission_value',
        '_previous_sharing_permission_present',
        '_new_sharing_permission_value',
        '_new_sharing_permission_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None,
                 original_folder_name=None,
                 previous_sharing_permission=None,
                 new_sharing_permission=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        self._original_folder_name_value = None
        self._original_folder_name_present = False
        self._previous_sharing_permission_value = None
        self._previous_sharing_permission_present = False
        self._new_sharing_permission_value = None
        self._new_sharing_permission_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index
        if original_folder_name is not None:
            self.original_folder_name = original_folder_name
        if previous_sharing_permission is not None:
            self.previous_sharing_permission = previous_sharing_permission
        if new_sharing_permission is not None:
            self.new_sharing_permission = new_sharing_permission

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def previous_sharing_permission(self):
        """
        Previous sharing permission. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._previous_sharing_permission_present:
            return self._previous_sharing_permission_value
        else:
            return None

    @previous_sharing_permission.setter
    def previous_sharing_permission(self, val):
        if val is None:
            del self.previous_sharing_permission
            return
        val = self._previous_sharing_permission_validator.validate(val)
        self._previous_sharing_permission_value = val
        self._previous_sharing_permission_present = True

    @previous_sharing_permission.deleter
    def previous_sharing_permission(self):
        self._previous_sharing_permission_value = None
        self._previous_sharing_permission_present = False

    @property
    def new_sharing_permission(self):
        """
        New sharing permission. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._new_sharing_permission_present:
            return self._new_sharing_permission_value
        else:
            return None

    @new_sharing_permission.setter
    def new_sharing_permission(self, val):
        if val is None:
            del self.new_sharing_permission
            return
        val = self._new_sharing_permission_validator.validate(val)
        self._new_sharing_permission_value = val
        self._new_sharing_permission_present = True

    @new_sharing_permission.deleter
    def new_sharing_permission(self):
        self._new_sharing_permission_value = None
        self._new_sharing_permission_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfFbInviteChangeRoleDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfFbInviteChangeRoleDetails(target_asset_index={!r}, original_folder_name={!r}, previous_sharing_permission={!r}, new_sharing_permission={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._previous_sharing_permission_value,
            self._new_sharing_permission_value,
        )

SfFbInviteChangeRoleDetails_validator = bv.Struct(SfFbInviteChangeRoleDetails)

class SfFbInviteChangeRoleType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfFbInviteChangeRoleType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfFbInviteChangeRoleType(description={!r})'.format(
            self._description_value,
        )

SfFbInviteChangeRoleType_validator = bv.Struct(SfFbInviteChangeRoleType)

class SfFbInviteDetails(bb.Struct):
    """
    Invited Facebook users to shared folder.

    :ivar 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: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def sharing_permission(self):
        """
        Sharing permission. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._sharing_permission_present:
            return self._sharing_permission_value
        else:
            return None

    @sharing_permission.setter
    def sharing_permission(self, val):
        if val is None:
            del self.sharing_permission
            return
        val = self._sharing_permission_validator.validate(val)
        self._sharing_permission_value = val
        self._sharing_permission_present = True

    @sharing_permission.deleter
    def sharing_permission(self):
        self._sharing_permission_value = None
        self._sharing_permission_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfFbInviteDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfFbInviteDetails(target_asset_index={!r}, original_folder_name={!r}, sharing_permission={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._sharing_permission_value,
        )

SfFbInviteDetails_validator = bv.Struct(SfFbInviteDetails)

class SfFbInviteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfFbInviteType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfFbInviteType(description={!r})'.format(
            self._description_value,
        )

SfFbInviteType_validator = bv.Struct(SfFbInviteType)

class SfFbUninviteDetails(bb.Struct):
    """
    Uninvited Facebook user from shared folder.

    :ivar 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: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfFbUninviteDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfFbUninviteDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SfFbUninviteDetails_validator = bv.Struct(SfFbUninviteDetails)

class SfFbUninviteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfFbUninviteType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfFbUninviteType(description={!r})'.format(
            self._description_value,
        )

SfFbUninviteType_validator = bv.Struct(SfFbUninviteType)

class SfInviteGroupDetails(bb.Struct):
    """
    Invited group to shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfInviteGroupDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfInviteGroupDetails(target_asset_index={!r})'.format(
            self._target_asset_index_value,
        )

SfInviteGroupDetails_validator = bv.Struct(SfInviteGroupDetails)

class SfInviteGroupType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfInviteGroupType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfInviteGroupType(description={!r})'.format(
            self._description_value,
        )

SfInviteGroupType_validator = bv.Struct(SfInviteGroupType)

class SfTeamGrantAccessDetails(bb.Struct):
    """
    Granted access to shared folder.

    :ivar 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: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfTeamGrantAccessDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfTeamGrantAccessDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SfTeamGrantAccessDetails_validator = bv.Struct(SfTeamGrantAccessDetails)

class SfTeamGrantAccessType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfTeamGrantAccessType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfTeamGrantAccessType(description={!r})'.format(
            self._description_value,
        )

SfTeamGrantAccessType_validator = bv.Struct(SfTeamGrantAccessType)

class SfTeamInviteChangeRoleDetails(bb.Struct):
    """
    Changed team member's role in shared folder.

    :ivar 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: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def new_sharing_permission(self):
        """
        New sharing permission. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._new_sharing_permission_present:
            return self._new_sharing_permission_value
        else:
            return None

    @new_sharing_permission.setter
    def new_sharing_permission(self, val):
        if val is None:
            del self.new_sharing_permission
            return
        val = self._new_sharing_permission_validator.validate(val)
        self._new_sharing_permission_value = val
        self._new_sharing_permission_present = True

    @new_sharing_permission.deleter
    def new_sharing_permission(self):
        self._new_sharing_permission_value = None
        self._new_sharing_permission_present = False

    @property
    def previous_sharing_permission(self):
        """
        Previous sharing permission. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._previous_sharing_permission_present:
            return self._previous_sharing_permission_value
        else:
            return None

    @previous_sharing_permission.setter
    def previous_sharing_permission(self, val):
        if val is None:
            del self.previous_sharing_permission
            return
        val = self._previous_sharing_permission_validator.validate(val)
        self._previous_sharing_permission_value = val
        self._previous_sharing_permission_present = True

    @previous_sharing_permission.deleter
    def previous_sharing_permission(self):
        self._previous_sharing_permission_value = None
        self._previous_sharing_permission_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfTeamInviteChangeRoleDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfTeamInviteChangeRoleDetails(target_asset_index={!r}, original_folder_name={!r}, new_sharing_permission={!r}, previous_sharing_permission={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._new_sharing_permission_value,
            self._previous_sharing_permission_value,
        )

SfTeamInviteChangeRoleDetails_validator = bv.Struct(SfTeamInviteChangeRoleDetails)

class SfTeamInviteChangeRoleType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfTeamInviteChangeRoleType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfTeamInviteChangeRoleType(description={!r})'.format(
            self._description_value,
        )

SfTeamInviteChangeRoleType_validator = bv.Struct(SfTeamInviteChangeRoleType)

class SfTeamInviteDetails(bb.Struct):
    """
    Invited team members to shared folder.

    :ivar 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: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def sharing_permission(self):
        """
        Sharing permission. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._sharing_permission_present:
            return self._sharing_permission_value
        else:
            return None

    @sharing_permission.setter
    def sharing_permission(self, val):
        if val is None:
            del self.sharing_permission
            return
        val = self._sharing_permission_validator.validate(val)
        self._sharing_permission_value = val
        self._sharing_permission_present = True

    @sharing_permission.deleter
    def sharing_permission(self):
        self._sharing_permission_value = None
        self._sharing_permission_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfTeamInviteDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfTeamInviteDetails(target_asset_index={!r}, original_folder_name={!r}, sharing_permission={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._sharing_permission_value,
        )

SfTeamInviteDetails_validator = bv.Struct(SfTeamInviteDetails)

class SfTeamInviteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfTeamInviteType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfTeamInviteType(description={!r})'.format(
            self._description_value,
        )

SfTeamInviteType_validator = bv.Struct(SfTeamInviteType)

class SfTeamJoinDetails(bb.Struct):
    """
    Joined team member's shared folder.

    :ivar 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: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfTeamJoinDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfTeamJoinDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SfTeamJoinDetails_validator = bv.Struct(SfTeamJoinDetails)

class SfTeamJoinFromOobLinkDetails(bb.Struct):
    """
    Joined team member's shared folder from link.

    :ivar 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: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    @property
    def token_key(self):
        """
        Shared link token key.

        :rtype: str
        """
        if self._token_key_present:
            return self._token_key_value
        else:
            return None

    @token_key.setter
    def token_key(self, val):
        if val is None:
            del self.token_key
            return
        val = self._token_key_validator.validate(val)
        self._token_key_value = val
        self._token_key_present = True

    @token_key.deleter
    def token_key(self):
        self._token_key_value = None
        self._token_key_present = False

    @property
    def sharing_permission(self):
        """
        Sharing permission. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._sharing_permission_present:
            return self._sharing_permission_value
        else:
            return None

    @sharing_permission.setter
    def sharing_permission(self, val):
        if val is None:
            del self.sharing_permission
            return
        val = self._sharing_permission_validator.validate(val)
        self._sharing_permission_value = val
        self._sharing_permission_present = True

    @sharing_permission.deleter
    def sharing_permission(self):
        self._sharing_permission_value = None
        self._sharing_permission_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfTeamJoinFromOobLinkDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfTeamJoinFromOobLinkDetails(target_asset_index={!r}, original_folder_name={!r}, token_key={!r}, sharing_permission={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
            self._token_key_value,
            self._sharing_permission_value,
        )

SfTeamJoinFromOobLinkDetails_validator = bv.Struct(SfTeamJoinFromOobLinkDetails)

class SfTeamJoinFromOobLinkType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfTeamJoinFromOobLinkType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfTeamJoinFromOobLinkType(description={!r})'.format(
            self._description_value,
        )

SfTeamJoinFromOobLinkType_validator = bv.Struct(SfTeamJoinFromOobLinkType)

class SfTeamJoinType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfTeamJoinType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfTeamJoinType(description={!r})'.format(
            self._description_value,
        )

SfTeamJoinType_validator = bv.Struct(SfTeamJoinType)

class SfTeamUninviteDetails(bb.Struct):
    """
    Unshared folder with team member.

    :ivar 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: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    @property
    def original_folder_name(self):
        """
        Original shared folder name.

        :rtype: str
        """
        if self._original_folder_name_present:
            return self._original_folder_name_value
        else:
            raise AttributeError("missing required field 'original_folder_name'")

    @original_folder_name.setter
    def original_folder_name(self, val):
        val = self._original_folder_name_validator.validate(val)
        self._original_folder_name_value = val
        self._original_folder_name_present = True

    @original_folder_name.deleter
    def original_folder_name(self):
        self._original_folder_name_value = None
        self._original_folder_name_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfTeamUninviteDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfTeamUninviteDetails(target_asset_index={!r}, original_folder_name={!r})'.format(
            self._target_asset_index_value,
            self._original_folder_name_value,
        )

SfTeamUninviteDetails_validator = bv.Struct(SfTeamUninviteDetails)

class SfTeamUninviteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SfTeamUninviteType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SfTeamUninviteType(description={!r})'.format(
            self._description_value,
        )

SfTeamUninviteType_validator = bv.Struct(SfTeamUninviteType)

class SharedContentAddInviteesDetails(bb.Struct):
    """
    Invited user to Dropbox and added them to shared file/folder.

    :ivar shared_content_access_level: Shared content access level.
    :ivar invitees: A list of invitees.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
        '_invitees_value',
        '_invitees_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_access_level=None,
                 invitees=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        self._invitees_value = None
        self._invitees_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level
        if invitees is not None:
            self.invitees = invitees

    @property
    def shared_content_access_level(self):
        """
        Shared content access level.

        :rtype: sharing.AccessLevel
        """
        if self._shared_content_access_level_present:
            return self._shared_content_access_level_value
        else:
            raise AttributeError("missing required field 'shared_content_access_level'")

    @shared_content_access_level.setter
    def shared_content_access_level(self, val):
        self._shared_content_access_level_validator.validate_type_only(val)
        self._shared_content_access_level_value = val
        self._shared_content_access_level_present = True

    @shared_content_access_level.deleter
    def shared_content_access_level(self):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False

    @property
    def invitees(self):
        """
        A list of invitees.

        :rtype: list of [str]
        """
        if self._invitees_present:
            return self._invitees_value
        else:
            raise AttributeError("missing required field 'invitees'")

    @invitees.setter
    def invitees(self, val):
        val = self._invitees_validator.validate(val)
        self._invitees_value = val
        self._invitees_present = True

    @invitees.deleter
    def invitees(self):
        self._invitees_value = None
        self._invitees_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentAddInviteesDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentAddInviteesDetails(shared_content_access_level={!r}, invitees={!r})'.format(
            self._shared_content_access_level_value,
            self._invitees_value,
        )

SharedContentAddInviteesDetails_validator = bv.Struct(SharedContentAddInviteesDetails)

class SharedContentAddInviteesType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentAddInviteesType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentAddInviteesType(description={!r})'.format(
            self._description_value,
        )

SharedContentAddInviteesType_validator = bv.Struct(SharedContentAddInviteesType)

class SharedContentAddLinkExpiryDetails(bb.Struct):
    """
    Added expiration date to link for shared file/folder.

    :ivar new_value: New shared content link expiration date. Might be missing
        due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        New shared content link expiration date. Might be missing due to
        historical data gap.

        :rtype: datetime.datetime
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentAddLinkExpiryDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentAddLinkExpiryDetails(new_value={!r})'.format(
            self._new_value_value,
        )

SharedContentAddLinkExpiryDetails_validator = bv.Struct(SharedContentAddLinkExpiryDetails)

class SharedContentAddLinkExpiryType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentAddLinkExpiryType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentAddLinkExpiryType(description={!r})'.format(
            self._description_value,
        )

SharedContentAddLinkExpiryType_validator = bv.Struct(SharedContentAddLinkExpiryType)

class SharedContentAddLinkPasswordDetails(bb.Struct):
    """
    Added password to link for shared file/folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentAddLinkPasswordDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentAddLinkPasswordDetails()'

SharedContentAddLinkPasswordDetails_validator = bv.Struct(SharedContentAddLinkPasswordDetails)

class SharedContentAddLinkPasswordType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentAddLinkPasswordType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentAddLinkPasswordType(description={!r})'.format(
            self._description_value,
        )

SharedContentAddLinkPasswordType_validator = bv.Struct(SharedContentAddLinkPasswordType)

class SharedContentAddMemberDetails(bb.Struct):
    """
    Added users and/or groups to shared file/folder.

    :ivar shared_content_access_level: Shared content access level.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_access_level=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level

    @property
    def shared_content_access_level(self):
        """
        Shared content access level.

        :rtype: sharing.AccessLevel
        """
        if self._shared_content_access_level_present:
            return self._shared_content_access_level_value
        else:
            raise AttributeError("missing required field 'shared_content_access_level'")

    @shared_content_access_level.setter
    def shared_content_access_level(self, val):
        self._shared_content_access_level_validator.validate_type_only(val)
        self._shared_content_access_level_value = val
        self._shared_content_access_level_present = True

    @shared_content_access_level.deleter
    def shared_content_access_level(self):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentAddMemberDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentAddMemberDetails(shared_content_access_level={!r})'.format(
            self._shared_content_access_level_value,
        )

SharedContentAddMemberDetails_validator = bv.Struct(SharedContentAddMemberDetails)

class SharedContentAddMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentAddMemberType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentAddMemberType(description={!r})'.format(
            self._description_value,
        )

SharedContentAddMemberType_validator = bv.Struct(SharedContentAddMemberType)

class SharedContentChangeDownloadsPolicyDetails(bb.Struct):
    """
    Changed whether members can download shared file/folder.

    :ivar new_value: New downloads policy.
    :ivar previous_value: Previous downloads policy. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New downloads policy.

        :rtype: DownloadPolicyType
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous downloads policy. Might be missing due to historical data gap.

        :rtype: DownloadPolicyType
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentChangeDownloadsPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentChangeDownloadsPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedContentChangeDownloadsPolicyDetails_validator = bv.Struct(SharedContentChangeDownloadsPolicyDetails)

class SharedContentChangeDownloadsPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentChangeDownloadsPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentChangeDownloadsPolicyType(description={!r})'.format(
            self._description_value,
        )

SharedContentChangeDownloadsPolicyType_validator = bv.Struct(SharedContentChangeDownloadsPolicyType)

class SharedContentChangeInviteeRoleDetails(bb.Struct):
    """
    Changed access type of invitee to shared file/folder before invite was
    accepted.

    :ivar previous_access_level: Previous access level. Might be missing due to
        historical data gap.
    :ivar new_access_level: New access level.
    :ivar invitee: The invitee whose role was changed.
    """

    __slots__ = [
        '_previous_access_level_value',
        '_previous_access_level_present',
        '_new_access_level_value',
        '_new_access_level_present',
        '_invitee_value',
        '_invitee_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_access_level=None,
                 invitee=None,
                 previous_access_level=None):
        self._previous_access_level_value = None
        self._previous_access_level_present = False
        self._new_access_level_value = None
        self._new_access_level_present = False
        self._invitee_value = None
        self._invitee_present = False
        if previous_access_level is not None:
            self.previous_access_level = previous_access_level
        if new_access_level is not None:
            self.new_access_level = new_access_level
        if invitee is not None:
            self.invitee = invitee

    @property
    def previous_access_level(self):
        """
        Previous access level. Might be missing due to historical data gap.

        :rtype: sharing.AccessLevel
        """
        if self._previous_access_level_present:
            return self._previous_access_level_value
        else:
            return None

    @previous_access_level.setter
    def previous_access_level(self, val):
        if val is None:
            del self.previous_access_level
            return
        self._previous_access_level_validator.validate_type_only(val)
        self._previous_access_level_value = val
        self._previous_access_level_present = True

    @previous_access_level.deleter
    def previous_access_level(self):
        self._previous_access_level_value = None
        self._previous_access_level_present = False

    @property
    def new_access_level(self):
        """
        New access level.

        :rtype: sharing.AccessLevel
        """
        if self._new_access_level_present:
            return self._new_access_level_value
        else:
            raise AttributeError("missing required field 'new_access_level'")

    @new_access_level.setter
    def new_access_level(self, val):
        self._new_access_level_validator.validate_type_only(val)
        self._new_access_level_value = val
        self._new_access_level_present = True

    @new_access_level.deleter
    def new_access_level(self):
        self._new_access_level_value = None
        self._new_access_level_present = False

    @property
    def invitee(self):
        """
        The invitee whose role was changed.

        :rtype: str
        """
        if self._invitee_present:
            return self._invitee_value
        else:
            raise AttributeError("missing required field 'invitee'")

    @invitee.setter
    def invitee(self, val):
        val = self._invitee_validator.validate(val)
        self._invitee_value = val
        self._invitee_present = True

    @invitee.deleter
    def invitee(self):
        self._invitee_value = None
        self._invitee_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentChangeInviteeRoleDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentChangeInviteeRoleDetails(new_access_level={!r}, invitee={!r}, previous_access_level={!r})'.format(
            self._new_access_level_value,
            self._invitee_value,
            self._previous_access_level_value,
        )

SharedContentChangeInviteeRoleDetails_validator = bv.Struct(SharedContentChangeInviteeRoleDetails)

class SharedContentChangeInviteeRoleType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentChangeInviteeRoleType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentChangeInviteeRoleType(description={!r})'.format(
            self._description_value,
        )

SharedContentChangeInviteeRoleType_validator = bv.Struct(SharedContentChangeInviteeRoleType)

class SharedContentChangeLinkAudienceDetails(bb.Struct):
    """
    Changed link audience of shared file/folder.

    :ivar new_value: New link audience value.
    :ivar previous_value: Previous link audience value.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New link audience value.

        :rtype: sharing.LinkAudience
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous link audience value.

        :rtype: sharing.LinkAudience
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentChangeLinkAudienceDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentChangeLinkAudienceDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedContentChangeLinkAudienceDetails_validator = bv.Struct(SharedContentChangeLinkAudienceDetails)

class SharedContentChangeLinkAudienceType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentChangeLinkAudienceType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentChangeLinkAudienceType(description={!r})'.format(
            self._description_value,
        )

SharedContentChangeLinkAudienceType_validator = bv.Struct(SharedContentChangeLinkAudienceType)

class SharedContentChangeLinkExpiryDetails(bb.Struct):
    """
    Changed link expiration of shared file/folder.

    :ivar new_value: New shared content link expiration date. Might be missing
        due to historical data gap.
    :ivar previous_value: Previous shared content link expiration date. Might be
        missing due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New shared content link expiration date. Might be missing due to
        historical data gap.

        :rtype: datetime.datetime
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous shared content link expiration date. Might be missing due to
        historical data gap.

        :rtype: datetime.datetime
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentChangeLinkExpiryDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentChangeLinkExpiryDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedContentChangeLinkExpiryDetails_validator = bv.Struct(SharedContentChangeLinkExpiryDetails)

class SharedContentChangeLinkExpiryType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentChangeLinkExpiryType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentChangeLinkExpiryType(description={!r})'.format(
            self._description_value,
        )

SharedContentChangeLinkExpiryType_validator = bv.Struct(SharedContentChangeLinkExpiryType)

class SharedContentChangeLinkPasswordDetails(bb.Struct):
    """
    Changed link password of shared file/folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentChangeLinkPasswordDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentChangeLinkPasswordDetails()'

SharedContentChangeLinkPasswordDetails_validator = bv.Struct(SharedContentChangeLinkPasswordDetails)

class SharedContentChangeLinkPasswordType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentChangeLinkPasswordType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentChangeLinkPasswordType(description={!r})'.format(
            self._description_value,
        )

SharedContentChangeLinkPasswordType_validator = bv.Struct(SharedContentChangeLinkPasswordType)

class SharedContentChangeMemberRoleDetails(bb.Struct):
    """
    Changed access type of shared file/folder member.

    :ivar previous_access_level: Previous access level. Might be missing due to
        historical data gap.
    :ivar new_access_level: New access level.
    """

    __slots__ = [
        '_previous_access_level_value',
        '_previous_access_level_present',
        '_new_access_level_value',
        '_new_access_level_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_access_level=None,
                 previous_access_level=None):
        self._previous_access_level_value = None
        self._previous_access_level_present = False
        self._new_access_level_value = None
        self._new_access_level_present = False
        if previous_access_level is not None:
            self.previous_access_level = previous_access_level
        if new_access_level is not None:
            self.new_access_level = new_access_level

    @property
    def previous_access_level(self):
        """
        Previous access level. Might be missing due to historical data gap.

        :rtype: sharing.AccessLevel
        """
        if self._previous_access_level_present:
            return self._previous_access_level_value
        else:
            return None

    @previous_access_level.setter
    def previous_access_level(self, val):
        if val is None:
            del self.previous_access_level
            return
        self._previous_access_level_validator.validate_type_only(val)
        self._previous_access_level_value = val
        self._previous_access_level_present = True

    @previous_access_level.deleter
    def previous_access_level(self):
        self._previous_access_level_value = None
        self._previous_access_level_present = False

    @property
    def new_access_level(self):
        """
        New access level.

        :rtype: sharing.AccessLevel
        """
        if self._new_access_level_present:
            return self._new_access_level_value
        else:
            raise AttributeError("missing required field 'new_access_level'")

    @new_access_level.setter
    def new_access_level(self, val):
        self._new_access_level_validator.validate_type_only(val)
        self._new_access_level_value = val
        self._new_access_level_present = True

    @new_access_level.deleter
    def new_access_level(self):
        self._new_access_level_value = None
        self._new_access_level_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentChangeMemberRoleDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentChangeMemberRoleDetails(new_access_level={!r}, previous_access_level={!r})'.format(
            self._new_access_level_value,
            self._previous_access_level_value,
        )

SharedContentChangeMemberRoleDetails_validator = bv.Struct(SharedContentChangeMemberRoleDetails)

class SharedContentChangeMemberRoleType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentChangeMemberRoleType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentChangeMemberRoleType(description={!r})'.format(
            self._description_value,
        )

SharedContentChangeMemberRoleType_validator = bv.Struct(SharedContentChangeMemberRoleType)

class SharedContentChangeViewerInfoPolicyDetails(bb.Struct):
    """
    Changed whether members can see who viewed shared file/folder.

    :ivar new_value: New viewer info policy.
    :ivar previous_value: Previous view info policy. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New viewer info policy.

        :rtype: sharing.ViewerInfoPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous view info policy. Might be missing due to historical data gap.

        :rtype: sharing.ViewerInfoPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentChangeViewerInfoPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentChangeViewerInfoPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedContentChangeViewerInfoPolicyDetails_validator = bv.Struct(SharedContentChangeViewerInfoPolicyDetails)

class SharedContentChangeViewerInfoPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentChangeViewerInfoPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentChangeViewerInfoPolicyType(description={!r})'.format(
            self._description_value,
        )

SharedContentChangeViewerInfoPolicyType_validator = bv.Struct(SharedContentChangeViewerInfoPolicyType)

class SharedContentClaimInvitationDetails(bb.Struct):
    """
    Acquired membership of shared file/folder by accepting invite.

    :ivar shared_content_link: Shared content link.
    """

    __slots__ = [
        '_shared_content_link_value',
        '_shared_content_link_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_content_link=None):
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link

    @property
    def shared_content_link(self):
        """
        Shared content link.

        :rtype: str
        """
        if self._shared_content_link_present:
            return self._shared_content_link_value
        else:
            return None

    @shared_content_link.setter
    def shared_content_link(self, val):
        if val is None:
            del self.shared_content_link
            return
        val = self._shared_content_link_validator.validate(val)
        self._shared_content_link_value = val
        self._shared_content_link_present = True

    @shared_content_link.deleter
    def shared_content_link(self):
        self._shared_content_link_value = None
        self._shared_content_link_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentClaimInvitationDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentClaimInvitationDetails(shared_content_link={!r})'.format(
            self._shared_content_link_value,
        )

SharedContentClaimInvitationDetails_validator = bv.Struct(SharedContentClaimInvitationDetails)

class SharedContentClaimInvitationType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentClaimInvitationType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentClaimInvitationType(description={!r})'.format(
            self._description_value,
        )

SharedContentClaimInvitationType_validator = bv.Struct(SharedContentClaimInvitationType)

class SharedContentCopyDetails(bb.Struct):
    """
    Copied shared file/folder to own Dropbox.

    :ivar shared_content_link: Shared content link.
    :ivar shared_content_owner: The shared content owner.
    :ivar shared_content_access_level: Shared content access level.
    :ivar destination_path: The path where the member saved the content.
    """

    __slots__ = [
        '_shared_content_link_value',
        '_shared_content_link_present',
        '_shared_content_owner_value',
        '_shared_content_owner_present',
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
        '_destination_path_value',
        '_destination_path_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_link=None,
                 shared_content_access_level=None,
                 destination_path=None,
                 shared_content_owner=None):
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        self._shared_content_owner_value = None
        self._shared_content_owner_present = False
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        self._destination_path_value = None
        self._destination_path_present = False
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link
        if shared_content_owner is not None:
            self.shared_content_owner = shared_content_owner
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level
        if destination_path is not None:
            self.destination_path = destination_path

    @property
    def shared_content_link(self):
        """
        Shared content link.

        :rtype: str
        """
        if self._shared_content_link_present:
            return self._shared_content_link_value
        else:
            raise AttributeError("missing required field 'shared_content_link'")

    @shared_content_link.setter
    def shared_content_link(self, val):
        val = self._shared_content_link_validator.validate(val)
        self._shared_content_link_value = val
        self._shared_content_link_present = True

    @shared_content_link.deleter
    def shared_content_link(self):
        self._shared_content_link_value = None
        self._shared_content_link_present = False

    @property
    def shared_content_owner(self):
        """
        The shared content owner.

        :rtype: UserLogInfo
        """
        if self._shared_content_owner_present:
            return self._shared_content_owner_value
        else:
            return None

    @shared_content_owner.setter
    def shared_content_owner(self, val):
        if val is None:
            del self.shared_content_owner
            return
        self._shared_content_owner_validator.validate_type_only(val)
        self._shared_content_owner_value = val
        self._shared_content_owner_present = True

    @shared_content_owner.deleter
    def shared_content_owner(self):
        self._shared_content_owner_value = None
        self._shared_content_owner_present = False

    @property
    def shared_content_access_level(self):
        """
        Shared content access level.

        :rtype: sharing.AccessLevel
        """
        if self._shared_content_access_level_present:
            return self._shared_content_access_level_value
        else:
            raise AttributeError("missing required field 'shared_content_access_level'")

    @shared_content_access_level.setter
    def shared_content_access_level(self, val):
        self._shared_content_access_level_validator.validate_type_only(val)
        self._shared_content_access_level_value = val
        self._shared_content_access_level_present = True

    @shared_content_access_level.deleter
    def shared_content_access_level(self):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False

    @property
    def destination_path(self):
        """
        The path where the member saved the content.

        :rtype: str
        """
        if self._destination_path_present:
            return self._destination_path_value
        else:
            raise AttributeError("missing required field 'destination_path'")

    @destination_path.setter
    def destination_path(self, val):
        val = self._destination_path_validator.validate(val)
        self._destination_path_value = val
        self._destination_path_present = True

    @destination_path.deleter
    def destination_path(self):
        self._destination_path_value = None
        self._destination_path_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentCopyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentCopyDetails(shared_content_link={!r}, shared_content_access_level={!r}, destination_path={!r}, shared_content_owner={!r})'.format(
            self._shared_content_link_value,
            self._shared_content_access_level_value,
            self._destination_path_value,
            self._shared_content_owner_value,
        )

SharedContentCopyDetails_validator = bv.Struct(SharedContentCopyDetails)

class SharedContentCopyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentCopyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentCopyType(description={!r})'.format(
            self._description_value,
        )

SharedContentCopyType_validator = bv.Struct(SharedContentCopyType)

class SharedContentDownloadDetails(bb.Struct):
    """
    Downloaded shared file/folder.

    :ivar shared_content_link: Shared content link.
    :ivar shared_content_owner: The shared content owner.
    :ivar shared_content_access_level: Shared content access level.
    """

    __slots__ = [
        '_shared_content_link_value',
        '_shared_content_link_present',
        '_shared_content_owner_value',
        '_shared_content_owner_present',
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_link=None,
                 shared_content_access_level=None,
                 shared_content_owner=None):
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        self._shared_content_owner_value = None
        self._shared_content_owner_present = False
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link
        if shared_content_owner is not None:
            self.shared_content_owner = shared_content_owner
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level

    @property
    def shared_content_link(self):
        """
        Shared content link.

        :rtype: str
        """
        if self._shared_content_link_present:
            return self._shared_content_link_value
        else:
            raise AttributeError("missing required field 'shared_content_link'")

    @shared_content_link.setter
    def shared_content_link(self, val):
        val = self._shared_content_link_validator.validate(val)
        self._shared_content_link_value = val
        self._shared_content_link_present = True

    @shared_content_link.deleter
    def shared_content_link(self):
        self._shared_content_link_value = None
        self._shared_content_link_present = False

    @property
    def shared_content_owner(self):
        """
        The shared content owner.

        :rtype: UserLogInfo
        """
        if self._shared_content_owner_present:
            return self._shared_content_owner_value
        else:
            return None

    @shared_content_owner.setter
    def shared_content_owner(self, val):
        if val is None:
            del self.shared_content_owner
            return
        self._shared_content_owner_validator.validate_type_only(val)
        self._shared_content_owner_value = val
        self._shared_content_owner_present = True

    @shared_content_owner.deleter
    def shared_content_owner(self):
        self._shared_content_owner_value = None
        self._shared_content_owner_present = False

    @property
    def shared_content_access_level(self):
        """
        Shared content access level.

        :rtype: sharing.AccessLevel
        """
        if self._shared_content_access_level_present:
            return self._shared_content_access_level_value
        else:
            raise AttributeError("missing required field 'shared_content_access_level'")

    @shared_content_access_level.setter
    def shared_content_access_level(self, val):
        self._shared_content_access_level_validator.validate_type_only(val)
        self._shared_content_access_level_value = val
        self._shared_content_access_level_present = True

    @shared_content_access_level.deleter
    def shared_content_access_level(self):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentDownloadDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentDownloadDetails(shared_content_link={!r}, shared_content_access_level={!r}, shared_content_owner={!r})'.format(
            self._shared_content_link_value,
            self._shared_content_access_level_value,
            self._shared_content_owner_value,
        )

SharedContentDownloadDetails_validator = bv.Struct(SharedContentDownloadDetails)

class SharedContentDownloadType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentDownloadType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentDownloadType(description={!r})'.format(
            self._description_value,
        )

SharedContentDownloadType_validator = bv.Struct(SharedContentDownloadType)

class SharedContentRelinquishMembershipDetails(bb.Struct):
    """
    Left shared file/folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentRelinquishMembershipDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentRelinquishMembershipDetails()'

SharedContentRelinquishMembershipDetails_validator = bv.Struct(SharedContentRelinquishMembershipDetails)

class SharedContentRelinquishMembershipType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentRelinquishMembershipType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentRelinquishMembershipType(description={!r})'.format(
            self._description_value,
        )

SharedContentRelinquishMembershipType_validator = bv.Struct(SharedContentRelinquishMembershipType)

class SharedContentRemoveInviteesDetails(bb.Struct):
    """
    Removed invitee from shared file/folder before invite was accepted.

    :ivar invitees: A list of invitees.
    """

    __slots__ = [
        '_invitees_value',
        '_invitees_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 invitees=None):
        self._invitees_value = None
        self._invitees_present = False
        if invitees is not None:
            self.invitees = invitees

    @property
    def invitees(self):
        """
        A list of invitees.

        :rtype: list of [str]
        """
        if self._invitees_present:
            return self._invitees_value
        else:
            raise AttributeError("missing required field 'invitees'")

    @invitees.setter
    def invitees(self, val):
        val = self._invitees_validator.validate(val)
        self._invitees_value = val
        self._invitees_present = True

    @invitees.deleter
    def invitees(self):
        self._invitees_value = None
        self._invitees_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentRemoveInviteesDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentRemoveInviteesDetails(invitees={!r})'.format(
            self._invitees_value,
        )

SharedContentRemoveInviteesDetails_validator = bv.Struct(SharedContentRemoveInviteesDetails)

class SharedContentRemoveInviteesType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentRemoveInviteesType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentRemoveInviteesType(description={!r})'.format(
            self._description_value,
        )

SharedContentRemoveInviteesType_validator = bv.Struct(SharedContentRemoveInviteesType)

class SharedContentRemoveLinkExpiryDetails(bb.Struct):
    """
    Removed link expiration date of shared file/folder.

    :ivar previous_value: Previous shared content link expiration date. Might be
        missing due to historical data gap.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 previous_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def previous_value(self):
        """
        Previous shared content link expiration date. Might be missing due to
        historical data gap.

        :rtype: datetime.datetime
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentRemoveLinkExpiryDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentRemoveLinkExpiryDetails(previous_value={!r})'.format(
            self._previous_value_value,
        )

SharedContentRemoveLinkExpiryDetails_validator = bv.Struct(SharedContentRemoveLinkExpiryDetails)

class SharedContentRemoveLinkExpiryType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentRemoveLinkExpiryType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentRemoveLinkExpiryType(description={!r})'.format(
            self._description_value,
        )

SharedContentRemoveLinkExpiryType_validator = bv.Struct(SharedContentRemoveLinkExpiryType)

class SharedContentRemoveLinkPasswordDetails(bb.Struct):
    """
    Removed link password of shared file/folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentRemoveLinkPasswordDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentRemoveLinkPasswordDetails()'

SharedContentRemoveLinkPasswordDetails_validator = bv.Struct(SharedContentRemoveLinkPasswordDetails)

class SharedContentRemoveLinkPasswordType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentRemoveLinkPasswordType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentRemoveLinkPasswordType(description={!r})'.format(
            self._description_value,
        )

SharedContentRemoveLinkPasswordType_validator = bv.Struct(SharedContentRemoveLinkPasswordType)

class SharedContentRemoveMemberDetails(bb.Struct):
    """
    Removed user/group from shared file/folder.

    :ivar shared_content_access_level: Shared content access level.
    """

    __slots__ = [
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_content_access_level=None):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level

    @property
    def shared_content_access_level(self):
        """
        Shared content access level.

        :rtype: sharing.AccessLevel
        """
        if self._shared_content_access_level_present:
            return self._shared_content_access_level_value
        else:
            return None

    @shared_content_access_level.setter
    def shared_content_access_level(self, val):
        if val is None:
            del self.shared_content_access_level
            return
        self._shared_content_access_level_validator.validate_type_only(val)
        self._shared_content_access_level_value = val
        self._shared_content_access_level_present = True

    @shared_content_access_level.deleter
    def shared_content_access_level(self):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentRemoveMemberDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentRemoveMemberDetails(shared_content_access_level={!r})'.format(
            self._shared_content_access_level_value,
        )

SharedContentRemoveMemberDetails_validator = bv.Struct(SharedContentRemoveMemberDetails)

class SharedContentRemoveMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentRemoveMemberType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentRemoveMemberType(description={!r})'.format(
            self._description_value,
        )

SharedContentRemoveMemberType_validator = bv.Struct(SharedContentRemoveMemberType)

class SharedContentRequestAccessDetails(bb.Struct):
    """
    Requested access to shared file/folder.

    :ivar shared_content_link: Shared content link.
    """

    __slots__ = [
        '_shared_content_link_value',
        '_shared_content_link_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_content_link=None):
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link

    @property
    def shared_content_link(self):
        """
        Shared content link.

        :rtype: str
        """
        if self._shared_content_link_present:
            return self._shared_content_link_value
        else:
            return None

    @shared_content_link.setter
    def shared_content_link(self, val):
        if val is None:
            del self.shared_content_link
            return
        val = self._shared_content_link_validator.validate(val)
        self._shared_content_link_value = val
        self._shared_content_link_present = True

    @shared_content_link.deleter
    def shared_content_link(self):
        self._shared_content_link_value = None
        self._shared_content_link_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentRequestAccessDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentRequestAccessDetails(shared_content_link={!r})'.format(
            self._shared_content_link_value,
        )

SharedContentRequestAccessDetails_validator = bv.Struct(SharedContentRequestAccessDetails)

class SharedContentRequestAccessType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentRequestAccessType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentRequestAccessType(description={!r})'.format(
            self._description_value,
        )

SharedContentRequestAccessType_validator = bv.Struct(SharedContentRequestAccessType)

class SharedContentUnshareDetails(bb.Struct):
    """
    Unshared file/folder by clearing membership and turning off link.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentUnshareDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentUnshareDetails()'

SharedContentUnshareDetails_validator = bv.Struct(SharedContentUnshareDetails)

class SharedContentUnshareType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentUnshareType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentUnshareType(description={!r})'.format(
            self._description_value,
        )

SharedContentUnshareType_validator = bv.Struct(SharedContentUnshareType)

class SharedContentViewDetails(bb.Struct):
    """
    Previewed shared file/folder.

    :ivar shared_content_link: Shared content link.
    :ivar shared_content_owner: The shared content owner.
    :ivar shared_content_access_level: Shared content access level.
    """

    __slots__ = [
        '_shared_content_link_value',
        '_shared_content_link_present',
        '_shared_content_owner_value',
        '_shared_content_owner_present',
        '_shared_content_access_level_value',
        '_shared_content_access_level_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 shared_content_link=None,
                 shared_content_access_level=None,
                 shared_content_owner=None):
        self._shared_content_link_value = None
        self._shared_content_link_present = False
        self._shared_content_owner_value = None
        self._shared_content_owner_present = False
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False
        if shared_content_link is not None:
            self.shared_content_link = shared_content_link
        if shared_content_owner is not None:
            self.shared_content_owner = shared_content_owner
        if shared_content_access_level is not None:
            self.shared_content_access_level = shared_content_access_level

    @property
    def shared_content_link(self):
        """
        Shared content link.

        :rtype: str
        """
        if self._shared_content_link_present:
            return self._shared_content_link_value
        else:
            raise AttributeError("missing required field 'shared_content_link'")

    @shared_content_link.setter
    def shared_content_link(self, val):
        val = self._shared_content_link_validator.validate(val)
        self._shared_content_link_value = val
        self._shared_content_link_present = True

    @shared_content_link.deleter
    def shared_content_link(self):
        self._shared_content_link_value = None
        self._shared_content_link_present = False

    @property
    def shared_content_owner(self):
        """
        The shared content owner.

        :rtype: UserLogInfo
        """
        if self._shared_content_owner_present:
            return self._shared_content_owner_value
        else:
            return None

    @shared_content_owner.setter
    def shared_content_owner(self, val):
        if val is None:
            del self.shared_content_owner
            return
        self._shared_content_owner_validator.validate_type_only(val)
        self._shared_content_owner_value = val
        self._shared_content_owner_present = True

    @shared_content_owner.deleter
    def shared_content_owner(self):
        self._shared_content_owner_value = None
        self._shared_content_owner_present = False

    @property
    def shared_content_access_level(self):
        """
        Shared content access level.

        :rtype: sharing.AccessLevel
        """
        if self._shared_content_access_level_present:
            return self._shared_content_access_level_value
        else:
            raise AttributeError("missing required field 'shared_content_access_level'")

    @shared_content_access_level.setter
    def shared_content_access_level(self, val):
        self._shared_content_access_level_validator.validate_type_only(val)
        self._shared_content_access_level_value = val
        self._shared_content_access_level_present = True

    @shared_content_access_level.deleter
    def shared_content_access_level(self):
        self._shared_content_access_level_value = None
        self._shared_content_access_level_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentViewDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentViewDetails(shared_content_link={!r}, shared_content_access_level={!r}, shared_content_owner={!r})'.format(
            self._shared_content_link_value,
            self._shared_content_access_level_value,
            self._shared_content_owner_value,
        )

SharedContentViewDetails_validator = bv.Struct(SharedContentViewDetails)

class SharedContentViewType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedContentViewType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedContentViewType(description={!r})'.format(
            self._description_value,
        )

SharedContentViewType_validator = bv.Struct(SharedContentViewType)

class SharedFolderChangeLinkPolicyDetails(bb.Struct):
    """
    Changed who can access shared folder via link.

    :ivar new_value: New shared folder link policy.
    :ivar previous_value: Previous shared folder link policy. Might be missing
        due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New shared folder link policy.

        :rtype: sharing.SharedLinkPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous shared folder link policy. Might be missing due to historical
        data gap.

        :rtype: sharing.SharedLinkPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderChangeLinkPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderChangeLinkPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedFolderChangeLinkPolicyDetails_validator = bv.Struct(SharedFolderChangeLinkPolicyDetails)

class SharedFolderChangeLinkPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderChangeLinkPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderChangeLinkPolicyType(description={!r})'.format(
            self._description_value,
        )

SharedFolderChangeLinkPolicyType_validator = bv.Struct(SharedFolderChangeLinkPolicyType)

class SharedFolderChangeMembersInheritancePolicyDetails(bb.Struct):
    """
    Changed whether shared folder inherits members from parent folder.

    :ivar new_value: New member inheritance policy.
    :ivar previous_value: Previous member inheritance policy. Might be missing
        due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New member inheritance policy.

        :rtype: SharedFolderMembersInheritancePolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous member inheritance policy. Might be missing due to historical
        data gap.

        :rtype: SharedFolderMembersInheritancePolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderChangeMembersInheritancePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderChangeMembersInheritancePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedFolderChangeMembersInheritancePolicyDetails_validator = bv.Struct(SharedFolderChangeMembersInheritancePolicyDetails)

class SharedFolderChangeMembersInheritancePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderChangeMembersInheritancePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderChangeMembersInheritancePolicyType(description={!r})'.format(
            self._description_value,
        )

SharedFolderChangeMembersInheritancePolicyType_validator = bv.Struct(SharedFolderChangeMembersInheritancePolicyType)

class SharedFolderChangeMembersManagementPolicyDetails(bb.Struct):
    """
    Changed who can add/remove members of shared folder.

    :ivar new_value: New members management policy.
    :ivar previous_value: Previous members management policy. Might be missing
        due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New members management policy.

        :rtype: sharing.AclUpdatePolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous members management policy. Might be missing due to historical
        data gap.

        :rtype: sharing.AclUpdatePolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderChangeMembersManagementPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderChangeMembersManagementPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedFolderChangeMembersManagementPolicyDetails_validator = bv.Struct(SharedFolderChangeMembersManagementPolicyDetails)

class SharedFolderChangeMembersManagementPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderChangeMembersManagementPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderChangeMembersManagementPolicyType(description={!r})'.format(
            self._description_value,
        )

SharedFolderChangeMembersManagementPolicyType_validator = bv.Struct(SharedFolderChangeMembersManagementPolicyType)

class SharedFolderChangeMembersPolicyDetails(bb.Struct):
    """
    Changed who can become member of shared folder.

    :ivar 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: sharing.MemberPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous external invite policy. Might be missing due to historical data
        gap.

        :rtype: sharing.MemberPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderChangeMembersPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderChangeMembersPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedFolderChangeMembersPolicyDetails_validator = bv.Struct(SharedFolderChangeMembersPolicyDetails)

class SharedFolderChangeMembersPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderChangeMembersPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderChangeMembersPolicyType(description={!r})'.format(
            self._description_value,
        )

SharedFolderChangeMembersPolicyType_validator = bv.Struct(SharedFolderChangeMembersPolicyType)

class SharedFolderCreateDetails(bb.Struct):
    """
    Created shared folder.

    :ivar target_ns_id: Target namespace ID. Might be missing due to historical
        data gap.
    """

    __slots__ = [
        '_target_ns_id_value',
        '_target_ns_id_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 target_ns_id=None):
        self._target_ns_id_value = None
        self._target_ns_id_present = False
        if target_ns_id is not None:
            self.target_ns_id = target_ns_id

    @property
    def target_ns_id(self):
        """
        Target namespace ID. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._target_ns_id_present:
            return self._target_ns_id_value
        else:
            return None

    @target_ns_id.setter
    def target_ns_id(self, val):
        if val is None:
            del self.target_ns_id
            return
        val = self._target_ns_id_validator.validate(val)
        self._target_ns_id_value = val
        self._target_ns_id_present = True

    @target_ns_id.deleter
    def target_ns_id(self):
        self._target_ns_id_value = None
        self._target_ns_id_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderCreateDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderCreateDetails(target_ns_id={!r})'.format(
            self._target_ns_id_value,
        )

SharedFolderCreateDetails_validator = bv.Struct(SharedFolderCreateDetails)

class SharedFolderCreateType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderCreateType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderCreateType(description={!r})'.format(
            self._description_value,
        )

SharedFolderCreateType_validator = bv.Struct(SharedFolderCreateType)

class SharedFolderDeclineInvitationDetails(bb.Struct):
    """
    Declined team member's invite to shared folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderDeclineInvitationDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderDeclineInvitationDetails()'

SharedFolderDeclineInvitationDetails_validator = bv.Struct(SharedFolderDeclineInvitationDetails)

class SharedFolderDeclineInvitationType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderDeclineInvitationType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderDeclineInvitationType(description={!r})'.format(
            self._description_value,
        )

SharedFolderDeclineInvitationType_validator = bv.Struct(SharedFolderDeclineInvitationType)

class SharedFolderMembersInheritancePolicy(bb.Union):
    """
    Specifies if a shared folder inherits its members from the parent folder.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    inherit_members = None
    # Attribute is overwritten below the class definition
    dont_inherit_members = None
    # Attribute is overwritten below the class definition
    other = None

    def is_inherit_members(self):
        """
        Check if the union tag is ``inherit_members``.

        :rtype: bool
        """
        return self._tag == 'inherit_members'

    def is_dont_inherit_members(self):
        """
        Check if the union tag is ``dont_inherit_members``.

        :rtype: bool
        """
        return self._tag == 'dont_inherit_members'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderMembersInheritancePolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderMembersInheritancePolicy(%r, %r)' % (self._tag, self._value)

SharedFolderMembersInheritancePolicy_validator = bv.Union(SharedFolderMembersInheritancePolicy)

class SharedFolderMountDetails(bb.Struct):
    """
    Added shared folder to own Dropbox.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderMountDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderMountDetails()'

SharedFolderMountDetails_validator = bv.Struct(SharedFolderMountDetails)

class SharedFolderMountType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderMountType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderMountType(description={!r})'.format(
            self._description_value,
        )

SharedFolderMountType_validator = bv.Struct(SharedFolderMountType)

class SharedFolderNestDetails(bb.Struct):
    """
    Changed parent of shared folder.

    :ivar previous_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.
    :ivar previous_ns_path: Previous namespace path. Might be missing due to
        historical data gap.
    :ivar new_ns_path: New namespace path. Might be missing due to historical
        data gap.
    """

    __slots__ = [
        '_previous_parent_ns_id_value',
        '_previous_parent_ns_id_present',
        '_new_parent_ns_id_value',
        '_new_parent_ns_id_present',
        '_previous_ns_path_value',
        '_previous_ns_path_present',
        '_new_ns_path_value',
        '_new_ns_path_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 previous_parent_ns_id=None,
                 new_parent_ns_id=None,
                 previous_ns_path=None,
                 new_ns_path=None):
        self._previous_parent_ns_id_value = None
        self._previous_parent_ns_id_present = False
        self._new_parent_ns_id_value = None
        self._new_parent_ns_id_present = False
        self._previous_ns_path_value = None
        self._previous_ns_path_present = False
        self._new_ns_path_value = None
        self._new_ns_path_present = False
        if previous_parent_ns_id is not None:
            self.previous_parent_ns_id = previous_parent_ns_id
        if new_parent_ns_id is not None:
            self.new_parent_ns_id = new_parent_ns_id
        if previous_ns_path is not None:
            self.previous_ns_path = previous_ns_path
        if new_ns_path is not None:
            self.new_ns_path = new_ns_path

    @property
    def previous_parent_ns_id(self):
        """
        Previous parent namespace ID. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._previous_parent_ns_id_present:
            return self._previous_parent_ns_id_value
        else:
            return None

    @previous_parent_ns_id.setter
    def previous_parent_ns_id(self, val):
        if val is None:
            del self.previous_parent_ns_id
            return
        val = self._previous_parent_ns_id_validator.validate(val)
        self._previous_parent_ns_id_value = val
        self._previous_parent_ns_id_present = True

    @previous_parent_ns_id.deleter
    def previous_parent_ns_id(self):
        self._previous_parent_ns_id_value = None
        self._previous_parent_ns_id_present = False

    @property
    def new_parent_ns_id(self):
        """
        New parent namespace ID. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._new_parent_ns_id_present:
            return self._new_parent_ns_id_value
        else:
            return None

    @new_parent_ns_id.setter
    def new_parent_ns_id(self, val):
        if val is None:
            del self.new_parent_ns_id
            return
        val = self._new_parent_ns_id_validator.validate(val)
        self._new_parent_ns_id_value = val
        self._new_parent_ns_id_present = True

    @new_parent_ns_id.deleter
    def new_parent_ns_id(self):
        self._new_parent_ns_id_value = None
        self._new_parent_ns_id_present = False

    @property
    def previous_ns_path(self):
        """
        Previous namespace path. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._previous_ns_path_present:
            return self._previous_ns_path_value
        else:
            return None

    @previous_ns_path.setter
    def previous_ns_path(self, val):
        if val is None:
            del self.previous_ns_path
            return
        val = self._previous_ns_path_validator.validate(val)
        self._previous_ns_path_value = val
        self._previous_ns_path_present = True

    @previous_ns_path.deleter
    def previous_ns_path(self):
        self._previous_ns_path_value = None
        self._previous_ns_path_present = False

    @property
    def new_ns_path(self):
        """
        New namespace path. Might be missing due to historical data gap.

        :rtype: str
        """
        if self._new_ns_path_present:
            return self._new_ns_path_value
        else:
            return None

    @new_ns_path.setter
    def new_ns_path(self, val):
        if val is None:
            del self.new_ns_path
            return
        val = self._new_ns_path_validator.validate(val)
        self._new_ns_path_value = val
        self._new_ns_path_present = True

    @new_ns_path.deleter
    def new_ns_path(self):
        self._new_ns_path_value = None
        self._new_ns_path_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderNestDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderNestDetails(previous_parent_ns_id={!r}, new_parent_ns_id={!r}, previous_ns_path={!r}, new_ns_path={!r})'.format(
            self._previous_parent_ns_id_value,
            self._new_parent_ns_id_value,
            self._previous_ns_path_value,
            self._new_ns_path_value,
        )

SharedFolderNestDetails_validator = bv.Struct(SharedFolderNestDetails)

class SharedFolderNestType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderNestType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderNestType(description={!r})'.format(
            self._description_value,
        )

SharedFolderNestType_validator = bv.Struct(SharedFolderNestType)

class SharedFolderTransferOwnershipDetails(bb.Struct):
    """
    Transferred ownership of shared folder to another member.

    :ivar previous_owner_email: The email address of the previous shared folder
        owner.
    :ivar new_owner_email: The email address of the new shared folder owner.
    """

    __slots__ = [
        '_previous_owner_email_value',
        '_previous_owner_email_present',
        '_new_owner_email_value',
        '_new_owner_email_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_owner_email=None,
                 previous_owner_email=None):
        self._previous_owner_email_value = None
        self._previous_owner_email_present = False
        self._new_owner_email_value = None
        self._new_owner_email_present = False
        if previous_owner_email is not None:
            self.previous_owner_email = previous_owner_email
        if new_owner_email is not None:
            self.new_owner_email = new_owner_email

    @property
    def previous_owner_email(self):
        """
        The email address of the previous shared folder owner.

        :rtype: str
        """
        if self._previous_owner_email_present:
            return self._previous_owner_email_value
        else:
            return None

    @previous_owner_email.setter
    def previous_owner_email(self, val):
        if val is None:
            del self.previous_owner_email
            return
        val = self._previous_owner_email_validator.validate(val)
        self._previous_owner_email_value = val
        self._previous_owner_email_present = True

    @previous_owner_email.deleter
    def previous_owner_email(self):
        self._previous_owner_email_value = None
        self._previous_owner_email_present = False

    @property
    def new_owner_email(self):
        """
        The email address of the new shared folder owner.

        :rtype: str
        """
        if self._new_owner_email_present:
            return self._new_owner_email_value
        else:
            raise AttributeError("missing required field 'new_owner_email'")

    @new_owner_email.setter
    def new_owner_email(self, val):
        val = self._new_owner_email_validator.validate(val)
        self._new_owner_email_value = val
        self._new_owner_email_present = True

    @new_owner_email.deleter
    def new_owner_email(self):
        self._new_owner_email_value = None
        self._new_owner_email_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderTransferOwnershipDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderTransferOwnershipDetails(new_owner_email={!r}, previous_owner_email={!r})'.format(
            self._new_owner_email_value,
            self._previous_owner_email_value,
        )

SharedFolderTransferOwnershipDetails_validator = bv.Struct(SharedFolderTransferOwnershipDetails)

class SharedFolderTransferOwnershipType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderTransferOwnershipType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderTransferOwnershipType(description={!r})'.format(
            self._description_value,
        )

SharedFolderTransferOwnershipType_validator = bv.Struct(SharedFolderTransferOwnershipType)

class SharedFolderUnmountDetails(bb.Struct):
    """
    Deleted shared folder from Dropbox.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderUnmountDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderUnmountDetails()'

SharedFolderUnmountDetails_validator = bv.Struct(SharedFolderUnmountDetails)

class SharedFolderUnmountType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedFolderUnmountType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedFolderUnmountType(description={!r})'.format(
            self._description_value,
        )

SharedFolderUnmountType_validator = bv.Struct(SharedFolderUnmountType)

class SharedLinkAccessLevel(bb.Union):
    """
    Shared link access level.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    none = None
    # Attribute is overwritten below the class definition
    reader = None
    # Attribute is overwritten below the class definition
    writer = None
    # Attribute is overwritten below the class definition
    other = None

    def is_none(self):
        """
        Check if the union tag is ``none``.

        :rtype: bool
        """
        return self._tag == 'none'

    def is_reader(self):
        """
        Check if the union tag is ``reader``.

        :rtype: bool
        """
        return self._tag == 'reader'

    def is_writer(self):
        """
        Check if the union tag is ``writer``.

        :rtype: bool
        """
        return self._tag == 'writer'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkAccessLevel, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkAccessLevel(%r, %r)' % (self._tag, self._value)

SharedLinkAccessLevel_validator = bv.Union(SharedLinkAccessLevel)

class SharedLinkAddExpiryDetails(bb.Struct):
    """
    Added shared link expiration date.

    :ivar new_value: New shared link expiration date.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        New shared link expiration date.

        :rtype: datetime.datetime
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkAddExpiryDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkAddExpiryDetails(new_value={!r})'.format(
            self._new_value_value,
        )

SharedLinkAddExpiryDetails_validator = bv.Struct(SharedLinkAddExpiryDetails)

class SharedLinkAddExpiryType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkAddExpiryType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkAddExpiryType(description={!r})'.format(
            self._description_value,
        )

SharedLinkAddExpiryType_validator = bv.Struct(SharedLinkAddExpiryType)

class SharedLinkChangeExpiryDetails(bb.Struct):
    """
    Changed shared link expiration date.

    :ivar new_value: New shared link expiration date. Might be missing due to
        historical data gap.
    :ivar previous_value: Previous shared link expiration date. Might be missing
        due to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New shared link expiration date. Might be missing due to historical data
        gap.

        :rtype: datetime.datetime
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous shared link expiration date. Might be missing due to historical
        data gap.

        :rtype: datetime.datetime
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkChangeExpiryDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkChangeExpiryDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedLinkChangeExpiryDetails_validator = bv.Struct(SharedLinkChangeExpiryDetails)

class SharedLinkChangeExpiryType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkChangeExpiryType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkChangeExpiryType(description={!r})'.format(
            self._description_value,
        )

SharedLinkChangeExpiryType_validator = bv.Struct(SharedLinkChangeExpiryType)

class SharedLinkChangeVisibilityDetails(bb.Struct):
    """
    Changed visibility of shared link.

    :ivar new_value: New shared link visibility.
    :ivar previous_value: Previous shared link visibility. Might be missing due
        to historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New shared link visibility.

        :rtype: SharedLinkVisibility
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous shared link visibility. Might be missing due to historical data
        gap.

        :rtype: SharedLinkVisibility
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkChangeVisibilityDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkChangeVisibilityDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharedLinkChangeVisibilityDetails_validator = bv.Struct(SharedLinkChangeVisibilityDetails)

class SharedLinkChangeVisibilityType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkChangeVisibilityType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkChangeVisibilityType(description={!r})'.format(
            self._description_value,
        )

SharedLinkChangeVisibilityType_validator = bv.Struct(SharedLinkChangeVisibilityType)

class SharedLinkCopyDetails(bb.Struct):
    """
    Added file/folder to Dropbox from shared link.

    :ivar shared_link_owner: Shared link owner details. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_shared_link_owner_value',
        '_shared_link_owner_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_link_owner=None):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False
        if shared_link_owner is not None:
            self.shared_link_owner = shared_link_owner

    @property
    def shared_link_owner(self):
        """
        Shared link owner details. Might be missing due to historical data gap.

        :rtype: UserLogInfo
        """
        if self._shared_link_owner_present:
            return self._shared_link_owner_value
        else:
            return None

    @shared_link_owner.setter
    def shared_link_owner(self, val):
        if val is None:
            del self.shared_link_owner
            return
        self._shared_link_owner_validator.validate_type_only(val)
        self._shared_link_owner_value = val
        self._shared_link_owner_present = True

    @shared_link_owner.deleter
    def shared_link_owner(self):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkCopyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkCopyDetails(shared_link_owner={!r})'.format(
            self._shared_link_owner_value,
        )

SharedLinkCopyDetails_validator = bv.Struct(SharedLinkCopyDetails)

class SharedLinkCopyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkCopyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkCopyType(description={!r})'.format(
            self._description_value,
        )

SharedLinkCopyType_validator = bv.Struct(SharedLinkCopyType)

class SharedLinkCreateDetails(bb.Struct):
    """
    Created shared link.

    :ivar shared_link_access_level: Defines who can access the shared link.
        Might be missing due to historical data gap.
    """

    __slots__ = [
        '_shared_link_access_level_value',
        '_shared_link_access_level_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_link_access_level=None):
        self._shared_link_access_level_value = None
        self._shared_link_access_level_present = False
        if shared_link_access_level is not None:
            self.shared_link_access_level = shared_link_access_level

    @property
    def shared_link_access_level(self):
        """
        Defines who can access the shared link. Might be missing due to
        historical data gap.

        :rtype: SharedLinkAccessLevel
        """
        if self._shared_link_access_level_present:
            return self._shared_link_access_level_value
        else:
            return None

    @shared_link_access_level.setter
    def shared_link_access_level(self, val):
        if val is None:
            del self.shared_link_access_level
            return
        self._shared_link_access_level_validator.validate_type_only(val)
        self._shared_link_access_level_value = val
        self._shared_link_access_level_present = True

    @shared_link_access_level.deleter
    def shared_link_access_level(self):
        self._shared_link_access_level_value = None
        self._shared_link_access_level_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkCreateDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkCreateDetails(shared_link_access_level={!r})'.format(
            self._shared_link_access_level_value,
        )

SharedLinkCreateDetails_validator = bv.Struct(SharedLinkCreateDetails)

class SharedLinkCreateType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkCreateType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkCreateType(description={!r})'.format(
            self._description_value,
        )

SharedLinkCreateType_validator = bv.Struct(SharedLinkCreateType)

class SharedLinkDisableDetails(bb.Struct):
    """
    Removed shared link.

    :ivar shared_link_owner: Shared link owner details. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_shared_link_owner_value',
        '_shared_link_owner_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_link_owner=None):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False
        if shared_link_owner is not None:
            self.shared_link_owner = shared_link_owner

    @property
    def shared_link_owner(self):
        """
        Shared link owner details. Might be missing due to historical data gap.

        :rtype: UserLogInfo
        """
        if self._shared_link_owner_present:
            return self._shared_link_owner_value
        else:
            return None

    @shared_link_owner.setter
    def shared_link_owner(self, val):
        if val is None:
            del self.shared_link_owner
            return
        self._shared_link_owner_validator.validate_type_only(val)
        self._shared_link_owner_value = val
        self._shared_link_owner_present = True

    @shared_link_owner.deleter
    def shared_link_owner(self):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkDisableDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkDisableDetails(shared_link_owner={!r})'.format(
            self._shared_link_owner_value,
        )

SharedLinkDisableDetails_validator = bv.Struct(SharedLinkDisableDetails)

class SharedLinkDisableType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkDisableType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkDisableType(description={!r})'.format(
            self._description_value,
        )

SharedLinkDisableType_validator = bv.Struct(SharedLinkDisableType)

class SharedLinkDownloadDetails(bb.Struct):
    """
    Downloaded file/folder from shared link.

    :ivar shared_link_owner: Shared link owner details. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_shared_link_owner_value',
        '_shared_link_owner_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_link_owner=None):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False
        if shared_link_owner is not None:
            self.shared_link_owner = shared_link_owner

    @property
    def shared_link_owner(self):
        """
        Shared link owner details. Might be missing due to historical data gap.

        :rtype: UserLogInfo
        """
        if self._shared_link_owner_present:
            return self._shared_link_owner_value
        else:
            return None

    @shared_link_owner.setter
    def shared_link_owner(self, val):
        if val is None:
            del self.shared_link_owner
            return
        self._shared_link_owner_validator.validate_type_only(val)
        self._shared_link_owner_value = val
        self._shared_link_owner_present = True

    @shared_link_owner.deleter
    def shared_link_owner(self):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkDownloadDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkDownloadDetails(shared_link_owner={!r})'.format(
            self._shared_link_owner_value,
        )

SharedLinkDownloadDetails_validator = bv.Struct(SharedLinkDownloadDetails)

class SharedLinkDownloadType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkDownloadType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkDownloadType(description={!r})'.format(
            self._description_value,
        )

SharedLinkDownloadType_validator = bv.Struct(SharedLinkDownloadType)

class SharedLinkRemoveExpiryDetails(bb.Struct):
    """
    Removed shared link expiration date.

    :ivar previous_value: Previous shared link expiration date. Might be missing
        due to historical data gap.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 previous_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def previous_value(self):
        """
        Previous shared link expiration date. Might be missing due to historical
        data gap.

        :rtype: datetime.datetime
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkRemoveExpiryDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkRemoveExpiryDetails(previous_value={!r})'.format(
            self._previous_value_value,
        )

SharedLinkRemoveExpiryDetails_validator = bv.Struct(SharedLinkRemoveExpiryDetails)

class SharedLinkRemoveExpiryType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkRemoveExpiryType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkRemoveExpiryType(description={!r})'.format(
            self._description_value,
        )

SharedLinkRemoveExpiryType_validator = bv.Struct(SharedLinkRemoveExpiryType)

class SharedLinkShareDetails(bb.Struct):
    """
    Added members as audience of shared link.

    :ivar shared_link_owner: Shared link owner details. Might be missing due to
        historical data gap.
    :ivar external_users: Users without a Dropbox account that were added as
        shared link audience.
    """

    __slots__ = [
        '_shared_link_owner_value',
        '_shared_link_owner_present',
        '_external_users_value',
        '_external_users_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_link_owner=None,
                 external_users=None):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False
        self._external_users_value = None
        self._external_users_present = False
        if shared_link_owner is not None:
            self.shared_link_owner = shared_link_owner
        if external_users is not None:
            self.external_users = external_users

    @property
    def shared_link_owner(self):
        """
        Shared link owner details. Might be missing due to historical data gap.

        :rtype: UserLogInfo
        """
        if self._shared_link_owner_present:
            return self._shared_link_owner_value
        else:
            return None

    @shared_link_owner.setter
    def shared_link_owner(self, val):
        if val is None:
            del self.shared_link_owner
            return
        self._shared_link_owner_validator.validate_type_only(val)
        self._shared_link_owner_value = val
        self._shared_link_owner_present = True

    @shared_link_owner.deleter
    def shared_link_owner(self):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False

    @property
    def external_users(self):
        """
        Users without a Dropbox account that were added as shared link audience.

        :rtype: list of [ExternalUserLogInfo]
        """
        if self._external_users_present:
            return self._external_users_value
        else:
            return None

    @external_users.setter
    def external_users(self, val):
        if val is None:
            del self.external_users
            return
        val = self._external_users_validator.validate(val)
        self._external_users_value = val
        self._external_users_present = True

    @external_users.deleter
    def external_users(self):
        self._external_users_value = None
        self._external_users_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkShareDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkShareDetails(shared_link_owner={!r}, external_users={!r})'.format(
            self._shared_link_owner_value,
            self._external_users_value,
        )

SharedLinkShareDetails_validator = bv.Struct(SharedLinkShareDetails)

class SharedLinkShareType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkShareType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkShareType(description={!r})'.format(
            self._description_value,
        )

SharedLinkShareType_validator = bv.Struct(SharedLinkShareType)

class SharedLinkViewDetails(bb.Struct):
    """
    Opened shared link.

    :ivar shared_link_owner: Shared link owner details. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_shared_link_owner_value',
        '_shared_link_owner_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 shared_link_owner=None):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False
        if shared_link_owner is not None:
            self.shared_link_owner = shared_link_owner

    @property
    def shared_link_owner(self):
        """
        Shared link owner details. Might be missing due to historical data gap.

        :rtype: UserLogInfo
        """
        if self._shared_link_owner_present:
            return self._shared_link_owner_value
        else:
            return None

    @shared_link_owner.setter
    def shared_link_owner(self, val):
        if val is None:
            del self.shared_link_owner
            return
        self._shared_link_owner_validator.validate_type_only(val)
        self._shared_link_owner_value = val
        self._shared_link_owner_present = True

    @shared_link_owner.deleter
    def shared_link_owner(self):
        self._shared_link_owner_value = None
        self._shared_link_owner_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkViewDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkViewDetails(shared_link_owner={!r})'.format(
            self._shared_link_owner_value,
        )

SharedLinkViewDetails_validator = bv.Struct(SharedLinkViewDetails)

class SharedLinkViewType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkViewType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkViewType(description={!r})'.format(
            self._description_value,
        )

SharedLinkViewType_validator = bv.Struct(SharedLinkViewType)

class SharedLinkVisibility(bb.Union):
    """
    Defines who has access to a shared link.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    password = None
    # Attribute is overwritten below the class definition
    public = None
    # Attribute is overwritten below the class definition
    team_only = None
    # Attribute is overwritten below the class definition
    other = None

    def is_password(self):
        """
        Check if the union tag is ``password``.

        :rtype: bool
        """
        return self._tag == 'password'

    def is_public(self):
        """
        Check if the union tag is ``public``.

        :rtype: bool
        """
        return self._tag == 'public'

    def is_team_only(self):
        """
        Check if the union tag is ``team_only``.

        :rtype: bool
        """
        return self._tag == 'team_only'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedLinkVisibility, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedLinkVisibility(%r, %r)' % (self._tag, self._value)

SharedLinkVisibility_validator = bv.Union(SharedLinkVisibility)

class SharedNoteOpenedDetails(bb.Struct):
    """
    Opened shared Paper doc.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedNoteOpenedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedNoteOpenedDetails()'

SharedNoteOpenedDetails_validator = bv.Struct(SharedNoteOpenedDetails)

class SharedNoteOpenedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharedNoteOpenedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharedNoteOpenedType(description={!r})'.format(
            self._description_value,
        )

SharedNoteOpenedType_validator = bv.Struct(SharedNoteOpenedType)

class SharingChangeFolderJoinPolicyDetails(bb.Struct):
    """
    Changed whether team members can join shared folders owned outside team.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(SharingChangeFolderJoinPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharingChangeFolderJoinPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharingChangeFolderJoinPolicyDetails_validator = bv.Struct(SharingChangeFolderJoinPolicyDetails)

class SharingChangeFolderJoinPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharingChangeFolderJoinPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharingChangeFolderJoinPolicyType(description={!r})'.format(
            self._description_value,
        )

SharingChangeFolderJoinPolicyType_validator = bv.Struct(SharingChangeFolderJoinPolicyType)

class SharingChangeLinkPolicyDetails(bb.Struct):
    """
    Changed whether members can share links outside team, and if links are
    accessible only by team members or anyone by default.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(SharingChangeLinkPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharingChangeLinkPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharingChangeLinkPolicyDetails_validator = bv.Struct(SharingChangeLinkPolicyDetails)

class SharingChangeLinkPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharingChangeLinkPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharingChangeLinkPolicyType(description={!r})'.format(
            self._description_value,
        )

SharingChangeLinkPolicyType_validator = bv.Struct(SharingChangeLinkPolicyType)

class SharingChangeMemberPolicyDetails(bb.Struct):
    """
    Changed whether members can share files/folders outside team.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(SharingChangeMemberPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharingChangeMemberPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SharingChangeMemberPolicyDetails_validator = bv.Struct(SharingChangeMemberPolicyDetails)

class SharingChangeMemberPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharingChangeMemberPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharingChangeMemberPolicyType(description={!r})'.format(
            self._description_value,
        )

SharingChangeMemberPolicyType_validator = bv.Struct(SharingChangeMemberPolicyType)

class SharingFolderJoinPolicy(bb.Union):
    """
    Policy for controlling if team members can join shared folders owned by non
    team members.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    from_anyone = None
    # Attribute is overwritten below the class definition
    from_team_only = None
    # Attribute is overwritten below the class definition
    other = None

    def is_from_anyone(self):
        """
        Check if the union tag is ``from_anyone``.

        :rtype: bool
        """
        return self._tag == 'from_anyone'

    def is_from_team_only(self):
        """
        Check if the union tag is ``from_team_only``.

        :rtype: bool
        """
        return self._tag == 'from_team_only'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharingFolderJoinPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharingFolderJoinPolicy(%r, %r)' % (self._tag, self._value)

SharingFolderJoinPolicy_validator = bv.Union(SharingFolderJoinPolicy)

class SharingLinkPolicy(bb.Union):
    """
    Policy for controlling if team members can share links externally

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    default_private = None
    # Attribute is overwritten below the class definition
    default_public = None
    # Attribute is overwritten below the class definition
    only_private = None
    # Attribute is overwritten below the class definition
    other = None

    def is_default_private(self):
        """
        Check if the union tag is ``default_private``.

        :rtype: bool
        """
        return self._tag == 'default_private'

    def is_default_public(self):
        """
        Check if the union tag is ``default_public``.

        :rtype: bool
        """
        return self._tag == 'default_public'

    def is_only_private(self):
        """
        Check if the union tag is ``only_private``.

        :rtype: bool
        """
        return self._tag == 'only_private'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharingLinkPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharingLinkPolicy(%r, %r)' % (self._tag, self._value)

SharingLinkPolicy_validator = bv.Union(SharingLinkPolicy)

class SharingMemberPolicy(bb.Union):
    """
    External sharing policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    allow = None
    # Attribute is overwritten below the class definition
    forbid = None
    # Attribute is overwritten below the class definition
    other = None

    def is_allow(self):
        """
        Check if the union tag is ``allow``.

        :rtype: bool
        """
        return self._tag == 'allow'

    def is_forbid(self):
        """
        Check if the union tag is ``forbid``.

        :rtype: bool
        """
        return self._tag == 'forbid'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(SharingMemberPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SharingMemberPolicy(%r, %r)' % (self._tag, self._value)

SharingMemberPolicy_validator = bv.Union(SharingMemberPolicy)

class ShmodelGroupShareDetails(bb.Struct):
    """
    Shared link with group.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShmodelGroupShareDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShmodelGroupShareDetails()'

ShmodelGroupShareDetails_validator = bv.Struct(ShmodelGroupShareDetails)

class ShmodelGroupShareType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShmodelGroupShareType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShmodelGroupShareType(description={!r})'.format(
            self._description_value,
        )

ShmodelGroupShareType_validator = bv.Struct(ShmodelGroupShareType)

class ShowcaseAccessGrantedDetails(bb.Struct):
    """
    Granted access to showcase.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseAccessGrantedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseAccessGrantedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseAccessGrantedDetails_validator = bv.Struct(ShowcaseAccessGrantedDetails)

class ShowcaseAccessGrantedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseAccessGrantedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseAccessGrantedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseAccessGrantedType_validator = bv.Struct(ShowcaseAccessGrantedType)

class ShowcaseAddMemberDetails(bb.Struct):
    """
    Added member to showcase.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseAddMemberDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseAddMemberDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseAddMemberDetails_validator = bv.Struct(ShowcaseAddMemberDetails)

class ShowcaseAddMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseAddMemberType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseAddMemberType(description={!r})'.format(
            self._description_value,
        )

ShowcaseAddMemberType_validator = bv.Struct(ShowcaseAddMemberType)

class ShowcaseArchivedDetails(bb.Struct):
    """
    Archived showcase.

    :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 _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseArchivedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseArchivedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseArchivedDetails_validator = bv.Struct(ShowcaseArchivedDetails)

class ShowcaseArchivedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseArchivedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseArchivedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseArchivedType_validator = bv.Struct(ShowcaseArchivedType)

class ShowcaseChangeDownloadPolicyDetails(bb.Struct):
    """
    Enabled/disabled downloading files from Dropbox Showcase for team.

    :ivar new_value: New Dropbox Showcase download policy.
    :ivar previous_value: Previous Dropbox Showcase download policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Dropbox Showcase download policy.

        :rtype: ShowcaseDownloadPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Dropbox Showcase download policy.

        :rtype: ShowcaseDownloadPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseChangeDownloadPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseChangeDownloadPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

ShowcaseChangeDownloadPolicyDetails_validator = bv.Struct(ShowcaseChangeDownloadPolicyDetails)

class ShowcaseChangeDownloadPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseChangeDownloadPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseChangeDownloadPolicyType(description={!r})'.format(
            self._description_value,
        )

ShowcaseChangeDownloadPolicyType_validator = bv.Struct(ShowcaseChangeDownloadPolicyType)

class ShowcaseChangeEnabledPolicyDetails(bb.Struct):
    """
    Enabled/disabled Dropbox Showcase for team.

    :ivar new_value: New Dropbox Showcase policy.
    :ivar previous_value: Previous Dropbox Showcase policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Dropbox Showcase policy.

        :rtype: ShowcaseEnabledPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Dropbox Showcase policy.

        :rtype: ShowcaseEnabledPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseChangeEnabledPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseChangeEnabledPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

ShowcaseChangeEnabledPolicyDetails_validator = bv.Struct(ShowcaseChangeEnabledPolicyDetails)

class ShowcaseChangeEnabledPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseChangeEnabledPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseChangeEnabledPolicyType(description={!r})'.format(
            self._description_value,
        )

ShowcaseChangeEnabledPolicyType_validator = bv.Struct(ShowcaseChangeEnabledPolicyType)

class ShowcaseChangeExternalSharingPolicyDetails(bb.Struct):
    """
    Enabled/disabled sharing Dropbox Showcase externally for team.

    :ivar new_value: New Dropbox Showcase external sharing policy.
    :ivar previous_value: Previous Dropbox Showcase external sharing policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Dropbox Showcase external sharing policy.

        :rtype: ShowcaseExternalSharingPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Dropbox Showcase external sharing policy.

        :rtype: ShowcaseExternalSharingPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseChangeExternalSharingPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseChangeExternalSharingPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

ShowcaseChangeExternalSharingPolicyDetails_validator = bv.Struct(ShowcaseChangeExternalSharingPolicyDetails)

class ShowcaseChangeExternalSharingPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseChangeExternalSharingPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseChangeExternalSharingPolicyType(description={!r})'.format(
            self._description_value,
        )

ShowcaseChangeExternalSharingPolicyType_validator = bv.Struct(ShowcaseChangeExternalSharingPolicyType)

class ShowcaseCreatedDetails(bb.Struct):
    """
    Created showcase.

    :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 _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseCreatedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseCreatedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseCreatedDetails_validator = bv.Struct(ShowcaseCreatedDetails)

class ShowcaseCreatedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseCreatedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseCreatedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseCreatedType_validator = bv.Struct(ShowcaseCreatedType)

class ShowcaseDeleteCommentDetails(bb.Struct):
    """
    Deleted showcase comment.

    :ivar event_uuid: Event unique identifier.
    :ivar comment_text: Comment text.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseDeleteCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseDeleteCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

ShowcaseDeleteCommentDetails_validator = bv.Struct(ShowcaseDeleteCommentDetails)

class ShowcaseDeleteCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseDeleteCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseDeleteCommentType(description={!r})'.format(
            self._description_value,
        )

ShowcaseDeleteCommentType_validator = bv.Struct(ShowcaseDeleteCommentType)

class ShowcaseDocumentLogInfo(bb.Struct):
    """
    Showcase document's logged information.

    :ivar showcase_id: Showcase document Id.
    :ivar showcase_title: Showcase document title.
    """

    __slots__ = [
        '_showcase_id_value',
        '_showcase_id_present',
        '_showcase_title_value',
        '_showcase_title_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 showcase_id=None,
                 showcase_title=None):
        self._showcase_id_value = None
        self._showcase_id_present = False
        self._showcase_title_value = None
        self._showcase_title_present = False
        if showcase_id is not None:
            self.showcase_id = showcase_id
        if showcase_title is not None:
            self.showcase_title = showcase_title

    @property
    def showcase_id(self):
        """
        Showcase document Id.

        :rtype: str
        """
        if self._showcase_id_present:
            return self._showcase_id_value
        else:
            raise AttributeError("missing required field 'showcase_id'")

    @showcase_id.setter
    def showcase_id(self, val):
        val = self._showcase_id_validator.validate(val)
        self._showcase_id_value = val
        self._showcase_id_present = True

    @showcase_id.deleter
    def showcase_id(self):
        self._showcase_id_value = None
        self._showcase_id_present = False

    @property
    def showcase_title(self):
        """
        Showcase document title.

        :rtype: str
        """
        if self._showcase_title_present:
            return self._showcase_title_value
        else:
            raise AttributeError("missing required field 'showcase_title'")

    @showcase_title.setter
    def showcase_title(self, val):
        val = self._showcase_title_validator.validate(val)
        self._showcase_title_value = val
        self._showcase_title_present = True

    @showcase_title.deleter
    def showcase_title(self):
        self._showcase_title_value = None
        self._showcase_title_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseDocumentLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseDocumentLogInfo(showcase_id={!r}, showcase_title={!r})'.format(
            self._showcase_id_value,
            self._showcase_title_value,
        )

ShowcaseDocumentLogInfo_validator = bv.Struct(ShowcaseDocumentLogInfo)

class ShowcaseDownloadPolicy(bb.Union):
    """
    Policy for controlling if files can be downloaded from Showcases by team
    members

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseDownloadPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseDownloadPolicy(%r, %r)' % (self._tag, self._value)

ShowcaseDownloadPolicy_validator = bv.Union(ShowcaseDownloadPolicy)

class ShowcaseEditCommentDetails(bb.Struct):
    """
    Edited showcase comment.

    :ivar event_uuid: Event unique identifier.
    :ivar comment_text: Comment text.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseEditCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseEditCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

ShowcaseEditCommentDetails_validator = bv.Struct(ShowcaseEditCommentDetails)

class ShowcaseEditCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseEditCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseEditCommentType(description={!r})'.format(
            self._description_value,
        )

ShowcaseEditCommentType_validator = bv.Struct(ShowcaseEditCommentType)

class ShowcaseEditedDetails(bb.Struct):
    """
    Edited showcase.

    :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 _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseEditedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseEditedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseEditedDetails_validator = bv.Struct(ShowcaseEditedDetails)

class ShowcaseEditedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseEditedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseEditedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseEditedType_validator = bv.Struct(ShowcaseEditedType)

class ShowcaseEnabledPolicy(bb.Union):
    """
    Policy for controlling whether Showcase is enabled.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseEnabledPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseEnabledPolicy(%r, %r)' % (self._tag, self._value)

ShowcaseEnabledPolicy_validator = bv.Union(ShowcaseEnabledPolicy)

class ShowcaseExternalSharingPolicy(bb.Union):
    """
    Policy for controlling if team members can share Showcases externally.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseExternalSharingPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseExternalSharingPolicy(%r, %r)' % (self._tag, self._value)

ShowcaseExternalSharingPolicy_validator = bv.Union(ShowcaseExternalSharingPolicy)

class ShowcaseFileAddedDetails(bb.Struct):
    """
    Added file to showcase.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseFileAddedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseFileAddedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseFileAddedDetails_validator = bv.Struct(ShowcaseFileAddedDetails)

class ShowcaseFileAddedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseFileAddedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseFileAddedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseFileAddedType_validator = bv.Struct(ShowcaseFileAddedType)

class ShowcaseFileDownloadDetails(bb.Struct):
    """
    Downloaded file from showcase.

    :ivar event_uuid: Event unique identifier.
    :ivar download_type: Showcase download type.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_download_type_value',
        '_download_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 download_type=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._download_type_value = None
        self._download_type_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if download_type is not None:
            self.download_type = download_type

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def download_type(self):
        """
        Showcase download type.

        :rtype: str
        """
        if self._download_type_present:
            return self._download_type_value
        else:
            raise AttributeError("missing required field 'download_type'")

    @download_type.setter
    def download_type(self, val):
        val = self._download_type_validator.validate(val)
        self._download_type_value = val
        self._download_type_present = True

    @download_type.deleter
    def download_type(self):
        self._download_type_value = None
        self._download_type_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseFileDownloadDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseFileDownloadDetails(event_uuid={!r}, download_type={!r})'.format(
            self._event_uuid_value,
            self._download_type_value,
        )

ShowcaseFileDownloadDetails_validator = bv.Struct(ShowcaseFileDownloadDetails)

class ShowcaseFileDownloadType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseFileDownloadType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseFileDownloadType(description={!r})'.format(
            self._description_value,
        )

ShowcaseFileDownloadType_validator = bv.Struct(ShowcaseFileDownloadType)

class ShowcaseFileRemovedDetails(bb.Struct):
    """
    Removed file from showcase.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseFileRemovedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseFileRemovedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseFileRemovedDetails_validator = bv.Struct(ShowcaseFileRemovedDetails)

class ShowcaseFileRemovedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseFileRemovedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseFileRemovedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseFileRemovedType_validator = bv.Struct(ShowcaseFileRemovedType)

class ShowcaseFileViewDetails(bb.Struct):
    """
    Viewed file in showcase.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseFileViewDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseFileViewDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseFileViewDetails_validator = bv.Struct(ShowcaseFileViewDetails)

class ShowcaseFileViewType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseFileViewType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseFileViewType(description={!r})'.format(
            self._description_value,
        )

ShowcaseFileViewType_validator = bv.Struct(ShowcaseFileViewType)

class ShowcasePermanentlyDeletedDetails(bb.Struct):
    """
    Permanently deleted showcase.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcasePermanentlyDeletedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcasePermanentlyDeletedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcasePermanentlyDeletedDetails_validator = bv.Struct(ShowcasePermanentlyDeletedDetails)

class ShowcasePermanentlyDeletedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcasePermanentlyDeletedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcasePermanentlyDeletedType(description={!r})'.format(
            self._description_value,
        )

ShowcasePermanentlyDeletedType_validator = bv.Struct(ShowcasePermanentlyDeletedType)

class ShowcasePostCommentDetails(bb.Struct):
    """
    Added showcase comment.

    :ivar event_uuid: Event unique identifier.
    :ivar comment_text: Comment text.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcasePostCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcasePostCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

ShowcasePostCommentDetails_validator = bv.Struct(ShowcasePostCommentDetails)

class ShowcasePostCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcasePostCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcasePostCommentType(description={!r})'.format(
            self._description_value,
        )

ShowcasePostCommentType_validator = bv.Struct(ShowcasePostCommentType)

class ShowcaseRemoveMemberDetails(bb.Struct):
    """
    Removed member from showcase.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseRemoveMemberDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseRemoveMemberDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseRemoveMemberDetails_validator = bv.Struct(ShowcaseRemoveMemberDetails)

class ShowcaseRemoveMemberType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseRemoveMemberType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseRemoveMemberType(description={!r})'.format(
            self._description_value,
        )

ShowcaseRemoveMemberType_validator = bv.Struct(ShowcaseRemoveMemberType)

class ShowcaseRenamedDetails(bb.Struct):
    """
    Renamed showcase.

    :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 _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseRenamedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseRenamedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseRenamedDetails_validator = bv.Struct(ShowcaseRenamedDetails)

class ShowcaseRenamedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseRenamedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseRenamedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseRenamedType_validator = bv.Struct(ShowcaseRenamedType)

class ShowcaseRequestAccessDetails(bb.Struct):
    """
    Requested access to showcase.

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseRequestAccessDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseRequestAccessDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseRequestAccessDetails_validator = bv.Struct(ShowcaseRequestAccessDetails)

class ShowcaseRequestAccessType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseRequestAccessType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseRequestAccessType(description={!r})'.format(
            self._description_value,
        )

ShowcaseRequestAccessType_validator = bv.Struct(ShowcaseRequestAccessType)

class ShowcaseResolveCommentDetails(bb.Struct):
    """
    Resolved showcase comment.

    :ivar event_uuid: Event unique identifier.
    :ivar comment_text: Comment text.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseResolveCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseResolveCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

ShowcaseResolveCommentDetails_validator = bv.Struct(ShowcaseResolveCommentDetails)

class ShowcaseResolveCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseResolveCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseResolveCommentType(description={!r})'.format(
            self._description_value,
        )

ShowcaseResolveCommentType_validator = bv.Struct(ShowcaseResolveCommentType)

class ShowcaseRestoredDetails(bb.Struct):
    """
    Unarchived showcase.

    :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 _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseRestoredDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseRestoredDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseRestoredDetails_validator = bv.Struct(ShowcaseRestoredDetails)

class ShowcaseRestoredType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseRestoredType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseRestoredType(description={!r})'.format(
            self._description_value,
        )

ShowcaseRestoredType_validator = bv.Struct(ShowcaseRestoredType)

class ShowcaseTrashedDeprecatedDetails(bb.Struct):
    """
    Deleted showcase (old version).

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseTrashedDeprecatedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseTrashedDeprecatedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseTrashedDeprecatedDetails_validator = bv.Struct(ShowcaseTrashedDeprecatedDetails)

class ShowcaseTrashedDeprecatedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseTrashedDeprecatedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseTrashedDeprecatedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseTrashedDeprecatedType_validator = bv.Struct(ShowcaseTrashedDeprecatedType)

class ShowcaseTrashedDetails(bb.Struct):
    """
    Deleted showcase.

    :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 _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseTrashedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseTrashedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseTrashedDetails_validator = bv.Struct(ShowcaseTrashedDetails)

class ShowcaseTrashedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseTrashedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseTrashedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseTrashedType_validator = bv.Struct(ShowcaseTrashedType)

class ShowcaseUnresolveCommentDetails(bb.Struct):
    """
    Unresolved showcase comment.

    :ivar event_uuid: Event unique identifier.
    :ivar comment_text: Comment text.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
        '_comment_text_value',
        '_comment_text_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None,
                 comment_text=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        self._comment_text_value = None
        self._comment_text_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid
        if comment_text is not None:
            self.comment_text = comment_text

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    @property
    def comment_text(self):
        """
        Comment text.

        :rtype: str
        """
        if self._comment_text_present:
            return self._comment_text_value
        else:
            return None

    @comment_text.setter
    def comment_text(self, val):
        if val is None:
            del self.comment_text
            return
        val = self._comment_text_validator.validate(val)
        self._comment_text_value = val
        self._comment_text_present = True

    @comment_text.deleter
    def comment_text(self):
        self._comment_text_value = None
        self._comment_text_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseUnresolveCommentDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseUnresolveCommentDetails(event_uuid={!r}, comment_text={!r})'.format(
            self._event_uuid_value,
            self._comment_text_value,
        )

ShowcaseUnresolveCommentDetails_validator = bv.Struct(ShowcaseUnresolveCommentDetails)

class ShowcaseUnresolveCommentType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseUnresolveCommentType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseUnresolveCommentType(description={!r})'.format(
            self._description_value,
        )

ShowcaseUnresolveCommentType_validator = bv.Struct(ShowcaseUnresolveCommentType)

class ShowcaseUntrashedDeprecatedDetails(bb.Struct):
    """
    Restored showcase (old version).

    :ivar event_uuid: Event unique identifier.
    """

    __slots__ = [
        '_event_uuid_value',
        '_event_uuid_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 event_uuid=None):
        self._event_uuid_value = None
        self._event_uuid_present = False
        if event_uuid is not None:
            self.event_uuid = event_uuid

    @property
    def event_uuid(self):
        """
        Event unique identifier.

        :rtype: str
        """
        if self._event_uuid_present:
            return self._event_uuid_value
        else:
            raise AttributeError("missing required field 'event_uuid'")

    @event_uuid.setter
    def event_uuid(self, val):
        val = self._event_uuid_validator.validate(val)
        self._event_uuid_value = val
        self._event_uuid_present = True

    @event_uuid.deleter
    def event_uuid(self):
        self._event_uuid_value = None
        self._event_uuid_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseUntrashedDeprecatedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseUntrashedDeprecatedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseUntrashedDeprecatedDetails_validator = bv.Struct(ShowcaseUntrashedDeprecatedDetails)

class ShowcaseUntrashedDeprecatedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseUntrashedDeprecatedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseUntrashedDeprecatedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseUntrashedDeprecatedType_validator = bv.Struct(ShowcaseUntrashedDeprecatedType)

class ShowcaseUntrashedDetails(bb.Struct):
    """
    Restored showcase.

    :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 _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseUntrashedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseUntrashedDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseUntrashedDetails_validator = bv.Struct(ShowcaseUntrashedDetails)

class ShowcaseUntrashedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseUntrashedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseUntrashedType(description={!r})'.format(
            self._description_value,
        )

ShowcaseUntrashedType_validator = bv.Struct(ShowcaseUntrashedType)

class ShowcaseViewDetails(bb.Struct):
    """
    Viewed showcase.

    :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 _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseViewDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseViewDetails(event_uuid={!r})'.format(
            self._event_uuid_value,
        )

ShowcaseViewDetails_validator = bv.Struct(ShowcaseViewDetails)

class ShowcaseViewType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ShowcaseViewType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ShowcaseViewType(description={!r})'.format(
            self._description_value,
        )

ShowcaseViewType_validator = bv.Struct(ShowcaseViewType)

class SignInAsSessionEndDetails(bb.Struct):
    """
    Ended admin sign-in-as session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(SignInAsSessionEndDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SignInAsSessionEndDetails()'

SignInAsSessionEndDetails_validator = bv.Struct(SignInAsSessionEndDetails)

class SignInAsSessionEndType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SignInAsSessionEndType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SignInAsSessionEndType(description={!r})'.format(
            self._description_value,
        )

SignInAsSessionEndType_validator = bv.Struct(SignInAsSessionEndType)

class SignInAsSessionStartDetails(bb.Struct):
    """
    Started admin sign-in-as session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(SignInAsSessionStartDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SignInAsSessionStartDetails()'

SignInAsSessionStartDetails_validator = bv.Struct(SignInAsSessionStartDetails)

class SignInAsSessionStartType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SignInAsSessionStartType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SignInAsSessionStartType(description={!r})'.format(
            self._description_value,
        )

SignInAsSessionStartType_validator = bv.Struct(SignInAsSessionStartType)

class SmartSyncChangePolicyDetails(bb.Struct):
    """
    Changed default Smart Sync setting for team members.

    :ivar new_value: New smart sync policy.
    :ivar previous_value: Previous smart sync policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New smart sync policy.

        :rtype: team_policies.SmartSyncPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous smart sync policy.

        :rtype: team_policies.SmartSyncPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SmartSyncChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SmartSyncChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SmartSyncChangePolicyDetails_validator = bv.Struct(SmartSyncChangePolicyDetails)

class SmartSyncChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SmartSyncChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SmartSyncChangePolicyType(description={!r})'.format(
            self._description_value,
        )

SmartSyncChangePolicyType_validator = bv.Struct(SmartSyncChangePolicyType)

class SmartSyncCreateAdminPrivilegeReportDetails(bb.Struct):
    """
    Created Smart Sync non-admin devices report.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(SmartSyncCreateAdminPrivilegeReportDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SmartSyncCreateAdminPrivilegeReportDetails()'

SmartSyncCreateAdminPrivilegeReportDetails_validator = bv.Struct(SmartSyncCreateAdminPrivilegeReportDetails)

class SmartSyncCreateAdminPrivilegeReportType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SmartSyncCreateAdminPrivilegeReportType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SmartSyncCreateAdminPrivilegeReportType(description={!r})'.format(
            self._description_value,
        )

SmartSyncCreateAdminPrivilegeReportType_validator = bv.Struct(SmartSyncCreateAdminPrivilegeReportType)

class SmartSyncNotOptOutDetails(bb.Struct):
    """
    Opted team into Smart Sync.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(SmartSyncNotOptOutDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SmartSyncNotOptOutDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

SmartSyncNotOptOutDetails_validator = bv.Struct(SmartSyncNotOptOutDetails)

class SmartSyncNotOptOutType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SmartSyncNotOptOutType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SmartSyncNotOptOutType(description={!r})'.format(
            self._description_value,
        )

SmartSyncNotOptOutType_validator = bv.Struct(SmartSyncNotOptOutType)

class SmartSyncOptOutDetails(bb.Struct):
    """
    Opted team out of Smart Sync.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(SmartSyncOptOutDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SmartSyncOptOutDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

SmartSyncOptOutDetails_validator = bv.Struct(SmartSyncOptOutDetails)

class SmartSyncOptOutPolicy(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    default = None
    # Attribute is overwritten below the class definition
    opted_out = None
    # Attribute is overwritten below the class definition
    other = None

    def is_default(self):
        """
        Check if the union tag is ``default``.

        :rtype: bool
        """
        return self._tag == 'default'

    def is_opted_out(self):
        """
        Check if the union tag is ``opted_out``.

        :rtype: bool
        """
        return self._tag == 'opted_out'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(SmartSyncOptOutPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SmartSyncOptOutPolicy(%r, %r)' % (self._tag, self._value)

SmartSyncOptOutPolicy_validator = bv.Union(SmartSyncOptOutPolicy)

class SmartSyncOptOutType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SmartSyncOptOutType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SmartSyncOptOutType(description={!r})'.format(
            self._description_value,
        )

SmartSyncOptOutType_validator = bv.Struct(SmartSyncOptOutType)

class SpaceCapsType(bb.Union):
    """
    Space limit alert policy

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    hard = None
    # Attribute is overwritten below the class definition
    off = None
    # Attribute is overwritten below the class definition
    soft = None
    # Attribute is overwritten below the class definition
    other = None

    def is_hard(self):
        """
        Check if the union tag is ``hard``.

        :rtype: bool
        """
        return self._tag == 'hard'

    def is_off(self):
        """
        Check if the union tag is ``off``.

        :rtype: bool
        """
        return self._tag == 'off'

    def is_soft(self):
        """
        Check if the union tag is ``soft``.

        :rtype: bool
        """
        return self._tag == 'soft'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(SpaceCapsType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SpaceCapsType(%r, %r)' % (self._tag, self._value)

SpaceCapsType_validator = bv.Union(SpaceCapsType)

class SpaceLimitsStatus(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    within_quota = None
    # Attribute is overwritten below the class definition
    near_quota = None
    # Attribute is overwritten below the class definition
    over_quota = None
    # Attribute is overwritten below the class definition
    other = None

    def is_within_quota(self):
        """
        Check if the union tag is ``within_quota``.

        :rtype: bool
        """
        return self._tag == 'within_quota'

    def is_near_quota(self):
        """
        Check if the union tag is ``near_quota``.

        :rtype: bool
        """
        return self._tag == 'near_quota'

    def is_over_quota(self):
        """
        Check if the union tag is ``over_quota``.

        :rtype: bool
        """
        return self._tag == 'over_quota'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(SpaceLimitsStatus, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SpaceLimitsStatus(%r, %r)' % (self._tag, self._value)

SpaceLimitsStatus_validator = bv.Union(SpaceLimitsStatus)

class SsoAddCertDetails(bb.Struct):
    """
    Added X.509 certificate for SSO.

    :ivar certificate_details: SSO certificate details.
    """

    __slots__ = [
        '_certificate_details_value',
        '_certificate_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 certificate_details=None):
        self._certificate_details_value = None
        self._certificate_details_present = False
        if certificate_details is not None:
            self.certificate_details = certificate_details

    @property
    def certificate_details(self):
        """
        SSO certificate details.

        :rtype: Certificate
        """
        if self._certificate_details_present:
            return self._certificate_details_value
        else:
            raise AttributeError("missing required field 'certificate_details'")

    @certificate_details.setter
    def certificate_details(self, val):
        self._certificate_details_validator.validate_type_only(val)
        self._certificate_details_value = val
        self._certificate_details_present = True

    @certificate_details.deleter
    def certificate_details(self):
        self._certificate_details_value = None
        self._certificate_details_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoAddCertDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoAddCertDetails(certificate_details={!r})'.format(
            self._certificate_details_value,
        )

SsoAddCertDetails_validator = bv.Struct(SsoAddCertDetails)

class SsoAddCertType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoAddCertType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoAddCertType(description={!r})'.format(
            self._description_value,
        )

SsoAddCertType_validator = bv.Struct(SsoAddCertType)

class SsoAddLoginUrlDetails(bb.Struct):
    """
    Added sign-in URL for SSO.

    :ivar new_value: New single sign-on login URL.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        New single sign-on login URL.

        :rtype: str
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoAddLoginUrlDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoAddLoginUrlDetails(new_value={!r})'.format(
            self._new_value_value,
        )

SsoAddLoginUrlDetails_validator = bv.Struct(SsoAddLoginUrlDetails)

class SsoAddLoginUrlType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoAddLoginUrlType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoAddLoginUrlType(description={!r})'.format(
            self._description_value,
        )

SsoAddLoginUrlType_validator = bv.Struct(SsoAddLoginUrlType)

class SsoAddLogoutUrlDetails(bb.Struct):
    """
    Added sign-out URL for SSO.

    :ivar new_value: New single sign-on logout URL. Might be missing due to
        historical data gap.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = False

    def __init__(self,
                 new_value=None):
        self._new_value_value = None
        self._new_value_present = False
        if new_value is not None:
            self.new_value = new_value

    @property
    def new_value(self):
        """
        New single sign-on logout URL. Might be missing due to historical data
        gap.

        :rtype: str
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            return None

    @new_value.setter
    def new_value(self, val):
        if val is None:
            del self.new_value
            return
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoAddLogoutUrlDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoAddLogoutUrlDetails(new_value={!r})'.format(
            self._new_value_value,
        )

SsoAddLogoutUrlDetails_validator = bv.Struct(SsoAddLogoutUrlDetails)

class SsoAddLogoutUrlType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoAddLogoutUrlType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoAddLogoutUrlType(description={!r})'.format(
            self._description_value,
        )

SsoAddLogoutUrlType_validator = bv.Struct(SsoAddLogoutUrlType)

class SsoChangeCertDetails(bb.Struct):
    """
    Changed X.509 certificate for SSO.

    :ivar previous_certificate_details: Previous SSO certificate details. Might
        be missing due to historical data gap.
    :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. Might be missing due to historical
        data gap.

        :rtype: Certificate
        """
        if self._previous_certificate_details_present:
            return self._previous_certificate_details_value
        else:
            return None

    @previous_certificate_details.setter
    def previous_certificate_details(self, val):
        if val is None:
            del self.previous_certificate_details
            return
        self._previous_certificate_details_validator.validate_type_only(val)
        self._previous_certificate_details_value = val
        self._previous_certificate_details_present = True

    @previous_certificate_details.deleter
    def previous_certificate_details(self):
        self._previous_certificate_details_value = None
        self._previous_certificate_details_present = False

    @property
    def new_certificate_details(self):
        """
        New SSO certificate details.

        :rtype: Certificate
        """
        if self._new_certificate_details_present:
            return self._new_certificate_details_value
        else:
            raise AttributeError("missing required field 'new_certificate_details'")

    @new_certificate_details.setter
    def new_certificate_details(self, val):
        self._new_certificate_details_validator.validate_type_only(val)
        self._new_certificate_details_value = val
        self._new_certificate_details_present = True

    @new_certificate_details.deleter
    def new_certificate_details(self):
        self._new_certificate_details_value = None
        self._new_certificate_details_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoChangeCertDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoChangeCertDetails(new_certificate_details={!r}, previous_certificate_details={!r})'.format(
            self._new_certificate_details_value,
            self._previous_certificate_details_value,
        )

SsoChangeCertDetails_validator = bv.Struct(SsoChangeCertDetails)

class SsoChangeCertType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoChangeCertType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoChangeCertType(description={!r})'.format(
            self._description_value,
        )

SsoChangeCertType_validator = bv.Struct(SsoChangeCertType)

class SsoChangeLoginUrlDetails(bb.Struct):
    """
    Changed sign-in URL for SSO.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(SsoChangeLoginUrlDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoChangeLoginUrlDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

SsoChangeLoginUrlDetails_validator = bv.Struct(SsoChangeLoginUrlDetails)

class SsoChangeLoginUrlType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoChangeLoginUrlType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoChangeLoginUrlType(description={!r})'.format(
            self._description_value,
        )

SsoChangeLoginUrlType_validator = bv.Struct(SsoChangeLoginUrlType)

class SsoChangeLogoutUrlDetails(bb.Struct):
    """
    Changed sign-out URL for SSO.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(SsoChangeLogoutUrlDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoChangeLogoutUrlDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

SsoChangeLogoutUrlDetails_validator = bv.Struct(SsoChangeLogoutUrlDetails)

class SsoChangeLogoutUrlType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoChangeLogoutUrlType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoChangeLogoutUrlType(description={!r})'.format(
            self._description_value,
        )

SsoChangeLogoutUrlType_validator = bv.Struct(SsoChangeLogoutUrlType)

class SsoChangePolicyDetails(bb.Struct):
    """
    Changed single sign-on setting for team.

    :ivar 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
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous single sign-on policy. Might be missing due to historical data
        gap.

        :rtype: team_policies.SsoPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

SsoChangePolicyDetails_validator = bv.Struct(SsoChangePolicyDetails)

class SsoChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoChangePolicyType(description={!r})'.format(
            self._description_value,
        )

SsoChangePolicyType_validator = bv.Struct(SsoChangePolicyType)

class SsoChangeSamlIdentityModeDetails(bb.Struct):
    """
    Changed SAML identity mode for SSO.

    :ivar 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: int
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New single sign-on identity mode.

        :rtype: int
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        val = self._new_value_validator.validate(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoChangeSamlIdentityModeDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoChangeSamlIdentityModeDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

SsoChangeSamlIdentityModeDetails_validator = bv.Struct(SsoChangeSamlIdentityModeDetails)

class SsoChangeSamlIdentityModeType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoChangeSamlIdentityModeType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoChangeSamlIdentityModeType(description={!r})'.format(
            self._description_value,
        )

SsoChangeSamlIdentityModeType_validator = bv.Struct(SsoChangeSamlIdentityModeType)

class SsoErrorDetails(bb.Struct):
    """
    Failed to sign in via SSO.

    :ivar error_details: Error details.
    """

    __slots__ = [
        '_error_details_value',
        '_error_details_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 error_details=None):
        self._error_details_value = None
        self._error_details_present = False
        if error_details is not None:
            self.error_details = error_details

    @property
    def error_details(self):
        """
        Error details.

        :rtype: FailureDetailsLogInfo
        """
        if self._error_details_present:
            return self._error_details_value
        else:
            raise AttributeError("missing required field 'error_details'")

    @error_details.setter
    def error_details(self, val):
        self._error_details_validator.validate_type_only(val)
        self._error_details_value = val
        self._error_details_present = True

    @error_details.deleter
    def error_details(self):
        self._error_details_value = None
        self._error_details_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoErrorDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoErrorDetails(error_details={!r})'.format(
            self._error_details_value,
        )

SsoErrorDetails_validator = bv.Struct(SsoErrorDetails)

class SsoErrorType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoErrorType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoErrorType(description={!r})'.format(
            self._description_value,
        )

SsoErrorType_validator = bv.Struct(SsoErrorType)

class SsoRemoveCertDetails(bb.Struct):
    """
    Removed X.509 certificate for SSO.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoRemoveCertDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoRemoveCertDetails()'

SsoRemoveCertDetails_validator = bv.Struct(SsoRemoveCertDetails)

class SsoRemoveCertType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoRemoveCertType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoRemoveCertType(description={!r})'.format(
            self._description_value,
        )

SsoRemoveCertType_validator = bv.Struct(SsoRemoveCertType)

class SsoRemoveLoginUrlDetails(bb.Struct):
    """
    Removed sign-in URL for SSO.

    :ivar previous_value: Previous single sign-on login URL.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def previous_value(self):
        """
        Previous single sign-on login URL.

        :rtype: str
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoRemoveLoginUrlDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoRemoveLoginUrlDetails(previous_value={!r})'.format(
            self._previous_value_value,
        )

SsoRemoveLoginUrlDetails_validator = bv.Struct(SsoRemoveLoginUrlDetails)

class SsoRemoveLoginUrlType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoRemoveLoginUrlType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoRemoveLoginUrlType(description={!r})'.format(
            self._description_value,
        )

SsoRemoveLoginUrlType_validator = bv.Struct(SsoRemoveLoginUrlType)

class SsoRemoveLogoutUrlDetails(bb.Struct):
    """
    Removed sign-out URL for SSO.

    :ivar previous_value: Previous single sign-on logout URL.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def previous_value(self):
        """
        Previous single sign-on logout URL.

        :rtype: str
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        val = self._previous_value_validator.validate(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoRemoveLogoutUrlDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoRemoveLogoutUrlDetails(previous_value={!r})'.format(
            self._previous_value_value,
        )

SsoRemoveLogoutUrlDetails_validator = bv.Struct(SsoRemoveLogoutUrlDetails)

class SsoRemoveLogoutUrlType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(SsoRemoveLogoutUrlType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'SsoRemoveLogoutUrlType(description={!r})'.format(
            self._description_value,
        )

SsoRemoveLogoutUrlType_validator = bv.Struct(SsoRemoveLogoutUrlType)

class TeamActivityCreateReportDetails(bb.Struct):
    """
    Created team activity report.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(TeamActivityCreateReportDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamActivityCreateReportDetails(start_date={!r}, end_date={!r})'.format(
            self._start_date_value,
            self._end_date_value,
        )

TeamActivityCreateReportDetails_validator = bv.Struct(TeamActivityCreateReportDetails)

class TeamActivityCreateReportType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamActivityCreateReportType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamActivityCreateReportType(description={!r})'.format(
            self._description_value,
        )

TeamActivityCreateReportType_validator = bv.Struct(TeamActivityCreateReportType)

class TeamEvent(bb.Struct):
    """
    An audit log event.

    :ivar 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. Might be missing
        due to historical data gap.
    :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. Might be missing
        due to historical data gap.
    :ivar context: The user or team on whose behalf the actor performed the
        action. Might be missing due to historical data gap.
    :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,
                 event_type=None,
                 details=None,
                 actor=None,
                 origin=None,
                 involve_non_team_member=None,
                 context=None,
                 participants=None,
                 assets=None):
        self._timestamp_value = None
        self._timestamp_present = False
        self._event_category_value = None
        self._event_category_present = False
        self._actor_value = None
        self._actor_present = False
        self._origin_value = None
        self._origin_present = False
        self._involve_non_team_member_value = None
        self._involve_non_team_member_present = False
        self._context_value = None
        self._context_present = False
        self._participants_value = None
        self._participants_present = False
        self._assets_value = None
        self._assets_present = False
        self._event_type_value = None
        self._event_type_present = False
        self._details_value = None
        self._details_present = False
        if timestamp is not None:
            self.timestamp = timestamp
        if event_category is not None:
            self.event_category = event_category
        if actor is not None:
            self.actor = actor
        if origin is not None:
            self.origin = origin
        if involve_non_team_member is not None:
            self.involve_non_team_member = involve_non_team_member
        if context is not None:
            self.context = context
        if participants is not None:
            self.participants = participants
        if assets is not None:
            self.assets = assets
        if event_type is not None:
            self.event_type = event_type
        if details is not None:
            self.details = details

    @property
    def timestamp(self):
        """
        The Dropbox timestamp representing when the action was taken.

        :rtype: datetime.datetime
        """
        if self._timestamp_present:
            return self._timestamp_value
        else:
            raise AttributeError("missing required field 'timestamp'")

    @timestamp.setter
    def timestamp(self, val):
        val = self._timestamp_validator.validate(val)
        self._timestamp_value = val
        self._timestamp_present = True

    @timestamp.deleter
    def timestamp(self):
        self._timestamp_value = None
        self._timestamp_present = False

    @property
    def event_category(self):
        """
        The category that this type of action belongs to.

        :rtype: EventCategory
        """
        if self._event_category_present:
            return self._event_category_value
        else:
            raise AttributeError("missing required field 'event_category'")

    @event_category.setter
    def event_category(self, val):
        self._event_category_validator.validate_type_only(val)
        self._event_category_value = val
        self._event_category_present = True

    @event_category.deleter
    def event_category(self):
        self._event_category_value = None
        self._event_category_present = False

    @property
    def actor(self):
        """
        The entity who actually performed the action. Might be missing due to
        historical data gap.

        :rtype: ActorLogInfo
        """
        if self._actor_present:
            return self._actor_value
        else:
            return None

    @actor.setter
    def actor(self, val):
        if val is None:
            del self.actor
            return
        self._actor_validator.validate_type_only(val)
        self._actor_value = val
        self._actor_present = True

    @actor.deleter
    def actor(self):
        self._actor_value = None
        self._actor_present = False

    @property
    def origin(self):
        """
        The origin from which the actor performed the action including
        information about host, ip address, location, session, etc. If the
        action was performed programmatically via the API the origin represents
        the API client.

        :rtype: OriginLogInfo
        """
        if self._origin_present:
            return self._origin_value
        else:
            return None

    @origin.setter
    def origin(self, val):
        if val is None:
            del self.origin
            return
        self._origin_validator.validate_type_only(val)
        self._origin_value = val
        self._origin_present = True

    @origin.deleter
    def origin(self):
        self._origin_value = None
        self._origin_present = False

    @property
    def involve_non_team_member(self):
        """
        True if the action involved a non team member either as the actor or as
        one of the affected users. Might be missing due to historical data gap.

        :rtype: bool
        """
        if self._involve_non_team_member_present:
            return self._involve_non_team_member_value
        else:
            return None

    @involve_non_team_member.setter
    def involve_non_team_member(self, val):
        if val is None:
            del self.involve_non_team_member
            return
        val = self._involve_non_team_member_validator.validate(val)
        self._involve_non_team_member_value = val
        self._involve_non_team_member_present = True

    @involve_non_team_member.deleter
    def involve_non_team_member(self):
        self._involve_non_team_member_value = None
        self._involve_non_team_member_present = False

    @property
    def context(self):
        """
        The user or team on whose behalf the actor performed the action. Might
        be missing due to historical data gap.

        :rtype: ContextLogInfo
        """
        if self._context_present:
            return self._context_value
        else:
            return None

    @context.setter
    def context(self, val):
        if val is None:
            del self.context
            return
        self._context_validator.validate_type_only(val)
        self._context_value = val
        self._context_present = True

    @context.deleter
    def context(self):
        self._context_value = None
        self._context_present = False

    @property
    def participants(self):
        """
        Zero or more users and/or groups that are affected by the action. Note
        that this list doesn't include any actors or users in context.

        :rtype: list of [ParticipantLogInfo]
        """
        if self._participants_present:
            return self._participants_value
        else:
            return None

    @participants.setter
    def participants(self, val):
        if val is None:
            del self.participants
            return
        val = self._participants_validator.validate(val)
        self._participants_value = val
        self._participants_present = True

    @participants.deleter
    def participants(self):
        self._participants_value = None
        self._participants_present = False

    @property
    def assets(self):
        """
        Zero or more content assets involved in the action. Currently these
        include Dropbox files and folders but in the future we might add other
        asset types such as Paper documents, folders, projects, etc.

        :rtype: list of [AssetLogInfo]
        """
        if self._assets_present:
            return self._assets_value
        else:
            return None

    @assets.setter
    def assets(self, val):
        if val is None:
            del self.assets
            return
        val = self._assets_validator.validate(val)
        self._assets_value = val
        self._assets_present = True

    @assets.deleter
    def assets(self):
        self._assets_value = None
        self._assets_present = False

    @property
    def event_type(self):
        """
        The particular type of action taken.

        :rtype: EventType
        """
        if self._event_type_present:
            return self._event_type_value
        else:
            raise AttributeError("missing required field 'event_type'")

    @event_type.setter
    def event_type(self, val):
        self._event_type_validator.validate_type_only(val)
        self._event_type_value = val
        self._event_type_present = True

    @event_type.deleter
    def event_type(self):
        self._event_type_value = None
        self._event_type_present = False

    @property
    def details(self):
        """
        The variable event schema applicable to this type of action,
        instantiated with respect to this particular action.

        :rtype: EventDetails
        """
        if self._details_present:
            return self._details_value
        else:
            raise AttributeError("missing required field 'details'")

    @details.setter
    def details(self, val):
        self._details_validator.validate_type_only(val)
        self._details_value = val
        self._details_present = True

    @details.deleter
    def details(self):
        self._details_value = None
        self._details_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamEvent, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamEvent(timestamp={!r}, event_category={!r}, event_type={!r}, details={!r}, actor={!r}, origin={!r}, involve_non_team_member={!r}, context={!r}, participants={!r}, assets={!r})'.format(
            self._timestamp_value,
            self._event_category_value,
            self._event_type_value,
            self._details_value,
            self._actor_value,
            self._origin_value,
            self._involve_non_team_member_value,
            self._context_value,
            self._participants_value,
            self._assets_value,
        )

TeamEvent_validator = bv.Struct(TeamEvent)

class TeamFolderChangeStatusDetails(bb.Struct):
    """
    Changed archival status of 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: team.TeamFolderStatus
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous team folder status. Might be missing due to historical data
        gap.

        :rtype: team.TeamFolderStatus
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamFolderChangeStatusDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamFolderChangeStatusDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

TeamFolderChangeStatusDetails_validator = bv.Struct(TeamFolderChangeStatusDetails)

class TeamFolderChangeStatusType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamFolderChangeStatusType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamFolderChangeStatusType(description={!r})'.format(
            self._description_value,
        )

TeamFolderChangeStatusType_validator = bv.Struct(TeamFolderChangeStatusType)

class TeamFolderCreateDetails(bb.Struct):
    """
    Created team folder in active status.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamFolderCreateDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamFolderCreateDetails()'

TeamFolderCreateDetails_validator = bv.Struct(TeamFolderCreateDetails)

class TeamFolderCreateType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamFolderCreateType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamFolderCreateType(description={!r})'.format(
            self._description_value,
        )

TeamFolderCreateType_validator = bv.Struct(TeamFolderCreateType)

class TeamFolderDowngradeDetails(bb.Struct):
    """
    Downgraded team folder to regular shared folder.

    :ivar target_asset_index: Target asset position in the Assets list.
    """

    __slots__ = [
        '_target_asset_index_value',
        '_target_asset_index_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 target_asset_index=None):
        self._target_asset_index_value = None
        self._target_asset_index_present = False
        if target_asset_index is not None:
            self.target_asset_index = target_asset_index

    @property
    def target_asset_index(self):
        """
        Target asset position in the Assets list.

        :rtype: int
        """
        if self._target_asset_index_present:
            return self._target_asset_index_value
        else:
            raise AttributeError("missing required field 'target_asset_index'")

    @target_asset_index.setter
    def target_asset_index(self, val):
        val = self._target_asset_index_validator.validate(val)
        self._target_asset_index_value = val
        self._target_asset_index_present = True

    @target_asset_index.deleter
    def target_asset_index(self):
        self._target_asset_index_value = None
        self._target_asset_index_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamFolderDowngradeDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamFolderDowngradeDetails(target_asset_index={!r})'.format(
            self._target_asset_index_value,
        )

TeamFolderDowngradeDetails_validator = bv.Struct(TeamFolderDowngradeDetails)

class TeamFolderDowngradeType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamFolderDowngradeType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamFolderDowngradeType(description={!r})'.format(
            self._description_value,
        )

TeamFolderDowngradeType_validator = bv.Struct(TeamFolderDowngradeType)

class TeamFolderPermanentlyDeleteDetails(bb.Struct):
    """
    Permanently deleted archived team folder.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamFolderPermanentlyDeleteDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamFolderPermanentlyDeleteDetails()'

TeamFolderPermanentlyDeleteDetails_validator = bv.Struct(TeamFolderPermanentlyDeleteDetails)

class TeamFolderPermanentlyDeleteType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamFolderPermanentlyDeleteType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamFolderPermanentlyDeleteType(description={!r})'.format(
            self._description_value,
        )

TeamFolderPermanentlyDeleteType_validator = bv.Struct(TeamFolderPermanentlyDeleteType)

class TeamFolderRenameDetails(bb.Struct):
    """
    Renamed active/archived team folder.

    :ivar previous_folder_name: Previous folder name.
    :ivar new_folder_name: New folder name.
    """

    __slots__ = [
        '_previous_folder_name_value',
        '_previous_folder_name_present',
        '_new_folder_name_value',
        '_new_folder_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_folder_name=None,
                 new_folder_name=None):
        self._previous_folder_name_value = None
        self._previous_folder_name_present = False
        self._new_folder_name_value = None
        self._new_folder_name_present = False
        if previous_folder_name is not None:
            self.previous_folder_name = previous_folder_name
        if new_folder_name is not None:
            self.new_folder_name = new_folder_name

    @property
    def previous_folder_name(self):
        """
        Previous folder name.

        :rtype: str
        """
        if self._previous_folder_name_present:
            return self._previous_folder_name_value
        else:
            raise AttributeError("missing required field 'previous_folder_name'")

    @previous_folder_name.setter
    def previous_folder_name(self, val):
        val = self._previous_folder_name_validator.validate(val)
        self._previous_folder_name_value = val
        self._previous_folder_name_present = True

    @previous_folder_name.deleter
    def previous_folder_name(self):
        self._previous_folder_name_value = None
        self._previous_folder_name_present = False

    @property
    def new_folder_name(self):
        """
        New folder name.

        :rtype: str
        """
        if self._new_folder_name_present:
            return self._new_folder_name_value
        else:
            raise AttributeError("missing required field 'new_folder_name'")

    @new_folder_name.setter
    def new_folder_name(self, val):
        val = self._new_folder_name_validator.validate(val)
        self._new_folder_name_value = val
        self._new_folder_name_present = True

    @new_folder_name.deleter
    def new_folder_name(self):
        self._new_folder_name_value = None
        self._new_folder_name_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamFolderRenameDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamFolderRenameDetails(previous_folder_name={!r}, new_folder_name={!r})'.format(
            self._previous_folder_name_value,
            self._new_folder_name_value,
        )

TeamFolderRenameDetails_validator = bv.Struct(TeamFolderRenameDetails)

class TeamFolderRenameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamFolderRenameType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamFolderRenameType(description={!r})'.format(
            self._description_value,
        )

TeamFolderRenameType_validator = bv.Struct(TeamFolderRenameType)

class TeamLinkedAppLogInfo(AppLogInfo):
    """
    Team linked app
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self,
                 app_id=None,
                 display_name=None):
        super(TeamLinkedAppLogInfo, self).__init__(app_id,
                                                   display_name)

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamLinkedAppLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamLinkedAppLogInfo(app_id={!r}, display_name={!r})'.format(
            self._app_id_value,
            self._display_name_value,
        )

TeamLinkedAppLogInfo_validator = bv.Struct(TeamLinkedAppLogInfo)

class TeamMemberLogInfo(UserLogInfo):
    """
    Team member's logged information.

    :ivar team_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 _process_custom_annotations(self, annotation_type, processor):
        super(TeamMemberLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamMemberLogInfo(account_id={!r}, display_name={!r}, email={!r}, team_member_id={!r}, member_external_id={!r})'.format(
            self._account_id_value,
            self._display_name_value,
            self._email_value,
            self._team_member_id_value,
            self._member_external_id_value,
        )

TeamMemberLogInfo_validator = bv.Struct(TeamMemberLogInfo)

class TeamMembershipType(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    free = None
    # Attribute is overwritten below the class definition
    full = None
    # Attribute is overwritten below the class definition
    other = None

    def is_free(self):
        """
        Check if the union tag is ``free``.

        :rtype: bool
        """
        return self._tag == 'free'

    def is_full(self):
        """
        Check if the union tag is ``full``.

        :rtype: bool
        """
        return self._tag == 'full'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamMembershipType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamMembershipType(%r, %r)' % (self._tag, self._value)

TeamMembershipType_validator = bv.Union(TeamMembershipType)

class TeamMergeFromDetails(bb.Struct):
    """
    Merged another team into this team.

    :ivar team_name: The name of the team that was merged into this team.
    """

    __slots__ = [
        '_team_name_value',
        '_team_name_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 team_name=None):
        self._team_name_value = None
        self._team_name_present = False
        if team_name is not None:
            self.team_name = team_name

    @property
    def team_name(self):
        """
        The name of the team that was merged into this team.

        :rtype: str
        """
        if self._team_name_present:
            return self._team_name_value
        else:
            raise AttributeError("missing required field 'team_name'")

    @team_name.setter
    def team_name(self, val):
        val = self._team_name_validator.validate(val)
        self._team_name_value = val
        self._team_name_present = True

    @team_name.deleter
    def team_name(self):
        self._team_name_value = None
        self._team_name_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamMergeFromDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamMergeFromDetails(team_name={!r})'.format(
            self._team_name_value,
        )

TeamMergeFromDetails_validator = bv.Struct(TeamMergeFromDetails)

class TeamMergeFromType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamMergeFromType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamMergeFromType(description={!r})'.format(
            self._description_value,
        )

TeamMergeFromType_validator = bv.Struct(TeamMergeFromType)

class TeamMergeToDetails(bb.Struct):
    """
    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 _process_custom_annotations(self, annotation_type, processor):
        super(TeamMergeToDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamMergeToDetails(team_name={!r})'.format(
            self._team_name_value,
        )

TeamMergeToDetails_validator = bv.Struct(TeamMergeToDetails)

class TeamMergeToType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamMergeToType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamMergeToType(description={!r})'.format(
            self._description_value,
        )

TeamMergeToType_validator = bv.Struct(TeamMergeToType)

class TeamName(bb.Struct):
    """
    Team name details

    :ivar team_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 _process_custom_annotations(self, annotation_type, processor):
        super(TeamName, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamName(team_display_name={!r}, team_legal_name={!r})'.format(
            self._team_display_name_value,
            self._team_legal_name_value,
        )

TeamName_validator = bv.Struct(TeamName)

class TeamProfileAddLogoDetails(bb.Struct):
    """
    Added team logo to display on shared link headers.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamProfileAddLogoDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamProfileAddLogoDetails()'

TeamProfileAddLogoDetails_validator = bv.Struct(TeamProfileAddLogoDetails)

class TeamProfileAddLogoType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamProfileAddLogoType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamProfileAddLogoType(description={!r})'.format(
            self._description_value,
        )

TeamProfileAddLogoType_validator = bv.Struct(TeamProfileAddLogoType)

class TeamProfileChangeDefaultLanguageDetails(bb.Struct):
    """
    Changed default language for team.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(TeamProfileChangeDefaultLanguageDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamProfileChangeDefaultLanguageDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

TeamProfileChangeDefaultLanguageDetails_validator = bv.Struct(TeamProfileChangeDefaultLanguageDetails)

class TeamProfileChangeDefaultLanguageType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamProfileChangeDefaultLanguageType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamProfileChangeDefaultLanguageType(description={!r})'.format(
            self._description_value,
        )

TeamProfileChangeDefaultLanguageType_validator = bv.Struct(TeamProfileChangeDefaultLanguageType)

class TeamProfileChangeLogoDetails(bb.Struct):
    """
    Changed team logo displayed on shared link headers.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamProfileChangeLogoDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamProfileChangeLogoDetails()'

TeamProfileChangeLogoDetails_validator = bv.Struct(TeamProfileChangeLogoDetails)

class TeamProfileChangeLogoType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamProfileChangeLogoType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamProfileChangeLogoType(description={!r})'.format(
            self._description_value,
        )

TeamProfileChangeLogoType_validator = bv.Struct(TeamProfileChangeLogoType)

class TeamProfileChangeNameDetails(bb.Struct):
    """
    Changed team name.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(TeamProfileChangeNameDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamProfileChangeNameDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

TeamProfileChangeNameDetails_validator = bv.Struct(TeamProfileChangeNameDetails)

class TeamProfileChangeNameType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamProfileChangeNameType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamProfileChangeNameType(description={!r})'.format(
            self._description_value,
        )

TeamProfileChangeNameType_validator = bv.Struct(TeamProfileChangeNameType)

class TeamProfileRemoveLogoDetails(bb.Struct):
    """
    Removed team logo displayed on shared link headers.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamProfileRemoveLogoDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamProfileRemoveLogoDetails()'

TeamProfileRemoveLogoDetails_validator = bv.Struct(TeamProfileRemoveLogoDetails)

class TeamProfileRemoveLogoType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamProfileRemoveLogoType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamProfileRemoveLogoType(description={!r})'.format(
            self._description_value,
        )

TeamProfileRemoveLogoType_validator = bv.Struct(TeamProfileRemoveLogoType)

class TeamSelectiveSyncPolicy(bb.Union):
    """
    Policy for controlling whether team selective sync is enabled for team.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamSelectiveSyncPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamSelectiveSyncPolicy(%r, %r)' % (self._tag, self._value)

TeamSelectiveSyncPolicy_validator = bv.Union(TeamSelectiveSyncPolicy)

class TeamSelectiveSyncPolicyChangedDetails(bb.Struct):
    """
    Enabled/disabled Team Selective Sync for team.

    :ivar new_value: New Team Selective Sync policy.
    :ivar previous_value: Previous Team Selective Sync policy.
    """

    __slots__ = [
        '_new_value_value',
        '_new_value_present',
        '_previous_value_value',
        '_previous_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 new_value=None,
                 previous_value=None):
        self._new_value_value = None
        self._new_value_present = False
        self._previous_value_value = None
        self._previous_value_present = False
        if new_value is not None:
            self.new_value = new_value
        if previous_value is not None:
            self.previous_value = previous_value

    @property
    def new_value(self):
        """
        New Team Selective Sync policy.

        :rtype: TeamSelectiveSyncPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous Team Selective Sync policy.

        :rtype: TeamSelectiveSyncPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamSelectiveSyncPolicyChangedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamSelectiveSyncPolicyChangedDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

TeamSelectiveSyncPolicyChangedDetails_validator = bv.Struct(TeamSelectiveSyncPolicyChangedDetails)

class TeamSelectiveSyncPolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamSelectiveSyncPolicyChangedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamSelectiveSyncPolicyChangedType(description={!r})'.format(
            self._description_value,
        )

TeamSelectiveSyncPolicyChangedType_validator = bv.Struct(TeamSelectiveSyncPolicyChangedType)

class TeamSelectiveSyncSettingsChangedDetails(bb.Struct):
    """
    Changed sync default.

    :ivar previous_value: Previous value.
    :ivar new_value: New value.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous value.

        :rtype: files.SyncSetting
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New value.

        :rtype: files.SyncSetting
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamSelectiveSyncSettingsChangedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamSelectiveSyncSettingsChangedDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

TeamSelectiveSyncSettingsChangedDetails_validator = bv.Struct(TeamSelectiveSyncSettingsChangedDetails)

class TeamSelectiveSyncSettingsChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TeamSelectiveSyncSettingsChangedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TeamSelectiveSyncSettingsChangedType(description={!r})'.format(
            self._description_value,
        )

TeamSelectiveSyncSettingsChangedType_validator = bv.Struct(TeamSelectiveSyncSettingsChangedType)

class TfaAddBackupPhoneDetails(bb.Struct):
    """
    Added backup phone for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaAddBackupPhoneDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaAddBackupPhoneDetails()'

TfaAddBackupPhoneDetails_validator = bv.Struct(TfaAddBackupPhoneDetails)

class TfaAddBackupPhoneType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaAddBackupPhoneType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaAddBackupPhoneType(description={!r})'.format(
            self._description_value,
        )

TfaAddBackupPhoneType_validator = bv.Struct(TfaAddBackupPhoneType)

class TfaAddSecurityKeyDetails(bb.Struct):
    """
    Added security key for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaAddSecurityKeyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaAddSecurityKeyDetails()'

TfaAddSecurityKeyDetails_validator = bv.Struct(TfaAddSecurityKeyDetails)

class TfaAddSecurityKeyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaAddSecurityKeyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaAddSecurityKeyType(description={!r})'.format(
            self._description_value,
        )

TfaAddSecurityKeyType_validator = bv.Struct(TfaAddSecurityKeyType)

class TfaChangeBackupPhoneDetails(bb.Struct):
    """
    Changed backup phone for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaChangeBackupPhoneDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaChangeBackupPhoneDetails()'

TfaChangeBackupPhoneDetails_validator = bv.Struct(TfaChangeBackupPhoneDetails)

class TfaChangeBackupPhoneType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaChangeBackupPhoneType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaChangeBackupPhoneType(description={!r})'.format(
            self._description_value,
        )

TfaChangeBackupPhoneType_validator = bv.Struct(TfaChangeBackupPhoneType)

class TfaChangePolicyDetails(bb.Struct):
    """
    Changed two-step verification setting for team.

    :ivar 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
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    @property
    def previous_value(self):
        """
        Previous change policy. Might be missing due to historical data gap.

        :rtype: team_policies.TwoStepVerificationPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            return None

    @previous_value.setter
    def previous_value(self, val):
        if val is None:
            del self.previous_value
            return
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

TfaChangePolicyDetails_validator = bv.Struct(TfaChangePolicyDetails)

class TfaChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaChangePolicyType(description={!r})'.format(
            self._description_value,
        )

TfaChangePolicyType_validator = bv.Struct(TfaChangePolicyType)

class TfaChangeStatusDetails(bb.Struct):
    """
    Enabled/disabled/changed two-step verification setting.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(TfaChangeStatusDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaChangeStatusDetails(new_value={!r}, previous_value={!r}, used_rescue_code={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
            self._used_rescue_code_value,
        )

TfaChangeStatusDetails_validator = bv.Struct(TfaChangeStatusDetails)

class TfaChangeStatusType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaChangeStatusType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaChangeStatusType(description={!r})'.format(
            self._description_value,
        )

TfaChangeStatusType_validator = bv.Struct(TfaChangeStatusType)

class TfaConfiguration(bb.Union):
    """
    Two factor authentication configuration. Note: the enabled option is
    deprecated.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    sms = None
    # Attribute is overwritten below the class definition
    authenticator = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_sms(self):
        """
        Check if the union tag is ``sms``.

        :rtype: bool
        """
        return self._tag == 'sms'

    def is_authenticator(self):
        """
        Check if the union tag is ``authenticator``.

        :rtype: bool
        """
        return self._tag == 'authenticator'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaConfiguration, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaConfiguration(%r, %r)' % (self._tag, self._value)

TfaConfiguration_validator = bv.Union(TfaConfiguration)

class TfaRemoveBackupPhoneDetails(bb.Struct):
    """
    Removed backup phone for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaRemoveBackupPhoneDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaRemoveBackupPhoneDetails()'

TfaRemoveBackupPhoneDetails_validator = bv.Struct(TfaRemoveBackupPhoneDetails)

class TfaRemoveBackupPhoneType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaRemoveBackupPhoneType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaRemoveBackupPhoneType(description={!r})'.format(
            self._description_value,
        )

TfaRemoveBackupPhoneType_validator = bv.Struct(TfaRemoveBackupPhoneType)

class TfaRemoveSecurityKeyDetails(bb.Struct):
    """
    Removed security key for two-step verification.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaRemoveSecurityKeyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaRemoveSecurityKeyDetails()'

TfaRemoveSecurityKeyDetails_validator = bv.Struct(TfaRemoveSecurityKeyDetails)

class TfaRemoveSecurityKeyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaRemoveSecurityKeyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaRemoveSecurityKeyType(description={!r})'.format(
            self._description_value,
        )

TfaRemoveSecurityKeyType_validator = bv.Struct(TfaRemoveSecurityKeyType)

class TfaResetDetails(bb.Struct):
    """
    Reset two-step verification for team member.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self):
        pass

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaResetDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaResetDetails()'

TfaResetDetails_validator = bv.Struct(TfaResetDetails)

class TfaResetType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TfaResetType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TfaResetType(description={!r})'.format(
            self._description_value,
        )

TfaResetType_validator = bv.Struct(TfaResetType)

class TimeUnit(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    milliseconds = None
    # Attribute is overwritten below the class definition
    seconds = None
    # Attribute is overwritten below the class definition
    minutes = None
    # Attribute is overwritten below the class definition
    hours = None
    # Attribute is overwritten below the class definition
    days = None
    # Attribute is overwritten below the class definition
    weeks = None
    # Attribute is overwritten below the class definition
    months = None
    # Attribute is overwritten below the class definition
    years = None
    # Attribute is overwritten below the class definition
    other = None

    def is_milliseconds(self):
        """
        Check if the union tag is ``milliseconds``.

        :rtype: bool
        """
        return self._tag == 'milliseconds'

    def is_seconds(self):
        """
        Check if the union tag is ``seconds``.

        :rtype: bool
        """
        return self._tag == 'seconds'

    def is_minutes(self):
        """
        Check if the union tag is ``minutes``.

        :rtype: bool
        """
        return self._tag == 'minutes'

    def is_hours(self):
        """
        Check if the union tag is ``hours``.

        :rtype: bool
        """
        return self._tag == 'hours'

    def is_days(self):
        """
        Check if the union tag is ``days``.

        :rtype: bool
        """
        return self._tag == 'days'

    def is_weeks(self):
        """
        Check if the union tag is ``weeks``.

        :rtype: bool
        """
        return self._tag == 'weeks'

    def is_months(self):
        """
        Check if the union tag is ``months``.

        :rtype: bool
        """
        return self._tag == 'months'

    def is_years(self):
        """
        Check if the union tag is ``years``.

        :rtype: bool
        """
        return self._tag == 'years'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(TimeUnit, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TimeUnit(%r, %r)' % (self._tag, self._value)

TimeUnit_validator = bv.Union(TimeUnit)

class TrustedNonTeamMemberLogInfo(UserLogInfo):
    """
    User that is not a member of the team but considered trusted.

    :ivar trusted_non_team_member_type: Indicates the type of the trusted non
        team member user.
    """

    __slots__ = [
        '_trusted_non_team_member_type_value',
        '_trusted_non_team_member_type_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 trusted_non_team_member_type=None,
                 account_id=None,
                 display_name=None,
                 email=None):
        super(TrustedNonTeamMemberLogInfo, self).__init__(account_id,
                                                          display_name,
                                                          email)
        self._trusted_non_team_member_type_value = None
        self._trusted_non_team_member_type_present = False
        if trusted_non_team_member_type is not None:
            self.trusted_non_team_member_type = trusted_non_team_member_type

    @property
    def trusted_non_team_member_type(self):
        """
        Indicates the type of the trusted non team member user.

        :rtype: TrustedNonTeamMemberType
        """
        if self._trusted_non_team_member_type_present:
            return self._trusted_non_team_member_type_value
        else:
            raise AttributeError("missing required field 'trusted_non_team_member_type'")

    @trusted_non_team_member_type.setter
    def trusted_non_team_member_type(self, val):
        self._trusted_non_team_member_type_validator.validate_type_only(val)
        self._trusted_non_team_member_type_value = val
        self._trusted_non_team_member_type_present = True

    @trusted_non_team_member_type.deleter
    def trusted_non_team_member_type(self):
        self._trusted_non_team_member_type_value = None
        self._trusted_non_team_member_type_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TrustedNonTeamMemberLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TrustedNonTeamMemberLogInfo(trusted_non_team_member_type={!r}, account_id={!r}, display_name={!r}, email={!r})'.format(
            self._trusted_non_team_member_type_value,
            self._account_id_value,
            self._display_name_value,
            self._email_value,
        )

TrustedNonTeamMemberLogInfo_validator = bv.Struct(TrustedNonTeamMemberLogInfo)

class TrustedNonTeamMemberType(bb.Union):
    """
    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    multi_instance_admin = None
    # Attribute is overwritten below the class definition
    other = None

    def is_multi_instance_admin(self):
        """
        Check if the union tag is ``multi_instance_admin``.

        :rtype: bool
        """
        return self._tag == 'multi_instance_admin'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(TrustedNonTeamMemberType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TrustedNonTeamMemberType(%r, %r)' % (self._tag, self._value)

TrustedNonTeamMemberType_validator = bv.Union(TrustedNonTeamMemberType)

class TwoAccountChangePolicyDetails(bb.Struct):
    """
    Enabled/disabled option for members to link personal Dropbox account and
    team account to 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 _process_custom_annotations(self, annotation_type, processor):
        super(TwoAccountChangePolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TwoAccountChangePolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

TwoAccountChangePolicyDetails_validator = bv.Struct(TwoAccountChangePolicyDetails)

class TwoAccountChangePolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(TwoAccountChangePolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TwoAccountChangePolicyType(description={!r})'.format(
            self._description_value,
        )

TwoAccountChangePolicyType_validator = bv.Struct(TwoAccountChangePolicyType)

class TwoAccountPolicy(bb.Union):
    """
    Policy for pairing personal account to work account

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.
    """

    _catch_all = 'other'
    # Attribute is overwritten below the class definition
    disabled = None
    # Attribute is overwritten below the class definition
    enabled = None
    # Attribute is overwritten below the class definition
    other = None

    def is_disabled(self):
        """
        Check if the union tag is ``disabled``.

        :rtype: bool
        """
        return self._tag == 'disabled'

    def is_enabled(self):
        """
        Check if the union tag is ``enabled``.

        :rtype: bool
        """
        return self._tag == 'enabled'

    def is_other(self):
        """
        Check if the union tag is ``other``.

        :rtype: bool
        """
        return self._tag == 'other'

    def _process_custom_annotations(self, annotation_type, processor):
        super(TwoAccountPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'TwoAccountPolicy(%r, %r)' % (self._tag, self._value)

TwoAccountPolicy_validator = bv.Union(TwoAccountPolicy)

class UserLinkedAppLogInfo(AppLogInfo):
    """
    User linked app
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self,
                 app_id=None,
                 display_name=None):
        super(UserLinkedAppLogInfo, self).__init__(app_id,
                                                   display_name)

    def _process_custom_annotations(self, annotation_type, processor):
        super(UserLinkedAppLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'UserLinkedAppLogInfo(app_id={!r}, display_name={!r})'.format(
            self._app_id_value,
            self._display_name_value,
        )

UserLinkedAppLogInfo_validator = bv.Struct(UserLinkedAppLogInfo)

class UserNameLogInfo(bb.Struct):
    """
    User's name logged information

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(UserNameLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'UserNameLogInfo(given_name={!r}, surname={!r}, locale={!r})'.format(
            self._given_name_value,
            self._surname_value,
            self._locale_value,
        )

UserNameLogInfo_validator = bv.Struct(UserNameLogInfo)

class UserOrTeamLinkedAppLogInfo(AppLogInfo):
    """
    User or team linked app. Used when linked type is missing due to historical
    data gap.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self,
                 app_id=None,
                 display_name=None):
        super(UserOrTeamLinkedAppLogInfo, self).__init__(app_id,
                                                         display_name)

    def _process_custom_annotations(self, annotation_type, processor):
        super(UserOrTeamLinkedAppLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'UserOrTeamLinkedAppLogInfo(app_id={!r}, display_name={!r})'.format(
            self._app_id_value,
            self._display_name_value,
        )

UserOrTeamLinkedAppLogInfo_validator = bv.Struct(UserOrTeamLinkedAppLogInfo)

class ViewerInfoPolicyChangedDetails(bb.Struct):
    """
    Changed team policy for viewer info.

    :ivar previous_value: Previous Viewer Info policy.
    :ivar new_value: New Viewer Info policy.
    """

    __slots__ = [
        '_previous_value_value',
        '_previous_value_present',
        '_new_value_value',
        '_new_value_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 previous_value=None,
                 new_value=None):
        self._previous_value_value = None
        self._previous_value_present = False
        self._new_value_value = None
        self._new_value_present = False
        if previous_value is not None:
            self.previous_value = previous_value
        if new_value is not None:
            self.new_value = new_value

    @property
    def previous_value(self):
        """
        Previous Viewer Info policy.

        :rtype: PassPolicy
        """
        if self._previous_value_present:
            return self._previous_value_value
        else:
            raise AttributeError("missing required field 'previous_value'")

    @previous_value.setter
    def previous_value(self, val):
        self._previous_value_validator.validate_type_only(val)
        self._previous_value_value = val
        self._previous_value_present = True

    @previous_value.deleter
    def previous_value(self):
        self._previous_value_value = None
        self._previous_value_present = False

    @property
    def new_value(self):
        """
        New Viewer Info policy.

        :rtype: PassPolicy
        """
        if self._new_value_present:
            return self._new_value_value
        else:
            raise AttributeError("missing required field 'new_value'")

    @new_value.setter
    def new_value(self, val):
        self._new_value_validator.validate_type_only(val)
        self._new_value_value = val
        self._new_value_present = True

    @new_value.deleter
    def new_value(self):
        self._new_value_value = None
        self._new_value_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ViewerInfoPolicyChangedDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ViewerInfoPolicyChangedDetails(previous_value={!r}, new_value={!r})'.format(
            self._previous_value_value,
            self._new_value_value,
        )

ViewerInfoPolicyChangedDetails_validator = bv.Struct(ViewerInfoPolicyChangedDetails)

class ViewerInfoPolicyChangedType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(ViewerInfoPolicyChangedType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'ViewerInfoPolicyChangedType(description={!r})'.format(
            self._description_value,
        )

ViewerInfoPolicyChangedType_validator = bv.Struct(ViewerInfoPolicyChangedType)

class WebDeviceSessionLogInfo(DeviceSessionLogInfo):
    """
    Information on active web sessions

    :ivar session_info: Web session unique id. Might be missing due to
        historical data gap.
    :ivar user_agent: Information on the hosting device.
    :ivar os: Information on the hosting operating system.
    :ivar browser: Information on the browser used for this web session.
    """

    __slots__ = [
        '_session_info_value',
        '_session_info_present',
        '_user_agent_value',
        '_user_agent_present',
        '_os_value',
        '_os_present',
        '_browser_value',
        '_browser_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 user_agent=None,
                 os=None,
                 browser=None,
                 ip_address=None,
                 created=None,
                 updated=None,
                 session_info=None):
        super(WebDeviceSessionLogInfo, self).__init__(ip_address,
                                                      created,
                                                      updated)
        self._session_info_value = None
        self._session_info_present = False
        self._user_agent_value = None
        self._user_agent_present = False
        self._os_value = None
        self._os_present = False
        self._browser_value = None
        self._browser_present = False
        if session_info is not None:
            self.session_info = session_info
        if user_agent is not None:
            self.user_agent = user_agent
        if os is not None:
            self.os = os
        if browser is not None:
            self.browser = browser

    @property
    def session_info(self):
        """
        Web session unique id. Might be missing due to historical data gap.

        :rtype: WebSessionLogInfo
        """
        if self._session_info_present:
            return self._session_info_value
        else:
            return None

    @session_info.setter
    def session_info(self, val):
        if val is None:
            del self.session_info
            return
        self._session_info_validator.validate_type_only(val)
        self._session_info_value = val
        self._session_info_present = True

    @session_info.deleter
    def session_info(self):
        self._session_info_value = None
        self._session_info_present = False

    @property
    def user_agent(self):
        """
        Information on the hosting device.

        :rtype: str
        """
        if self._user_agent_present:
            return self._user_agent_value
        else:
            raise AttributeError("missing required field 'user_agent'")

    @user_agent.setter
    def user_agent(self, val):
        val = self._user_agent_validator.validate(val)
        self._user_agent_value = val
        self._user_agent_present = True

    @user_agent.deleter
    def user_agent(self):
        self._user_agent_value = None
        self._user_agent_present = False

    @property
    def os(self):
        """
        Information on the hosting operating system.

        :rtype: str
        """
        if self._os_present:
            return self._os_value
        else:
            raise AttributeError("missing required field 'os'")

    @os.setter
    def os(self, val):
        val = self._os_validator.validate(val)
        self._os_value = val
        self._os_present = True

    @os.deleter
    def os(self):
        self._os_value = None
        self._os_present = False

    @property
    def browser(self):
        """
        Information on the browser used for this web session.

        :rtype: str
        """
        if self._browser_present:
            return self._browser_value
        else:
            raise AttributeError("missing required field 'browser'")

    @browser.setter
    def browser(self, val):
        val = self._browser_validator.validate(val)
        self._browser_value = val
        self._browser_present = True

    @browser.deleter
    def browser(self):
        self._browser_value = None
        self._browser_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(WebDeviceSessionLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'WebDeviceSessionLogInfo(user_agent={!r}, os={!r}, browser={!r}, ip_address={!r}, created={!r}, updated={!r}, session_info={!r})'.format(
            self._user_agent_value,
            self._os_value,
            self._browser_value,
            self._ip_address_value,
            self._created_value,
            self._updated_value,
            self._session_info_value,
        )

WebDeviceSessionLogInfo_validator = bv.Struct(WebDeviceSessionLogInfo)

class WebSessionLogInfo(SessionLogInfo):
    """
    Web session.
    """

    __slots__ = [
    ]

    _has_required_fields = False

    def __init__(self,
                 session_id=None):
        super(WebSessionLogInfo, self).__init__(session_id)

    def _process_custom_annotations(self, annotation_type, processor):
        super(WebSessionLogInfo, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'WebSessionLogInfo(session_id={!r})'.format(
            self._session_id_value,
        )

WebSessionLogInfo_validator = bv.Struct(WebSessionLogInfo)

class WebSessionsChangeFixedLengthPolicyDetails(bb.Struct):
    """
    Changed how long members can stay signed in to Dropbox.com.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(WebSessionsChangeFixedLengthPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'WebSessionsChangeFixedLengthPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

WebSessionsChangeFixedLengthPolicyDetails_validator = bv.Struct(WebSessionsChangeFixedLengthPolicyDetails)

class WebSessionsChangeFixedLengthPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(WebSessionsChangeFixedLengthPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'WebSessionsChangeFixedLengthPolicyType(description={!r})'.format(
            self._description_value,
        )

WebSessionsChangeFixedLengthPolicyType_validator = bv.Struct(WebSessionsChangeFixedLengthPolicyType)

class WebSessionsChangeIdleLengthPolicyDetails(bb.Struct):
    """
    Changed how long team members can be idle while signed in to Dropbox.com.

    :ivar 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 _process_custom_annotations(self, annotation_type, processor):
        super(WebSessionsChangeIdleLengthPolicyDetails, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'WebSessionsChangeIdleLengthPolicyDetails(new_value={!r}, previous_value={!r})'.format(
            self._new_value_value,
            self._previous_value_value,
        )

WebSessionsChangeIdleLengthPolicyDetails_validator = bv.Struct(WebSessionsChangeIdleLengthPolicyDetails)

class WebSessionsChangeIdleLengthPolicyType(bb.Struct):

    __slots__ = [
        '_description_value',
        '_description_present',
    ]

    _has_required_fields = True

    def __init__(self,
                 description=None):
        self._description_value = None
        self._description_present = False
        if description is not None:
            self.description = description

    @property
    def description(self):
        """
        :rtype: str
        """
        if self._description_present:
            return self._description_value
        else:
            raise AttributeError("missing required field 'description'")

    @description.setter
    def description(self, val):
        val = self._description_validator.validate(val)
        self._description_value = val
        self._description_present = True

    @description.deleter
    def description(self):
        self._description_value = None
        self._description_present = False

    def _process_custom_annotations(self, annotation_type, processor):
        super(WebSessionsChangeIdleLengthPolicyType, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'WebSessionsChangeIdleLengthPolicyType(description={!r})'.format(
            self._description_value,
        )

WebSessionsChangeIdleLengthPolicyType_validator = bv.Struct(WebSessionsChangeIdleLengthPolicyType)

class WebSessionsFixedLengthPolicy(bb.Union):
    """
    Web sessions fixed length policy.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar DurationLogInfo 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 _process_custom_annotations(self, annotation_type, processor):
        super(WebSessionsFixedLengthPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'WebSessionsFixedLengthPolicy(%r, %r)' % (self._tag, self._value)

WebSessionsFixedLengthPolicy_validator = bv.Union(WebSessionsFixedLengthPolicy)

class WebSessionsIdleLengthPolicy(bb.Union):
    """
    Web sessions idle length policy.

    This class acts as a tagged union. Only one of the ``is_*`` methods will
    return true. To get the associated value of a tag (if one exists), use the
    corresponding ``get_*`` method.

    :ivar DurationLogInfo 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 _process_custom_annotations(self, annotation_type, processor):
        super(WebSessionsIdleLengthPolicy, self)._process_custom_annotations(annotation_type, processor)

    def __repr__(self):
        return 'WebSessionsIdleLengthPolicy(%r, %r)' % (self._tag, self._value)

WebSessionsIdleLengthPolicy_validator = bv.Union(WebSessionsIdleLengthPolicy)

AppId_validator = bv.String()
EmailAddress_validator = bv.String(max_length=255)
FilePath_validator = bv.String()
IpAddress_validator = bv.String()
NamespaceId_validator = bv.String()
RequestId_validator = bv.String()
TeamEventList_validator = bv.List(TeamEvent_validator)
AccessMethodLogInfo._end_user_validator = SessionLogInfo_validator
AccessMethodLogInfo._sign_in_as_validator = WebSessionLogInfo_validator
AccessMethodLogInfo._content_manager_validator = WebSessionLogInfo_validator
AccessMethodLogInfo._admin_console_validator = WebSessionLogInfo_validator
AccessMethodLogInfo._api_validator = ApiSessionLogInfo_validator
AccessMethodLogInfo._other_validator = bv.Void()
AccessMethodLogInfo._tagmap = {
    'end_user': AccessMethodLogInfo._end_user_validator,
    'sign_in_as': AccessMethodLogInfo._sign_in_as_validator,
    'content_manager': AccessMethodLogInfo._content_manager_validator,
    'admin_console': AccessMethodLogInfo._admin_console_validator,
    'api': AccessMethodLogInfo._api_validator,
    'other': AccessMethodLogInfo._other_validator,
}

AccessMethodLogInfo.other = AccessMethodLogInfo('other')

AccountCaptureAvailability._unavailable_validator = bv.Void()
AccountCaptureAvailability._available_validator = bv.Void()
AccountCaptureAvailability._other_validator = bv.Void()
AccountCaptureAvailability._tagmap = {
    'unavailable': AccountCaptureAvailability._unavailable_validator,
    'available': AccountCaptureAvailability._available_validator,
    'other': AccountCaptureAvailability._other_validator,
}

AccountCaptureAvailability.unavailable = AccountCaptureAvailability('unavailable')
AccountCaptureAvailability.available = AccountCaptureAvailability('available')
AccountCaptureAvailability.other = AccountCaptureAvailability('other')

AccountCaptureChangeAvailabilityDetails._new_value_validator = AccountCaptureAvailability_validator
AccountCaptureChangeAvailabilityDetails._previous_value_validator = bv.Nullable(AccountCaptureAvailability_validator)
AccountCaptureChangeAvailabilityDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
AccountCaptureChangeAvailabilityDetails._all_fields_ = [
    ('new_value', AccountCaptureChangeAvailabilityDetails._new_value_validator),
    ('previous_value', AccountCaptureChangeAvailabilityDetails._previous_value_validator),
]

AccountCaptureChangeAvailabilityType._description_validator = bv.String()
AccountCaptureChangeAvailabilityType._all_field_names_ = set(['description'])
AccountCaptureChangeAvailabilityType._all_fields_ = [('description', AccountCaptureChangeAvailabilityType._description_validator)]

AccountCaptureChangePolicyDetails._new_value_validator = AccountCapturePolicy_validator
AccountCaptureChangePolicyDetails._previous_value_validator = bv.Nullable(AccountCapturePolicy_validator)
AccountCaptureChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
AccountCaptureChangePolicyDetails._all_fields_ = [
    ('new_value', AccountCaptureChangePolicyDetails._new_value_validator),
    ('previous_value', AccountCaptureChangePolicyDetails._previous_value_validator),
]

AccountCaptureChangePolicyType._description_validator = bv.String()
AccountCaptureChangePolicyType._all_field_names_ = set(['description'])
AccountCaptureChangePolicyType._all_fields_ = [('description', AccountCaptureChangePolicyType._description_validator)]

AccountCaptureMigrateAccountDetails._domain_name_validator = bv.String()
AccountCaptureMigrateAccountDetails._all_field_names_ = set(['domain_name'])
AccountCaptureMigrateAccountDetails._all_fields_ = [('domain_name', AccountCaptureMigrateAccountDetails._domain_name_validator)]

AccountCaptureMigrateAccountType._description_validator = bv.String()
AccountCaptureMigrateAccountType._all_field_names_ = set(['description'])
AccountCaptureMigrateAccountType._all_fields_ = [('description', AccountCaptureMigrateAccountType._description_validator)]

AccountCaptureNotificationEmailsSentDetails._domain_name_validator = bv.String()
AccountCaptureNotificationEmailsSentDetails._all_field_names_ = set(['domain_name'])
AccountCaptureNotificationEmailsSentDetails._all_fields_ = [('domain_name', AccountCaptureNotificationEmailsSentDetails._domain_name_validator)]

AccountCaptureNotificationEmailsSentType._description_validator = bv.String()
AccountCaptureNotificationEmailsSentType._all_field_names_ = set(['description'])
AccountCaptureNotificationEmailsSentType._all_fields_ = [('description', AccountCaptureNotificationEmailsSentType._description_validator)]

AccountCapturePolicy._disabled_validator = bv.Void()
AccountCapturePolicy._invited_users_validator = bv.Void()
AccountCapturePolicy._all_users_validator = bv.Void()
AccountCapturePolicy._other_validator = bv.Void()
AccountCapturePolicy._tagmap = {
    'disabled': AccountCapturePolicy._disabled_validator,
    'invited_users': AccountCapturePolicy._invited_users_validator,
    'all_users': AccountCapturePolicy._all_users_validator,
    'other': AccountCapturePolicy._other_validator,
}

AccountCapturePolicy.disabled = AccountCapturePolicy('disabled')
AccountCapturePolicy.invited_users = AccountCapturePolicy('invited_users')
AccountCapturePolicy.all_users = AccountCapturePolicy('all_users')
AccountCapturePolicy.other = AccountCapturePolicy('other')

AccountCaptureRelinquishAccountDetails._domain_name_validator = bv.String()
AccountCaptureRelinquishAccountDetails._all_field_names_ = set(['domain_name'])
AccountCaptureRelinquishAccountDetails._all_fields_ = [('domain_name', AccountCaptureRelinquishAccountDetails._domain_name_validator)]

AccountCaptureRelinquishAccountType._description_validator = bv.String()
AccountCaptureRelinquishAccountType._all_field_names_ = set(['description'])
AccountCaptureRelinquishAccountType._all_fields_ = [('description', AccountCaptureRelinquishAccountType._description_validator)]

ActionDetails._team_join_details_validator = JoinTeamDetails_validator
ActionDetails._remove_action_validator = MemberRemoveActionType_validator
ActionDetails._other_validator = bv.Void()
ActionDetails._tagmap = {
    'team_join_details': ActionDetails._team_join_details_validator,
    'remove_action': ActionDetails._remove_action_validator,
    'other': ActionDetails._other_validator,
}

ActionDetails.other = ActionDetails('other')

ActorLogInfo._user_validator = UserLogInfo_validator
ActorLogInfo._admin_validator = UserLogInfo_validator
ActorLogInfo._app_validator = AppLogInfo_validator
ActorLogInfo._reseller_validator = ResellerLogInfo_validator
ActorLogInfo._dropbox_validator = bv.Void()
ActorLogInfo._anonymous_validator = bv.Void()
ActorLogInfo._other_validator = bv.Void()
ActorLogInfo._tagmap = {
    'user': ActorLogInfo._user_validator,
    'admin': ActorLogInfo._admin_validator,
    'app': ActorLogInfo._app_validator,
    'reseller': ActorLogInfo._reseller_validator,
    'dropbox': ActorLogInfo._dropbox_validator,
    'anonymous': ActorLogInfo._anonymous_validator,
    'other': ActorLogInfo._other_validator,
}

ActorLogInfo.dropbox = ActorLogInfo('dropbox')
ActorLogInfo.anonymous = ActorLogInfo('anonymous')
ActorLogInfo.other = ActorLogInfo('other')

AdminRole._team_admin_validator = bv.Void()
AdminRole._user_management_admin_validator = bv.Void()
AdminRole._support_admin_validator = bv.Void()
AdminRole._limited_admin_validator = bv.Void()
AdminRole._member_only_validator = bv.Void()
AdminRole._other_validator = bv.Void()
AdminRole._tagmap = {
    'team_admin': AdminRole._team_admin_validator,
    'user_management_admin': AdminRole._user_management_admin_validator,
    'support_admin': AdminRole._support_admin_validator,
    'limited_admin': AdminRole._limited_admin_validator,
    'member_only': AdminRole._member_only_validator,
    'other': AdminRole._other_validator,
}

AdminRole.team_admin = AdminRole('team_admin')
AdminRole.user_management_admin = AdminRole('user_management_admin')
AdminRole.support_admin = AdminRole('support_admin')
AdminRole.limited_admin = AdminRole('limited_admin')
AdminRole.member_only = AdminRole('member_only')
AdminRole.other = AdminRole('other')

AllowDownloadDisabledDetails._all_field_names_ = set([])
AllowDownloadDisabledDetails._all_fields_ = []

AllowDownloadDisabledType._description_validator = bv.String()
AllowDownloadDisabledType._all_field_names_ = set(['description'])
AllowDownloadDisabledType._all_fields_ = [('description', AllowDownloadDisabledType._description_validator)]

AllowDownloadEnabledDetails._all_field_names_ = set([])
AllowDownloadEnabledDetails._all_fields_ = []

AllowDownloadEnabledType._description_validator = bv.String()
AllowDownloadEnabledType._all_field_names_ = set(['description'])
AllowDownloadEnabledType._all_fields_ = [('description', AllowDownloadEnabledType._description_validator)]

ApiSessionLogInfo._request_id_validator = RequestId_validator
ApiSessionLogInfo._all_field_names_ = set(['request_id'])
ApiSessionLogInfo._all_fields_ = [('request_id', ApiSessionLogInfo._request_id_validator)]

AppLinkTeamDetails._app_info_validator = AppLogInfo_validator
AppLinkTeamDetails._all_field_names_ = set(['app_info'])
AppLinkTeamDetails._all_fields_ = [('app_info', AppLinkTeamDetails._app_info_validator)]

AppLinkTeamType._description_validator = bv.String()
AppLinkTeamType._all_field_names_ = set(['description'])
AppLinkTeamType._all_fields_ = [('description', AppLinkTeamType._description_validator)]

AppLinkUserDetails._app_info_validator = AppLogInfo_validator
AppLinkUserDetails._all_field_names_ = set(['app_info'])
AppLinkUserDetails._all_fields_ = [('app_info', AppLinkUserDetails._app_info_validator)]

AppLinkUserType._description_validator = bv.String()
AppLinkUserType._all_field_names_ = set(['description'])
AppLinkUserType._all_fields_ = [('description', AppLinkUserType._description_validator)]

AppLogInfo._app_id_validator = bv.Nullable(AppId_validator)
AppLogInfo._display_name_validator = bv.Nullable(bv.String())
AppLogInfo._field_names_ = set([
    'app_id',
    'display_name',
])
AppLogInfo._all_field_names_ = AppLogInfo._field_names_
AppLogInfo._fields_ = [
    ('app_id', AppLogInfo._app_id_validator),
    ('display_name', AppLogInfo._display_name_validator),
]
AppLogInfo._all_fields_ = AppLogInfo._fields_

AppLogInfo._tag_to_subtype_ = {
    (u'user_or_team_linked_app',): UserOrTeamLinkedAppLogInfo_validator,
    (u'user_linked_app',): UserLinkedAppLogInfo_validator,
    (u'team_linked_app',): TeamLinkedAppLogInfo_validator,
}
AppLogInfo._pytype_to_tag_and_subtype_ = {
    UserOrTeamLinkedAppLogInfo: ((u'user_or_team_linked_app',), UserOrTeamLinkedAppLogInfo_validator),
    UserLinkedAppLogInfo: ((u'user_linked_app',), UserLinkedAppLogInfo_validator),
    TeamLinkedAppLogInfo: ((u'team_linked_app',), TeamLinkedAppLogInfo_validator),
}
AppLogInfo._is_catch_all_ = True

AppUnlinkTeamDetails._app_info_validator = AppLogInfo_validator
AppUnlinkTeamDetails._all_field_names_ = set(['app_info'])
AppUnlinkTeamDetails._all_fields_ = [('app_info', AppUnlinkTeamDetails._app_info_validator)]

AppUnlinkTeamType._description_validator = bv.String()
AppUnlinkTeamType._all_field_names_ = set(['description'])
AppUnlinkTeamType._all_fields_ = [('description', AppUnlinkTeamType._description_validator)]

AppUnlinkUserDetails._app_info_validator = AppLogInfo_validator
AppUnlinkUserDetails._all_field_names_ = set(['app_info'])
AppUnlinkUserDetails._all_fields_ = [('app_info', AppUnlinkUserDetails._app_info_validator)]

AppUnlinkUserType._description_validator = bv.String()
AppUnlinkUserType._all_field_names_ = set(['description'])
AppUnlinkUserType._all_fields_ = [('description', AppUnlinkUserType._description_validator)]

AssetLogInfo._file_validator = FileLogInfo_validator
AssetLogInfo._folder_validator = FolderLogInfo_validator
AssetLogInfo._paper_document_validator = PaperDocumentLogInfo_validator
AssetLogInfo._paper_folder_validator = PaperFolderLogInfo_validator
AssetLogInfo._showcase_document_validator = ShowcaseDocumentLogInfo_validator
AssetLogInfo._other_validator = bv.Void()
AssetLogInfo._tagmap = {
    'file': AssetLogInfo._file_validator,
    'folder': AssetLogInfo._folder_validator,
    'paper_document': AssetLogInfo._paper_document_validator,
    'paper_folder': AssetLogInfo._paper_folder_validator,
    'showcase_document': AssetLogInfo._showcase_document_validator,
    'other': AssetLogInfo._other_validator,
}

AssetLogInfo.other = AssetLogInfo('other')

CameraUploadsPolicy._disabled_validator = bv.Void()
CameraUploadsPolicy._enabled_validator = bv.Void()
CameraUploadsPolicy._other_validator = bv.Void()
CameraUploadsPolicy._tagmap = {
    'disabled': CameraUploadsPolicy._disabled_validator,
    'enabled': CameraUploadsPolicy._enabled_validator,
    'other': CameraUploadsPolicy._other_validator,
}

CameraUploadsPolicy.disabled = CameraUploadsPolicy('disabled')
CameraUploadsPolicy.enabled = CameraUploadsPolicy('enabled')
CameraUploadsPolicy.other = CameraUploadsPolicy('other')

CameraUploadsPolicyChangedDetails._new_value_validator = CameraUploadsPolicy_validator
CameraUploadsPolicyChangedDetails._previous_value_validator = CameraUploadsPolicy_validator
CameraUploadsPolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
CameraUploadsPolicyChangedDetails._all_fields_ = [
    ('new_value', CameraUploadsPolicyChangedDetails._new_value_validator),
    ('previous_value', CameraUploadsPolicyChangedDetails._previous_value_validator),
]

CameraUploadsPolicyChangedType._description_validator = bv.String()
CameraUploadsPolicyChangedType._all_field_names_ = set(['description'])
CameraUploadsPolicyChangedType._all_fields_ = [('description', CameraUploadsPolicyChangedType._description_validator)]

Certificate._subject_validator = bv.String()
Certificate._issuer_validator = bv.String()
Certificate._issue_date_validator = bv.String()
Certificate._expiration_date_validator = bv.String()
Certificate._serial_number_validator = bv.String()
Certificate._sha1_fingerprint_validator = bv.String()
Certificate._common_name_validator = bv.Nullable(bv.String())
Certificate._all_field_names_ = set([
    'subject',
    'issuer',
    'issue_date',
    'expiration_date',
    'serial_number',
    'sha1_fingerprint',
    'common_name',
])
Certificate._all_fields_ = [
    ('subject', Certificate._subject_validator),
    ('issuer', Certificate._issuer_validator),
    ('issue_date', Certificate._issue_date_validator),
    ('expiration_date', Certificate._expiration_date_validator),
    ('serial_number', Certificate._serial_number_validator),
    ('sha1_fingerprint', Certificate._sha1_fingerprint_validator),
    ('common_name', Certificate._common_name_validator),
]

CollectionShareDetails._album_name_validator = bv.String()
CollectionShareDetails._all_field_names_ = set(['album_name'])
CollectionShareDetails._all_fields_ = [('album_name', CollectionShareDetails._album_name_validator)]

CollectionShareType._description_validator = bv.String()
CollectionShareType._all_field_names_ = set(['description'])
CollectionShareType._all_fields_ = [('description', CollectionShareType._description_validator)]

ContentPermanentDeletePolicy._disabled_validator = bv.Void()
ContentPermanentDeletePolicy._enabled_validator = bv.Void()
ContentPermanentDeletePolicy._other_validator = bv.Void()
ContentPermanentDeletePolicy._tagmap = {
    'disabled': ContentPermanentDeletePolicy._disabled_validator,
    'enabled': ContentPermanentDeletePolicy._enabled_validator,
    'other': ContentPermanentDeletePolicy._other_validator,
}

ContentPermanentDeletePolicy.disabled = ContentPermanentDeletePolicy('disabled')
ContentPermanentDeletePolicy.enabled = ContentPermanentDeletePolicy('enabled')
ContentPermanentDeletePolicy.other = ContentPermanentDeletePolicy('other')

ContextLogInfo._team_member_validator = TeamMemberLogInfo_validator
ContextLogInfo._non_team_member_validator = NonTeamMemberLogInfo_validator
ContextLogInfo._anonymous_validator = bv.Void()
ContextLogInfo._team_validator = bv.Void()
ContextLogInfo._trusted_non_team_member_validator = TrustedNonTeamMemberLogInfo_validator
ContextLogInfo._other_validator = bv.Void()
ContextLogInfo._tagmap = {
    'team_member': ContextLogInfo._team_member_validator,
    'non_team_member': ContextLogInfo._non_team_member_validator,
    'anonymous': ContextLogInfo._anonymous_validator,
    'team': ContextLogInfo._team_validator,
    'trusted_non_team_member': ContextLogInfo._trusted_non_team_member_validator,
    'other': ContextLogInfo._other_validator,
}

ContextLogInfo.anonymous = ContextLogInfo('anonymous')
ContextLogInfo.team = ContextLogInfo('team')
ContextLogInfo.other = ContextLogInfo('other')

CreateFolderDetails._all_field_names_ = set([])
CreateFolderDetails._all_fields_ = []

CreateFolderType._description_validator = bv.String()
CreateFolderType._all_field_names_ = set(['description'])
CreateFolderType._all_fields_ = [('description', CreateFolderType._description_validator)]

DataPlacementRestrictionChangePolicyDetails._previous_value_validator = PlacementRestriction_validator
DataPlacementRestrictionChangePolicyDetails._new_value_validator = PlacementRestriction_validator
DataPlacementRestrictionChangePolicyDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
DataPlacementRestrictionChangePolicyDetails._all_fields_ = [
    ('previous_value', DataPlacementRestrictionChangePolicyDetails._previous_value_validator),
    ('new_value', DataPlacementRestrictionChangePolicyDetails._new_value_validator),
]

DataPlacementRestrictionChangePolicyType._description_validator = bv.String()
DataPlacementRestrictionChangePolicyType._all_field_names_ = set(['description'])
DataPlacementRestrictionChangePolicyType._all_fields_ = [('description', DataPlacementRestrictionChangePolicyType._description_validator)]

DataPlacementRestrictionSatisfyPolicyDetails._placement_restriction_validator = PlacementRestriction_validator
DataPlacementRestrictionSatisfyPolicyDetails._all_field_names_ = set(['placement_restriction'])
DataPlacementRestrictionSatisfyPolicyDetails._all_fields_ = [('placement_restriction', DataPlacementRestrictionSatisfyPolicyDetails._placement_restriction_validator)]

DataPlacementRestrictionSatisfyPolicyType._description_validator = bv.String()
DataPlacementRestrictionSatisfyPolicyType._all_field_names_ = set(['description'])
DataPlacementRestrictionSatisfyPolicyType._all_fields_ = [('description', DataPlacementRestrictionSatisfyPolicyType._description_validator)]

DeviceSessionLogInfo._ip_address_validator = bv.Nullable(IpAddress_validator)
DeviceSessionLogInfo._created_validator = bv.Nullable(common.DropboxTimestamp_validator)
DeviceSessionLogInfo._updated_validator = bv.Nullable(common.DropboxTimestamp_validator)
DeviceSessionLogInfo._field_names_ = set([
    'ip_address',
    'created',
    'updated',
])
DeviceSessionLogInfo._all_field_names_ = DeviceSessionLogInfo._field_names_
DeviceSessionLogInfo._fields_ = [
    ('ip_address', DeviceSessionLogInfo._ip_address_validator),
    ('created', DeviceSessionLogInfo._created_validator),
    ('updated', DeviceSessionLogInfo._updated_validator),
]
DeviceSessionLogInfo._all_fields_ = DeviceSessionLogInfo._fields_

DeviceSessionLogInfo._tag_to_subtype_ = {
    (u'desktop_device_session',): DesktopDeviceSessionLogInfo_validator,
    (u'mobile_device_session',): MobileDeviceSessionLogInfo_validator,
    (u'web_device_session',): WebDeviceSessionLogInfo_validator,
    (u'legacy_device_session',): LegacyDeviceSessionLogInfo_validator,
}
DeviceSessionLogInfo._pytype_to_tag_and_subtype_ = {
    DesktopDeviceSessionLogInfo: ((u'desktop_device_session',), DesktopDeviceSessionLogInfo_validator),
    MobileDeviceSessionLogInfo: ((u'mobile_device_session',), MobileDeviceSessionLogInfo_validator),
    WebDeviceSessionLogInfo: ((u'web_device_session',), WebDeviceSessionLogInfo_validator),
    LegacyDeviceSessionLogInfo: ((u'legacy_device_session',), LegacyDeviceSessionLogInfo_validator),
}
DeviceSessionLogInfo._is_catch_all_ = True

DesktopDeviceSessionLogInfo._session_info_validator = bv.Nullable(DesktopSessionLogInfo_validator)
DesktopDeviceSessionLogInfo._host_name_validator = bv.String()
DesktopDeviceSessionLogInfo._client_type_validator = team.DesktopPlatform_validator
DesktopDeviceSessionLogInfo._client_version_validator = bv.Nullable(bv.String())
DesktopDeviceSessionLogInfo._platform_validator = bv.String()
DesktopDeviceSessionLogInfo._is_delete_on_unlink_supported_validator = bv.Boolean()
DesktopDeviceSessionLogInfo._field_names_ = set([
    'session_info',
    'host_name',
    'client_type',
    'client_version',
    'platform',
    'is_delete_on_unlink_supported',
])
DesktopDeviceSessionLogInfo._all_field_names_ = DeviceSessionLogInfo._all_field_names_.union(DesktopDeviceSessionLogInfo._field_names_)
DesktopDeviceSessionLogInfo._fields_ = [
    ('session_info', DesktopDeviceSessionLogInfo._session_info_validator),
    ('host_name', DesktopDeviceSessionLogInfo._host_name_validator),
    ('client_type', DesktopDeviceSessionLogInfo._client_type_validator),
    ('client_version', DesktopDeviceSessionLogInfo._client_version_validator),
    ('platform', DesktopDeviceSessionLogInfo._platform_validator),
    ('is_delete_on_unlink_supported', DesktopDeviceSessionLogInfo._is_delete_on_unlink_supported_validator),
]
DesktopDeviceSessionLogInfo._all_fields_ = DeviceSessionLogInfo._all_fields_ + DesktopDeviceSessionLogInfo._fields_

SessionLogInfo._session_id_validator = bv.Nullable(common.SessionId_validator)
SessionLogInfo._field_names_ = set(['session_id'])
SessionLogInfo._all_field_names_ = SessionLogInfo._field_names_
SessionLogInfo._fields_ = [('session_id', SessionLogInfo._session_id_validator)]
SessionLogInfo._all_fields_ = SessionLogInfo._fields_

SessionLogInfo._tag_to_subtype_ = {
    (u'web',): WebSessionLogInfo_validator,
    (u'desktop',): DesktopSessionLogInfo_validator,
    (u'mobile',): MobileSessionLogInfo_validator,
}
SessionLogInfo._pytype_to_tag_and_subtype_ = {
    WebSessionLogInfo: ((u'web',), WebSessionLogInfo_validator),
    DesktopSessionLogInfo: ((u'desktop',), DesktopSessionLogInfo_validator),
    MobileSessionLogInfo: ((u'mobile',), MobileSessionLogInfo_validator),
}
SessionLogInfo._is_catch_all_ = True

DesktopSessionLogInfo._field_names_ = set([])
DesktopSessionLogInfo._all_field_names_ = SessionLogInfo._all_field_names_.union(DesktopSessionLogInfo._field_names_)
DesktopSessionLogInfo._fields_ = []
DesktopSessionLogInfo._all_fields_ = SessionLogInfo._all_fields_ + DesktopSessionLogInfo._fields_

DeviceApprovalsChangeDesktopPolicyDetails._new_value_validator = bv.Nullable(DeviceApprovalsPolicy_validator)
DeviceApprovalsChangeDesktopPolicyDetails._previous_value_validator = bv.Nullable(DeviceApprovalsPolicy_validator)
DeviceApprovalsChangeDesktopPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
DeviceApprovalsChangeDesktopPolicyDetails._all_fields_ = [
    ('new_value', DeviceApprovalsChangeDesktopPolicyDetails._new_value_validator),
    ('previous_value', DeviceApprovalsChangeDesktopPolicyDetails._previous_value_validator),
]

DeviceApprovalsChangeDesktopPolicyType._description_validator = bv.String()
DeviceApprovalsChangeDesktopPolicyType._all_field_names_ = set(['description'])
DeviceApprovalsChangeDesktopPolicyType._all_fields_ = [('description', DeviceApprovalsChangeDesktopPolicyType._description_validator)]

DeviceApprovalsChangeMobilePolicyDetails._new_value_validator = bv.Nullable(DeviceApprovalsPolicy_validator)
DeviceApprovalsChangeMobilePolicyDetails._previous_value_validator = bv.Nullable(DeviceApprovalsPolicy_validator)
DeviceApprovalsChangeMobilePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
DeviceApprovalsChangeMobilePolicyDetails._all_fields_ = [
    ('new_value', DeviceApprovalsChangeMobilePolicyDetails._new_value_validator),
    ('previous_value', DeviceApprovalsChangeMobilePolicyDetails._previous_value_validator),
]

DeviceApprovalsChangeMobilePolicyType._description_validator = bv.String()
DeviceApprovalsChangeMobilePolicyType._all_field_names_ = set(['description'])
DeviceApprovalsChangeMobilePolicyType._all_fields_ = [('description', DeviceApprovalsChangeMobilePolicyType._description_validator)]

DeviceApprovalsChangeOverageActionDetails._new_value_validator = bv.Nullable(team_policies.RolloutMethod_validator)
DeviceApprovalsChangeOverageActionDetails._previous_value_validator = bv.Nullable(team_policies.RolloutMethod_validator)
DeviceApprovalsChangeOverageActionDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
DeviceApprovalsChangeOverageActionDetails._all_fields_ = [
    ('new_value', DeviceApprovalsChangeOverageActionDetails._new_value_validator),
    ('previous_value', DeviceApprovalsChangeOverageActionDetails._previous_value_validator),
]

DeviceApprovalsChangeOverageActionType._description_validator = bv.String()
DeviceApprovalsChangeOverageActionType._all_field_names_ = set(['description'])
DeviceApprovalsChangeOverageActionType._all_fields_ = [('description', DeviceApprovalsChangeOverageActionType._description_validator)]

DeviceApprovalsChangeUnlinkActionDetails._new_value_validator = bv.Nullable(DeviceUnlinkPolicy_validator)
DeviceApprovalsChangeUnlinkActionDetails._previous_value_validator = bv.Nullable(DeviceUnlinkPolicy_validator)
DeviceApprovalsChangeUnlinkActionDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
DeviceApprovalsChangeUnlinkActionDetails._all_fields_ = [
    ('new_value', DeviceApprovalsChangeUnlinkActionDetails._new_value_validator),
    ('previous_value', DeviceApprovalsChangeUnlinkActionDetails._previous_value_validator),
]

DeviceApprovalsChangeUnlinkActionType._description_validator = bv.String()
DeviceApprovalsChangeUnlinkActionType._all_field_names_ = set(['description'])
DeviceApprovalsChangeUnlinkActionType._all_fields_ = [('description', DeviceApprovalsChangeUnlinkActionType._description_validator)]

DeviceApprovalsPolicy._unlimited_validator = bv.Void()
DeviceApprovalsPolicy._limited_validator = bv.Void()
DeviceApprovalsPolicy._other_validator = bv.Void()
DeviceApprovalsPolicy._tagmap = {
    'unlimited': DeviceApprovalsPolicy._unlimited_validator,
    'limited': DeviceApprovalsPolicy._limited_validator,
    'other': DeviceApprovalsPolicy._other_validator,
}

DeviceApprovalsPolicy.unlimited = DeviceApprovalsPolicy('unlimited')
DeviceApprovalsPolicy.limited = DeviceApprovalsPolicy('limited')
DeviceApprovalsPolicy.other = DeviceApprovalsPolicy('other')

DeviceChangeIpDesktopDetails._device_session_info_validator = DeviceSessionLogInfo_validator
DeviceChangeIpDesktopDetails._all_field_names_ = set(['device_session_info'])
DeviceChangeIpDesktopDetails._all_fields_ = [('device_session_info', DeviceChangeIpDesktopDetails._device_session_info_validator)]

DeviceChangeIpDesktopType._description_validator = bv.String()
DeviceChangeIpDesktopType._all_field_names_ = set(['description'])
DeviceChangeIpDesktopType._all_fields_ = [('description', DeviceChangeIpDesktopType._description_validator)]

DeviceChangeIpMobileDetails._device_session_info_validator = bv.Nullable(DeviceSessionLogInfo_validator)
DeviceChangeIpMobileDetails._all_field_names_ = set(['device_session_info'])
DeviceChangeIpMobileDetails._all_fields_ = [('device_session_info', DeviceChangeIpMobileDetails._device_session_info_validator)]

DeviceChangeIpMobileType._description_validator = bv.String()
DeviceChangeIpMobileType._all_field_names_ = set(['description'])
DeviceChangeIpMobileType._all_fields_ = [('description', DeviceChangeIpMobileType._description_validator)]

DeviceChangeIpWebDetails._user_agent_validator = bv.String()
DeviceChangeIpWebDetails._all_field_names_ = set(['user_agent'])
DeviceChangeIpWebDetails._all_fields_ = [('user_agent', DeviceChangeIpWebDetails._user_agent_validator)]

DeviceChangeIpWebType._description_validator = bv.String()
DeviceChangeIpWebType._all_field_names_ = set(['description'])
DeviceChangeIpWebType._all_fields_ = [('description', DeviceChangeIpWebType._description_validator)]

DeviceDeleteOnUnlinkFailDetails._session_info_validator = bv.Nullable(SessionLogInfo_validator)
DeviceDeleteOnUnlinkFailDetails._display_name_validator = bv.Nullable(bv.String())
DeviceDeleteOnUnlinkFailDetails._num_failures_validator = bv.Int64()
DeviceDeleteOnUnlinkFailDetails._all_field_names_ = set([
    'session_info',
    'display_name',
    'num_failures',
])
DeviceDeleteOnUnlinkFailDetails._all_fields_ = [
    ('session_info', DeviceDeleteOnUnlinkFailDetails._session_info_validator),
    ('display_name', DeviceDeleteOnUnlinkFailDetails._display_name_validator),
    ('num_failures', DeviceDeleteOnUnlinkFailDetails._num_failures_validator),
]

DeviceDeleteOnUnlinkFailType._description_validator = bv.String()
DeviceDeleteOnUnlinkFailType._all_field_names_ = set(['description'])
DeviceDeleteOnUnlinkFailType._all_fields_ = [('description', DeviceDeleteOnUnlinkFailType._description_validator)]

DeviceDeleteOnUnlinkSuccessDetails._session_info_validator = bv.Nullable(SessionLogInfo_validator)
DeviceDeleteOnUnlinkSuccessDetails._display_name_validator = bv.Nullable(bv.String())
DeviceDeleteOnUnlinkSuccessDetails._all_field_names_ = set([
    'session_info',
    'display_name',
])
DeviceDeleteOnUnlinkSuccessDetails._all_fields_ = [
    ('session_info', DeviceDeleteOnUnlinkSuccessDetails._session_info_validator),
    ('display_name', DeviceDeleteOnUnlinkSuccessDetails._display_name_validator),
]

DeviceDeleteOnUnlinkSuccessType._description_validator = bv.String()
DeviceDeleteOnUnlinkSuccessType._all_field_names_ = set(['description'])
DeviceDeleteOnUnlinkSuccessType._all_fields_ = [('description', DeviceDeleteOnUnlinkSuccessType._description_validator)]

DeviceLinkFailDetails._ip_address_validator = bv.Nullable(IpAddress_validator)
DeviceLinkFailDetails._device_type_validator = DeviceType_validator
DeviceLinkFailDetails._all_field_names_ = set([
    'ip_address',
    'device_type',
])
DeviceLinkFailDetails._all_fields_ = [
    ('ip_address', DeviceLinkFailDetails._ip_address_validator),
    ('device_type', DeviceLinkFailDetails._device_type_validator),
]

DeviceLinkFailType._description_validator = bv.String()
DeviceLinkFailType._all_field_names_ = set(['description'])
DeviceLinkFailType._all_fields_ = [('description', DeviceLinkFailType._description_validator)]

DeviceLinkSuccessDetails._device_session_info_validator = bv.Nullable(DeviceSessionLogInfo_validator)
DeviceLinkSuccessDetails._all_field_names_ = set(['device_session_info'])
DeviceLinkSuccessDetails._all_fields_ = [('device_session_info', DeviceLinkSuccessDetails._device_session_info_validator)]

DeviceLinkSuccessType._description_validator = bv.String()
DeviceLinkSuccessType._all_field_names_ = set(['description'])
DeviceLinkSuccessType._all_fields_ = [('description', DeviceLinkSuccessType._description_validator)]

DeviceManagementDisabledDetails._all_field_names_ = set([])
DeviceManagementDisabledDetails._all_fields_ = []

DeviceManagementDisabledType._description_validator = bv.String()
DeviceManagementDisabledType._all_field_names_ = set(['description'])
DeviceManagementDisabledType._all_fields_ = [('description', DeviceManagementDisabledType._description_validator)]

DeviceManagementEnabledDetails._all_field_names_ = set([])
DeviceManagementEnabledDetails._all_fields_ = []

DeviceManagementEnabledType._description_validator = bv.String()
DeviceManagementEnabledType._all_field_names_ = set(['description'])
DeviceManagementEnabledType._all_fields_ = [('description', DeviceManagementEnabledType._description_validator)]

DeviceType._desktop_validator = bv.Void()
DeviceType._mobile_validator = bv.Void()
DeviceType._other_validator = bv.Void()
DeviceType._tagmap = {
    'desktop': DeviceType._desktop_validator,
    'mobile': DeviceType._mobile_validator,
    'other': DeviceType._other_validator,
}

DeviceType.desktop = DeviceType('desktop')
DeviceType.mobile = DeviceType('mobile')
DeviceType.other = DeviceType('other')

DeviceUnlinkDetails._session_info_validator = bv.Nullable(SessionLogInfo_validator)
DeviceUnlinkDetails._display_name_validator = bv.Nullable(bv.String())
DeviceUnlinkDetails._delete_data_validator = bv.Boolean()
DeviceUnlinkDetails._all_field_names_ = set([
    'session_info',
    'display_name',
    'delete_data',
])
DeviceUnlinkDetails._all_fields_ = [
    ('session_info', DeviceUnlinkDetails._session_info_validator),
    ('display_name', DeviceUnlinkDetails._display_name_validator),
    ('delete_data', DeviceUnlinkDetails._delete_data_validator),
]

DeviceUnlinkPolicy._remove_validator = bv.Void()
DeviceUnlinkPolicy._keep_validator = bv.Void()
DeviceUnlinkPolicy._other_validator = bv.Void()
DeviceUnlinkPolicy._tagmap = {
    'remove': DeviceUnlinkPolicy._remove_validator,
    'keep': DeviceUnlinkPolicy._keep_validator,
    'other': DeviceUnlinkPolicy._other_validator,
}

DeviceUnlinkPolicy.remove = DeviceUnlinkPolicy('remove')
DeviceUnlinkPolicy.keep = DeviceUnlinkPolicy('keep')
DeviceUnlinkPolicy.other = DeviceUnlinkPolicy('other')

DeviceUnlinkType._description_validator = bv.String()
DeviceUnlinkType._all_field_names_ = set(['description'])
DeviceUnlinkType._all_fields_ = [('description', DeviceUnlinkType._description_validator)]

DirectoryRestrictionsAddMembersDetails._all_field_names_ = set([])
DirectoryRestrictionsAddMembersDetails._all_fields_ = []

DirectoryRestrictionsAddMembersType._description_validator = bv.String()
DirectoryRestrictionsAddMembersType._all_field_names_ = set(['description'])
DirectoryRestrictionsAddMembersType._all_fields_ = [('description', DirectoryRestrictionsAddMembersType._description_validator)]

DirectoryRestrictionsRemoveMembersDetails._all_field_names_ = set([])
DirectoryRestrictionsRemoveMembersDetails._all_fields_ = []

DirectoryRestrictionsRemoveMembersType._description_validator = bv.String()
DirectoryRestrictionsRemoveMembersType._all_field_names_ = set(['description'])
DirectoryRestrictionsRemoveMembersType._all_fields_ = [('description', DirectoryRestrictionsRemoveMembersType._description_validator)]

DisabledDomainInvitesDetails._all_field_names_ = set([])
DisabledDomainInvitesDetails._all_fields_ = []

DisabledDomainInvitesType._description_validator = bv.String()
DisabledDomainInvitesType._all_field_names_ = set(['description'])
DisabledDomainInvitesType._all_fields_ = [('description', DisabledDomainInvitesType._description_validator)]

DomainInvitesApproveRequestToJoinTeamDetails._all_field_names_ = set([])
DomainInvitesApproveRequestToJoinTeamDetails._all_fields_ = []

DomainInvitesApproveRequestToJoinTeamType._description_validator = bv.String()
DomainInvitesApproveRequestToJoinTeamType._all_field_names_ = set(['description'])
DomainInvitesApproveRequestToJoinTeamType._all_fields_ = [('description', DomainInvitesApproveRequestToJoinTeamType._description_validator)]

DomainInvitesDeclineRequestToJoinTeamDetails._all_field_names_ = set([])
DomainInvitesDeclineRequestToJoinTeamDetails._all_fields_ = []

DomainInvitesDeclineRequestToJoinTeamType._description_validator = bv.String()
DomainInvitesDeclineRequestToJoinTeamType._all_field_names_ = set(['description'])
DomainInvitesDeclineRequestToJoinTeamType._all_fields_ = [('description', DomainInvitesDeclineRequestToJoinTeamType._description_validator)]

DomainInvitesEmailExistingUsersDetails._domain_name_validator = bv.String()
DomainInvitesEmailExistingUsersDetails._num_recipients_validator = bv.UInt64()
DomainInvitesEmailExistingUsersDetails._all_field_names_ = set([
    'domain_name',
    'num_recipients',
])
DomainInvitesEmailExistingUsersDetails._all_fields_ = [
    ('domain_name', DomainInvitesEmailExistingUsersDetails._domain_name_validator),
    ('num_recipients', DomainInvitesEmailExistingUsersDetails._num_recipients_validator),
]

DomainInvitesEmailExistingUsersType._description_validator = bv.String()
DomainInvitesEmailExistingUsersType._all_field_names_ = set(['description'])
DomainInvitesEmailExistingUsersType._all_fields_ = [('description', DomainInvitesEmailExistingUsersType._description_validator)]

DomainInvitesRequestToJoinTeamDetails._all_field_names_ = set([])
DomainInvitesRequestToJoinTeamDetails._all_fields_ = []

DomainInvitesRequestToJoinTeamType._description_validator = bv.String()
DomainInvitesRequestToJoinTeamType._all_field_names_ = set(['description'])
DomainInvitesRequestToJoinTeamType._all_fields_ = [('description', DomainInvitesRequestToJoinTeamType._description_validator)]

DomainInvitesSetInviteNewUserPrefToNoDetails._all_field_names_ = set([])
DomainInvitesSetInviteNewUserPrefToNoDetails._all_fields_ = []

DomainInvitesSetInviteNewUserPrefToNoType._description_validator = bv.String()
DomainInvitesSetInviteNewUserPrefToNoType._all_field_names_ = set(['description'])
DomainInvitesSetInviteNewUserPrefToNoType._all_fields_ = [('description', DomainInvitesSetInviteNewUserPrefToNoType._description_validator)]

DomainInvitesSetInviteNewUserPrefToYesDetails._all_field_names_ = set([])
DomainInvitesSetInviteNewUserPrefToYesDetails._all_fields_ = []

DomainInvitesSetInviteNewUserPrefToYesType._description_validator = bv.String()
DomainInvitesSetInviteNewUserPrefToYesType._all_field_names_ = set(['description'])
DomainInvitesSetInviteNewUserPrefToYesType._all_fields_ = [('description', DomainInvitesSetInviteNewUserPrefToYesType._description_validator)]

DomainVerificationAddDomainFailDetails._domain_name_validator = bv.String()
DomainVerificationAddDomainFailDetails._verification_method_validator = bv.Nullable(bv.String())
DomainVerificationAddDomainFailDetails._all_field_names_ = set([
    'domain_name',
    'verification_method',
])
DomainVerificationAddDomainFailDetails._all_fields_ = [
    ('domain_name', DomainVerificationAddDomainFailDetails._domain_name_validator),
    ('verification_method', DomainVerificationAddDomainFailDetails._verification_method_validator),
]

DomainVerificationAddDomainFailType._description_validator = bv.String()
DomainVerificationAddDomainFailType._all_field_names_ = set(['description'])
DomainVerificationAddDomainFailType._all_fields_ = [('description', DomainVerificationAddDomainFailType._description_validator)]

DomainVerificationAddDomainSuccessDetails._domain_names_validator = bv.List(bv.String())
DomainVerificationAddDomainSuccessDetails._verification_method_validator = bv.Nullable(bv.String())
DomainVerificationAddDomainSuccessDetails._all_field_names_ = set([
    'domain_names',
    'verification_method',
])
DomainVerificationAddDomainSuccessDetails._all_fields_ = [
    ('domain_names', DomainVerificationAddDomainSuccessDetails._domain_names_validator),
    ('verification_method', DomainVerificationAddDomainSuccessDetails._verification_method_validator),
]

DomainVerificationAddDomainSuccessType._description_validator = bv.String()
DomainVerificationAddDomainSuccessType._all_field_names_ = set(['description'])
DomainVerificationAddDomainSuccessType._all_fields_ = [('description', DomainVerificationAddDomainSuccessType._description_validator)]

DomainVerificationRemoveDomainDetails._domain_names_validator = bv.List(bv.String())
DomainVerificationRemoveDomainDetails._all_field_names_ = set(['domain_names'])
DomainVerificationRemoveDomainDetails._all_fields_ = [('domain_names', DomainVerificationRemoveDomainDetails._domain_names_validator)]

DomainVerificationRemoveDomainType._description_validator = bv.String()
DomainVerificationRemoveDomainType._all_field_names_ = set(['description'])
DomainVerificationRemoveDomainType._all_fields_ = [('description', DomainVerificationRemoveDomainType._description_validator)]

DownloadPolicyType._allow_validator = bv.Void()
DownloadPolicyType._disallow_validator = bv.Void()
DownloadPolicyType._other_validator = bv.Void()
DownloadPolicyType._tagmap = {
    'allow': DownloadPolicyType._allow_validator,
    'disallow': DownloadPolicyType._disallow_validator,
    'other': DownloadPolicyType._other_validator,
}

DownloadPolicyType.allow = DownloadPolicyType('allow')
DownloadPolicyType.disallow = DownloadPolicyType('disallow')
DownloadPolicyType.other = DownloadPolicyType('other')

DurationLogInfo._unit_validator = TimeUnit_validator
DurationLogInfo._amount_validator = bv.UInt64()
DurationLogInfo._all_field_names_ = set([
    'unit',
    'amount',
])
DurationLogInfo._all_fields_ = [
    ('unit', DurationLogInfo._unit_validator),
    ('amount', DurationLogInfo._amount_validator),
]

EmmAddExceptionDetails._all_field_names_ = set([])
EmmAddExceptionDetails._all_fields_ = []

EmmAddExceptionType._description_validator = bv.String()
EmmAddExceptionType._all_field_names_ = set(['description'])
EmmAddExceptionType._all_fields_ = [('description', EmmAddExceptionType._description_validator)]

EmmChangePolicyDetails._new_value_validator = team_policies.EmmState_validator
EmmChangePolicyDetails._previous_value_validator = bv.Nullable(team_policies.EmmState_validator)
EmmChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
EmmChangePolicyDetails._all_fields_ = [
    ('new_value', EmmChangePolicyDetails._new_value_validator),
    ('previous_value', EmmChangePolicyDetails._previous_value_validator),
]

EmmChangePolicyType._description_validator = bv.String()
EmmChangePolicyType._all_field_names_ = set(['description'])
EmmChangePolicyType._all_fields_ = [('description', EmmChangePolicyType._description_validator)]

EmmCreateExceptionsReportDetails._all_field_names_ = set([])
EmmCreateExceptionsReportDetails._all_fields_ = []

EmmCreateExceptionsReportType._description_validator = bv.String()
EmmCreateExceptionsReportType._all_field_names_ = set(['description'])
EmmCreateExceptionsReportType._all_fields_ = [('description', EmmCreateExceptionsReportType._description_validator)]

EmmCreateUsageReportDetails._all_field_names_ = set([])
EmmCreateUsageReportDetails._all_fields_ = []

EmmCreateUsageReportType._description_validator = bv.String()
EmmCreateUsageReportType._all_field_names_ = set(['description'])
EmmCreateUsageReportType._all_fields_ = [('description', EmmCreateUsageReportType._description_validator)]

EmmErrorDetails._error_details_validator = FailureDetailsLogInfo_validator
EmmErrorDetails._all_field_names_ = set(['error_details'])
EmmErrorDetails._all_fields_ = [('error_details', EmmErrorDetails._error_details_validator)]

EmmErrorType._description_validator = bv.String()
EmmErrorType._all_field_names_ = set(['description'])
EmmErrorType._all_fields_ = [('description', EmmErrorType._description_validator)]

EmmRefreshAuthTokenDetails._all_field_names_ = set([])
EmmRefreshAuthTokenDetails._all_fields_ = []

EmmRefreshAuthTokenType._description_validator = bv.String()
EmmRefreshAuthTokenType._all_field_names_ = set(['description'])
EmmRefreshAuthTokenType._all_fields_ = [('description', EmmRefreshAuthTokenType._description_validator)]

EmmRemoveExceptionDetails._all_field_names_ = set([])
EmmRemoveExceptionDetails._all_fields_ = []

EmmRemoveExceptionType._description_validator = bv.String()
EmmRemoveExceptionType._all_field_names_ = set(['description'])
EmmRemoveExceptionType._all_fields_ = [('description', EmmRemoveExceptionType._description_validator)]

EnabledDomainInvitesDetails._all_field_names_ = set([])
EnabledDomainInvitesDetails._all_fields_ = []

EnabledDomainInvitesType._description_validator = bv.String()
EnabledDomainInvitesType._all_field_names_ = set(['description'])
EnabledDomainInvitesType._all_fields_ = [('description', EnabledDomainInvitesType._description_validator)]

EventCategory._apps_validator = bv.Void()
EventCategory._comments_validator = bv.Void()
EventCategory._devices_validator = bv.Void()
EventCategory._domains_validator = bv.Void()
EventCategory._file_operations_validator = bv.Void()
EventCategory._file_requests_validator = bv.Void()
EventCategory._groups_validator = bv.Void()
EventCategory._logins_validator = bv.Void()
EventCategory._members_validator = bv.Void()
EventCategory._paper_validator = bv.Void()
EventCategory._passwords_validator = bv.Void()
EventCategory._reports_validator = bv.Void()
EventCategory._sharing_validator = bv.Void()
EventCategory._showcase_validator = bv.Void()
EventCategory._sso_validator = bv.Void()
EventCategory._team_folders_validator = bv.Void()
EventCategory._team_policies_validator = bv.Void()
EventCategory._team_profile_validator = bv.Void()
EventCategory._tfa_validator = bv.Void()
EventCategory._other_validator = bv.Void()
EventCategory._tagmap = {
    'apps': EventCategory._apps_validator,
    'comments': EventCategory._comments_validator,
    'devices': EventCategory._devices_validator,
    'domains': EventCategory._domains_validator,
    'file_operations': EventCategory._file_operations_validator,
    'file_requests': EventCategory._file_requests_validator,
    'groups': EventCategory._groups_validator,
    'logins': EventCategory._logins_validator,
    'members': EventCategory._members_validator,
    'paper': EventCategory._paper_validator,
    'passwords': EventCategory._passwords_validator,
    'reports': EventCategory._reports_validator,
    'sharing': EventCategory._sharing_validator,
    'showcase': EventCategory._showcase_validator,
    'sso': EventCategory._sso_validator,
    'team_folders': EventCategory._team_folders_validator,
    'team_policies': EventCategory._team_policies_validator,
    'team_profile': EventCategory._team_profile_validator,
    'tfa': EventCategory._tfa_validator,
    'other': EventCategory._other_validator,
}

EventCategory.apps = EventCategory('apps')
EventCategory.comments = EventCategory('comments')
EventCategory.devices = EventCategory('devices')
EventCategory.domains = EventCategory('domains')
EventCategory.file_operations = EventCategory('file_operations')
EventCategory.file_requests = EventCategory('file_requests')
EventCategory.groups = EventCategory('groups')
EventCategory.logins = EventCategory('logins')
EventCategory.members = EventCategory('members')
EventCategory.paper = EventCategory('paper')
EventCategory.passwords = EventCategory('passwords')
EventCategory.reports = EventCategory('reports')
EventCategory.sharing = EventCategory('sharing')
EventCategory.showcase = EventCategory('showcase')
EventCategory.sso = EventCategory('sso')
EventCategory.team_folders = EventCategory('team_folders')
EventCategory.team_policies = EventCategory('team_policies')
EventCategory.team_profile = EventCategory('team_profile')
EventCategory.tfa = EventCategory('tfa')
EventCategory.other = EventCategory('other')

EventDetails._app_link_team_details_validator = AppLinkTeamDetails_validator
EventDetails._app_link_user_details_validator = AppLinkUserDetails_validator
EventDetails._app_unlink_team_details_validator = AppUnlinkTeamDetails_validator
EventDetails._app_unlink_user_details_validator = AppUnlinkUserDetails_validator
EventDetails._file_add_comment_details_validator = FileAddCommentDetails_validator
EventDetails._file_change_comment_subscription_details_validator = FileChangeCommentSubscriptionDetails_validator
EventDetails._file_delete_comment_details_validator = FileDeleteCommentDetails_validator
EventDetails._file_edit_comment_details_validator = FileEditCommentDetails_validator
EventDetails._file_like_comment_details_validator = FileLikeCommentDetails_validator
EventDetails._file_resolve_comment_details_validator = FileResolveCommentDetails_validator
EventDetails._file_unlike_comment_details_validator = FileUnlikeCommentDetails_validator
EventDetails._file_unresolve_comment_details_validator = FileUnresolveCommentDetails_validator
EventDetails._device_change_ip_desktop_details_validator = DeviceChangeIpDesktopDetails_validator
EventDetails._device_change_ip_mobile_details_validator = DeviceChangeIpMobileDetails_validator
EventDetails._device_change_ip_web_details_validator = DeviceChangeIpWebDetails_validator
EventDetails._device_delete_on_unlink_fail_details_validator = DeviceDeleteOnUnlinkFailDetails_validator
EventDetails._device_delete_on_unlink_success_details_validator = DeviceDeleteOnUnlinkSuccessDetails_validator
EventDetails._device_link_fail_details_validator = DeviceLinkFailDetails_validator
EventDetails._device_link_success_details_validator = DeviceLinkSuccessDetails_validator
EventDetails._device_management_disabled_details_validator = DeviceManagementDisabledDetails_validator
EventDetails._device_management_enabled_details_validator = DeviceManagementEnabledDetails_validator
EventDetails._device_unlink_details_validator = DeviceUnlinkDetails_validator
EventDetails._emm_refresh_auth_token_details_validator = EmmRefreshAuthTokenDetails_validator
EventDetails._account_capture_change_availability_details_validator = AccountCaptureChangeAvailabilityDetails_validator
EventDetails._account_capture_migrate_account_details_validator = AccountCaptureMigrateAccountDetails_validator
EventDetails._account_capture_notification_emails_sent_details_validator = AccountCaptureNotificationEmailsSentDetails_validator
EventDetails._account_capture_relinquish_account_details_validator = AccountCaptureRelinquishAccountDetails_validator
EventDetails._disabled_domain_invites_details_validator = DisabledDomainInvitesDetails_validator
EventDetails._domain_invites_approve_request_to_join_team_details_validator = DomainInvitesApproveRequestToJoinTeamDetails_validator
EventDetails._domain_invites_decline_request_to_join_team_details_validator = DomainInvitesDeclineRequestToJoinTeamDetails_validator
EventDetails._domain_invites_email_existing_users_details_validator = DomainInvitesEmailExistingUsersDetails_validator
EventDetails._domain_invites_request_to_join_team_details_validator = DomainInvitesRequestToJoinTeamDetails_validator
EventDetails._domain_invites_set_invite_new_user_pref_to_no_details_validator = DomainInvitesSetInviteNewUserPrefToNoDetails_validator
EventDetails._domain_invites_set_invite_new_user_pref_to_yes_details_validator = DomainInvitesSetInviteNewUserPrefToYesDetails_validator
EventDetails._domain_verification_add_domain_fail_details_validator = DomainVerificationAddDomainFailDetails_validator
EventDetails._domain_verification_add_domain_success_details_validator = DomainVerificationAddDomainSuccessDetails_validator
EventDetails._domain_verification_remove_domain_details_validator = DomainVerificationRemoveDomainDetails_validator
EventDetails._enabled_domain_invites_details_validator = EnabledDomainInvitesDetails_validator
EventDetails._create_folder_details_validator = CreateFolderDetails_validator
EventDetails._file_add_details_validator = FileAddDetails_validator
EventDetails._file_copy_details_validator = FileCopyDetails_validator
EventDetails._file_delete_details_validator = FileDeleteDetails_validator
EventDetails._file_download_details_validator = FileDownloadDetails_validator
EventDetails._file_edit_details_validator = FileEditDetails_validator
EventDetails._file_get_copy_reference_details_validator = FileGetCopyReferenceDetails_validator
EventDetails._file_move_details_validator = FileMoveDetails_validator
EventDetails._file_permanently_delete_details_validator = FilePermanentlyDeleteDetails_validator
EventDetails._file_preview_details_validator = FilePreviewDetails_validator
EventDetails._file_rename_details_validator = FileRenameDetails_validator
EventDetails._file_restore_details_validator = FileRestoreDetails_validator
EventDetails._file_revert_details_validator = FileRevertDetails_validator
EventDetails._file_rollback_changes_details_validator = FileRollbackChangesDetails_validator
EventDetails._file_save_copy_reference_details_validator = FileSaveCopyReferenceDetails_validator
EventDetails._file_request_change_details_validator = FileRequestChangeDetails_validator
EventDetails._file_request_close_details_validator = FileRequestCloseDetails_validator
EventDetails._file_request_create_details_validator = FileRequestCreateDetails_validator
EventDetails._file_request_receive_file_details_validator = FileRequestReceiveFileDetails_validator
EventDetails._group_add_external_id_details_validator = GroupAddExternalIdDetails_validator
EventDetails._group_add_member_details_validator = GroupAddMemberDetails_validator
EventDetails._group_change_external_id_details_validator = GroupChangeExternalIdDetails_validator
EventDetails._group_change_management_type_details_validator = GroupChangeManagementTypeDetails_validator
EventDetails._group_change_member_role_details_validator = GroupChangeMemberRoleDetails_validator
EventDetails._group_create_details_validator = GroupCreateDetails_validator
EventDetails._group_delete_details_validator = GroupDeleteDetails_validator
EventDetails._group_description_updated_details_validator = GroupDescriptionUpdatedDetails_validator
EventDetails._group_join_policy_updated_details_validator = GroupJoinPolicyUpdatedDetails_validator
EventDetails._group_moved_details_validator = GroupMovedDetails_validator
EventDetails._group_remove_external_id_details_validator = GroupRemoveExternalIdDetails_validator
EventDetails._group_remove_member_details_validator = GroupRemoveMemberDetails_validator
EventDetails._group_rename_details_validator = GroupRenameDetails_validator
EventDetails._emm_error_details_validator = EmmErrorDetails_validator
EventDetails._login_fail_details_validator = LoginFailDetails_validator
EventDetails._login_success_details_validator = LoginSuccessDetails_validator
EventDetails._logout_details_validator = LogoutDetails_validator
EventDetails._reseller_support_session_end_details_validator = ResellerSupportSessionEndDetails_validator
EventDetails._reseller_support_session_start_details_validator = ResellerSupportSessionStartDetails_validator
EventDetails._sign_in_as_session_end_details_validator = SignInAsSessionEndDetails_validator
EventDetails._sign_in_as_session_start_details_validator = SignInAsSessionStartDetails_validator
EventDetails._sso_error_details_validator = SsoErrorDetails_validator
EventDetails._member_add_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_membership_type_details_validator = MemberChangeMembershipTypeDetails_validator
EventDetails._member_change_name_details_validator = MemberChangeNameDetails_validator
EventDetails._member_change_status_details_validator = MemberChangeStatusDetails_validator
EventDetails._member_delete_manual_contacts_details_validator = MemberDeleteManualContactsDetails_validator
EventDetails._member_permanently_delete_account_contents_details_validator = MemberPermanentlyDeleteAccountContentsDetails_validator
EventDetails._member_space_limits_add_custom_quota_details_validator = MemberSpaceLimitsAddCustomQuotaDetails_validator
EventDetails._member_space_limits_change_custom_quota_details_validator = MemberSpaceLimitsChangeCustomQuotaDetails_validator
EventDetails._member_space_limits_change_status_details_validator = MemberSpaceLimitsChangeStatusDetails_validator
EventDetails._member_space_limits_remove_custom_quota_details_validator = MemberSpaceLimitsRemoveCustomQuotaDetails_validator
EventDetails._member_suggest_details_validator = MemberSuggestDetails_validator
EventDetails._member_transfer_account_contents_details_validator = MemberTransferAccountContentsDetails_validator
EventDetails._secondary_mails_policy_changed_details_validator = SecondaryMailsPolicyChangedDetails_validator
EventDetails._paper_content_add_member_details_validator = PaperContentAddMemberDetails_validator
EventDetails._paper_content_add_to_folder_details_validator = PaperContentAddToFolderDetails_validator
EventDetails._paper_content_archive_details_validator = PaperContentArchiveDetails_validator
EventDetails._paper_content_create_details_validator = PaperContentCreateDetails_validator
EventDetails._paper_content_permanently_delete_details_validator = PaperContentPermanentlyDeleteDetails_validator
EventDetails._paper_content_remove_from_folder_details_validator = PaperContentRemoveFromFolderDetails_validator
EventDetails._paper_content_remove_member_details_validator = PaperContentRemoveMemberDetails_validator
EventDetails._paper_content_rename_details_validator = PaperContentRenameDetails_validator
EventDetails._paper_content_restore_details_validator = PaperContentRestoreDetails_validator
EventDetails._paper_doc_add_comment_details_validator = PaperDocAddCommentDetails_validator
EventDetails._paper_doc_change_member_role_details_validator = PaperDocChangeMemberRoleDetails_validator
EventDetails._paper_doc_change_sharing_policy_details_validator = PaperDocChangeSharingPolicyDetails_validator
EventDetails._paper_doc_change_subscription_details_validator = PaperDocChangeSubscriptionDetails_validator
EventDetails._paper_doc_deleted_details_validator = PaperDocDeletedDetails_validator
EventDetails._paper_doc_delete_comment_details_validator = PaperDocDeleteCommentDetails_validator
EventDetails._paper_doc_download_details_validator = PaperDocDownloadDetails_validator
EventDetails._paper_doc_edit_details_validator = PaperDocEditDetails_validator
EventDetails._paper_doc_edit_comment_details_validator = PaperDocEditCommentDetails_validator
EventDetails._paper_doc_followed_details_validator = PaperDocFollowedDetails_validator
EventDetails._paper_doc_mention_details_validator = PaperDocMentionDetails_validator
EventDetails._paper_doc_ownership_changed_details_validator = PaperDocOwnershipChangedDetails_validator
EventDetails._paper_doc_request_access_details_validator = PaperDocRequestAccessDetails_validator
EventDetails._paper_doc_resolve_comment_details_validator = PaperDocResolveCommentDetails_validator
EventDetails._paper_doc_revert_details_validator = PaperDocRevertDetails_validator
EventDetails._paper_doc_slack_share_details_validator = PaperDocSlackShareDetails_validator
EventDetails._paper_doc_team_invite_details_validator = PaperDocTeamInviteDetails_validator
EventDetails._paper_doc_trashed_details_validator = PaperDocTrashedDetails_validator
EventDetails._paper_doc_unresolve_comment_details_validator = PaperDocUnresolveCommentDetails_validator
EventDetails._paper_doc_untrashed_details_validator = PaperDocUntrashedDetails_validator
EventDetails._paper_doc_view_details_validator = PaperDocViewDetails_validator
EventDetails._paper_external_view_allow_details_validator = PaperExternalViewAllowDetails_validator
EventDetails._paper_external_view_default_team_details_validator = PaperExternalViewDefaultTeamDetails_validator
EventDetails._paper_external_view_forbid_details_validator = PaperExternalViewForbidDetails_validator
EventDetails._paper_folder_change_subscription_details_validator = PaperFolderChangeSubscriptionDetails_validator
EventDetails._paper_folder_deleted_details_validator = PaperFolderDeletedDetails_validator
EventDetails._paper_folder_followed_details_validator = PaperFolderFollowedDetails_validator
EventDetails._paper_folder_team_invite_details_validator = PaperFolderTeamInviteDetails_validator
EventDetails._password_change_details_validator = PasswordChangeDetails_validator
EventDetails._password_reset_details_validator = PasswordResetDetails_validator
EventDetails._password_reset_all_details_validator = PasswordResetAllDetails_validator
EventDetails._emm_create_exceptions_report_details_validator = EmmCreateExceptionsReportDetails_validator
EventDetails._emm_create_usage_report_details_validator = EmmCreateUsageReportDetails_validator
EventDetails._export_members_report_details_validator = ExportMembersReportDetails_validator
EventDetails._paper_admin_export_start_details_validator = PaperAdminExportStartDetails_validator
EventDetails._smart_sync_create_admin_privilege_report_details_validator = SmartSyncCreateAdminPrivilegeReportDetails_validator
EventDetails._team_activity_create_report_details_validator = TeamActivityCreateReportDetails_validator
EventDetails._collection_share_details_validator = CollectionShareDetails_validator
EventDetails._note_acl_invite_only_details_validator = NoteAclInviteOnlyDetails_validator
EventDetails._note_acl_link_details_validator = NoteAclLinkDetails_validator
EventDetails._note_acl_team_link_details_validator = NoteAclTeamLinkDetails_validator
EventDetails._note_shared_details_validator = NoteSharedDetails_validator
EventDetails._note_share_receive_details_validator = NoteShareReceiveDetails_validator
EventDetails._open_note_shared_details_validator = OpenNoteSharedDetails_validator
EventDetails._sf_add_group_details_validator = SfAddGroupDetails_validator
EventDetails._sf_allow_non_members_to_view_shared_links_details_validator = SfAllowNonMembersToViewSharedLinksDetails_validator
EventDetails._sf_external_invite_warn_details_validator = SfExternalInviteWarnDetails_validator
EventDetails._sf_fb_invite_details_validator = SfFbInviteDetails_validator
EventDetails._sf_fb_invite_change_role_details_validator = SfFbInviteChangeRoleDetails_validator
EventDetails._sf_fb_uninvite_details_validator = SfFbUninviteDetails_validator
EventDetails._sf_invite_group_details_validator = SfInviteGroupDetails_validator
EventDetails._sf_team_grant_access_details_validator = SfTeamGrantAccessDetails_validator
EventDetails._sf_team_invite_details_validator = SfTeamInviteDetails_validator
EventDetails._sf_team_invite_change_role_details_validator = SfTeamInviteChangeRoleDetails_validator
EventDetails._sf_team_join_details_validator = SfTeamJoinDetails_validator
EventDetails._sf_team_join_from_oob_link_details_validator = SfTeamJoinFromOobLinkDetails_validator
EventDetails._sf_team_uninvite_details_validator = SfTeamUninviteDetails_validator
EventDetails._shared_content_add_invitees_details_validator = SharedContentAddInviteesDetails_validator
EventDetails._shared_content_add_link_expiry_details_validator = SharedContentAddLinkExpiryDetails_validator
EventDetails._shared_content_add_link_password_details_validator = SharedContentAddLinkPasswordDetails_validator
EventDetails._shared_content_add_member_details_validator = SharedContentAddMemberDetails_validator
EventDetails._shared_content_change_downloads_policy_details_validator = SharedContentChangeDownloadsPolicyDetails_validator
EventDetails._shared_content_change_invitee_role_details_validator = SharedContentChangeInviteeRoleDetails_validator
EventDetails._shared_content_change_link_audience_details_validator = SharedContentChangeLinkAudienceDetails_validator
EventDetails._shared_content_change_link_expiry_details_validator = SharedContentChangeLinkExpiryDetails_validator
EventDetails._shared_content_change_link_password_details_validator = SharedContentChangeLinkPasswordDetails_validator
EventDetails._shared_content_change_member_role_details_validator = SharedContentChangeMemberRoleDetails_validator
EventDetails._shared_content_change_viewer_info_policy_details_validator = SharedContentChangeViewerInfoPolicyDetails_validator
EventDetails._shared_content_claim_invitation_details_validator = SharedContentClaimInvitationDetails_validator
EventDetails._shared_content_copy_details_validator = SharedContentCopyDetails_validator
EventDetails._shared_content_download_details_validator = SharedContentDownloadDetails_validator
EventDetails._shared_content_relinquish_membership_details_validator = SharedContentRelinquishMembershipDetails_validator
EventDetails._shared_content_remove_invitees_details_validator = SharedContentRemoveInviteesDetails_validator
EventDetails._shared_content_remove_link_expiry_details_validator = SharedContentRemoveLinkExpiryDetails_validator
EventDetails._shared_content_remove_link_password_details_validator = SharedContentRemoveLinkPasswordDetails_validator
EventDetails._shared_content_remove_member_details_validator = SharedContentRemoveMemberDetails_validator
EventDetails._shared_content_request_access_details_validator = SharedContentRequestAccessDetails_validator
EventDetails._shared_content_unshare_details_validator = SharedContentUnshareDetails_validator
EventDetails._shared_content_view_details_validator = SharedContentViewDetails_validator
EventDetails._shared_folder_change_link_policy_details_validator = SharedFolderChangeLinkPolicyDetails_validator
EventDetails._shared_folder_change_members_inheritance_policy_details_validator = SharedFolderChangeMembersInheritancePolicyDetails_validator
EventDetails._shared_folder_change_members_management_policy_details_validator = SharedFolderChangeMembersManagementPolicyDetails_validator
EventDetails._shared_folder_change_members_policy_details_validator = SharedFolderChangeMembersPolicyDetails_validator
EventDetails._shared_folder_create_details_validator = SharedFolderCreateDetails_validator
EventDetails._shared_folder_decline_invitation_details_validator = SharedFolderDeclineInvitationDetails_validator
EventDetails._shared_folder_mount_details_validator = SharedFolderMountDetails_validator
EventDetails._shared_folder_nest_details_validator = SharedFolderNestDetails_validator
EventDetails._shared_folder_transfer_ownership_details_validator = SharedFolderTransferOwnershipDetails_validator
EventDetails._shared_folder_unmount_details_validator = SharedFolderUnmountDetails_validator
EventDetails._shared_link_add_expiry_details_validator = SharedLinkAddExpiryDetails_validator
EventDetails._shared_link_change_expiry_details_validator = SharedLinkChangeExpiryDetails_validator
EventDetails._shared_link_change_visibility_details_validator = SharedLinkChangeVisibilityDetails_validator
EventDetails._shared_link_copy_details_validator = SharedLinkCopyDetails_validator
EventDetails._shared_link_create_details_validator = SharedLinkCreateDetails_validator
EventDetails._shared_link_disable_details_validator = SharedLinkDisableDetails_validator
EventDetails._shared_link_download_details_validator = SharedLinkDownloadDetails_validator
EventDetails._shared_link_remove_expiry_details_validator = SharedLinkRemoveExpiryDetails_validator
EventDetails._shared_link_share_details_validator = SharedLinkShareDetails_validator
EventDetails._shared_link_view_details_validator = SharedLinkViewDetails_validator
EventDetails._shared_note_opened_details_validator = SharedNoteOpenedDetails_validator
EventDetails._shmodel_group_share_details_validator = ShmodelGroupShareDetails_validator
EventDetails._showcase_access_granted_details_validator = ShowcaseAccessGrantedDetails_validator
EventDetails._showcase_add_member_details_validator = ShowcaseAddMemberDetails_validator
EventDetails._showcase_archived_details_validator = ShowcaseArchivedDetails_validator
EventDetails._showcase_created_details_validator = ShowcaseCreatedDetails_validator
EventDetails._showcase_delete_comment_details_validator = ShowcaseDeleteCommentDetails_validator
EventDetails._showcase_edited_details_validator = ShowcaseEditedDetails_validator
EventDetails._showcase_edit_comment_details_validator = ShowcaseEditCommentDetails_validator
EventDetails._showcase_file_added_details_validator = ShowcaseFileAddedDetails_validator
EventDetails._showcase_file_download_details_validator = ShowcaseFileDownloadDetails_validator
EventDetails._showcase_file_removed_details_validator = ShowcaseFileRemovedDetails_validator
EventDetails._showcase_file_view_details_validator = ShowcaseFileViewDetails_validator
EventDetails._showcase_permanently_deleted_details_validator = ShowcasePermanentlyDeletedDetails_validator
EventDetails._showcase_post_comment_details_validator = ShowcasePostCommentDetails_validator
EventDetails._showcase_remove_member_details_validator = ShowcaseRemoveMemberDetails_validator
EventDetails._showcase_renamed_details_validator = ShowcaseRenamedDetails_validator
EventDetails._showcase_request_access_details_validator = ShowcaseRequestAccessDetails_validator
EventDetails._showcase_resolve_comment_details_validator = ShowcaseResolveCommentDetails_validator
EventDetails._showcase_restored_details_validator = ShowcaseRestoredDetails_validator
EventDetails._showcase_trashed_details_validator = ShowcaseTrashedDetails_validator
EventDetails._showcase_trashed_deprecated_details_validator = ShowcaseTrashedDeprecatedDetails_validator
EventDetails._showcase_unresolve_comment_details_validator = ShowcaseUnresolveCommentDetails_validator
EventDetails._showcase_untrashed_details_validator = ShowcaseUntrashedDetails_validator
EventDetails._showcase_untrashed_deprecated_details_validator = ShowcaseUntrashedDeprecatedDetails_validator
EventDetails._showcase_view_details_validator = ShowcaseViewDetails_validator
EventDetails._sso_add_cert_details_validator = SsoAddCertDetails_validator
EventDetails._sso_add_login_url_details_validator = SsoAddLoginUrlDetails_validator
EventDetails._sso_add_logout_url_details_validator = SsoAddLogoutUrlDetails_validator
EventDetails._sso_change_cert_details_validator = SsoChangeCertDetails_validator
EventDetails._sso_change_login_url_details_validator = SsoChangeLoginUrlDetails_validator
EventDetails._sso_change_logout_url_details_validator = SsoChangeLogoutUrlDetails_validator
EventDetails._sso_change_saml_identity_mode_details_validator = SsoChangeSamlIdentityModeDetails_validator
EventDetails._sso_remove_cert_details_validator = SsoRemoveCertDetails_validator
EventDetails._sso_remove_login_url_details_validator = SsoRemoveLoginUrlDetails_validator
EventDetails._sso_remove_logout_url_details_validator = SsoRemoveLogoutUrlDetails_validator
EventDetails._team_folder_change_status_details_validator = TeamFolderChangeStatusDetails_validator
EventDetails._team_folder_create_details_validator = TeamFolderCreateDetails_validator
EventDetails._team_folder_downgrade_details_validator = TeamFolderDowngradeDetails_validator
EventDetails._team_folder_permanently_delete_details_validator = TeamFolderPermanentlyDeleteDetails_validator
EventDetails._team_folder_rename_details_validator = TeamFolderRenameDetails_validator
EventDetails._team_selective_sync_settings_changed_details_validator = TeamSelectiveSyncSettingsChangedDetails_validator
EventDetails._account_capture_change_policy_details_validator = AccountCaptureChangePolicyDetails_validator
EventDetails._allow_download_disabled_details_validator = AllowDownloadDisabledDetails_validator
EventDetails._allow_download_enabled_details_validator = AllowDownloadEnabledDetails_validator
EventDetails._camera_uploads_policy_changed_details_validator = CameraUploadsPolicyChangedDetails_validator
EventDetails._data_placement_restriction_change_policy_details_validator = DataPlacementRestrictionChangePolicyDetails_validator
EventDetails._data_placement_restriction_satisfy_policy_details_validator = DataPlacementRestrictionSatisfyPolicyDetails_validator
EventDetails._device_approvals_change_desktop_policy_details_validator = DeviceApprovalsChangeDesktopPolicyDetails_validator
EventDetails._device_approvals_change_mobile_policy_details_validator = DeviceApprovalsChangeMobilePolicyDetails_validator
EventDetails._device_approvals_change_overage_action_details_validator = DeviceApprovalsChangeOverageActionDetails_validator
EventDetails._device_approvals_change_unlink_action_details_validator = DeviceApprovalsChangeUnlinkActionDetails_validator
EventDetails._directory_restrictions_add_members_details_validator = DirectoryRestrictionsAddMembersDetails_validator
EventDetails._directory_restrictions_remove_members_details_validator = DirectoryRestrictionsRemoveMembersDetails_validator
EventDetails._emm_add_exception_details_validator = EmmAddExceptionDetails_validator
EventDetails._emm_change_policy_details_validator = EmmChangePolicyDetails_validator
EventDetails._emm_remove_exception_details_validator = EmmRemoveExceptionDetails_validator
EventDetails._extended_version_history_change_policy_details_validator = ExtendedVersionHistoryChangePolicyDetails_validator
EventDetails._file_comments_change_policy_details_validator = FileCommentsChangePolicyDetails_validator
EventDetails._file_requests_change_policy_details_validator = FileRequestsChangePolicyDetails_validator
EventDetails._file_requests_emails_enabled_details_validator = FileRequestsEmailsEnabledDetails_validator
EventDetails._file_requests_emails_restricted_to_team_only_details_validator = FileRequestsEmailsRestrictedToTeamOnlyDetails_validator
EventDetails._google_sso_change_policy_details_validator = GoogleSsoChangePolicyDetails_validator
EventDetails._group_user_management_change_policy_details_validator = GroupUserManagementChangePolicyDetails_validator
EventDetails._member_requests_change_policy_details_validator = MemberRequestsChangePolicyDetails_validator
EventDetails._member_space_limits_add_exception_details_validator = MemberSpaceLimitsAddExceptionDetails_validator
EventDetails._member_space_limits_change_caps_type_policy_details_validator = MemberSpaceLimitsChangeCapsTypePolicyDetails_validator
EventDetails._member_space_limits_change_policy_details_validator = MemberSpaceLimitsChangePolicyDetails_validator
EventDetails._member_space_limits_remove_exception_details_validator = MemberSpaceLimitsRemoveExceptionDetails_validator
EventDetails._member_suggestions_change_policy_details_validator = MemberSuggestionsChangePolicyDetails_validator
EventDetails._microsoft_office_addin_change_policy_details_validator = MicrosoftOfficeAddinChangePolicyDetails_validator
EventDetails._network_control_change_policy_details_validator = NetworkControlChangePolicyDetails_validator
EventDetails._paper_change_deployment_policy_details_validator = PaperChangeDeploymentPolicyDetails_validator
EventDetails._paper_change_member_link_policy_details_validator = PaperChangeMemberLinkPolicyDetails_validator
EventDetails._paper_change_member_policy_details_validator = PaperChangeMemberPolicyDetails_validator
EventDetails._paper_change_policy_details_validator = PaperChangePolicyDetails_validator
EventDetails._paper_enabled_users_group_addition_details_validator = PaperEnabledUsersGroupAdditionDetails_validator
EventDetails._paper_enabled_users_group_removal_details_validator = PaperEnabledUsersGroupRemovalDetails_validator
EventDetails._permanent_delete_change_policy_details_validator = PermanentDeleteChangePolicyDetails_validator
EventDetails._sharing_change_folder_join_policy_details_validator = SharingChangeFolderJoinPolicyDetails_validator
EventDetails._sharing_change_link_policy_details_validator = SharingChangeLinkPolicyDetails_validator
EventDetails._sharing_change_member_policy_details_validator = SharingChangeMemberPolicyDetails_validator
EventDetails._showcase_change_download_policy_details_validator = ShowcaseChangeDownloadPolicyDetails_validator
EventDetails._showcase_change_enabled_policy_details_validator = ShowcaseChangeEnabledPolicyDetails_validator
EventDetails._showcase_change_external_sharing_policy_details_validator = ShowcaseChangeExternalSharingPolicyDetails_validator
EventDetails._smart_sync_change_policy_details_validator = SmartSyncChangePolicyDetails_validator
EventDetails._smart_sync_not_opt_out_details_validator = SmartSyncNotOptOutDetails_validator
EventDetails._smart_sync_opt_out_details_validator = SmartSyncOptOutDetails_validator
EventDetails._sso_change_policy_details_validator = SsoChangePolicyDetails_validator
EventDetails._team_selective_sync_policy_changed_details_validator = TeamSelectiveSyncPolicyChangedDetails_validator
EventDetails._tfa_change_policy_details_validator = TfaChangePolicyDetails_validator
EventDetails._two_account_change_policy_details_validator = TwoAccountChangePolicyDetails_validator
EventDetails._viewer_info_policy_changed_details_validator = ViewerInfoPolicyChangedDetails_validator
EventDetails._web_sessions_change_fixed_length_policy_details_validator = WebSessionsChangeFixedLengthPolicyDetails_validator
EventDetails._web_sessions_change_idle_length_policy_details_validator = WebSessionsChangeIdleLengthPolicyDetails_validator
EventDetails._team_merge_from_details_validator = TeamMergeFromDetails_validator
EventDetails._team_merge_to_details_validator = TeamMergeToDetails_validator
EventDetails._team_profile_add_logo_details_validator = TeamProfileAddLogoDetails_validator
EventDetails._team_profile_change_default_language_details_validator = TeamProfileChangeDefaultLanguageDetails_validator
EventDetails._team_profile_change_logo_details_validator = TeamProfileChangeLogoDetails_validator
EventDetails._team_profile_change_name_details_validator = TeamProfileChangeNameDetails_validator
EventDetails._team_profile_remove_logo_details_validator = TeamProfileRemoveLogoDetails_validator
EventDetails._tfa_add_backup_phone_details_validator = TfaAddBackupPhoneDetails_validator
EventDetails._tfa_add_security_key_details_validator = TfaAddSecurityKeyDetails_validator
EventDetails._tfa_change_backup_phone_details_validator = TfaChangeBackupPhoneDetails_validator
EventDetails._tfa_change_status_details_validator = TfaChangeStatusDetails_validator
EventDetails._tfa_remove_backup_phone_details_validator = TfaRemoveBackupPhoneDetails_validator
EventDetails._tfa_remove_security_key_details_validator = TfaRemoveSecurityKeyDetails_validator
EventDetails._tfa_reset_details_validator = TfaResetDetails_validator
EventDetails._missing_details_validator = MissingDetails_validator
EventDetails._other_validator = bv.Void()
EventDetails._tagmap = {
    'app_link_team_details': EventDetails._app_link_team_details_validator,
    'app_link_user_details': EventDetails._app_link_user_details_validator,
    'app_unlink_team_details': EventDetails._app_unlink_team_details_validator,
    'app_unlink_user_details': EventDetails._app_unlink_user_details_validator,
    'file_add_comment_details': EventDetails._file_add_comment_details_validator,
    'file_change_comment_subscription_details': EventDetails._file_change_comment_subscription_details_validator,
    'file_delete_comment_details': EventDetails._file_delete_comment_details_validator,
    'file_edit_comment_details': EventDetails._file_edit_comment_details_validator,
    'file_like_comment_details': EventDetails._file_like_comment_details_validator,
    'file_resolve_comment_details': EventDetails._file_resolve_comment_details_validator,
    'file_unlike_comment_details': EventDetails._file_unlike_comment_details_validator,
    'file_unresolve_comment_details': EventDetails._file_unresolve_comment_details_validator,
    'device_change_ip_desktop_details': EventDetails._device_change_ip_desktop_details_validator,
    'device_change_ip_mobile_details': EventDetails._device_change_ip_mobile_details_validator,
    'device_change_ip_web_details': EventDetails._device_change_ip_web_details_validator,
    'device_delete_on_unlink_fail_details': EventDetails._device_delete_on_unlink_fail_details_validator,
    'device_delete_on_unlink_success_details': EventDetails._device_delete_on_unlink_success_details_validator,
    'device_link_fail_details': EventDetails._device_link_fail_details_validator,
    'device_link_success_details': EventDetails._device_link_success_details_validator,
    'device_management_disabled_details': EventDetails._device_management_disabled_details_validator,
    'device_management_enabled_details': EventDetails._device_management_enabled_details_validator,
    'device_unlink_details': EventDetails._device_unlink_details_validator,
    'emm_refresh_auth_token_details': EventDetails._emm_refresh_auth_token_details_validator,
    'account_capture_change_availability_details': EventDetails._account_capture_change_availability_details_validator,
    'account_capture_migrate_account_details': EventDetails._account_capture_migrate_account_details_validator,
    'account_capture_notification_emails_sent_details': EventDetails._account_capture_notification_emails_sent_details_validator,
    'account_capture_relinquish_account_details': EventDetails._account_capture_relinquish_account_details_validator,
    'disabled_domain_invites_details': EventDetails._disabled_domain_invites_details_validator,
    'domain_invites_approve_request_to_join_team_details': EventDetails._domain_invites_approve_request_to_join_team_details_validator,
    'domain_invites_decline_request_to_join_team_details': EventDetails._domain_invites_decline_request_to_join_team_details_validator,
    'domain_invites_email_existing_users_details': EventDetails._domain_invites_email_existing_users_details_validator,
    'domain_invites_request_to_join_team_details': EventDetails._domain_invites_request_to_join_team_details_validator,
    'domain_invites_set_invite_new_user_pref_to_no_details': EventDetails._domain_invites_set_invite_new_user_pref_to_no_details_validator,
    'domain_invites_set_invite_new_user_pref_to_yes_details': EventDetails._domain_invites_set_invite_new_user_pref_to_yes_details_validator,
    'domain_verification_add_domain_fail_details': EventDetails._domain_verification_add_domain_fail_details_validator,
    'domain_verification_add_domain_success_details': EventDetails._domain_verification_add_domain_success_details_validator,
    'domain_verification_remove_domain_details': EventDetails._domain_verification_remove_domain_details_validator,
    'enabled_domain_invites_details': EventDetails._enabled_domain_invites_details_validator,
    'create_folder_details': EventDetails._create_folder_details_validator,
    'file_add_details': EventDetails._file_add_details_validator,
    'file_copy_details': EventDetails._file_copy_details_validator,
    'file_delete_details': EventDetails._file_delete_details_validator,
    'file_download_details': EventDetails._file_download_details_validator,
    'file_edit_details': EventDetails._file_edit_details_validator,
    'file_get_copy_reference_details': EventDetails._file_get_copy_reference_details_validator,
    'file_move_details': EventDetails._file_move_details_validator,
    'file_permanently_delete_details': EventDetails._file_permanently_delete_details_validator,
    'file_preview_details': EventDetails._file_preview_details_validator,
    'file_rename_details': EventDetails._file_rename_details_validator,
    'file_restore_details': EventDetails._file_restore_details_validator,
    'file_revert_details': EventDetails._file_revert_details_validator,
    'file_rollback_changes_details': EventDetails._file_rollback_changes_details_validator,
    'file_save_copy_reference_details': EventDetails._file_save_copy_reference_details_validator,
    'file_request_change_details': EventDetails._file_request_change_details_validator,
    'file_request_close_details': EventDetails._file_request_close_details_validator,
    'file_request_create_details': EventDetails._file_request_create_details_validator,
    'file_request_receive_file_details': EventDetails._file_request_receive_file_details_validator,
    'group_add_external_id_details': EventDetails._group_add_external_id_details_validator,
    'group_add_member_details': EventDetails._group_add_member_details_validator,
    'group_change_external_id_details': EventDetails._group_change_external_id_details_validator,
    'group_change_management_type_details': EventDetails._group_change_management_type_details_validator,
    'group_change_member_role_details': EventDetails._group_change_member_role_details_validator,
    'group_create_details': EventDetails._group_create_details_validator,
    'group_delete_details': EventDetails._group_delete_details_validator,
    'group_description_updated_details': EventDetails._group_description_updated_details_validator,
    'group_join_policy_updated_details': EventDetails._group_join_policy_updated_details_validator,
    'group_moved_details': EventDetails._group_moved_details_validator,
    'group_remove_external_id_details': EventDetails._group_remove_external_id_details_validator,
    'group_remove_member_details': EventDetails._group_remove_member_details_validator,
    'group_rename_details': EventDetails._group_rename_details_validator,
    'emm_error_details': EventDetails._emm_error_details_validator,
    'login_fail_details': EventDetails._login_fail_details_validator,
    'login_success_details': EventDetails._login_success_details_validator,
    'logout_details': EventDetails._logout_details_validator,
    'reseller_support_session_end_details': EventDetails._reseller_support_session_end_details_validator,
    'reseller_support_session_start_details': EventDetails._reseller_support_session_start_details_validator,
    'sign_in_as_session_end_details': EventDetails._sign_in_as_session_end_details_validator,
    'sign_in_as_session_start_details': EventDetails._sign_in_as_session_start_details_validator,
    'sso_error_details': EventDetails._sso_error_details_validator,
    'member_add_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_membership_type_details': EventDetails._member_change_membership_type_details_validator,
    'member_change_name_details': EventDetails._member_change_name_details_validator,
    'member_change_status_details': EventDetails._member_change_status_details_validator,
    'member_delete_manual_contacts_details': EventDetails._member_delete_manual_contacts_details_validator,
    'member_permanently_delete_account_contents_details': EventDetails._member_permanently_delete_account_contents_details_validator,
    'member_space_limits_add_custom_quota_details': EventDetails._member_space_limits_add_custom_quota_details_validator,
    'member_space_limits_change_custom_quota_details': EventDetails._member_space_limits_change_custom_quota_details_validator,
    'member_space_limits_change_status_details': EventDetails._member_space_limits_change_status_details_validator,
    'member_space_limits_remove_custom_quota_details': EventDetails._member_space_limits_remove_custom_quota_details_validator,
    'member_suggest_details': EventDetails._member_suggest_details_validator,
    'member_transfer_account_contents_details': EventDetails._member_transfer_account_contents_details_validator,
    'secondary_mails_policy_changed_details': EventDetails._secondary_mails_policy_changed_details_validator,
    'paper_content_add_member_details': EventDetails._paper_content_add_member_details_validator,
    'paper_content_add_to_folder_details': EventDetails._paper_content_add_to_folder_details_validator,
    'paper_content_archive_details': EventDetails._paper_content_archive_details_validator,
    'paper_content_create_details': EventDetails._paper_content_create_details_validator,
    'paper_content_permanently_delete_details': EventDetails._paper_content_permanently_delete_details_validator,
    'paper_content_remove_from_folder_details': EventDetails._paper_content_remove_from_folder_details_validator,
    'paper_content_remove_member_details': EventDetails._paper_content_remove_member_details_validator,
    'paper_content_rename_details': EventDetails._paper_content_rename_details_validator,
    'paper_content_restore_details': EventDetails._paper_content_restore_details_validator,
    'paper_doc_add_comment_details': EventDetails._paper_doc_add_comment_details_validator,
    'paper_doc_change_member_role_details': EventDetails._paper_doc_change_member_role_details_validator,
    'paper_doc_change_sharing_policy_details': EventDetails._paper_doc_change_sharing_policy_details_validator,
    'paper_doc_change_subscription_details': EventDetails._paper_doc_change_subscription_details_validator,
    'paper_doc_deleted_details': EventDetails._paper_doc_deleted_details_validator,
    'paper_doc_delete_comment_details': EventDetails._paper_doc_delete_comment_details_validator,
    'paper_doc_download_details': EventDetails._paper_doc_download_details_validator,
    'paper_doc_edit_details': EventDetails._paper_doc_edit_details_validator,
    'paper_doc_edit_comment_details': EventDetails._paper_doc_edit_comment_details_validator,
    'paper_doc_followed_details': EventDetails._paper_doc_followed_details_validator,
    'paper_doc_mention_details': EventDetails._paper_doc_mention_details_validator,
    'paper_doc_ownership_changed_details': EventDetails._paper_doc_ownership_changed_details_validator,
    'paper_doc_request_access_details': EventDetails._paper_doc_request_access_details_validator,
    'paper_doc_resolve_comment_details': EventDetails._paper_doc_resolve_comment_details_validator,
    'paper_doc_revert_details': EventDetails._paper_doc_revert_details_validator,
    'paper_doc_slack_share_details': EventDetails._paper_doc_slack_share_details_validator,
    'paper_doc_team_invite_details': EventDetails._paper_doc_team_invite_details_validator,
    'paper_doc_trashed_details': EventDetails._paper_doc_trashed_details_validator,
    'paper_doc_unresolve_comment_details': EventDetails._paper_doc_unresolve_comment_details_validator,
    'paper_doc_untrashed_details': EventDetails._paper_doc_untrashed_details_validator,
    'paper_doc_view_details': EventDetails._paper_doc_view_details_validator,
    'paper_external_view_allow_details': EventDetails._paper_external_view_allow_details_validator,
    'paper_external_view_default_team_details': EventDetails._paper_external_view_default_team_details_validator,
    'paper_external_view_forbid_details': EventDetails._paper_external_view_forbid_details_validator,
    'paper_folder_change_subscription_details': EventDetails._paper_folder_change_subscription_details_validator,
    'paper_folder_deleted_details': EventDetails._paper_folder_deleted_details_validator,
    'paper_folder_followed_details': EventDetails._paper_folder_followed_details_validator,
    'paper_folder_team_invite_details': EventDetails._paper_folder_team_invite_details_validator,
    'password_change_details': EventDetails._password_change_details_validator,
    'password_reset_details': EventDetails._password_reset_details_validator,
    'password_reset_all_details': EventDetails._password_reset_all_details_validator,
    'emm_create_exceptions_report_details': EventDetails._emm_create_exceptions_report_details_validator,
    'emm_create_usage_report_details': EventDetails._emm_create_usage_report_details_validator,
    'export_members_report_details': EventDetails._export_members_report_details_validator,
    'paper_admin_export_start_details': EventDetails._paper_admin_export_start_details_validator,
    'smart_sync_create_admin_privilege_report_details': EventDetails._smart_sync_create_admin_privilege_report_details_validator,
    'team_activity_create_report_details': EventDetails._team_activity_create_report_details_validator,
    'collection_share_details': EventDetails._collection_share_details_validator,
    'note_acl_invite_only_details': EventDetails._note_acl_invite_only_details_validator,
    'note_acl_link_details': EventDetails._note_acl_link_details_validator,
    'note_acl_team_link_details': EventDetails._note_acl_team_link_details_validator,
    'note_shared_details': EventDetails._note_shared_details_validator,
    'note_share_receive_details': EventDetails._note_share_receive_details_validator,
    'open_note_shared_details': EventDetails._open_note_shared_details_validator,
    'sf_add_group_details': EventDetails._sf_add_group_details_validator,
    'sf_allow_non_members_to_view_shared_links_details': EventDetails._sf_allow_non_members_to_view_shared_links_details_validator,
    'sf_external_invite_warn_details': EventDetails._sf_external_invite_warn_details_validator,
    'sf_fb_invite_details': EventDetails._sf_fb_invite_details_validator,
    'sf_fb_invite_change_role_details': EventDetails._sf_fb_invite_change_role_details_validator,
    'sf_fb_uninvite_details': EventDetails._sf_fb_uninvite_details_validator,
    'sf_invite_group_details': EventDetails._sf_invite_group_details_validator,
    'sf_team_grant_access_details': EventDetails._sf_team_grant_access_details_validator,
    'sf_team_invite_details': EventDetails._sf_team_invite_details_validator,
    'sf_team_invite_change_role_details': EventDetails._sf_team_invite_change_role_details_validator,
    'sf_team_join_details': EventDetails._sf_team_join_details_validator,
    'sf_team_join_from_oob_link_details': EventDetails._sf_team_join_from_oob_link_details_validator,
    'sf_team_uninvite_details': EventDetails._sf_team_uninvite_details_validator,
    'shared_content_add_invitees_details': EventDetails._shared_content_add_invitees_details_validator,
    'shared_content_add_link_expiry_details': EventDetails._shared_content_add_link_expiry_details_validator,
    'shared_content_add_link_password_details': EventDetails._shared_content_add_link_password_details_validator,
    'shared_content_add_member_details': EventDetails._shared_content_add_member_details_validator,
    'shared_content_change_downloads_policy_details': EventDetails._shared_content_change_downloads_policy_details_validator,
    'shared_content_change_invitee_role_details': EventDetails._shared_content_change_invitee_role_details_validator,
    'shared_content_change_link_audience_details': EventDetails._shared_content_change_link_audience_details_validator,
    'shared_content_change_link_expiry_details': EventDetails._shared_content_change_link_expiry_details_validator,
    'shared_content_change_link_password_details': EventDetails._shared_content_change_link_password_details_validator,
    'shared_content_change_member_role_details': EventDetails._shared_content_change_member_role_details_validator,
    'shared_content_change_viewer_info_policy_details': EventDetails._shared_content_change_viewer_info_policy_details_validator,
    'shared_content_claim_invitation_details': EventDetails._shared_content_claim_invitation_details_validator,
    'shared_content_copy_details': EventDetails._shared_content_copy_details_validator,
    'shared_content_download_details': EventDetails._shared_content_download_details_validator,
    'shared_content_relinquish_membership_details': EventDetails._shared_content_relinquish_membership_details_validator,
    'shared_content_remove_invitees_details': EventDetails._shared_content_remove_invitees_details_validator,
    'shared_content_remove_link_expiry_details': EventDetails._shared_content_remove_link_expiry_details_validator,
    'shared_content_remove_link_password_details': EventDetails._shared_content_remove_link_password_details_validator,
    'shared_content_remove_member_details': EventDetails._shared_content_remove_member_details_validator,
    'shared_content_request_access_details': EventDetails._shared_content_request_access_details_validator,
    'shared_content_unshare_details': EventDetails._shared_content_unshare_details_validator,
    'shared_content_view_details': EventDetails._shared_content_view_details_validator,
    'shared_folder_change_link_policy_details': EventDetails._shared_folder_change_link_policy_details_validator,
    'shared_folder_change_members_inheritance_policy_details': EventDetails._shared_folder_change_members_inheritance_policy_details_validator,
    'shared_folder_change_members_management_policy_details': EventDetails._shared_folder_change_members_management_policy_details_validator,
    'shared_folder_change_members_policy_details': EventDetails._shared_folder_change_members_policy_details_validator,
    'shared_folder_create_details': EventDetails._shared_folder_create_details_validator,
    'shared_folder_decline_invitation_details': EventDetails._shared_folder_decline_invitation_details_validator,
    'shared_folder_mount_details': EventDetails._shared_folder_mount_details_validator,
    'shared_folder_nest_details': EventDetails._shared_folder_nest_details_validator,
    'shared_folder_transfer_ownership_details': EventDetails._shared_folder_transfer_ownership_details_validator,
    'shared_folder_unmount_details': EventDetails._shared_folder_unmount_details_validator,
    'shared_link_add_expiry_details': EventDetails._shared_link_add_expiry_details_validator,
    'shared_link_change_expiry_details': EventDetails._shared_link_change_expiry_details_validator,
    'shared_link_change_visibility_details': EventDetails._shared_link_change_visibility_details_validator,
    'shared_link_copy_details': EventDetails._shared_link_copy_details_validator,
    'shared_link_create_details': EventDetails._shared_link_create_details_validator,
    'shared_link_disable_details': EventDetails._shared_link_disable_details_validator,
    'shared_link_download_details': EventDetails._shared_link_download_details_validator,
    'shared_link_remove_expiry_details': EventDetails._shared_link_remove_expiry_details_validator,
    'shared_link_share_details': EventDetails._shared_link_share_details_validator,
    'shared_link_view_details': EventDetails._shared_link_view_details_validator,
    'shared_note_opened_details': EventDetails._shared_note_opened_details_validator,
    'shmodel_group_share_details': EventDetails._shmodel_group_share_details_validator,
    'showcase_access_granted_details': EventDetails._showcase_access_granted_details_validator,
    'showcase_add_member_details': EventDetails._showcase_add_member_details_validator,
    'showcase_archived_details': EventDetails._showcase_archived_details_validator,
    'showcase_created_details': EventDetails._showcase_created_details_validator,
    'showcase_delete_comment_details': EventDetails._showcase_delete_comment_details_validator,
    'showcase_edited_details': EventDetails._showcase_edited_details_validator,
    'showcase_edit_comment_details': EventDetails._showcase_edit_comment_details_validator,
    'showcase_file_added_details': EventDetails._showcase_file_added_details_validator,
    'showcase_file_download_details': EventDetails._showcase_file_download_details_validator,
    'showcase_file_removed_details': EventDetails._showcase_file_removed_details_validator,
    'showcase_file_view_details': EventDetails._showcase_file_view_details_validator,
    'showcase_permanently_deleted_details': EventDetails._showcase_permanently_deleted_details_validator,
    'showcase_post_comment_details': EventDetails._showcase_post_comment_details_validator,
    'showcase_remove_member_details': EventDetails._showcase_remove_member_details_validator,
    'showcase_renamed_details': EventDetails._showcase_renamed_details_validator,
    'showcase_request_access_details': EventDetails._showcase_request_access_details_validator,
    'showcase_resolve_comment_details': EventDetails._showcase_resolve_comment_details_validator,
    'showcase_restored_details': EventDetails._showcase_restored_details_validator,
    'showcase_trashed_details': EventDetails._showcase_trashed_details_validator,
    'showcase_trashed_deprecated_details': EventDetails._showcase_trashed_deprecated_details_validator,
    'showcase_unresolve_comment_details': EventDetails._showcase_unresolve_comment_details_validator,
    'showcase_untrashed_details': EventDetails._showcase_untrashed_details_validator,
    'showcase_untrashed_deprecated_details': EventDetails._showcase_untrashed_deprecated_details_validator,
    'showcase_view_details': EventDetails._showcase_view_details_validator,
    'sso_add_cert_details': EventDetails._sso_add_cert_details_validator,
    'sso_add_login_url_details': EventDetails._sso_add_login_url_details_validator,
    'sso_add_logout_url_details': EventDetails._sso_add_logout_url_details_validator,
    'sso_change_cert_details': EventDetails._sso_change_cert_details_validator,
    'sso_change_login_url_details': EventDetails._sso_change_login_url_details_validator,
    'sso_change_logout_url_details': EventDetails._sso_change_logout_url_details_validator,
    'sso_change_saml_identity_mode_details': EventDetails._sso_change_saml_identity_mode_details_validator,
    'sso_remove_cert_details': EventDetails._sso_remove_cert_details_validator,
    'sso_remove_login_url_details': EventDetails._sso_remove_login_url_details_validator,
    'sso_remove_logout_url_details': EventDetails._sso_remove_logout_url_details_validator,
    'team_folder_change_status_details': EventDetails._team_folder_change_status_details_validator,
    'team_folder_create_details': EventDetails._team_folder_create_details_validator,
    'team_folder_downgrade_details': EventDetails._team_folder_downgrade_details_validator,
    'team_folder_permanently_delete_details': EventDetails._team_folder_permanently_delete_details_validator,
    'team_folder_rename_details': EventDetails._team_folder_rename_details_validator,
    'team_selective_sync_settings_changed_details': EventDetails._team_selective_sync_settings_changed_details_validator,
    'account_capture_change_policy_details': EventDetails._account_capture_change_policy_details_validator,
    'allow_download_disabled_details': EventDetails._allow_download_disabled_details_validator,
    'allow_download_enabled_details': EventDetails._allow_download_enabled_details_validator,
    'camera_uploads_policy_changed_details': EventDetails._camera_uploads_policy_changed_details_validator,
    'data_placement_restriction_change_policy_details': EventDetails._data_placement_restriction_change_policy_details_validator,
    'data_placement_restriction_satisfy_policy_details': EventDetails._data_placement_restriction_satisfy_policy_details_validator,
    'device_approvals_change_desktop_policy_details': EventDetails._device_approvals_change_desktop_policy_details_validator,
    'device_approvals_change_mobile_policy_details': EventDetails._device_approvals_change_mobile_policy_details_validator,
    'device_approvals_change_overage_action_details': EventDetails._device_approvals_change_overage_action_details_validator,
    'device_approvals_change_unlink_action_details': EventDetails._device_approvals_change_unlink_action_details_validator,
    'directory_restrictions_add_members_details': EventDetails._directory_restrictions_add_members_details_validator,
    'directory_restrictions_remove_members_details': EventDetails._directory_restrictions_remove_members_details_validator,
    'emm_add_exception_details': EventDetails._emm_add_exception_details_validator,
    'emm_change_policy_details': EventDetails._emm_change_policy_details_validator,
    'emm_remove_exception_details': EventDetails._emm_remove_exception_details_validator,
    'extended_version_history_change_policy_details': EventDetails._extended_version_history_change_policy_details_validator,
    'file_comments_change_policy_details': EventDetails._file_comments_change_policy_details_validator,
    'file_requests_change_policy_details': EventDetails._file_requests_change_policy_details_validator,
    'file_requests_emails_enabled_details': EventDetails._file_requests_emails_enabled_details_validator,
    'file_requests_emails_restricted_to_team_only_details': EventDetails._file_requests_emails_restricted_to_team_only_details_validator,
    'google_sso_change_policy_details': EventDetails._google_sso_change_policy_details_validator,
    'group_user_management_change_policy_details': EventDetails._group_user_management_change_policy_details_validator,
    'member_requests_change_policy_details': EventDetails._member_requests_change_policy_details_validator,
    'member_space_limits_add_exception_details': EventDetails._member_space_limits_add_exception_details_validator,
    'member_space_limits_change_caps_type_policy_details': EventDetails._member_space_limits_change_caps_type_policy_details_validator,
    'member_space_limits_change_policy_details': EventDetails._member_space_limits_change_policy_details_validator,
    'member_space_limits_remove_exception_details': EventDetails._member_space_limits_remove_exception_details_validator,
    'member_suggestions_change_policy_details': EventDetails._member_suggestions_change_policy_details_validator,
    'microsoft_office_addin_change_policy_details': EventDetails._microsoft_office_addin_change_policy_details_validator,
    'network_control_change_policy_details': EventDetails._network_control_change_policy_details_validator,
    'paper_change_deployment_policy_details': EventDetails._paper_change_deployment_policy_details_validator,
    'paper_change_member_link_policy_details': EventDetails._paper_change_member_link_policy_details_validator,
    'paper_change_member_policy_details': EventDetails._paper_change_member_policy_details_validator,
    'paper_change_policy_details': EventDetails._paper_change_policy_details_validator,
    'paper_enabled_users_group_addition_details': EventDetails._paper_enabled_users_group_addition_details_validator,
    'paper_enabled_users_group_removal_details': EventDetails._paper_enabled_users_group_removal_details_validator,
    'permanent_delete_change_policy_details': EventDetails._permanent_delete_change_policy_details_validator,
    'sharing_change_folder_join_policy_details': EventDetails._sharing_change_folder_join_policy_details_validator,
    'sharing_change_link_policy_details': EventDetails._sharing_change_link_policy_details_validator,
    'sharing_change_member_policy_details': EventDetails._sharing_change_member_policy_details_validator,
    'showcase_change_download_policy_details': EventDetails._showcase_change_download_policy_details_validator,
    'showcase_change_enabled_policy_details': EventDetails._showcase_change_enabled_policy_details_validator,
    'showcase_change_external_sharing_policy_details': EventDetails._showcase_change_external_sharing_policy_details_validator,
    'smart_sync_change_policy_details': EventDetails._smart_sync_change_policy_details_validator,
    'smart_sync_not_opt_out_details': EventDetails._smart_sync_not_opt_out_details_validator,
    'smart_sync_opt_out_details': EventDetails._smart_sync_opt_out_details_validator,
    'sso_change_policy_details': EventDetails._sso_change_policy_details_validator,
    'team_selective_sync_policy_changed_details': EventDetails._team_selective_sync_policy_changed_details_validator,
    'tfa_change_policy_details': EventDetails._tfa_change_policy_details_validator,
    'two_account_change_policy_details': EventDetails._two_account_change_policy_details_validator,
    'viewer_info_policy_changed_details': EventDetails._viewer_info_policy_changed_details_validator,
    'web_sessions_change_fixed_length_policy_details': EventDetails._web_sessions_change_fixed_length_policy_details_validator,
    'web_sessions_change_idle_length_policy_details': EventDetails._web_sessions_change_idle_length_policy_details_validator,
    'team_merge_from_details': EventDetails._team_merge_from_details_validator,
    'team_merge_to_details': EventDetails._team_merge_to_details_validator,
    'team_profile_add_logo_details': EventDetails._team_profile_add_logo_details_validator,
    'team_profile_change_default_language_details': EventDetails._team_profile_change_default_language_details_validator,
    'team_profile_change_logo_details': EventDetails._team_profile_change_logo_details_validator,
    'team_profile_change_name_details': EventDetails._team_profile_change_name_details_validator,
    'team_profile_remove_logo_details': EventDetails._team_profile_remove_logo_details_validator,
    'tfa_add_backup_phone_details': EventDetails._tfa_add_backup_phone_details_validator,
    'tfa_add_security_key_details': EventDetails._tfa_add_security_key_details_validator,
    'tfa_change_backup_phone_details': EventDetails._tfa_change_backup_phone_details_validator,
    'tfa_change_status_details': EventDetails._tfa_change_status_details_validator,
    'tfa_remove_backup_phone_details': EventDetails._tfa_remove_backup_phone_details_validator,
    'tfa_remove_security_key_details': EventDetails._tfa_remove_security_key_details_validator,
    'tfa_reset_details': EventDetails._tfa_reset_details_validator,
    'missing_details': EventDetails._missing_details_validator,
    'other': EventDetails._other_validator,
}

EventDetails.other = EventDetails('other')

EventType._app_link_team_validator = AppLinkTeamType_validator
EventType._app_link_user_validator = AppLinkUserType_validator
EventType._app_unlink_team_validator = AppUnlinkTeamType_validator
EventType._app_unlink_user_validator = AppUnlinkUserType_validator
EventType._file_add_comment_validator = FileAddCommentType_validator
EventType._file_change_comment_subscription_validator = FileChangeCommentSubscriptionType_validator
EventType._file_delete_comment_validator = FileDeleteCommentType_validator
EventType._file_edit_comment_validator = FileEditCommentType_validator
EventType._file_like_comment_validator = FileLikeCommentType_validator
EventType._file_resolve_comment_validator = FileResolveCommentType_validator
EventType._file_unlike_comment_validator = FileUnlikeCommentType_validator
EventType._file_unresolve_comment_validator = FileUnresolveCommentType_validator
EventType._device_change_ip_desktop_validator = DeviceChangeIpDesktopType_validator
EventType._device_change_ip_mobile_validator = DeviceChangeIpMobileType_validator
EventType._device_change_ip_web_validator = DeviceChangeIpWebType_validator
EventType._device_delete_on_unlink_fail_validator = DeviceDeleteOnUnlinkFailType_validator
EventType._device_delete_on_unlink_success_validator = DeviceDeleteOnUnlinkSuccessType_validator
EventType._device_link_fail_validator = DeviceLinkFailType_validator
EventType._device_link_success_validator = DeviceLinkSuccessType_validator
EventType._device_management_disabled_validator = DeviceManagementDisabledType_validator
EventType._device_management_enabled_validator = DeviceManagementEnabledType_validator
EventType._device_unlink_validator = DeviceUnlinkType_validator
EventType._emm_refresh_auth_token_validator = EmmRefreshAuthTokenType_validator
EventType._account_capture_change_availability_validator = AccountCaptureChangeAvailabilityType_validator
EventType._account_capture_migrate_account_validator = AccountCaptureMigrateAccountType_validator
EventType._account_capture_notification_emails_sent_validator = AccountCaptureNotificationEmailsSentType_validator
EventType._account_capture_relinquish_account_validator = AccountCaptureRelinquishAccountType_validator
EventType._disabled_domain_invites_validator = DisabledDomainInvitesType_validator
EventType._domain_invites_approve_request_to_join_team_validator = DomainInvitesApproveRequestToJoinTeamType_validator
EventType._domain_invites_decline_request_to_join_team_validator = DomainInvitesDeclineRequestToJoinTeamType_validator
EventType._domain_invites_email_existing_users_validator = DomainInvitesEmailExistingUsersType_validator
EventType._domain_invites_request_to_join_team_validator = DomainInvitesRequestToJoinTeamType_validator
EventType._domain_invites_set_invite_new_user_pref_to_no_validator = DomainInvitesSetInviteNewUserPrefToNoType_validator
EventType._domain_invites_set_invite_new_user_pref_to_yes_validator = DomainInvitesSetInviteNewUserPrefToYesType_validator
EventType._domain_verification_add_domain_fail_validator = DomainVerificationAddDomainFailType_validator
EventType._domain_verification_add_domain_success_validator = DomainVerificationAddDomainSuccessType_validator
EventType._domain_verification_remove_domain_validator = DomainVerificationRemoveDomainType_validator
EventType._enabled_domain_invites_validator = EnabledDomainInvitesType_validator
EventType._create_folder_validator = CreateFolderType_validator
EventType._file_add_validator = FileAddType_validator
EventType._file_copy_validator = FileCopyType_validator
EventType._file_delete_validator = FileDeleteType_validator
EventType._file_download_validator = FileDownloadType_validator
EventType._file_edit_validator = FileEditType_validator
EventType._file_get_copy_reference_validator = FileGetCopyReferenceType_validator
EventType._file_move_validator = FileMoveType_validator
EventType._file_permanently_delete_validator = FilePermanentlyDeleteType_validator
EventType._file_preview_validator = FilePreviewType_validator
EventType._file_rename_validator = FileRenameType_validator
EventType._file_restore_validator = FileRestoreType_validator
EventType._file_revert_validator = FileRevertType_validator
EventType._file_rollback_changes_validator = FileRollbackChangesType_validator
EventType._file_save_copy_reference_validator = FileSaveCopyReferenceType_validator
EventType._file_request_change_validator = FileRequestChangeType_validator
EventType._file_request_close_validator = FileRequestCloseType_validator
EventType._file_request_create_validator = FileRequestCreateType_validator
EventType._file_request_receive_file_validator = FileRequestReceiveFileType_validator
EventType._group_add_external_id_validator = GroupAddExternalIdType_validator
EventType._group_add_member_validator = GroupAddMemberType_validator
EventType._group_change_external_id_validator = GroupChangeExternalIdType_validator
EventType._group_change_management_type_validator = GroupChangeManagementTypeType_validator
EventType._group_change_member_role_validator = GroupChangeMemberRoleType_validator
EventType._group_create_validator = GroupCreateType_validator
EventType._group_delete_validator = GroupDeleteType_validator
EventType._group_description_updated_validator = GroupDescriptionUpdatedType_validator
EventType._group_join_policy_updated_validator = GroupJoinPolicyUpdatedType_validator
EventType._group_moved_validator = GroupMovedType_validator
EventType._group_remove_external_id_validator = GroupRemoveExternalIdType_validator
EventType._group_remove_member_validator = GroupRemoveMemberType_validator
EventType._group_rename_validator = GroupRenameType_validator
EventType._emm_error_validator = EmmErrorType_validator
EventType._login_fail_validator = LoginFailType_validator
EventType._login_success_validator = LoginSuccessType_validator
EventType._logout_validator = LogoutType_validator
EventType._reseller_support_session_end_validator = ResellerSupportSessionEndType_validator
EventType._reseller_support_session_start_validator = ResellerSupportSessionStartType_validator
EventType._sign_in_as_session_end_validator = SignInAsSessionEndType_validator
EventType._sign_in_as_session_start_validator = SignInAsSessionStartType_validator
EventType._sso_error_validator = SsoErrorType_validator
EventType._member_add_name_validator = MemberAddNameType_validator
EventType._member_change_admin_role_validator = MemberChangeAdminRoleType_validator
EventType._member_change_email_validator = MemberChangeEmailType_validator
EventType._member_change_membership_type_validator = MemberChangeMembershipTypeType_validator
EventType._member_change_name_validator = MemberChangeNameType_validator
EventType._member_change_status_validator = MemberChangeStatusType_validator
EventType._member_delete_manual_contacts_validator = MemberDeleteManualContactsType_validator
EventType._member_permanently_delete_account_contents_validator = MemberPermanentlyDeleteAccountContentsType_validator
EventType._member_space_limits_add_custom_quota_validator = MemberSpaceLimitsAddCustomQuotaType_validator
EventType._member_space_limits_change_custom_quota_validator = MemberSpaceLimitsChangeCustomQuotaType_validator
EventType._member_space_limits_change_status_validator = MemberSpaceLimitsChangeStatusType_validator
EventType._member_space_limits_remove_custom_quota_validator = MemberSpaceLimitsRemoveCustomQuotaType_validator
EventType._member_suggest_validator = MemberSuggestType_validator
EventType._member_transfer_account_contents_validator = MemberTransferAccountContentsType_validator
EventType._secondary_mails_policy_changed_validator = SecondaryMailsPolicyChangedType_validator
EventType._paper_content_add_member_validator = PaperContentAddMemberType_validator
EventType._paper_content_add_to_folder_validator = PaperContentAddToFolderType_validator
EventType._paper_content_archive_validator = PaperContentArchiveType_validator
EventType._paper_content_create_validator = PaperContentCreateType_validator
EventType._paper_content_permanently_delete_validator = PaperContentPermanentlyDeleteType_validator
EventType._paper_content_remove_from_folder_validator = PaperContentRemoveFromFolderType_validator
EventType._paper_content_remove_member_validator = PaperContentRemoveMemberType_validator
EventType._paper_content_rename_validator = PaperContentRenameType_validator
EventType._paper_content_restore_validator = PaperContentRestoreType_validator
EventType._paper_doc_add_comment_validator = PaperDocAddCommentType_validator
EventType._paper_doc_change_member_role_validator = PaperDocChangeMemberRoleType_validator
EventType._paper_doc_change_sharing_policy_validator = PaperDocChangeSharingPolicyType_validator
EventType._paper_doc_change_subscription_validator = PaperDocChangeSubscriptionType_validator
EventType._paper_doc_deleted_validator = PaperDocDeletedType_validator
EventType._paper_doc_delete_comment_validator = PaperDocDeleteCommentType_validator
EventType._paper_doc_download_validator = PaperDocDownloadType_validator
EventType._paper_doc_edit_validator = PaperDocEditType_validator
EventType._paper_doc_edit_comment_validator = PaperDocEditCommentType_validator
EventType._paper_doc_followed_validator = PaperDocFollowedType_validator
EventType._paper_doc_mention_validator = PaperDocMentionType_validator
EventType._paper_doc_ownership_changed_validator = PaperDocOwnershipChangedType_validator
EventType._paper_doc_request_access_validator = PaperDocRequestAccessType_validator
EventType._paper_doc_resolve_comment_validator = PaperDocResolveCommentType_validator
EventType._paper_doc_revert_validator = PaperDocRevertType_validator
EventType._paper_doc_slack_share_validator = PaperDocSlackShareType_validator
EventType._paper_doc_team_invite_validator = PaperDocTeamInviteType_validator
EventType._paper_doc_trashed_validator = PaperDocTrashedType_validator
EventType._paper_doc_unresolve_comment_validator = PaperDocUnresolveCommentType_validator
EventType._paper_doc_untrashed_validator = PaperDocUntrashedType_validator
EventType._paper_doc_view_validator = PaperDocViewType_validator
EventType._paper_external_view_allow_validator = PaperExternalViewAllowType_validator
EventType._paper_external_view_default_team_validator = PaperExternalViewDefaultTeamType_validator
EventType._paper_external_view_forbid_validator = PaperExternalViewForbidType_validator
EventType._paper_folder_change_subscription_validator = PaperFolderChangeSubscriptionType_validator
EventType._paper_folder_deleted_validator = PaperFolderDeletedType_validator
EventType._paper_folder_followed_validator = PaperFolderFollowedType_validator
EventType._paper_folder_team_invite_validator = PaperFolderTeamInviteType_validator
EventType._password_change_validator = PasswordChangeType_validator
EventType._password_reset_validator = PasswordResetType_validator
EventType._password_reset_all_validator = PasswordResetAllType_validator
EventType._emm_create_exceptions_report_validator = EmmCreateExceptionsReportType_validator
EventType._emm_create_usage_report_validator = EmmCreateUsageReportType_validator
EventType._export_members_report_validator = ExportMembersReportType_validator
EventType._paper_admin_export_start_validator = PaperAdminExportStartType_validator
EventType._smart_sync_create_admin_privilege_report_validator = SmartSyncCreateAdminPrivilegeReportType_validator
EventType._team_activity_create_report_validator = TeamActivityCreateReportType_validator
EventType._collection_share_validator = CollectionShareType_validator
EventType._note_acl_invite_only_validator = NoteAclInviteOnlyType_validator
EventType._note_acl_link_validator = NoteAclLinkType_validator
EventType._note_acl_team_link_validator = NoteAclTeamLinkType_validator
EventType._note_shared_validator = NoteSharedType_validator
EventType._note_share_receive_validator = NoteShareReceiveType_validator
EventType._open_note_shared_validator = OpenNoteSharedType_validator
EventType._sf_add_group_validator = SfAddGroupType_validator
EventType._sf_allow_non_members_to_view_shared_links_validator = SfAllowNonMembersToViewSharedLinksType_validator
EventType._sf_external_invite_warn_validator = SfExternalInviteWarnType_validator
EventType._sf_fb_invite_validator = SfFbInviteType_validator
EventType._sf_fb_invite_change_role_validator = SfFbInviteChangeRoleType_validator
EventType._sf_fb_uninvite_validator = SfFbUninviteType_validator
EventType._sf_invite_group_validator = SfInviteGroupType_validator
EventType._sf_team_grant_access_validator = SfTeamGrantAccessType_validator
EventType._sf_team_invite_validator = SfTeamInviteType_validator
EventType._sf_team_invite_change_role_validator = SfTeamInviteChangeRoleType_validator
EventType._sf_team_join_validator = SfTeamJoinType_validator
EventType._sf_team_join_from_oob_link_validator = SfTeamJoinFromOobLinkType_validator
EventType._sf_team_uninvite_validator = SfTeamUninviteType_validator
EventType._shared_content_add_invitees_validator = SharedContentAddInviteesType_validator
EventType._shared_content_add_link_expiry_validator = SharedContentAddLinkExpiryType_validator
EventType._shared_content_add_link_password_validator = SharedContentAddLinkPasswordType_validator
EventType._shared_content_add_member_validator = SharedContentAddMemberType_validator
EventType._shared_content_change_downloads_policy_validator = SharedContentChangeDownloadsPolicyType_validator
EventType._shared_content_change_invitee_role_validator = SharedContentChangeInviteeRoleType_validator
EventType._shared_content_change_link_audience_validator = SharedContentChangeLinkAudienceType_validator
EventType._shared_content_change_link_expiry_validator = SharedContentChangeLinkExpiryType_validator
EventType._shared_content_change_link_password_validator = SharedContentChangeLinkPasswordType_validator
EventType._shared_content_change_member_role_validator = SharedContentChangeMemberRoleType_validator
EventType._shared_content_change_viewer_info_policy_validator = SharedContentChangeViewerInfoPolicyType_validator
EventType._shared_content_claim_invitation_validator = SharedContentClaimInvitationType_validator
EventType._shared_content_copy_validator = SharedContentCopyType_validator
EventType._shared_content_download_validator = SharedContentDownloadType_validator
EventType._shared_content_relinquish_membership_validator = SharedContentRelinquishMembershipType_validator
EventType._shared_content_remove_invitees_validator = SharedContentRemoveInviteesType_validator
EventType._shared_content_remove_link_expiry_validator = SharedContentRemoveLinkExpiryType_validator
EventType._shared_content_remove_link_password_validator = SharedContentRemoveLinkPasswordType_validator
EventType._shared_content_remove_member_validator = SharedContentRemoveMemberType_validator
EventType._shared_content_request_access_validator = SharedContentRequestAccessType_validator
EventType._shared_content_unshare_validator = SharedContentUnshareType_validator
EventType._shared_content_view_validator = SharedContentViewType_validator
EventType._shared_folder_change_link_policy_validator = SharedFolderChangeLinkPolicyType_validator
EventType._shared_folder_change_members_inheritance_policy_validator = SharedFolderChangeMembersInheritancePolicyType_validator
EventType._shared_folder_change_members_management_policy_validator = SharedFolderChangeMembersManagementPolicyType_validator
EventType._shared_folder_change_members_policy_validator = SharedFolderChangeMembersPolicyType_validator
EventType._shared_folder_create_validator = SharedFolderCreateType_validator
EventType._shared_folder_decline_invitation_validator = SharedFolderDeclineInvitationType_validator
EventType._shared_folder_mount_validator = SharedFolderMountType_validator
EventType._shared_folder_nest_validator = SharedFolderNestType_validator
EventType._shared_folder_transfer_ownership_validator = SharedFolderTransferOwnershipType_validator
EventType._shared_folder_unmount_validator = SharedFolderUnmountType_validator
EventType._shared_link_add_expiry_validator = SharedLinkAddExpiryType_validator
EventType._shared_link_change_expiry_validator = SharedLinkChangeExpiryType_validator
EventType._shared_link_change_visibility_validator = SharedLinkChangeVisibilityType_validator
EventType._shared_link_copy_validator = SharedLinkCopyType_validator
EventType._shared_link_create_validator = SharedLinkCreateType_validator
EventType._shared_link_disable_validator = SharedLinkDisableType_validator
EventType._shared_link_download_validator = SharedLinkDownloadType_validator
EventType._shared_link_remove_expiry_validator = SharedLinkRemoveExpiryType_validator
EventType._shared_link_share_validator = SharedLinkShareType_validator
EventType._shared_link_view_validator = SharedLinkViewType_validator
EventType._shared_note_opened_validator = SharedNoteOpenedType_validator
EventType._shmodel_group_share_validator = ShmodelGroupShareType_validator
EventType._showcase_access_granted_validator = ShowcaseAccessGrantedType_validator
EventType._showcase_add_member_validator = ShowcaseAddMemberType_validator
EventType._showcase_archived_validator = ShowcaseArchivedType_validator
EventType._showcase_created_validator = ShowcaseCreatedType_validator
EventType._showcase_delete_comment_validator = ShowcaseDeleteCommentType_validator
EventType._showcase_edited_validator = ShowcaseEditedType_validator
EventType._showcase_edit_comment_validator = ShowcaseEditCommentType_validator
EventType._showcase_file_added_validator = ShowcaseFileAddedType_validator
EventType._showcase_file_download_validator = ShowcaseFileDownloadType_validator
EventType._showcase_file_removed_validator = ShowcaseFileRemovedType_validator
EventType._showcase_file_view_validator = ShowcaseFileViewType_validator
EventType._showcase_permanently_deleted_validator = ShowcasePermanentlyDeletedType_validator
EventType._showcase_post_comment_validator = ShowcasePostCommentType_validator
EventType._showcase_remove_member_validator = ShowcaseRemoveMemberType_validator
EventType._showcase_renamed_validator = ShowcaseRenamedType_validator
EventType._showcase_request_access_validator = ShowcaseRequestAccessType_validator
EventType._showcase_resolve_comment_validator = ShowcaseResolveCommentType_validator
EventType._showcase_restored_validator = ShowcaseRestoredType_validator
EventType._showcase_trashed_validator = ShowcaseTrashedType_validator
EventType._showcase_trashed_deprecated_validator = ShowcaseTrashedDeprecatedType_validator
EventType._showcase_unresolve_comment_validator = ShowcaseUnresolveCommentType_validator
EventType._showcase_untrashed_validator = ShowcaseUntrashedType_validator
EventType._showcase_untrashed_deprecated_validator = ShowcaseUntrashedDeprecatedType_validator
EventType._showcase_view_validator = ShowcaseViewType_validator
EventType._sso_add_cert_validator = SsoAddCertType_validator
EventType._sso_add_login_url_validator = SsoAddLoginUrlType_validator
EventType._sso_add_logout_url_validator = SsoAddLogoutUrlType_validator
EventType._sso_change_cert_validator = SsoChangeCertType_validator
EventType._sso_change_login_url_validator = SsoChangeLoginUrlType_validator
EventType._sso_change_logout_url_validator = SsoChangeLogoutUrlType_validator
EventType._sso_change_saml_identity_mode_validator = SsoChangeSamlIdentityModeType_validator
EventType._sso_remove_cert_validator = SsoRemoveCertType_validator
EventType._sso_remove_login_url_validator = SsoRemoveLoginUrlType_validator
EventType._sso_remove_logout_url_validator = SsoRemoveLogoutUrlType_validator
EventType._team_folder_change_status_validator = TeamFolderChangeStatusType_validator
EventType._team_folder_create_validator = TeamFolderCreateType_validator
EventType._team_folder_downgrade_validator = TeamFolderDowngradeType_validator
EventType._team_folder_permanently_delete_validator = TeamFolderPermanentlyDeleteType_validator
EventType._team_folder_rename_validator = TeamFolderRenameType_validator
EventType._team_selective_sync_settings_changed_validator = TeamSelectiveSyncSettingsChangedType_validator
EventType._account_capture_change_policy_validator = AccountCaptureChangePolicyType_validator
EventType._allow_download_disabled_validator = AllowDownloadDisabledType_validator
EventType._allow_download_enabled_validator = AllowDownloadEnabledType_validator
EventType._camera_uploads_policy_changed_validator = CameraUploadsPolicyChangedType_validator
EventType._data_placement_restriction_change_policy_validator = DataPlacementRestrictionChangePolicyType_validator
EventType._data_placement_restriction_satisfy_policy_validator = DataPlacementRestrictionSatisfyPolicyType_validator
EventType._device_approvals_change_desktop_policy_validator = DeviceApprovalsChangeDesktopPolicyType_validator
EventType._device_approvals_change_mobile_policy_validator = DeviceApprovalsChangeMobilePolicyType_validator
EventType._device_approvals_change_overage_action_validator = DeviceApprovalsChangeOverageActionType_validator
EventType._device_approvals_change_unlink_action_validator = DeviceApprovalsChangeUnlinkActionType_validator
EventType._directory_restrictions_add_members_validator = DirectoryRestrictionsAddMembersType_validator
EventType._directory_restrictions_remove_members_validator = DirectoryRestrictionsRemoveMembersType_validator
EventType._emm_add_exception_validator = EmmAddExceptionType_validator
EventType._emm_change_policy_validator = EmmChangePolicyType_validator
EventType._emm_remove_exception_validator = EmmRemoveExceptionType_validator
EventType._extended_version_history_change_policy_validator = ExtendedVersionHistoryChangePolicyType_validator
EventType._file_comments_change_policy_validator = FileCommentsChangePolicyType_validator
EventType._file_requests_change_policy_validator = FileRequestsChangePolicyType_validator
EventType._file_requests_emails_enabled_validator = FileRequestsEmailsEnabledType_validator
EventType._file_requests_emails_restricted_to_team_only_validator = FileRequestsEmailsRestrictedToTeamOnlyType_validator
EventType._google_sso_change_policy_validator = GoogleSsoChangePolicyType_validator
EventType._group_user_management_change_policy_validator = GroupUserManagementChangePolicyType_validator
EventType._member_requests_change_policy_validator = MemberRequestsChangePolicyType_validator
EventType._member_space_limits_add_exception_validator = MemberSpaceLimitsAddExceptionType_validator
EventType._member_space_limits_change_caps_type_policy_validator = MemberSpaceLimitsChangeCapsTypePolicyType_validator
EventType._member_space_limits_change_policy_validator = MemberSpaceLimitsChangePolicyType_validator
EventType._member_space_limits_remove_exception_validator = MemberSpaceLimitsRemoveExceptionType_validator
EventType._member_suggestions_change_policy_validator = MemberSuggestionsChangePolicyType_validator
EventType._microsoft_office_addin_change_policy_validator = MicrosoftOfficeAddinChangePolicyType_validator
EventType._network_control_change_policy_validator = NetworkControlChangePolicyType_validator
EventType._paper_change_deployment_policy_validator = PaperChangeDeploymentPolicyType_validator
EventType._paper_change_member_link_policy_validator = PaperChangeMemberLinkPolicyType_validator
EventType._paper_change_member_policy_validator = PaperChangeMemberPolicyType_validator
EventType._paper_change_policy_validator = PaperChangePolicyType_validator
EventType._paper_enabled_users_group_addition_validator = PaperEnabledUsersGroupAdditionType_validator
EventType._paper_enabled_users_group_removal_validator = PaperEnabledUsersGroupRemovalType_validator
EventType._permanent_delete_change_policy_validator = PermanentDeleteChangePolicyType_validator
EventType._sharing_change_folder_join_policy_validator = SharingChangeFolderJoinPolicyType_validator
EventType._sharing_change_link_policy_validator = SharingChangeLinkPolicyType_validator
EventType._sharing_change_member_policy_validator = SharingChangeMemberPolicyType_validator
EventType._showcase_change_download_policy_validator = ShowcaseChangeDownloadPolicyType_validator
EventType._showcase_change_enabled_policy_validator = ShowcaseChangeEnabledPolicyType_validator
EventType._showcase_change_external_sharing_policy_validator = ShowcaseChangeExternalSharingPolicyType_validator
EventType._smart_sync_change_policy_validator = SmartSyncChangePolicyType_validator
EventType._smart_sync_not_opt_out_validator = SmartSyncNotOptOutType_validator
EventType._smart_sync_opt_out_validator = SmartSyncOptOutType_validator
EventType._sso_change_policy_validator = SsoChangePolicyType_validator
EventType._team_selective_sync_policy_changed_validator = TeamSelectiveSyncPolicyChangedType_validator
EventType._tfa_change_policy_validator = TfaChangePolicyType_validator
EventType._two_account_change_policy_validator = TwoAccountChangePolicyType_validator
EventType._viewer_info_policy_changed_validator = ViewerInfoPolicyChangedType_validator
EventType._web_sessions_change_fixed_length_policy_validator = WebSessionsChangeFixedLengthPolicyType_validator
EventType._web_sessions_change_idle_length_policy_validator = WebSessionsChangeIdleLengthPolicyType_validator
EventType._team_merge_from_validator = TeamMergeFromType_validator
EventType._team_merge_to_validator = TeamMergeToType_validator
EventType._team_profile_add_logo_validator = TeamProfileAddLogoType_validator
EventType._team_profile_change_default_language_validator = TeamProfileChangeDefaultLanguageType_validator
EventType._team_profile_change_logo_validator = TeamProfileChangeLogoType_validator
EventType._team_profile_change_name_validator = TeamProfileChangeNameType_validator
EventType._team_profile_remove_logo_validator = TeamProfileRemoveLogoType_validator
EventType._tfa_add_backup_phone_validator = TfaAddBackupPhoneType_validator
EventType._tfa_add_security_key_validator = TfaAddSecurityKeyType_validator
EventType._tfa_change_backup_phone_validator = TfaChangeBackupPhoneType_validator
EventType._tfa_change_status_validator = TfaChangeStatusType_validator
EventType._tfa_remove_backup_phone_validator = TfaRemoveBackupPhoneType_validator
EventType._tfa_remove_security_key_validator = TfaRemoveSecurityKeyType_validator
EventType._tfa_reset_validator = TfaResetType_validator
EventType._other_validator = bv.Void()
EventType._tagmap = {
    'app_link_team': EventType._app_link_team_validator,
    'app_link_user': EventType._app_link_user_validator,
    'app_unlink_team': EventType._app_unlink_team_validator,
    'app_unlink_user': EventType._app_unlink_user_validator,
    'file_add_comment': EventType._file_add_comment_validator,
    'file_change_comment_subscription': EventType._file_change_comment_subscription_validator,
    'file_delete_comment': EventType._file_delete_comment_validator,
    'file_edit_comment': EventType._file_edit_comment_validator,
    'file_like_comment': EventType._file_like_comment_validator,
    'file_resolve_comment': EventType._file_resolve_comment_validator,
    'file_unlike_comment': EventType._file_unlike_comment_validator,
    'file_unresolve_comment': EventType._file_unresolve_comment_validator,
    'device_change_ip_desktop': EventType._device_change_ip_desktop_validator,
    'device_change_ip_mobile': EventType._device_change_ip_mobile_validator,
    'device_change_ip_web': EventType._device_change_ip_web_validator,
    'device_delete_on_unlink_fail': EventType._device_delete_on_unlink_fail_validator,
    'device_delete_on_unlink_success': EventType._device_delete_on_unlink_success_validator,
    'device_link_fail': EventType._device_link_fail_validator,
    'device_link_success': EventType._device_link_success_validator,
    'device_management_disabled': EventType._device_management_disabled_validator,
    'device_management_enabled': EventType._device_management_enabled_validator,
    'device_unlink': EventType._device_unlink_validator,
    'emm_refresh_auth_token': EventType._emm_refresh_auth_token_validator,
    'account_capture_change_availability': EventType._account_capture_change_availability_validator,
    'account_capture_migrate_account': EventType._account_capture_migrate_account_validator,
    'account_capture_notification_emails_sent': EventType._account_capture_notification_emails_sent_validator,
    'account_capture_relinquish_account': EventType._account_capture_relinquish_account_validator,
    'disabled_domain_invites': EventType._disabled_domain_invites_validator,
    'domain_invites_approve_request_to_join_team': EventType._domain_invites_approve_request_to_join_team_validator,
    'domain_invites_decline_request_to_join_team': EventType._domain_invites_decline_request_to_join_team_validator,
    'domain_invites_email_existing_users': EventType._domain_invites_email_existing_users_validator,
    'domain_invites_request_to_join_team': EventType._domain_invites_request_to_join_team_validator,
    'domain_invites_set_invite_new_user_pref_to_no': EventType._domain_invites_set_invite_new_user_pref_to_no_validator,
    'domain_invites_set_invite_new_user_pref_to_yes': EventType._domain_invites_set_invite_new_user_pref_to_yes_validator,
    'domain_verification_add_domain_fail': EventType._domain_verification_add_domain_fail_validator,
    'domain_verification_add_domain_success': EventType._domain_verification_add_domain_success_validator,
    'domain_verification_remove_domain': EventType._domain_verification_remove_domain_validator,
    'enabled_domain_invites': EventType._enabled_domain_invites_validator,
    'create_folder': EventType._create_folder_validator,
    'file_add': EventType._file_add_validator,
    'file_copy': EventType._file_copy_validator,
    'file_delete': EventType._file_delete_validator,
    'file_download': EventType._file_download_validator,
    'file_edit': EventType._file_edit_validator,
    'file_get_copy_reference': EventType._file_get_copy_reference_validator,
    'file_move': EventType._file_move_validator,
    'file_permanently_delete': EventType._file_permanently_delete_validator,
    'file_preview': EventType._file_preview_validator,
    'file_rename': EventType._file_rename_validator,
    'file_restore': EventType._file_restore_validator,
    'file_revert': EventType._file_revert_validator,
    'file_rollback_changes': EventType._file_rollback_changes_validator,
    'file_save_copy_reference': EventType._file_save_copy_reference_validator,
    'file_request_change': EventType._file_request_change_validator,
    'file_request_close': EventType._file_request_close_validator,
    'file_request_create': EventType._file_request_create_validator,
    'file_request_receive_file': EventType._file_request_receive_file_validator,
    'group_add_external_id': EventType._group_add_external_id_validator,
    'group_add_member': EventType._group_add_member_validator,
    'group_change_external_id': EventType._group_change_external_id_validator,
    'group_change_management_type': EventType._group_change_management_type_validator,
    'group_change_member_role': EventType._group_change_member_role_validator,
    'group_create': EventType._group_create_validator,
    'group_delete': EventType._group_delete_validator,
    'group_description_updated': EventType._group_description_updated_validator,
    'group_join_policy_updated': EventType._group_join_policy_updated_validator,
    'group_moved': EventType._group_moved_validator,
    'group_remove_external_id': EventType._group_remove_external_id_validator,
    'group_remove_member': EventType._group_remove_member_validator,
    'group_rename': EventType._group_rename_validator,
    'emm_error': EventType._emm_error_validator,
    'login_fail': EventType._login_fail_validator,
    'login_success': EventType._login_success_validator,
    'logout': EventType._logout_validator,
    'reseller_support_session_end': EventType._reseller_support_session_end_validator,
    'reseller_support_session_start': EventType._reseller_support_session_start_validator,
    'sign_in_as_session_end': EventType._sign_in_as_session_end_validator,
    'sign_in_as_session_start': EventType._sign_in_as_session_start_validator,
    'sso_error': EventType._sso_error_validator,
    'member_add_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_membership_type': EventType._member_change_membership_type_validator,
    'member_change_name': EventType._member_change_name_validator,
    'member_change_status': EventType._member_change_status_validator,
    'member_delete_manual_contacts': EventType._member_delete_manual_contacts_validator,
    'member_permanently_delete_account_contents': EventType._member_permanently_delete_account_contents_validator,
    'member_space_limits_add_custom_quota': EventType._member_space_limits_add_custom_quota_validator,
    'member_space_limits_change_custom_quota': EventType._member_space_limits_change_custom_quota_validator,
    'member_space_limits_change_status': EventType._member_space_limits_change_status_validator,
    'member_space_limits_remove_custom_quota': EventType._member_space_limits_remove_custom_quota_validator,
    'member_suggest': EventType._member_suggest_validator,
    'member_transfer_account_contents': EventType._member_transfer_account_contents_validator,
    'secondary_mails_policy_changed': EventType._secondary_mails_policy_changed_validator,
    'paper_content_add_member': EventType._paper_content_add_member_validator,
    'paper_content_add_to_folder': EventType._paper_content_add_to_folder_validator,
    'paper_content_archive': EventType._paper_content_archive_validator,
    'paper_content_create': EventType._paper_content_create_validator,
    'paper_content_permanently_delete': EventType._paper_content_permanently_delete_validator,
    'paper_content_remove_from_folder': EventType._paper_content_remove_from_folder_validator,
    'paper_content_remove_member': EventType._paper_content_remove_member_validator,
    'paper_content_rename': EventType._paper_content_rename_validator,
    'paper_content_restore': EventType._paper_content_restore_validator,
    'paper_doc_add_comment': EventType._paper_doc_add_comment_validator,
    'paper_doc_change_member_role': EventType._paper_doc_change_member_role_validator,
    'paper_doc_change_sharing_policy': EventType._paper_doc_change_sharing_policy_validator,
    'paper_doc_change_subscription': EventType._paper_doc_change_subscription_validator,
    'paper_doc_deleted': EventType._paper_doc_deleted_validator,
    'paper_doc_delete_comment': EventType._paper_doc_delete_comment_validator,
    'paper_doc_download': EventType._paper_doc_download_validator,
    'paper_doc_edit': EventType._paper_doc_edit_validator,
    'paper_doc_edit_comment': EventType._paper_doc_edit_comment_validator,
    'paper_doc_followed': EventType._paper_doc_followed_validator,
    'paper_doc_mention': EventType._paper_doc_mention_validator,
    'paper_doc_ownership_changed': EventType._paper_doc_ownership_changed_validator,
    'paper_doc_request_access': EventType._paper_doc_request_access_validator,
    'paper_doc_resolve_comment': EventType._paper_doc_resolve_comment_validator,
    'paper_doc_revert': EventType._paper_doc_revert_validator,
    'paper_doc_slack_share': EventType._paper_doc_slack_share_validator,
    'paper_doc_team_invite': EventType._paper_doc_team_invite_validator,
    'paper_doc_trashed': EventType._paper_doc_trashed_validator,
    'paper_doc_unresolve_comment': EventType._paper_doc_unresolve_comment_validator,
    'paper_doc_untrashed': EventType._paper_doc_untrashed_validator,
    'paper_doc_view': EventType._paper_doc_view_validator,
    'paper_external_view_allow': EventType._paper_external_view_allow_validator,
    'paper_external_view_default_team': EventType._paper_external_view_default_team_validator,
    'paper_external_view_forbid': EventType._paper_external_view_forbid_validator,
    'paper_folder_change_subscription': EventType._paper_folder_change_subscription_validator,
    'paper_folder_deleted': EventType._paper_folder_deleted_validator,
    'paper_folder_followed': EventType._paper_folder_followed_validator,
    'paper_folder_team_invite': EventType._paper_folder_team_invite_validator,
    'password_change': EventType._password_change_validator,
    'password_reset': EventType._password_reset_validator,
    'password_reset_all': EventType._password_reset_all_validator,
    'emm_create_exceptions_report': EventType._emm_create_exceptions_report_validator,
    'emm_create_usage_report': EventType._emm_create_usage_report_validator,
    'export_members_report': EventType._export_members_report_validator,
    'paper_admin_export_start': EventType._paper_admin_export_start_validator,
    'smart_sync_create_admin_privilege_report': EventType._smart_sync_create_admin_privilege_report_validator,
    'team_activity_create_report': EventType._team_activity_create_report_validator,
    'collection_share': EventType._collection_share_validator,
    'note_acl_invite_only': EventType._note_acl_invite_only_validator,
    'note_acl_link': EventType._note_acl_link_validator,
    'note_acl_team_link': EventType._note_acl_team_link_validator,
    'note_shared': EventType._note_shared_validator,
    'note_share_receive': EventType._note_share_receive_validator,
    'open_note_shared': EventType._open_note_shared_validator,
    'sf_add_group': EventType._sf_add_group_validator,
    'sf_allow_non_members_to_view_shared_links': EventType._sf_allow_non_members_to_view_shared_links_validator,
    'sf_external_invite_warn': EventType._sf_external_invite_warn_validator,
    'sf_fb_invite': EventType._sf_fb_invite_validator,
    'sf_fb_invite_change_role': EventType._sf_fb_invite_change_role_validator,
    'sf_fb_uninvite': EventType._sf_fb_uninvite_validator,
    'sf_invite_group': EventType._sf_invite_group_validator,
    'sf_team_grant_access': EventType._sf_team_grant_access_validator,
    'sf_team_invite': EventType._sf_team_invite_validator,
    'sf_team_invite_change_role': EventType._sf_team_invite_change_role_validator,
    'sf_team_join': EventType._sf_team_join_validator,
    'sf_team_join_from_oob_link': EventType._sf_team_join_from_oob_link_validator,
    'sf_team_uninvite': EventType._sf_team_uninvite_validator,
    'shared_content_add_invitees': EventType._shared_content_add_invitees_validator,
    'shared_content_add_link_expiry': EventType._shared_content_add_link_expiry_validator,
    'shared_content_add_link_password': EventType._shared_content_add_link_password_validator,
    'shared_content_add_member': EventType._shared_content_add_member_validator,
    'shared_content_change_downloads_policy': EventType._shared_content_change_downloads_policy_validator,
    'shared_content_change_invitee_role': EventType._shared_content_change_invitee_role_validator,
    'shared_content_change_link_audience': EventType._shared_content_change_link_audience_validator,
    'shared_content_change_link_expiry': EventType._shared_content_change_link_expiry_validator,
    'shared_content_change_link_password': EventType._shared_content_change_link_password_validator,
    'shared_content_change_member_role': EventType._shared_content_change_member_role_validator,
    'shared_content_change_viewer_info_policy': EventType._shared_content_change_viewer_info_policy_validator,
    'shared_content_claim_invitation': EventType._shared_content_claim_invitation_validator,
    'shared_content_copy': EventType._shared_content_copy_validator,
    'shared_content_download': EventType._shared_content_download_validator,
    'shared_content_relinquish_membership': EventType._shared_content_relinquish_membership_validator,
    'shared_content_remove_invitees': EventType._shared_content_remove_invitees_validator,
    'shared_content_remove_link_expiry': EventType._shared_content_remove_link_expiry_validator,
    'shared_content_remove_link_password': EventType._shared_content_remove_link_password_validator,
    'shared_content_remove_member': EventType._shared_content_remove_member_validator,
    'shared_content_request_access': EventType._shared_content_request_access_validator,
    'shared_content_unshare': EventType._shared_content_unshare_validator,
    'shared_content_view': EventType._shared_content_view_validator,
    'shared_folder_change_link_policy': EventType._shared_folder_change_link_policy_validator,
    'shared_folder_change_members_inheritance_policy': EventType._shared_folder_change_members_inheritance_policy_validator,
    'shared_folder_change_members_management_policy': EventType._shared_folder_change_members_management_policy_validator,
    'shared_folder_change_members_policy': EventType._shared_folder_change_members_policy_validator,
    'shared_folder_create': EventType._shared_folder_create_validator,
    'shared_folder_decline_invitation': EventType._shared_folder_decline_invitation_validator,
    'shared_folder_mount': EventType._shared_folder_mount_validator,
    'shared_folder_nest': EventType._shared_folder_nest_validator,
    'shared_folder_transfer_ownership': EventType._shared_folder_transfer_ownership_validator,
    'shared_folder_unmount': EventType._shared_folder_unmount_validator,
    'shared_link_add_expiry': EventType._shared_link_add_expiry_validator,
    'shared_link_change_expiry': EventType._shared_link_change_expiry_validator,
    'shared_link_change_visibility': EventType._shared_link_change_visibility_validator,
    'shared_link_copy': EventType._shared_link_copy_validator,
    'shared_link_create': EventType._shared_link_create_validator,
    'shared_link_disable': EventType._shared_link_disable_validator,
    'shared_link_download': EventType._shared_link_download_validator,
    'shared_link_remove_expiry': EventType._shared_link_remove_expiry_validator,
    'shared_link_share': EventType._shared_link_share_validator,
    'shared_link_view': EventType._shared_link_view_validator,
    'shared_note_opened': EventType._shared_note_opened_validator,
    'shmodel_group_share': EventType._shmodel_group_share_validator,
    'showcase_access_granted': EventType._showcase_access_granted_validator,
    'showcase_add_member': EventType._showcase_add_member_validator,
    'showcase_archived': EventType._showcase_archived_validator,
    'showcase_created': EventType._showcase_created_validator,
    'showcase_delete_comment': EventType._showcase_delete_comment_validator,
    'showcase_edited': EventType._showcase_edited_validator,
    'showcase_edit_comment': EventType._showcase_edit_comment_validator,
    'showcase_file_added': EventType._showcase_file_added_validator,
    'showcase_file_download': EventType._showcase_file_download_validator,
    'showcase_file_removed': EventType._showcase_file_removed_validator,
    'showcase_file_view': EventType._showcase_file_view_validator,
    'showcase_permanently_deleted': EventType._showcase_permanently_deleted_validator,
    'showcase_post_comment': EventType._showcase_post_comment_validator,
    'showcase_remove_member': EventType._showcase_remove_member_validator,
    'showcase_renamed': EventType._showcase_renamed_validator,
    'showcase_request_access': EventType._showcase_request_access_validator,
    'showcase_resolve_comment': EventType._showcase_resolve_comment_validator,
    'showcase_restored': EventType._showcase_restored_validator,
    'showcase_trashed': EventType._showcase_trashed_validator,
    'showcase_trashed_deprecated': EventType._showcase_trashed_deprecated_validator,
    'showcase_unresolve_comment': EventType._showcase_unresolve_comment_validator,
    'showcase_untrashed': EventType._showcase_untrashed_validator,
    'showcase_untrashed_deprecated': EventType._showcase_untrashed_deprecated_validator,
    'showcase_view': EventType._showcase_view_validator,
    'sso_add_cert': EventType._sso_add_cert_validator,
    'sso_add_login_url': EventType._sso_add_login_url_validator,
    'sso_add_logout_url': EventType._sso_add_logout_url_validator,
    'sso_change_cert': EventType._sso_change_cert_validator,
    'sso_change_login_url': EventType._sso_change_login_url_validator,
    'sso_change_logout_url': EventType._sso_change_logout_url_validator,
    'sso_change_saml_identity_mode': EventType._sso_change_saml_identity_mode_validator,
    'sso_remove_cert': EventType._sso_remove_cert_validator,
    'sso_remove_login_url': EventType._sso_remove_login_url_validator,
    'sso_remove_logout_url': EventType._sso_remove_logout_url_validator,
    'team_folder_change_status': EventType._team_folder_change_status_validator,
    'team_folder_create': EventType._team_folder_create_validator,
    'team_folder_downgrade': EventType._team_folder_downgrade_validator,
    'team_folder_permanently_delete': EventType._team_folder_permanently_delete_validator,
    'team_folder_rename': EventType._team_folder_rename_validator,
    'team_selective_sync_settings_changed': EventType._team_selective_sync_settings_changed_validator,
    'account_capture_change_policy': EventType._account_capture_change_policy_validator,
    'allow_download_disabled': EventType._allow_download_disabled_validator,
    'allow_download_enabled': EventType._allow_download_enabled_validator,
    'camera_uploads_policy_changed': EventType._camera_uploads_policy_changed_validator,
    'data_placement_restriction_change_policy': EventType._data_placement_restriction_change_policy_validator,
    'data_placement_restriction_satisfy_policy': EventType._data_placement_restriction_satisfy_policy_validator,
    'device_approvals_change_desktop_policy': EventType._device_approvals_change_desktop_policy_validator,
    'device_approvals_change_mobile_policy': EventType._device_approvals_change_mobile_policy_validator,
    'device_approvals_change_overage_action': EventType._device_approvals_change_overage_action_validator,
    'device_approvals_change_unlink_action': EventType._device_approvals_change_unlink_action_validator,
    'directory_restrictions_add_members': EventType._directory_restrictions_add_members_validator,
    'directory_restrictions_remove_members': EventType._directory_restrictions_remove_members_validator,
    'emm_add_exception': EventType._emm_add_exception_validator,
    'emm_change_policy': EventType._emm_change_policy_validator,
    'emm_remove_exception': EventType._emm_remove_exception_validator,
    'extended_version_history_change_policy': EventType._extended_version_history_change_policy_validator,
    'file_comments_change_policy': EventType._file_comments_change_policy_validator,
    'file_requests_change_policy': EventType._file_requests_change_policy_validator,
    'file_requests_emails_enabled': EventType._file_requests_emails_enabled_validator,
    'file_requests_emails_restricted_to_team_only': EventType._file_requests_emails_restricted_to_team_only_validator,
    'google_sso_change_policy': EventType._google_sso_change_policy_validator,
    'group_user_management_change_policy': EventType._group_user_management_change_policy_validator,
    'member_requests_change_policy': EventType._member_requests_change_policy_validator,
    'member_space_limits_add_exception': EventType._member_space_limits_add_exception_validator,
    'member_space_limits_change_caps_type_policy': EventType._member_space_limits_change_caps_type_policy_validator,
    'member_space_limits_change_policy': EventType._member_space_limits_change_policy_validator,
    'member_space_limits_remove_exception': EventType._member_space_limits_remove_exception_validator,
    'member_suggestions_change_policy': EventType._member_suggestions_change_policy_validator,
    'microsoft_office_addin_change_policy': EventType._microsoft_office_addin_change_policy_validator,
    'network_control_change_policy': EventType._network_control_change_policy_validator,
    'paper_change_deployment_policy': EventType._paper_change_deployment_policy_validator,
    'paper_change_member_link_policy': EventType._paper_change_member_link_policy_validator,
    'paper_change_member_policy': EventType._paper_change_member_policy_validator,
    'paper_change_policy': EventType._paper_change_policy_validator,
    'paper_enabled_users_group_addition': EventType._paper_enabled_users_group_addition_validator,
    'paper_enabled_users_group_removal': EventType._paper_enabled_users_group_removal_validator,
    'permanent_delete_change_policy': EventType._permanent_delete_change_policy_validator,
    'sharing_change_folder_join_policy': EventType._sharing_change_folder_join_policy_validator,
    'sharing_change_link_policy': EventType._sharing_change_link_policy_validator,
    'sharing_change_member_policy': EventType._sharing_change_member_policy_validator,
    'showcase_change_download_policy': EventType._showcase_change_download_policy_validator,
    'showcase_change_enabled_policy': EventType._showcase_change_enabled_policy_validator,
    'showcase_change_external_sharing_policy': EventType._showcase_change_external_sharing_policy_validator,
    'smart_sync_change_policy': EventType._smart_sync_change_policy_validator,
    'smart_sync_not_opt_out': EventType._smart_sync_not_opt_out_validator,
    'smart_sync_opt_out': EventType._smart_sync_opt_out_validator,
    'sso_change_policy': EventType._sso_change_policy_validator,
    'team_selective_sync_policy_changed': EventType._team_selective_sync_policy_changed_validator,
    'tfa_change_policy': EventType._tfa_change_policy_validator,
    'two_account_change_policy': EventType._two_account_change_policy_validator,
    'viewer_info_policy_changed': EventType._viewer_info_policy_changed_validator,
    'web_sessions_change_fixed_length_policy': EventType._web_sessions_change_fixed_length_policy_validator,
    'web_sessions_change_idle_length_policy': EventType._web_sessions_change_idle_length_policy_validator,
    'team_merge_from': EventType._team_merge_from_validator,
    'team_merge_to': EventType._team_merge_to_validator,
    'team_profile_add_logo': EventType._team_profile_add_logo_validator,
    'team_profile_change_default_language': EventType._team_profile_change_default_language_validator,
    'team_profile_change_logo': EventType._team_profile_change_logo_validator,
    'team_profile_change_name': EventType._team_profile_change_name_validator,
    'team_profile_remove_logo': EventType._team_profile_remove_logo_validator,
    'tfa_add_backup_phone': EventType._tfa_add_backup_phone_validator,
    'tfa_add_security_key': EventType._tfa_add_security_key_validator,
    'tfa_change_backup_phone': EventType._tfa_change_backup_phone_validator,
    'tfa_change_status': EventType._tfa_change_status_validator,
    'tfa_remove_backup_phone': EventType._tfa_remove_backup_phone_validator,
    'tfa_remove_security_key': EventType._tfa_remove_security_key_validator,
    'tfa_reset': EventType._tfa_reset_validator,
    'other': EventType._other_validator,
}

EventType.other = EventType('other')

ExportMembersReportDetails._all_field_names_ = set([])
ExportMembersReportDetails._all_fields_ = []

ExportMembersReportType._description_validator = bv.String()
ExportMembersReportType._all_field_names_ = set(['description'])
ExportMembersReportType._all_fields_ = [('description', ExportMembersReportType._description_validator)]

ExtendedVersionHistoryChangePolicyDetails._new_value_validator = ExtendedVersionHistoryPolicy_validator
ExtendedVersionHistoryChangePolicyDetails._previous_value_validator = bv.Nullable(ExtendedVersionHistoryPolicy_validator)
ExtendedVersionHistoryChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
ExtendedVersionHistoryChangePolicyDetails._all_fields_ = [
    ('new_value', ExtendedVersionHistoryChangePolicyDetails._new_value_validator),
    ('previous_value', ExtendedVersionHistoryChangePolicyDetails._previous_value_validator),
]

ExtendedVersionHistoryChangePolicyType._description_validator = bv.String()
ExtendedVersionHistoryChangePolicyType._all_field_names_ = set(['description'])
ExtendedVersionHistoryChangePolicyType._all_fields_ = [('description', ExtendedVersionHistoryChangePolicyType._description_validator)]

ExtendedVersionHistoryPolicy._explicitly_limited_validator = bv.Void()
ExtendedVersionHistoryPolicy._explicitly_unlimited_validator = bv.Void()
ExtendedVersionHistoryPolicy._implicitly_limited_validator = bv.Void()
ExtendedVersionHistoryPolicy._implicitly_unlimited_validator = bv.Void()
ExtendedVersionHistoryPolicy._other_validator = bv.Void()
ExtendedVersionHistoryPolicy._tagmap = {
    'explicitly_limited': ExtendedVersionHistoryPolicy._explicitly_limited_validator,
    'explicitly_unlimited': ExtendedVersionHistoryPolicy._explicitly_unlimited_validator,
    'implicitly_limited': ExtendedVersionHistoryPolicy._implicitly_limited_validator,
    'implicitly_unlimited': ExtendedVersionHistoryPolicy._implicitly_unlimited_validator,
    'other': ExtendedVersionHistoryPolicy._other_validator,
}

ExtendedVersionHistoryPolicy.explicitly_limited = ExtendedVersionHistoryPolicy('explicitly_limited')
ExtendedVersionHistoryPolicy.explicitly_unlimited = ExtendedVersionHistoryPolicy('explicitly_unlimited')
ExtendedVersionHistoryPolicy.implicitly_limited = ExtendedVersionHistoryPolicy('implicitly_limited')
ExtendedVersionHistoryPolicy.implicitly_unlimited = ExtendedVersionHistoryPolicy('implicitly_unlimited')
ExtendedVersionHistoryPolicy.other = ExtendedVersionHistoryPolicy('other')

ExternalUserLogInfo._user_identifier_validator = bv.String()
ExternalUserLogInfo._identifier_type_validator = IdentifierType_validator
ExternalUserLogInfo._all_field_names_ = set([
    'user_identifier',
    'identifier_type',
])
ExternalUserLogInfo._all_fields_ = [
    ('user_identifier', ExternalUserLogInfo._user_identifier_validator),
    ('identifier_type', ExternalUserLogInfo._identifier_type_validator),
]

FailureDetailsLogInfo._user_friendly_message_validator = bv.Nullable(bv.String())
FailureDetailsLogInfo._technical_error_message_validator = bv.Nullable(bv.String())
FailureDetailsLogInfo._all_field_names_ = set([
    'user_friendly_message',
    'technical_error_message',
])
FailureDetailsLogInfo._all_fields_ = [
    ('user_friendly_message', FailureDetailsLogInfo._user_friendly_message_validator),
    ('technical_error_message', FailureDetailsLogInfo._technical_error_message_validator),
]

FileAddCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileAddCommentDetails._all_field_names_ = set(['comment_text'])
FileAddCommentDetails._all_fields_ = [('comment_text', FileAddCommentDetails._comment_text_validator)]

FileAddCommentType._description_validator = bv.String()
FileAddCommentType._all_field_names_ = set(['description'])
FileAddCommentType._all_fields_ = [('description', FileAddCommentType._description_validator)]

FileAddDetails._all_field_names_ = set([])
FileAddDetails._all_fields_ = []

FileAddType._description_validator = bv.String()
FileAddType._all_field_names_ = set(['description'])
FileAddType._all_fields_ = [('description', FileAddType._description_validator)]

FileChangeCommentSubscriptionDetails._new_value_validator = FileCommentNotificationPolicy_validator
FileChangeCommentSubscriptionDetails._previous_value_validator = bv.Nullable(FileCommentNotificationPolicy_validator)
FileChangeCommentSubscriptionDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
FileChangeCommentSubscriptionDetails._all_fields_ = [
    ('new_value', FileChangeCommentSubscriptionDetails._new_value_validator),
    ('previous_value', FileChangeCommentSubscriptionDetails._previous_value_validator),
]

FileChangeCommentSubscriptionType._description_validator = bv.String()
FileChangeCommentSubscriptionType._all_field_names_ = set(['description'])
FileChangeCommentSubscriptionType._all_fields_ = [('description', FileChangeCommentSubscriptionType._description_validator)]

FileCommentNotificationPolicy._disabled_validator = bv.Void()
FileCommentNotificationPolicy._enabled_validator = bv.Void()
FileCommentNotificationPolicy._other_validator = bv.Void()
FileCommentNotificationPolicy._tagmap = {
    'disabled': FileCommentNotificationPolicy._disabled_validator,
    'enabled': FileCommentNotificationPolicy._enabled_validator,
    'other': FileCommentNotificationPolicy._other_validator,
}

FileCommentNotificationPolicy.disabled = FileCommentNotificationPolicy('disabled')
FileCommentNotificationPolicy.enabled = FileCommentNotificationPolicy('enabled')
FileCommentNotificationPolicy.other = FileCommentNotificationPolicy('other')

FileCommentsChangePolicyDetails._new_value_validator = FileCommentsPolicy_validator
FileCommentsChangePolicyDetails._previous_value_validator = bv.Nullable(FileCommentsPolicy_validator)
FileCommentsChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
FileCommentsChangePolicyDetails._all_fields_ = [
    ('new_value', FileCommentsChangePolicyDetails._new_value_validator),
    ('previous_value', FileCommentsChangePolicyDetails._previous_value_validator),
]

FileCommentsChangePolicyType._description_validator = bv.String()
FileCommentsChangePolicyType._all_field_names_ = set(['description'])
FileCommentsChangePolicyType._all_fields_ = [('description', FileCommentsChangePolicyType._description_validator)]

FileCommentsPolicy._disabled_validator = bv.Void()
FileCommentsPolicy._enabled_validator = bv.Void()
FileCommentsPolicy._other_validator = bv.Void()
FileCommentsPolicy._tagmap = {
    'disabled': FileCommentsPolicy._disabled_validator,
    'enabled': FileCommentsPolicy._enabled_validator,
    'other': FileCommentsPolicy._other_validator,
}

FileCommentsPolicy.disabled = FileCommentsPolicy('disabled')
FileCommentsPolicy.enabled = FileCommentsPolicy('enabled')
FileCommentsPolicy.other = FileCommentsPolicy('other')

FileCopyDetails._relocate_action_details_validator = bv.List(RelocateAssetReferencesLogInfo_validator)
FileCopyDetails._all_field_names_ = set(['relocate_action_details'])
FileCopyDetails._all_fields_ = [('relocate_action_details', FileCopyDetails._relocate_action_details_validator)]

FileCopyType._description_validator = bv.String()
FileCopyType._all_field_names_ = set(['description'])
FileCopyType._all_fields_ = [('description', FileCopyType._description_validator)]

FileDeleteCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileDeleteCommentDetails._all_field_names_ = set(['comment_text'])
FileDeleteCommentDetails._all_fields_ = [('comment_text', FileDeleteCommentDetails._comment_text_validator)]

FileDeleteCommentType._description_validator = bv.String()
FileDeleteCommentType._all_field_names_ = set(['description'])
FileDeleteCommentType._all_fields_ = [('description', FileDeleteCommentType._description_validator)]

FileDeleteDetails._all_field_names_ = set([])
FileDeleteDetails._all_fields_ = []

FileDeleteType._description_validator = bv.String()
FileDeleteType._all_field_names_ = set(['description'])
FileDeleteType._all_fields_ = [('description', FileDeleteType._description_validator)]

FileDownloadDetails._all_field_names_ = set([])
FileDownloadDetails._all_fields_ = []

FileDownloadType._description_validator = bv.String()
FileDownloadType._all_field_names_ = set(['description'])
FileDownloadType._all_fields_ = [('description', FileDownloadType._description_validator)]

FileEditCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileEditCommentDetails._previous_comment_text_validator = bv.String()
FileEditCommentDetails._all_field_names_ = set([
    'comment_text',
    'previous_comment_text',
])
FileEditCommentDetails._all_fields_ = [
    ('comment_text', FileEditCommentDetails._comment_text_validator),
    ('previous_comment_text', FileEditCommentDetails._previous_comment_text_validator),
]

FileEditCommentType._description_validator = bv.String()
FileEditCommentType._all_field_names_ = set(['description'])
FileEditCommentType._all_fields_ = [('description', FileEditCommentType._description_validator)]

FileEditDetails._all_field_names_ = set([])
FileEditDetails._all_fields_ = []

FileEditType._description_validator = bv.String()
FileEditType._all_field_names_ = set(['description'])
FileEditType._all_fields_ = [('description', FileEditType._description_validator)]

FileGetCopyReferenceDetails._all_field_names_ = set([])
FileGetCopyReferenceDetails._all_fields_ = []

FileGetCopyReferenceType._description_validator = bv.String()
FileGetCopyReferenceType._all_field_names_ = set(['description'])
FileGetCopyReferenceType._all_fields_ = [('description', FileGetCopyReferenceType._description_validator)]

FileLikeCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileLikeCommentDetails._all_field_names_ = set(['comment_text'])
FileLikeCommentDetails._all_fields_ = [('comment_text', FileLikeCommentDetails._comment_text_validator)]

FileLikeCommentType._description_validator = bv.String()
FileLikeCommentType._all_field_names_ = set(['description'])
FileLikeCommentType._all_fields_ = [('description', FileLikeCommentType._description_validator)]

FileOrFolderLogInfo._path_validator = PathLogInfo_validator
FileOrFolderLogInfo._display_name_validator = bv.Nullable(bv.String())
FileOrFolderLogInfo._file_id_validator = bv.Nullable(bv.String())
FileOrFolderLogInfo._all_field_names_ = set([
    'path',
    'display_name',
    'file_id',
])
FileOrFolderLogInfo._all_fields_ = [
    ('path', FileOrFolderLogInfo._path_validator),
    ('display_name', FileOrFolderLogInfo._display_name_validator),
    ('file_id', FileOrFolderLogInfo._file_id_validator),
]

FileLogInfo._all_field_names_ = FileOrFolderLogInfo._all_field_names_.union(set([]))
FileLogInfo._all_fields_ = FileOrFolderLogInfo._all_fields_ + []

FileMoveDetails._relocate_action_details_validator = bv.List(RelocateAssetReferencesLogInfo_validator)
FileMoveDetails._all_field_names_ = set(['relocate_action_details'])
FileMoveDetails._all_fields_ = [('relocate_action_details', FileMoveDetails._relocate_action_details_validator)]

FileMoveType._description_validator = bv.String()
FileMoveType._all_field_names_ = set(['description'])
FileMoveType._all_fields_ = [('description', FileMoveType._description_validator)]

FilePermanentlyDeleteDetails._all_field_names_ = set([])
FilePermanentlyDeleteDetails._all_fields_ = []

FilePermanentlyDeleteType._description_validator = bv.String()
FilePermanentlyDeleteType._all_field_names_ = set(['description'])
FilePermanentlyDeleteType._all_fields_ = [('description', FilePermanentlyDeleteType._description_validator)]

FilePreviewDetails._all_field_names_ = set([])
FilePreviewDetails._all_fields_ = []

FilePreviewType._description_validator = bv.String()
FilePreviewType._all_field_names_ = set(['description'])
FilePreviewType._all_fields_ = [('description', FilePreviewType._description_validator)]

FileRenameDetails._relocate_action_details_validator = bv.List(RelocateAssetReferencesLogInfo_validator)
FileRenameDetails._all_field_names_ = set(['relocate_action_details'])
FileRenameDetails._all_fields_ = [('relocate_action_details', FileRenameDetails._relocate_action_details_validator)]

FileRenameType._description_validator = bv.String()
FileRenameType._all_field_names_ = set(['description'])
FileRenameType._all_fields_ = [('description', FileRenameType._description_validator)]

FileRequestChangeDetails._file_request_id_validator = bv.Nullable(file_requests.FileRequestId_validator)
FileRequestChangeDetails._previous_details_validator = bv.Nullable(FileRequestDetails_validator)
FileRequestChangeDetails._new_details_validator = FileRequestDetails_validator
FileRequestChangeDetails._all_field_names_ = set([
    'file_request_id',
    'previous_details',
    'new_details',
])
FileRequestChangeDetails._all_fields_ = [
    ('file_request_id', FileRequestChangeDetails._file_request_id_validator),
    ('previous_details', FileRequestChangeDetails._previous_details_validator),
    ('new_details', FileRequestChangeDetails._new_details_validator),
]

FileRequestChangeType._description_validator = bv.String()
FileRequestChangeType._all_field_names_ = set(['description'])
FileRequestChangeType._all_fields_ = [('description', FileRequestChangeType._description_validator)]

FileRequestCloseDetails._file_request_id_validator = bv.Nullable(file_requests.FileRequestId_validator)
FileRequestCloseDetails._previous_details_validator = bv.Nullable(FileRequestDetails_validator)
FileRequestCloseDetails._all_field_names_ = set([
    'file_request_id',
    'previous_details',
])
FileRequestCloseDetails._all_fields_ = [
    ('file_request_id', FileRequestCloseDetails._file_request_id_validator),
    ('previous_details', FileRequestCloseDetails._previous_details_validator),
]

FileRequestCloseType._description_validator = bv.String()
FileRequestCloseType._all_field_names_ = set(['description'])
FileRequestCloseType._all_fields_ = [('description', FileRequestCloseType._description_validator)]

FileRequestCreateDetails._file_request_id_validator = bv.Nullable(file_requests.FileRequestId_validator)
FileRequestCreateDetails._request_details_validator = bv.Nullable(FileRequestDetails_validator)
FileRequestCreateDetails._all_field_names_ = set([
    'file_request_id',
    'request_details',
])
FileRequestCreateDetails._all_fields_ = [
    ('file_request_id', FileRequestCreateDetails._file_request_id_validator),
    ('request_details', FileRequestCreateDetails._request_details_validator),
]

FileRequestCreateType._description_validator = bv.String()
FileRequestCreateType._all_field_names_ = set(['description'])
FileRequestCreateType._all_fields_ = [('description', FileRequestCreateType._description_validator)]

FileRequestDeadline._deadline_validator = bv.Nullable(common.DropboxTimestamp_validator)
FileRequestDeadline._allow_late_uploads_validator = bv.Nullable(bv.String())
FileRequestDeadline._all_field_names_ = set([
    'deadline',
    'allow_late_uploads',
])
FileRequestDeadline._all_fields_ = [
    ('deadline', FileRequestDeadline._deadline_validator),
    ('allow_late_uploads', FileRequestDeadline._allow_late_uploads_validator),
]

FileRequestDetails._asset_index_validator = bv.UInt64()
FileRequestDetails._deadline_validator = bv.Nullable(FileRequestDeadline_validator)
FileRequestDetails._all_field_names_ = set([
    'asset_index',
    'deadline',
])
FileRequestDetails._all_fields_ = [
    ('asset_index', FileRequestDetails._asset_index_validator),
    ('deadline', FileRequestDetails._deadline_validator),
]

FileRequestReceiveFileDetails._file_request_id_validator = bv.Nullable(file_requests.FileRequestId_validator)
FileRequestReceiveFileDetails._file_request_details_validator = bv.Nullable(FileRequestDetails_validator)
FileRequestReceiveFileDetails._submitted_file_names_validator = bv.List(bv.String())
FileRequestReceiveFileDetails._submitter_name_validator = bv.Nullable(common.DisplayNameLegacy_validator)
FileRequestReceiveFileDetails._submitter_email_validator = bv.Nullable(EmailAddress_validator)
FileRequestReceiveFileDetails._all_field_names_ = set([
    'file_request_id',
    'file_request_details',
    'submitted_file_names',
    'submitter_name',
    'submitter_email',
])
FileRequestReceiveFileDetails._all_fields_ = [
    ('file_request_id', FileRequestReceiveFileDetails._file_request_id_validator),
    ('file_request_details', FileRequestReceiveFileDetails._file_request_details_validator),
    ('submitted_file_names', FileRequestReceiveFileDetails._submitted_file_names_validator),
    ('submitter_name', FileRequestReceiveFileDetails._submitter_name_validator),
    ('submitter_email', FileRequestReceiveFileDetails._submitter_email_validator),
]

FileRequestReceiveFileType._description_validator = bv.String()
FileRequestReceiveFileType._all_field_names_ = set(['description'])
FileRequestReceiveFileType._all_fields_ = [('description', FileRequestReceiveFileType._description_validator)]

FileRequestsChangePolicyDetails._new_value_validator = FileRequestsPolicy_validator
FileRequestsChangePolicyDetails._previous_value_validator = bv.Nullable(FileRequestsPolicy_validator)
FileRequestsChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
FileRequestsChangePolicyDetails._all_fields_ = [
    ('new_value', FileRequestsChangePolicyDetails._new_value_validator),
    ('previous_value', FileRequestsChangePolicyDetails._previous_value_validator),
]

FileRequestsChangePolicyType._description_validator = bv.String()
FileRequestsChangePolicyType._all_field_names_ = set(['description'])
FileRequestsChangePolicyType._all_fields_ = [('description', FileRequestsChangePolicyType._description_validator)]

FileRequestsEmailsEnabledDetails._all_field_names_ = set([])
FileRequestsEmailsEnabledDetails._all_fields_ = []

FileRequestsEmailsEnabledType._description_validator = bv.String()
FileRequestsEmailsEnabledType._all_field_names_ = set(['description'])
FileRequestsEmailsEnabledType._all_fields_ = [('description', FileRequestsEmailsEnabledType._description_validator)]

FileRequestsEmailsRestrictedToTeamOnlyDetails._all_field_names_ = set([])
FileRequestsEmailsRestrictedToTeamOnlyDetails._all_fields_ = []

FileRequestsEmailsRestrictedToTeamOnlyType._description_validator = bv.String()
FileRequestsEmailsRestrictedToTeamOnlyType._all_field_names_ = set(['description'])
FileRequestsEmailsRestrictedToTeamOnlyType._all_fields_ = [('description', FileRequestsEmailsRestrictedToTeamOnlyType._description_validator)]

FileRequestsPolicy._disabled_validator = bv.Void()
FileRequestsPolicy._enabled_validator = bv.Void()
FileRequestsPolicy._other_validator = bv.Void()
FileRequestsPolicy._tagmap = {
    'disabled': FileRequestsPolicy._disabled_validator,
    'enabled': FileRequestsPolicy._enabled_validator,
    'other': FileRequestsPolicy._other_validator,
}

FileRequestsPolicy.disabled = FileRequestsPolicy('disabled')
FileRequestsPolicy.enabled = FileRequestsPolicy('enabled')
FileRequestsPolicy.other = FileRequestsPolicy('other')

FileResolveCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileResolveCommentDetails._all_field_names_ = set(['comment_text'])
FileResolveCommentDetails._all_fields_ = [('comment_text', FileResolveCommentDetails._comment_text_validator)]

FileResolveCommentType._description_validator = bv.String()
FileResolveCommentType._all_field_names_ = set(['description'])
FileResolveCommentType._all_fields_ = [('description', FileResolveCommentType._description_validator)]

FileRestoreDetails._all_field_names_ = set([])
FileRestoreDetails._all_fields_ = []

FileRestoreType._description_validator = bv.String()
FileRestoreType._all_field_names_ = set(['description'])
FileRestoreType._all_fields_ = [('description', FileRestoreType._description_validator)]

FileRevertDetails._all_field_names_ = set([])
FileRevertDetails._all_fields_ = []

FileRevertType._description_validator = bv.String()
FileRevertType._all_field_names_ = set(['description'])
FileRevertType._all_fields_ = [('description', FileRevertType._description_validator)]

FileRollbackChangesDetails._all_field_names_ = set([])
FileRollbackChangesDetails._all_fields_ = []

FileRollbackChangesType._description_validator = bv.String()
FileRollbackChangesType._all_field_names_ = set(['description'])
FileRollbackChangesType._all_fields_ = [('description', FileRollbackChangesType._description_validator)]

FileSaveCopyReferenceDetails._relocate_action_details_validator = bv.List(RelocateAssetReferencesLogInfo_validator)
FileSaveCopyReferenceDetails._all_field_names_ = set(['relocate_action_details'])
FileSaveCopyReferenceDetails._all_fields_ = [('relocate_action_details', FileSaveCopyReferenceDetails._relocate_action_details_validator)]

FileSaveCopyReferenceType._description_validator = bv.String()
FileSaveCopyReferenceType._all_field_names_ = set(['description'])
FileSaveCopyReferenceType._all_fields_ = [('description', FileSaveCopyReferenceType._description_validator)]

FileUnlikeCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileUnlikeCommentDetails._all_field_names_ = set(['comment_text'])
FileUnlikeCommentDetails._all_fields_ = [('comment_text', FileUnlikeCommentDetails._comment_text_validator)]

FileUnlikeCommentType._description_validator = bv.String()
FileUnlikeCommentType._all_field_names_ = set(['description'])
FileUnlikeCommentType._all_fields_ = [('description', FileUnlikeCommentType._description_validator)]

FileUnresolveCommentDetails._comment_text_validator = bv.Nullable(bv.String())
FileUnresolveCommentDetails._all_field_names_ = set(['comment_text'])
FileUnresolveCommentDetails._all_fields_ = [('comment_text', FileUnresolveCommentDetails._comment_text_validator)]

FileUnresolveCommentType._description_validator = bv.String()
FileUnresolveCommentType._all_field_names_ = set(['description'])
FileUnresolveCommentType._all_fields_ = [('description', FileUnresolveCommentType._description_validator)]

FolderLogInfo._all_field_names_ = FileOrFolderLogInfo._all_field_names_.union(set([]))
FolderLogInfo._all_fields_ = FileOrFolderLogInfo._all_fields_ + []

GeoLocationLogInfo._city_validator = bv.Nullable(bv.String())
GeoLocationLogInfo._region_validator = bv.Nullable(bv.String())
GeoLocationLogInfo._country_validator = bv.Nullable(bv.String())
GeoLocationLogInfo._ip_address_validator = IpAddress_validator
GeoLocationLogInfo._all_field_names_ = set([
    'city',
    'region',
    'country',
    'ip_address',
])
GeoLocationLogInfo._all_fields_ = [
    ('city', GeoLocationLogInfo._city_validator),
    ('region', GeoLocationLogInfo._region_validator),
    ('country', GeoLocationLogInfo._country_validator),
    ('ip_address', GeoLocationLogInfo._ip_address_validator),
]

GetTeamEventsArg._limit_validator = bv.UInt32(min_value=1, max_value=1000)
GetTeamEventsArg._account_id_validator = bv.Nullable(users_common.AccountId_validator)
GetTeamEventsArg._time_validator = bv.Nullable(team_common.TimeRange_validator)
GetTeamEventsArg._category_validator = bv.Nullable(EventCategory_validator)
GetTeamEventsArg._all_field_names_ = set([
    'limit',
    'account_id',
    'time',
    'category',
])
GetTeamEventsArg._all_fields_ = [
    ('limit', GetTeamEventsArg._limit_validator),
    ('account_id', GetTeamEventsArg._account_id_validator),
    ('time', GetTeamEventsArg._time_validator),
    ('category', GetTeamEventsArg._category_validator),
]

GetTeamEventsContinueArg._cursor_validator = bv.String()
GetTeamEventsContinueArg._all_field_names_ = set(['cursor'])
GetTeamEventsContinueArg._all_fields_ = [('cursor', GetTeamEventsContinueArg._cursor_validator)]

GetTeamEventsContinueError._bad_cursor_validator = bv.Void()
GetTeamEventsContinueError._reset_validator = common.DropboxTimestamp_validator
GetTeamEventsContinueError._other_validator = bv.Void()
GetTeamEventsContinueError._tagmap = {
    'bad_cursor': GetTeamEventsContinueError._bad_cursor_validator,
    'reset': GetTeamEventsContinueError._reset_validator,
    'other': GetTeamEventsContinueError._other_validator,
}

GetTeamEventsContinueError.bad_cursor = GetTeamEventsContinueError('bad_cursor')
GetTeamEventsContinueError.other = GetTeamEventsContinueError('other')

GetTeamEventsError._account_id_not_found_validator = bv.Void()
GetTeamEventsError._invalid_time_range_validator = bv.Void()
GetTeamEventsError._other_validator = bv.Void()
GetTeamEventsError._tagmap = {
    'account_id_not_found': GetTeamEventsError._account_id_not_found_validator,
    'invalid_time_range': GetTeamEventsError._invalid_time_range_validator,
    'other': GetTeamEventsError._other_validator,
}

GetTeamEventsError.account_id_not_found = GetTeamEventsError('account_id_not_found')
GetTeamEventsError.invalid_time_range = GetTeamEventsError('invalid_time_range')
GetTeamEventsError.other = GetTeamEventsError('other')

GetTeamEventsResult._events_validator = bv.List(TeamEvent_validator)
GetTeamEventsResult._cursor_validator = bv.String()
GetTeamEventsResult._has_more_validator = bv.Boolean()
GetTeamEventsResult._all_field_names_ = set([
    'events',
    'cursor',
    'has_more',
])
GetTeamEventsResult._all_fields_ = [
    ('events', GetTeamEventsResult._events_validator),
    ('cursor', GetTeamEventsResult._cursor_validator),
    ('has_more', GetTeamEventsResult._has_more_validator),
]

GoogleSsoChangePolicyDetails._new_value_validator = GoogleSsoPolicy_validator
GoogleSsoChangePolicyDetails._previous_value_validator = bv.Nullable(GoogleSsoPolicy_validator)
GoogleSsoChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
GoogleSsoChangePolicyDetails._all_fields_ = [
    ('new_value', GoogleSsoChangePolicyDetails._new_value_validator),
    ('previous_value', GoogleSsoChangePolicyDetails._previous_value_validator),
]

GoogleSsoChangePolicyType._description_validator = bv.String()
GoogleSsoChangePolicyType._all_field_names_ = set(['description'])
GoogleSsoChangePolicyType._all_fields_ = [('description', GoogleSsoChangePolicyType._description_validator)]

GoogleSsoPolicy._disabled_validator = bv.Void()
GoogleSsoPolicy._enabled_validator = bv.Void()
GoogleSsoPolicy._other_validator = bv.Void()
GoogleSsoPolicy._tagmap = {
    'disabled': GoogleSsoPolicy._disabled_validator,
    'enabled': GoogleSsoPolicy._enabled_validator,
    'other': GoogleSsoPolicy._other_validator,
}

GoogleSsoPolicy.disabled = GoogleSsoPolicy('disabled')
GoogleSsoPolicy.enabled = GoogleSsoPolicy('enabled')
GoogleSsoPolicy.other = GoogleSsoPolicy('other')

GroupAddExternalIdDetails._new_value_validator = team_common.GroupExternalId_validator
GroupAddExternalIdDetails._all_field_names_ = set(['new_value'])
GroupAddExternalIdDetails._all_fields_ = [('new_value', GroupAddExternalIdDetails._new_value_validator)]

GroupAddExternalIdType._description_validator = bv.String()
GroupAddExternalIdType._all_field_names_ = set(['description'])
GroupAddExternalIdType._all_fields_ = [('description', GroupAddExternalIdType._description_validator)]

GroupAddMemberDetails._is_group_owner_validator = bv.Boolean()
GroupAddMemberDetails._all_field_names_ = set(['is_group_owner'])
GroupAddMemberDetails._all_fields_ = [('is_group_owner', GroupAddMemberDetails._is_group_owner_validator)]

GroupAddMemberType._description_validator = bv.String()
GroupAddMemberType._all_field_names_ = set(['description'])
GroupAddMemberType._all_fields_ = [('description', GroupAddMemberType._description_validator)]

GroupChangeExternalIdDetails._new_value_validator = team_common.GroupExternalId_validator
GroupChangeExternalIdDetails._previous_value_validator = team_common.GroupExternalId_validator
GroupChangeExternalIdDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
GroupChangeExternalIdDetails._all_fields_ = [
    ('new_value', GroupChangeExternalIdDetails._new_value_validator),
    ('previous_value', GroupChangeExternalIdDetails._previous_value_validator),
]

GroupChangeExternalIdType._description_validator = bv.String()
GroupChangeExternalIdType._all_field_names_ = set(['description'])
GroupChangeExternalIdType._all_fields_ = [('description', GroupChangeExternalIdType._description_validator)]

GroupChangeManagementTypeDetails._new_value_validator = team_common.GroupManagementType_validator
GroupChangeManagementTypeDetails._previous_value_validator = bv.Nullable(team_common.GroupManagementType_validator)
GroupChangeManagementTypeDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
GroupChangeManagementTypeDetails._all_fields_ = [
    ('new_value', GroupChangeManagementTypeDetails._new_value_validator),
    ('previous_value', GroupChangeManagementTypeDetails._previous_value_validator),
]

GroupChangeManagementTypeType._description_validator = bv.String()
GroupChangeManagementTypeType._all_field_names_ = set(['description'])
GroupChangeManagementTypeType._all_fields_ = [('description', GroupChangeManagementTypeType._description_validator)]

GroupChangeMemberRoleDetails._is_group_owner_validator = bv.Boolean()
GroupChangeMemberRoleDetails._all_field_names_ = set(['is_group_owner'])
GroupChangeMemberRoleDetails._all_fields_ = [('is_group_owner', GroupChangeMemberRoleDetails._is_group_owner_validator)]

GroupChangeMemberRoleType._description_validator = bv.String()
GroupChangeMemberRoleType._all_field_names_ = set(['description'])
GroupChangeMemberRoleType._all_fields_ = [('description', GroupChangeMemberRoleType._description_validator)]

GroupCreateDetails._is_company_managed_validator = bv.Nullable(bv.Boolean())
GroupCreateDetails._join_policy_validator = bv.Nullable(GroupJoinPolicy_validator)
GroupCreateDetails._all_field_names_ = set([
    'is_company_managed',
    'join_policy',
])
GroupCreateDetails._all_fields_ = [
    ('is_company_managed', GroupCreateDetails._is_company_managed_validator),
    ('join_policy', GroupCreateDetails._join_policy_validator),
]

GroupCreateType._description_validator = bv.String()
GroupCreateType._all_field_names_ = set(['description'])
GroupCreateType._all_fields_ = [('description', GroupCreateType._description_validator)]

GroupDeleteDetails._is_company_managed_validator = bv.Nullable(bv.Boolean())
GroupDeleteDetails._all_field_names_ = set(['is_company_managed'])
GroupDeleteDetails._all_fields_ = [('is_company_managed', GroupDeleteDetails._is_company_managed_validator)]

GroupDeleteType._description_validator = bv.String()
GroupDeleteType._all_field_names_ = set(['description'])
GroupDeleteType._all_fields_ = [('description', GroupDeleteType._description_validator)]

GroupDescriptionUpdatedDetails._all_field_names_ = set([])
GroupDescriptionUpdatedDetails._all_fields_ = []

GroupDescriptionUpdatedType._description_validator = bv.String()
GroupDescriptionUpdatedType._all_field_names_ = set(['description'])
GroupDescriptionUpdatedType._all_fields_ = [('description', GroupDescriptionUpdatedType._description_validator)]

GroupJoinPolicy._open_validator = bv.Void()
GroupJoinPolicy._request_to_join_validator = bv.Void()
GroupJoinPolicy._other_validator = bv.Void()
GroupJoinPolicy._tagmap = {
    'open': GroupJoinPolicy._open_validator,
    'request_to_join': GroupJoinPolicy._request_to_join_validator,
    'other': GroupJoinPolicy._other_validator,
}

GroupJoinPolicy.open = GroupJoinPolicy('open')
GroupJoinPolicy.request_to_join = GroupJoinPolicy('request_to_join')
GroupJoinPolicy.other = GroupJoinPolicy('other')

GroupJoinPolicyUpdatedDetails._is_company_managed_validator = bv.Nullable(bv.Boolean())
GroupJoinPolicyUpdatedDetails._join_policy_validator = bv.Nullable(GroupJoinPolicy_validator)
GroupJoinPolicyUpdatedDetails._all_field_names_ = set([
    'is_company_managed',
    'join_policy',
])
GroupJoinPolicyUpdatedDetails._all_fields_ = [
    ('is_company_managed', GroupJoinPolicyUpdatedDetails._is_company_managed_validator),
    ('join_policy', GroupJoinPolicyUpdatedDetails._join_policy_validator),
]

GroupJoinPolicyUpdatedType._description_validator = bv.String()
GroupJoinPolicyUpdatedType._all_field_names_ = set(['description'])
GroupJoinPolicyUpdatedType._all_fields_ = [('description', GroupJoinPolicyUpdatedType._description_validator)]

GroupLogInfo._group_id_validator = bv.Nullable(team_common.GroupId_validator)
GroupLogInfo._display_name_validator = bv.String()
GroupLogInfo._external_id_validator = bv.Nullable(team_common.GroupExternalId_validator)
GroupLogInfo._all_field_names_ = set([
    'group_id',
    'display_name',
    'external_id',
])
GroupLogInfo._all_fields_ = [
    ('group_id', GroupLogInfo._group_id_validator),
    ('display_name', GroupLogInfo._display_name_validator),
    ('external_id', GroupLogInfo._external_id_validator),
]

GroupMovedDetails._all_field_names_ = set([])
GroupMovedDetails._all_fields_ = []

GroupMovedType._description_validator = bv.String()
GroupMovedType._all_field_names_ = set(['description'])
GroupMovedType._all_fields_ = [('description', GroupMovedType._description_validator)]

GroupRemoveExternalIdDetails._previous_value_validator = team_common.GroupExternalId_validator
GroupRemoveExternalIdDetails._all_field_names_ = set(['previous_value'])
GroupRemoveExternalIdDetails._all_fields_ = [('previous_value', GroupRemoveExternalIdDetails._previous_value_validator)]

GroupRemoveExternalIdType._description_validator = bv.String()
GroupRemoveExternalIdType._all_field_names_ = set(['description'])
GroupRemoveExternalIdType._all_fields_ = [('description', GroupRemoveExternalIdType._description_validator)]

GroupRemoveMemberDetails._all_field_names_ = set([])
GroupRemoveMemberDetails._all_fields_ = []

GroupRemoveMemberType._description_validator = bv.String()
GroupRemoveMemberType._all_field_names_ = set(['description'])
GroupRemoveMemberType._all_fields_ = [('description', GroupRemoveMemberType._description_validator)]

GroupRenameDetails._previous_value_validator = bv.String()
GroupRenameDetails._new_value_validator = bv.String()
GroupRenameDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
GroupRenameDetails._all_fields_ = [
    ('previous_value', GroupRenameDetails._previous_value_validator),
    ('new_value', GroupRenameDetails._new_value_validator),
]

GroupRenameType._description_validator = bv.String()
GroupRenameType._all_field_names_ = set(['description'])
GroupRenameType._all_fields_ = [('description', GroupRenameType._description_validator)]

GroupUserManagementChangePolicyDetails._new_value_validator = team_policies.GroupCreation_validator
GroupUserManagementChangePolicyDetails._previous_value_validator = bv.Nullable(team_policies.GroupCreation_validator)
GroupUserManagementChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
GroupUserManagementChangePolicyDetails._all_fields_ = [
    ('new_value', GroupUserManagementChangePolicyDetails._new_value_validator),
    ('previous_value', GroupUserManagementChangePolicyDetails._previous_value_validator),
]

GroupUserManagementChangePolicyType._description_validator = bv.String()
GroupUserManagementChangePolicyType._all_field_names_ = set(['description'])
GroupUserManagementChangePolicyType._all_fields_ = [('description', GroupUserManagementChangePolicyType._description_validator)]

IdentifierType._email_validator = bv.Void()
IdentifierType._facebook_profile_name_validator = bv.Void()
IdentifierType._other_validator = bv.Void()
IdentifierType._tagmap = {
    'email': IdentifierType._email_validator,
    'facebook_profile_name': IdentifierType._facebook_profile_name_validator,
    'other': IdentifierType._other_validator,
}

IdentifierType.email = IdentifierType('email')
IdentifierType.facebook_profile_name = IdentifierType('facebook_profile_name')
IdentifierType.other = IdentifierType('other')

JoinTeamDetails._linked_apps_validator = bv.List(UserLinkedAppLogInfo_validator)
JoinTeamDetails._linked_devices_validator = bv.List(LinkedDeviceLogInfo_validator)
JoinTeamDetails._linked_shared_folders_validator = bv.List(FolderLogInfo_validator)
JoinTeamDetails._all_field_names_ = set([
    'linked_apps',
    'linked_devices',
    'linked_shared_folders',
])
JoinTeamDetails._all_fields_ = [
    ('linked_apps', JoinTeamDetails._linked_apps_validator),
    ('linked_devices', JoinTeamDetails._linked_devices_validator),
    ('linked_shared_folders', JoinTeamDetails._linked_shared_folders_validator),
]

LegacyDeviceSessionLogInfo._session_info_validator = bv.Nullable(SessionLogInfo_validator)
LegacyDeviceSessionLogInfo._display_name_validator = bv.Nullable(bv.String())
LegacyDeviceSessionLogInfo._is_emm_managed_validator = bv.Nullable(bv.Boolean())
LegacyDeviceSessionLogInfo._platform_validator = bv.Nullable(bv.String())
LegacyDeviceSessionLogInfo._mac_address_validator = bv.Nullable(IpAddress_validator)
LegacyDeviceSessionLogInfo._os_version_validator = bv.Nullable(bv.String())
LegacyDeviceSessionLogInfo._device_type_validator = bv.Nullable(bv.String())
LegacyDeviceSessionLogInfo._client_version_validator = bv.Nullable(bv.String())
LegacyDeviceSessionLogInfo._legacy_uniq_id_validator = bv.Nullable(bv.String())
LegacyDeviceSessionLogInfo._field_names_ = set([
    'session_info',
    'display_name',
    'is_emm_managed',
    'platform',
    'mac_address',
    'os_version',
    'device_type',
    'client_version',
    'legacy_uniq_id',
])
LegacyDeviceSessionLogInfo._all_field_names_ = DeviceSessionLogInfo._all_field_names_.union(LegacyDeviceSessionLogInfo._field_names_)
LegacyDeviceSessionLogInfo._fields_ = [
    ('session_info', LegacyDeviceSessionLogInfo._session_info_validator),
    ('display_name', LegacyDeviceSessionLogInfo._display_name_validator),
    ('is_emm_managed', LegacyDeviceSessionLogInfo._is_emm_managed_validator),
    ('platform', LegacyDeviceSessionLogInfo._platform_validator),
    ('mac_address', LegacyDeviceSessionLogInfo._mac_address_validator),
    ('os_version', LegacyDeviceSessionLogInfo._os_version_validator),
    ('device_type', LegacyDeviceSessionLogInfo._device_type_validator),
    ('client_version', LegacyDeviceSessionLogInfo._client_version_validator),
    ('legacy_uniq_id', LegacyDeviceSessionLogInfo._legacy_uniq_id_validator),
]
LegacyDeviceSessionLogInfo._all_fields_ = DeviceSessionLogInfo._all_fields_ + LegacyDeviceSessionLogInfo._fields_

LinkedDeviceLogInfo._mobile_device_session_validator = MobileDeviceSessionLogInfo_validator
LinkedDeviceLogInfo._desktop_device_session_validator = DesktopDeviceSessionLogInfo_validator
LinkedDeviceLogInfo._web_device_session_validator = WebDeviceSessionLogInfo_validator
LinkedDeviceLogInfo._legacy_device_session_validator = LegacyDeviceSessionLogInfo_validator
LinkedDeviceLogInfo._other_validator = bv.Void()
LinkedDeviceLogInfo._tagmap = {
    'mobile_device_session': LinkedDeviceLogInfo._mobile_device_session_validator,
    'desktop_device_session': LinkedDeviceLogInfo._desktop_device_session_validator,
    'web_device_session': LinkedDeviceLogInfo._web_device_session_validator,
    'legacy_device_session': LinkedDeviceLogInfo._legacy_device_session_validator,
    'other': LinkedDeviceLogInfo._other_validator,
}

LinkedDeviceLogInfo.other = LinkedDeviceLogInfo('other')

LoginFailDetails._is_emm_managed_validator = bv.Nullable(bv.Boolean())
LoginFailDetails._login_method_validator = LoginMethod_validator
LoginFailDetails._error_details_validator = FailureDetailsLogInfo_validator
LoginFailDetails._all_field_names_ = set([
    'is_emm_managed',
    'login_method',
    'error_details',
])
LoginFailDetails._all_fields_ = [
    ('is_emm_managed', LoginFailDetails._is_emm_managed_validator),
    ('login_method', LoginFailDetails._login_method_validator),
    ('error_details', LoginFailDetails._error_details_validator),
]

LoginFailType._description_validator = bv.String()
LoginFailType._all_field_names_ = set(['description'])
LoginFailType._all_fields_ = [('description', LoginFailType._description_validator)]

LoginMethod._password_validator = bv.Void()
LoginMethod._two_factor_authentication_validator = bv.Void()
LoginMethod._saml_validator = bv.Void()
LoginMethod._other_validator = bv.Void()
LoginMethod._tagmap = {
    'password': LoginMethod._password_validator,
    'two_factor_authentication': LoginMethod._two_factor_authentication_validator,
    'saml': LoginMethod._saml_validator,
    'other': LoginMethod._other_validator,
}

LoginMethod.password = LoginMethod('password')
LoginMethod.two_factor_authentication = LoginMethod('two_factor_authentication')
LoginMethod.saml = LoginMethod('saml')
LoginMethod.other = LoginMethod('other')

LoginSuccessDetails._is_emm_managed_validator = bv.Nullable(bv.Boolean())
LoginSuccessDetails._login_method_validator = LoginMethod_validator
LoginSuccessDetails._all_field_names_ = set([
    'is_emm_managed',
    'login_method',
])
LoginSuccessDetails._all_fields_ = [
    ('is_emm_managed', LoginSuccessDetails._is_emm_managed_validator),
    ('login_method', LoginSuccessDetails._login_method_validator),
]

LoginSuccessType._description_validator = bv.String()
LoginSuccessType._all_field_names_ = set(['description'])
LoginSuccessType._all_fields_ = [('description', LoginSuccessType._description_validator)]

LogoutDetails._all_field_names_ = set([])
LogoutDetails._all_fields_ = []

LogoutType._description_validator = bv.String()
LogoutType._all_field_names_ = set(['description'])
LogoutType._all_fields_ = [('description', LogoutType._description_validator)]

MemberAddNameDetails._new_value_validator = UserNameLogInfo_validator
MemberAddNameDetails._all_field_names_ = set(['new_value'])
MemberAddNameDetails._all_fields_ = [('new_value', MemberAddNameDetails._new_value_validator)]

MemberAddNameType._description_validator = bv.String()
MemberAddNameType._all_field_names_ = set(['description'])
MemberAddNameType._all_fields_ = [('description', MemberAddNameType._description_validator)]

MemberChangeAdminRoleDetails._new_value_validator = bv.Nullable(AdminRole_validator)
MemberChangeAdminRoleDetails._previous_value_validator = bv.Nullable(AdminRole_validator)
MemberChangeAdminRoleDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
MemberChangeAdminRoleDetails._all_fields_ = [
    ('new_value', MemberChangeAdminRoleDetails._new_value_validator),
    ('previous_value', MemberChangeAdminRoleDetails._previous_value_validator),
]

MemberChangeAdminRoleType._description_validator = bv.String()
MemberChangeAdminRoleType._all_field_names_ = set(['description'])
MemberChangeAdminRoleType._all_fields_ = [('description', MemberChangeAdminRoleType._description_validator)]

MemberChangeEmailDetails._new_value_validator = EmailAddress_validator
MemberChangeEmailDetails._previous_value_validator = bv.Nullable(EmailAddress_validator)
MemberChangeEmailDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
MemberChangeEmailDetails._all_fields_ = [
    ('new_value', MemberChangeEmailDetails._new_value_validator),
    ('previous_value', MemberChangeEmailDetails._previous_value_validator),
]

MemberChangeEmailType._description_validator = bv.String()
MemberChangeEmailType._all_field_names_ = set(['description'])
MemberChangeEmailType._all_fields_ = [('description', MemberChangeEmailType._description_validator)]

MemberChangeMembershipTypeDetails._prev_value_validator = TeamMembershipType_validator
MemberChangeMembershipTypeDetails._new_value_validator = TeamMembershipType_validator
MemberChangeMembershipTypeDetails._all_field_names_ = set([
    'prev_value',
    'new_value',
])
MemberChangeMembershipTypeDetails._all_fields_ = [
    ('prev_value', MemberChangeMembershipTypeDetails._prev_value_validator),
    ('new_value', MemberChangeMembershipTypeDetails._new_value_validator),
]

MemberChangeMembershipTypeType._description_validator = bv.String()
MemberChangeMembershipTypeType._all_field_names_ = set(['description'])
MemberChangeMembershipTypeType._all_fields_ = [('description', MemberChangeMembershipTypeType._description_validator)]

MemberChangeNameDetails._new_value_validator = UserNameLogInfo_validator
MemberChangeNameDetails._previous_value_validator = bv.Nullable(UserNameLogInfo_validator)
MemberChangeNameDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
MemberChangeNameDetails._all_fields_ = [
    ('new_value', MemberChangeNameDetails._new_value_validator),
    ('previous_value', MemberChangeNameDetails._previous_value_validator),
]

MemberChangeNameType._description_validator = bv.String()
MemberChangeNameType._all_field_names_ = set(['description'])
MemberChangeNameType._all_fields_ = [('description', MemberChangeNameType._description_validator)]

MemberChangeStatusDetails._previous_value_validator = bv.Nullable(MemberStatus_validator)
MemberChangeStatusDetails._new_value_validator = MemberStatus_validator
MemberChangeStatusDetails._action_validator = bv.Nullable(ActionDetails_validator)
MemberChangeStatusDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
    'action',
])
MemberChangeStatusDetails._all_fields_ = [
    ('previous_value', MemberChangeStatusDetails._previous_value_validator),
    ('new_value', MemberChangeStatusDetails._new_value_validator),
    ('action', MemberChangeStatusDetails._action_validator),
]

MemberChangeStatusType._description_validator = bv.String()
MemberChangeStatusType._all_field_names_ = set(['description'])
MemberChangeStatusType._all_fields_ = [('description', MemberChangeStatusType._description_validator)]

MemberDeleteManualContactsDetails._all_field_names_ = set([])
MemberDeleteManualContactsDetails._all_fields_ = []

MemberDeleteManualContactsType._description_validator = bv.String()
MemberDeleteManualContactsType._all_field_names_ = set(['description'])
MemberDeleteManualContactsType._all_fields_ = [('description', MemberDeleteManualContactsType._description_validator)]

MemberPermanentlyDeleteAccountContentsDetails._all_field_names_ = set([])
MemberPermanentlyDeleteAccountContentsDetails._all_fields_ = []

MemberPermanentlyDeleteAccountContentsType._description_validator = bv.String()
MemberPermanentlyDeleteAccountContentsType._all_field_names_ = set(['description'])
MemberPermanentlyDeleteAccountContentsType._all_fields_ = [('description', MemberPermanentlyDeleteAccountContentsType._description_validator)]

MemberRemoveActionType._delete_validator = bv.Void()
MemberRemoveActionType._offboard_validator = bv.Void()
MemberRemoveActionType._leave_validator = bv.Void()
MemberRemoveActionType._other_validator = bv.Void()
MemberRemoveActionType._tagmap = {
    'delete': MemberRemoveActionType._delete_validator,
    'offboard': MemberRemoveActionType._offboard_validator,
    'leave': MemberRemoveActionType._leave_validator,
    'other': MemberRemoveActionType._other_validator,
}

MemberRemoveActionType.delete = MemberRemoveActionType('delete')
MemberRemoveActionType.offboard = MemberRemoveActionType('offboard')
MemberRemoveActionType.leave = MemberRemoveActionType('leave')
MemberRemoveActionType.other = MemberRemoveActionType('other')

MemberRequestsChangePolicyDetails._new_value_validator = MemberRequestsPolicy_validator
MemberRequestsChangePolicyDetails._previous_value_validator = bv.Nullable(MemberRequestsPolicy_validator)
MemberRequestsChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
MemberRequestsChangePolicyDetails._all_fields_ = [
    ('new_value', MemberRequestsChangePolicyDetails._new_value_validator),
    ('previous_value', MemberRequestsChangePolicyDetails._previous_value_validator),
]

MemberRequestsChangePolicyType._description_validator = bv.String()
MemberRequestsChangePolicyType._all_field_names_ = set(['description'])
MemberRequestsChangePolicyType._all_fields_ = [('description', MemberRequestsChangePolicyType._description_validator)]

MemberRequestsPolicy._auto_accept_validator = bv.Void()
MemberRequestsPolicy._disabled_validator = bv.Void()
MemberRequestsPolicy._require_approval_validator = bv.Void()
MemberRequestsPolicy._other_validator = bv.Void()
MemberRequestsPolicy._tagmap = {
    'auto_accept': MemberRequestsPolicy._auto_accept_validator,
    'disabled': MemberRequestsPolicy._disabled_validator,
    'require_approval': MemberRequestsPolicy._require_approval_validator,
    'other': MemberRequestsPolicy._other_validator,
}

MemberRequestsPolicy.auto_accept = MemberRequestsPolicy('auto_accept')
MemberRequestsPolicy.disabled = MemberRequestsPolicy('disabled')
MemberRequestsPolicy.require_approval = MemberRequestsPolicy('require_approval')
MemberRequestsPolicy.other = MemberRequestsPolicy('other')

MemberSpaceLimitsAddCustomQuotaDetails._new_value_validator = bv.UInt64()
MemberSpaceLimitsAddCustomQuotaDetails._all_field_names_ = set(['new_value'])
MemberSpaceLimitsAddCustomQuotaDetails._all_fields_ = [('new_value', MemberSpaceLimitsAddCustomQuotaDetails._new_value_validator)]

MemberSpaceLimitsAddCustomQuotaType._description_validator = bv.String()
MemberSpaceLimitsAddCustomQuotaType._all_field_names_ = set(['description'])
MemberSpaceLimitsAddCustomQuotaType._all_fields_ = [('description', MemberSpaceLimitsAddCustomQuotaType._description_validator)]

MemberSpaceLimitsAddExceptionDetails._all_field_names_ = set([])
MemberSpaceLimitsAddExceptionDetails._all_fields_ = []

MemberSpaceLimitsAddExceptionType._description_validator = bv.String()
MemberSpaceLimitsAddExceptionType._all_field_names_ = set(['description'])
MemberSpaceLimitsAddExceptionType._all_fields_ = [('description', MemberSpaceLimitsAddExceptionType._description_validator)]

MemberSpaceLimitsChangeCapsTypePolicyDetails._previous_value_validator = SpaceCapsType_validator
MemberSpaceLimitsChangeCapsTypePolicyDetails._new_value_validator = SpaceCapsType_validator
MemberSpaceLimitsChangeCapsTypePolicyDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
MemberSpaceLimitsChangeCapsTypePolicyDetails._all_fields_ = [
    ('previous_value', MemberSpaceLimitsChangeCapsTypePolicyDetails._previous_value_validator),
    ('new_value', MemberSpaceLimitsChangeCapsTypePolicyDetails._new_value_validator),
]

MemberSpaceLimitsChangeCapsTypePolicyType._description_validator = bv.String()
MemberSpaceLimitsChangeCapsTypePolicyType._all_field_names_ = set(['description'])
MemberSpaceLimitsChangeCapsTypePolicyType._all_fields_ = [('description', MemberSpaceLimitsChangeCapsTypePolicyType._description_validator)]

MemberSpaceLimitsChangeCustomQuotaDetails._previous_value_validator = bv.UInt64()
MemberSpaceLimitsChangeCustomQuotaDetails._new_value_validator = bv.UInt64()
MemberSpaceLimitsChangeCustomQuotaDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
MemberSpaceLimitsChangeCustomQuotaDetails._all_fields_ = [
    ('previous_value', MemberSpaceLimitsChangeCustomQuotaDetails._previous_value_validator),
    ('new_value', MemberSpaceLimitsChangeCustomQuotaDetails._new_value_validator),
]

MemberSpaceLimitsChangeCustomQuotaType._description_validator = bv.String()
MemberSpaceLimitsChangeCustomQuotaType._all_field_names_ = set(['description'])
MemberSpaceLimitsChangeCustomQuotaType._all_fields_ = [('description', MemberSpaceLimitsChangeCustomQuotaType._description_validator)]

MemberSpaceLimitsChangePolicyDetails._previous_value_validator = bv.Nullable(bv.UInt64())
MemberSpaceLimitsChangePolicyDetails._new_value_validator = bv.Nullable(bv.UInt64())
MemberSpaceLimitsChangePolicyDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
MemberSpaceLimitsChangePolicyDetails._all_fields_ = [
    ('previous_value', MemberSpaceLimitsChangePolicyDetails._previous_value_validator),
    ('new_value', MemberSpaceLimitsChangePolicyDetails._new_value_validator),
]

MemberSpaceLimitsChangePolicyType._description_validator = bv.String()
MemberSpaceLimitsChangePolicyType._all_field_names_ = set(['description'])
MemberSpaceLimitsChangePolicyType._all_fields_ = [('description', MemberSpaceLimitsChangePolicyType._description_validator)]

MemberSpaceLimitsChangeStatusDetails._previous_value_validator = SpaceLimitsStatus_validator
MemberSpaceLimitsChangeStatusDetails._new_value_validator = SpaceLimitsStatus_validator
MemberSpaceLimitsChangeStatusDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
MemberSpaceLimitsChangeStatusDetails._all_fields_ = [
    ('previous_value', MemberSpaceLimitsChangeStatusDetails._previous_value_validator),
    ('new_value', MemberSpaceLimitsChangeStatusDetails._new_value_validator),
]

MemberSpaceLimitsChangeStatusType._description_validator = bv.String()
MemberSpaceLimitsChangeStatusType._all_field_names_ = set(['description'])
MemberSpaceLimitsChangeStatusType._all_fields_ = [('description', MemberSpaceLimitsChangeStatusType._description_validator)]

MemberSpaceLimitsRemoveCustomQuotaDetails._all_field_names_ = set([])
MemberSpaceLimitsRemoveCustomQuotaDetails._all_fields_ = []

MemberSpaceLimitsRemoveCustomQuotaType._description_validator = bv.String()
MemberSpaceLimitsRemoveCustomQuotaType._all_field_names_ = set(['description'])
MemberSpaceLimitsRemoveCustomQuotaType._all_fields_ = [('description', MemberSpaceLimitsRemoveCustomQuotaType._description_validator)]

MemberSpaceLimitsRemoveExceptionDetails._all_field_names_ = set([])
MemberSpaceLimitsRemoveExceptionDetails._all_fields_ = []

MemberSpaceLimitsRemoveExceptionType._description_validator = bv.String()
MemberSpaceLimitsRemoveExceptionType._all_field_names_ = set(['description'])
MemberSpaceLimitsRemoveExceptionType._all_fields_ = [('description', MemberSpaceLimitsRemoveExceptionType._description_validator)]

MemberStatus._not_joined_validator = bv.Void()
MemberStatus._invited_validator = bv.Void()
MemberStatus._active_validator = bv.Void()
MemberStatus._suspended_validator = bv.Void()
MemberStatus._removed_validator = bv.Void()
MemberStatus._other_validator = bv.Void()
MemberStatus._tagmap = {
    'not_joined': MemberStatus._not_joined_validator,
    'invited': MemberStatus._invited_validator,
    'active': MemberStatus._active_validator,
    'suspended': MemberStatus._suspended_validator,
    'removed': MemberStatus._removed_validator,
    'other': MemberStatus._other_validator,
}

MemberStatus.not_joined = MemberStatus('not_joined')
MemberStatus.invited = MemberStatus('invited')
MemberStatus.active = MemberStatus('active')
MemberStatus.suspended = MemberStatus('suspended')
MemberStatus.removed = MemberStatus('removed')
MemberStatus.other = MemberStatus('other')

MemberSuggestDetails._suggested_members_validator = bv.List(EmailAddress_validator)
MemberSuggestDetails._all_field_names_ = set(['suggested_members'])
MemberSuggestDetails._all_fields_ = [('suggested_members', MemberSuggestDetails._suggested_members_validator)]

MemberSuggestType._description_validator = bv.String()
MemberSuggestType._all_field_names_ = set(['description'])
MemberSuggestType._all_fields_ = [('description', MemberSuggestType._description_validator)]

MemberSuggestionsChangePolicyDetails._new_value_validator = MemberSuggestionsPolicy_validator
MemberSuggestionsChangePolicyDetails._previous_value_validator = bv.Nullable(MemberSuggestionsPolicy_validator)
MemberSuggestionsChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
MemberSuggestionsChangePolicyDetails._all_fields_ = [
    ('new_value', MemberSuggestionsChangePolicyDetails._new_value_validator),
    ('previous_value', MemberSuggestionsChangePolicyDetails._previous_value_validator),
]

MemberSuggestionsChangePolicyType._description_validator = bv.String()
MemberSuggestionsChangePolicyType._all_field_names_ = set(['description'])
MemberSuggestionsChangePolicyType._all_fields_ = [('description', MemberSuggestionsChangePolicyType._description_validator)]

MemberSuggestionsPolicy._disabled_validator = bv.Void()
MemberSuggestionsPolicy._enabled_validator = bv.Void()
MemberSuggestionsPolicy._other_validator = bv.Void()
MemberSuggestionsPolicy._tagmap = {
    'disabled': MemberSuggestionsPolicy._disabled_validator,
    'enabled': MemberSuggestionsPolicy._enabled_validator,
    'other': MemberSuggestionsPolicy._other_validator,
}

MemberSuggestionsPolicy.disabled = MemberSuggestionsPolicy('disabled')
MemberSuggestionsPolicy.enabled = MemberSuggestionsPolicy('enabled')
MemberSuggestionsPolicy.other = MemberSuggestionsPolicy('other')

MemberTransferAccountContentsDetails._all_field_names_ = set([])
MemberTransferAccountContentsDetails._all_fields_ = []

MemberTransferAccountContentsType._description_validator = bv.String()
MemberTransferAccountContentsType._all_field_names_ = set(['description'])
MemberTransferAccountContentsType._all_fields_ = [('description', MemberTransferAccountContentsType._description_validator)]

MicrosoftOfficeAddinChangePolicyDetails._new_value_validator = MicrosoftOfficeAddinPolicy_validator
MicrosoftOfficeAddinChangePolicyDetails._previous_value_validator = bv.Nullable(MicrosoftOfficeAddinPolicy_validator)
MicrosoftOfficeAddinChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
MicrosoftOfficeAddinChangePolicyDetails._all_fields_ = [
    ('new_value', MicrosoftOfficeAddinChangePolicyDetails._new_value_validator),
    ('previous_value', MicrosoftOfficeAddinChangePolicyDetails._previous_value_validator),
]

MicrosoftOfficeAddinChangePolicyType._description_validator = bv.String()
MicrosoftOfficeAddinChangePolicyType._all_field_names_ = set(['description'])
MicrosoftOfficeAddinChangePolicyType._all_fields_ = [('description', MicrosoftOfficeAddinChangePolicyType._description_validator)]

MicrosoftOfficeAddinPolicy._disabled_validator = bv.Void()
MicrosoftOfficeAddinPolicy._enabled_validator = bv.Void()
MicrosoftOfficeAddinPolicy._other_validator = bv.Void()
MicrosoftOfficeAddinPolicy._tagmap = {
    'disabled': MicrosoftOfficeAddinPolicy._disabled_validator,
    'enabled': MicrosoftOfficeAddinPolicy._enabled_validator,
    'other': MicrosoftOfficeAddinPolicy._other_validator,
}

MicrosoftOfficeAddinPolicy.disabled = MicrosoftOfficeAddinPolicy('disabled')
MicrosoftOfficeAddinPolicy.enabled = MicrosoftOfficeAddinPolicy('enabled')
MicrosoftOfficeAddinPolicy.other = MicrosoftOfficeAddinPolicy('other')

MissingDetails._source_event_fields_validator = bv.Nullable(bv.String())
MissingDetails._all_field_names_ = set(['source_event_fields'])
MissingDetails._all_fields_ = [('source_event_fields', MissingDetails._source_event_fields_validator)]

MobileDeviceSessionLogInfo._session_info_validator = bv.Nullable(MobileSessionLogInfo_validator)
MobileDeviceSessionLogInfo._device_name_validator = bv.String()
MobileDeviceSessionLogInfo._client_type_validator = team.MobileClientPlatform_validator
MobileDeviceSessionLogInfo._client_version_validator = bv.Nullable(bv.String())
MobileDeviceSessionLogInfo._os_version_validator = bv.Nullable(bv.String())
MobileDeviceSessionLogInfo._last_carrier_validator = bv.Nullable(bv.String())
MobileDeviceSessionLogInfo._field_names_ = set([
    'session_info',
    'device_name',
    'client_type',
    'client_version',
    'os_version',
    'last_carrier',
])
MobileDeviceSessionLogInfo._all_field_names_ = DeviceSessionLogInfo._all_field_names_.union(MobileDeviceSessionLogInfo._field_names_)
MobileDeviceSessionLogInfo._fields_ = [
    ('session_info', MobileDeviceSessionLogInfo._session_info_validator),
    ('device_name', MobileDeviceSessionLogInfo._device_name_validator),
    ('client_type', MobileDeviceSessionLogInfo._client_type_validator),
    ('client_version', MobileDeviceSessionLogInfo._client_version_validator),
    ('os_version', MobileDeviceSessionLogInfo._os_version_validator),
    ('last_carrier', MobileDeviceSessionLogInfo._last_carrier_validator),
]
MobileDeviceSessionLogInfo._all_fields_ = DeviceSessionLogInfo._all_fields_ + MobileDeviceSessionLogInfo._fields_

MobileSessionLogInfo._field_names_ = set([])
MobileSessionLogInfo._all_field_names_ = SessionLogInfo._all_field_names_.union(MobileSessionLogInfo._field_names_)
MobileSessionLogInfo._fields_ = []
MobileSessionLogInfo._all_fields_ = SessionLogInfo._all_fields_ + MobileSessionLogInfo._fields_

NamespaceRelativePathLogInfo._ns_id_validator = bv.Nullable(NamespaceId_validator)
NamespaceRelativePathLogInfo._relative_path_validator = bv.Nullable(FilePath_validator)
NamespaceRelativePathLogInfo._all_field_names_ = set([
    'ns_id',
    'relative_path',
])
NamespaceRelativePathLogInfo._all_fields_ = [
    ('ns_id', NamespaceRelativePathLogInfo._ns_id_validator),
    ('relative_path', NamespaceRelativePathLogInfo._relative_path_validator),
]

NetworkControlChangePolicyDetails._new_value_validator = NetworkControlPolicy_validator
NetworkControlChangePolicyDetails._previous_value_validator = bv.Nullable(NetworkControlPolicy_validator)
NetworkControlChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
NetworkControlChangePolicyDetails._all_fields_ = [
    ('new_value', NetworkControlChangePolicyDetails._new_value_validator),
    ('previous_value', NetworkControlChangePolicyDetails._previous_value_validator),
]

NetworkControlChangePolicyType._description_validator = bv.String()
NetworkControlChangePolicyType._all_field_names_ = set(['description'])
NetworkControlChangePolicyType._all_fields_ = [('description', NetworkControlChangePolicyType._description_validator)]

NetworkControlPolicy._disabled_validator = bv.Void()
NetworkControlPolicy._enabled_validator = bv.Void()
NetworkControlPolicy._other_validator = bv.Void()
NetworkControlPolicy._tagmap = {
    'disabled': NetworkControlPolicy._disabled_validator,
    'enabled': NetworkControlPolicy._enabled_validator,
    'other': NetworkControlPolicy._other_validator,
}

NetworkControlPolicy.disabled = NetworkControlPolicy('disabled')
NetworkControlPolicy.enabled = NetworkControlPolicy('enabled')
NetworkControlPolicy.other = NetworkControlPolicy('other')

UserLogInfo._account_id_validator = bv.Nullable(users_common.AccountId_validator)
UserLogInfo._display_name_validator = bv.Nullable(common.DisplayNameLegacy_validator)
UserLogInfo._email_validator = bv.Nullable(EmailAddress_validator)
UserLogInfo._field_names_ = set([
    'account_id',
    'display_name',
    'email',
])
UserLogInfo._all_field_names_ = UserLogInfo._field_names_
UserLogInfo._fields_ = [
    ('account_id', UserLogInfo._account_id_validator),
    ('display_name', UserLogInfo._display_name_validator),
    ('email', UserLogInfo._email_validator),
]
UserLogInfo._all_fields_ = UserLogInfo._fields_

UserLogInfo._tag_to_subtype_ = {
    (u'team_member',): TeamMemberLogInfo_validator,
    (u'trusted_non_team_member',): TrustedNonTeamMemberLogInfo_validator,
    (u'non_team_member',): NonTeamMemberLogInfo_validator,
}
UserLogInfo._pytype_to_tag_and_subtype_ = {
    TeamMemberLogInfo: ((u'team_member',), TeamMemberLogInfo_validator),
    TrustedNonTeamMemberLogInfo: ((u'trusted_non_team_member',), TrustedNonTeamMemberLogInfo_validator),
    NonTeamMemberLogInfo: ((u'non_team_member',), NonTeamMemberLogInfo_validator),
}
UserLogInfo._is_catch_all_ = True

NonTeamMemberLogInfo._field_names_ = set([])
NonTeamMemberLogInfo._all_field_names_ = UserLogInfo._all_field_names_.union(NonTeamMemberLogInfo._field_names_)
NonTeamMemberLogInfo._fields_ = []
NonTeamMemberLogInfo._all_fields_ = UserLogInfo._all_fields_ + NonTeamMemberLogInfo._fields_

NoteAclInviteOnlyDetails._all_field_names_ = set([])
NoteAclInviteOnlyDetails._all_fields_ = []

NoteAclInviteOnlyType._description_validator = bv.String()
NoteAclInviteOnlyType._all_field_names_ = set(['description'])
NoteAclInviteOnlyType._all_fields_ = [('description', NoteAclInviteOnlyType._description_validator)]

NoteAclLinkDetails._all_field_names_ = set([])
NoteAclLinkDetails._all_fields_ = []

NoteAclLinkType._description_validator = bv.String()
NoteAclLinkType._all_field_names_ = set(['description'])
NoteAclLinkType._all_fields_ = [('description', NoteAclLinkType._description_validator)]

NoteAclTeamLinkDetails._all_field_names_ = set([])
NoteAclTeamLinkDetails._all_fields_ = []

NoteAclTeamLinkType._description_validator = bv.String()
NoteAclTeamLinkType._all_field_names_ = set(['description'])
NoteAclTeamLinkType._all_fields_ = [('description', NoteAclTeamLinkType._description_validator)]

NoteShareReceiveDetails._all_field_names_ = set([])
NoteShareReceiveDetails._all_fields_ = []

NoteShareReceiveType._description_validator = bv.String()
NoteShareReceiveType._all_field_names_ = set(['description'])
NoteShareReceiveType._all_fields_ = [('description', NoteShareReceiveType._description_validator)]

NoteSharedDetails._all_field_names_ = set([])
NoteSharedDetails._all_fields_ = []

NoteSharedType._description_validator = bv.String()
NoteSharedType._all_field_names_ = set(['description'])
NoteSharedType._all_fields_ = [('description', NoteSharedType._description_validator)]

OpenNoteSharedDetails._all_field_names_ = set([])
OpenNoteSharedDetails._all_fields_ = []

OpenNoteSharedType._description_validator = bv.String()
OpenNoteSharedType._all_field_names_ = set(['description'])
OpenNoteSharedType._all_fields_ = [('description', OpenNoteSharedType._description_validator)]

OriginLogInfo._geo_location_validator = bv.Nullable(GeoLocationLogInfo_validator)
OriginLogInfo._access_method_validator = AccessMethodLogInfo_validator
OriginLogInfo._all_field_names_ = set([
    'geo_location',
    'access_method',
])
OriginLogInfo._all_fields_ = [
    ('geo_location', OriginLogInfo._geo_location_validator),
    ('access_method', OriginLogInfo._access_method_validator),
]

PaperAccessType._viewer_validator = bv.Void()
PaperAccessType._commenter_validator = bv.Void()
PaperAccessType._editor_validator = bv.Void()
PaperAccessType._other_validator = bv.Void()
PaperAccessType._tagmap = {
    'viewer': PaperAccessType._viewer_validator,
    'commenter': PaperAccessType._commenter_validator,
    'editor': PaperAccessType._editor_validator,
    'other': PaperAccessType._other_validator,
}

PaperAccessType.viewer = PaperAccessType('viewer')
PaperAccessType.commenter = PaperAccessType('commenter')
PaperAccessType.editor = PaperAccessType('editor')
PaperAccessType.other = PaperAccessType('other')

PaperAdminExportStartDetails._all_field_names_ = set([])
PaperAdminExportStartDetails._all_fields_ = []

PaperAdminExportStartType._description_validator = bv.String()
PaperAdminExportStartType._all_field_names_ = set(['description'])
PaperAdminExportStartType._all_fields_ = [('description', PaperAdminExportStartType._description_validator)]

PaperChangeDeploymentPolicyDetails._new_value_validator = team_policies.PaperDeploymentPolicy_validator
PaperChangeDeploymentPolicyDetails._previous_value_validator = bv.Nullable(team_policies.PaperDeploymentPolicy_validator)
PaperChangeDeploymentPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
PaperChangeDeploymentPolicyDetails._all_fields_ = [
    ('new_value', PaperChangeDeploymentPolicyDetails._new_value_validator),
    ('previous_value', PaperChangeDeploymentPolicyDetails._previous_value_validator),
]

PaperChangeDeploymentPolicyType._description_validator = bv.String()
PaperChangeDeploymentPolicyType._all_field_names_ = set(['description'])
PaperChangeDeploymentPolicyType._all_fields_ = [('description', PaperChangeDeploymentPolicyType._description_validator)]

PaperChangeMemberLinkPolicyDetails._new_value_validator = PaperMemberPolicy_validator
PaperChangeMemberLinkPolicyDetails._all_field_names_ = set(['new_value'])
PaperChangeMemberLinkPolicyDetails._all_fields_ = [('new_value', PaperChangeMemberLinkPolicyDetails._new_value_validator)]

PaperChangeMemberLinkPolicyType._description_validator = bv.String()
PaperChangeMemberLinkPolicyType._all_field_names_ = set(['description'])
PaperChangeMemberLinkPolicyType._all_fields_ = [('description', PaperChangeMemberLinkPolicyType._description_validator)]

PaperChangeMemberPolicyDetails._new_value_validator = PaperMemberPolicy_validator
PaperChangeMemberPolicyDetails._previous_value_validator = bv.Nullable(PaperMemberPolicy_validator)
PaperChangeMemberPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
PaperChangeMemberPolicyDetails._all_fields_ = [
    ('new_value', PaperChangeMemberPolicyDetails._new_value_validator),
    ('previous_value', PaperChangeMemberPolicyDetails._previous_value_validator),
]

PaperChangeMemberPolicyType._description_validator = bv.String()
PaperChangeMemberPolicyType._all_field_names_ = set(['description'])
PaperChangeMemberPolicyType._all_fields_ = [('description', PaperChangeMemberPolicyType._description_validator)]

PaperChangePolicyDetails._new_value_validator = team_policies.PaperEnabledPolicy_validator
PaperChangePolicyDetails._previous_value_validator = bv.Nullable(team_policies.PaperEnabledPolicy_validator)
PaperChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
PaperChangePolicyDetails._all_fields_ = [
    ('new_value', PaperChangePolicyDetails._new_value_validator),
    ('previous_value', PaperChangePolicyDetails._previous_value_validator),
]

PaperChangePolicyType._description_validator = bv.String()
PaperChangePolicyType._all_field_names_ = set(['description'])
PaperChangePolicyType._all_fields_ = [('description', PaperChangePolicyType._description_validator)]

PaperContentAddMemberDetails._event_uuid_validator = bv.String()
PaperContentAddMemberDetails._all_field_names_ = set(['event_uuid'])
PaperContentAddMemberDetails._all_fields_ = [('event_uuid', PaperContentAddMemberDetails._event_uuid_validator)]

PaperContentAddMemberType._description_validator = bv.String()
PaperContentAddMemberType._all_field_names_ = set(['description'])
PaperContentAddMemberType._all_fields_ = [('description', PaperContentAddMemberType._description_validator)]

PaperContentAddToFolderDetails._event_uuid_validator = bv.String()
PaperContentAddToFolderDetails._target_asset_index_validator = bv.UInt64()
PaperContentAddToFolderDetails._parent_asset_index_validator = bv.UInt64()
PaperContentAddToFolderDetails._all_field_names_ = set([
    'event_uuid',
    'target_asset_index',
    'parent_asset_index',
])
PaperContentAddToFolderDetails._all_fields_ = [
    ('event_uuid', PaperContentAddToFolderDetails._event_uuid_validator),
    ('target_asset_index', PaperContentAddToFolderDetails._target_asset_index_validator),
    ('parent_asset_index', PaperContentAddToFolderDetails._parent_asset_index_validator),
]

PaperContentAddToFolderType._description_validator = bv.String()
PaperContentAddToFolderType._all_field_names_ = set(['description'])
PaperContentAddToFolderType._all_fields_ = [('description', PaperContentAddToFolderType._description_validator)]

PaperContentArchiveDetails._event_uuid_validator = bv.String()
PaperContentArchiveDetails._all_field_names_ = set(['event_uuid'])
PaperContentArchiveDetails._all_fields_ = [('event_uuid', PaperContentArchiveDetails._event_uuid_validator)]

PaperContentArchiveType._description_validator = bv.String()
PaperContentArchiveType._all_field_names_ = set(['description'])
PaperContentArchiveType._all_fields_ = [('description', PaperContentArchiveType._description_validator)]

PaperContentCreateDetails._event_uuid_validator = bv.String()
PaperContentCreateDetails._all_field_names_ = set(['event_uuid'])
PaperContentCreateDetails._all_fields_ = [('event_uuid', PaperContentCreateDetails._event_uuid_validator)]

PaperContentCreateType._description_validator = bv.String()
PaperContentCreateType._all_field_names_ = set(['description'])
PaperContentCreateType._all_fields_ = [('description', PaperContentCreateType._description_validator)]

PaperContentPermanentlyDeleteDetails._event_uuid_validator = bv.String()
PaperContentPermanentlyDeleteDetails._all_field_names_ = set(['event_uuid'])
PaperContentPermanentlyDeleteDetails._all_fields_ = [('event_uuid', PaperContentPermanentlyDeleteDetails._event_uuid_validator)]

PaperContentPermanentlyDeleteType._description_validator = bv.String()
PaperContentPermanentlyDeleteType._all_field_names_ = set(['description'])
PaperContentPermanentlyDeleteType._all_fields_ = [('description', PaperContentPermanentlyDeleteType._description_validator)]

PaperContentRemoveFromFolderDetails._event_uuid_validator = bv.String()
PaperContentRemoveFromFolderDetails._target_asset_index_validator = bv.UInt64()
PaperContentRemoveFromFolderDetails._parent_asset_index_validator = bv.UInt64()
PaperContentRemoveFromFolderDetails._all_field_names_ = set([
    'event_uuid',
    'target_asset_index',
    'parent_asset_index',
])
PaperContentRemoveFromFolderDetails._all_fields_ = [
    ('event_uuid', PaperContentRemoveFromFolderDetails._event_uuid_validator),
    ('target_asset_index', PaperContentRemoveFromFolderDetails._target_asset_index_validator),
    ('parent_asset_index', PaperContentRemoveFromFolderDetails._parent_asset_index_validator),
]

PaperContentRemoveFromFolderType._description_validator = bv.String()
PaperContentRemoveFromFolderType._all_field_names_ = set(['description'])
PaperContentRemoveFromFolderType._all_fields_ = [('description', PaperContentRemoveFromFolderType._description_validator)]

PaperContentRemoveMemberDetails._event_uuid_validator = bv.String()
PaperContentRemoveMemberDetails._all_field_names_ = set(['event_uuid'])
PaperContentRemoveMemberDetails._all_fields_ = [('event_uuid', PaperContentRemoveMemberDetails._event_uuid_validator)]

PaperContentRemoveMemberType._description_validator = bv.String()
PaperContentRemoveMemberType._all_field_names_ = set(['description'])
PaperContentRemoveMemberType._all_fields_ = [('description', PaperContentRemoveMemberType._description_validator)]

PaperContentRenameDetails._event_uuid_validator = bv.String()
PaperContentRenameDetails._all_field_names_ = set(['event_uuid'])
PaperContentRenameDetails._all_fields_ = [('event_uuid', PaperContentRenameDetails._event_uuid_validator)]

PaperContentRenameType._description_validator = bv.String()
PaperContentRenameType._all_field_names_ = set(['description'])
PaperContentRenameType._all_fields_ = [('description', PaperContentRenameType._description_validator)]

PaperContentRestoreDetails._event_uuid_validator = bv.String()
PaperContentRestoreDetails._all_field_names_ = set(['event_uuid'])
PaperContentRestoreDetails._all_fields_ = [('event_uuid', PaperContentRestoreDetails._event_uuid_validator)]

PaperContentRestoreType._description_validator = bv.String()
PaperContentRestoreType._all_field_names_ = set(['description'])
PaperContentRestoreType._all_fields_ = [('description', PaperContentRestoreType._description_validator)]

PaperDocAddCommentDetails._event_uuid_validator = bv.String()
PaperDocAddCommentDetails._comment_text_validator = bv.Nullable(bv.String())
PaperDocAddCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
PaperDocAddCommentDetails._all_fields_ = [
    ('event_uuid', PaperDocAddCommentDetails._event_uuid_validator),
    ('comment_text', PaperDocAddCommentDetails._comment_text_validator),
]

PaperDocAddCommentType._description_validator = bv.String()
PaperDocAddCommentType._all_field_names_ = set(['description'])
PaperDocAddCommentType._all_fields_ = [('description', PaperDocAddCommentType._description_validator)]

PaperDocChangeMemberRoleDetails._event_uuid_validator = bv.String()
PaperDocChangeMemberRoleDetails._access_type_validator = PaperAccessType_validator
PaperDocChangeMemberRoleDetails._all_field_names_ = set([
    'event_uuid',
    'access_type',
])
PaperDocChangeMemberRoleDetails._all_fields_ = [
    ('event_uuid', PaperDocChangeMemberRoleDetails._event_uuid_validator),
    ('access_type', PaperDocChangeMemberRoleDetails._access_type_validator),
]

PaperDocChangeMemberRoleType._description_validator = bv.String()
PaperDocChangeMemberRoleType._all_field_names_ = set(['description'])
PaperDocChangeMemberRoleType._all_fields_ = [('description', PaperDocChangeMemberRoleType._description_validator)]

PaperDocChangeSharingPolicyDetails._event_uuid_validator = bv.String()
PaperDocChangeSharingPolicyDetails._public_sharing_policy_validator = bv.Nullable(bv.String())
PaperDocChangeSharingPolicyDetails._team_sharing_policy_validator = bv.Nullable(bv.String())
PaperDocChangeSharingPolicyDetails._all_field_names_ = set([
    'event_uuid',
    'public_sharing_policy',
    'team_sharing_policy',
])
PaperDocChangeSharingPolicyDetails._all_fields_ = [
    ('event_uuid', PaperDocChangeSharingPolicyDetails._event_uuid_validator),
    ('public_sharing_policy', PaperDocChangeSharingPolicyDetails._public_sharing_policy_validator),
    ('team_sharing_policy', PaperDocChangeSharingPolicyDetails._team_sharing_policy_validator),
]

PaperDocChangeSharingPolicyType._description_validator = bv.String()
PaperDocChangeSharingPolicyType._all_field_names_ = set(['description'])
PaperDocChangeSharingPolicyType._all_fields_ = [('description', PaperDocChangeSharingPolicyType._description_validator)]

PaperDocChangeSubscriptionDetails._event_uuid_validator = bv.String()
PaperDocChangeSubscriptionDetails._new_subscription_level_validator = bv.String()
PaperDocChangeSubscriptionDetails._previous_subscription_level_validator = bv.Nullable(bv.String())
PaperDocChangeSubscriptionDetails._all_field_names_ = set([
    'event_uuid',
    'new_subscription_level',
    'previous_subscription_level',
])
PaperDocChangeSubscriptionDetails._all_fields_ = [
    ('event_uuid', PaperDocChangeSubscriptionDetails._event_uuid_validator),
    ('new_subscription_level', PaperDocChangeSubscriptionDetails._new_subscription_level_validator),
    ('previous_subscription_level', PaperDocChangeSubscriptionDetails._previous_subscription_level_validator),
]

PaperDocChangeSubscriptionType._description_validator = bv.String()
PaperDocChangeSubscriptionType._all_field_names_ = set(['description'])
PaperDocChangeSubscriptionType._all_fields_ = [('description', PaperDocChangeSubscriptionType._description_validator)]

PaperDocDeleteCommentDetails._event_uuid_validator = bv.String()
PaperDocDeleteCommentDetails._comment_text_validator = bv.Nullable(bv.String())
PaperDocDeleteCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
PaperDocDeleteCommentDetails._all_fields_ = [
    ('event_uuid', PaperDocDeleteCommentDetails._event_uuid_validator),
    ('comment_text', PaperDocDeleteCommentDetails._comment_text_validator),
]

PaperDocDeleteCommentType._description_validator = bv.String()
PaperDocDeleteCommentType._all_field_names_ = set(['description'])
PaperDocDeleteCommentType._all_fields_ = [('description', PaperDocDeleteCommentType._description_validator)]

PaperDocDeletedDetails._event_uuid_validator = bv.String()
PaperDocDeletedDetails._all_field_names_ = set(['event_uuid'])
PaperDocDeletedDetails._all_fields_ = [('event_uuid', PaperDocDeletedDetails._event_uuid_validator)]

PaperDocDeletedType._description_validator = bv.String()
PaperDocDeletedType._all_field_names_ = set(['description'])
PaperDocDeletedType._all_fields_ = [('description', PaperDocDeletedType._description_validator)]

PaperDocDownloadDetails._event_uuid_validator = bv.String()
PaperDocDownloadDetails._export_file_format_validator = PaperDownloadFormat_validator
PaperDocDownloadDetails._all_field_names_ = set([
    'event_uuid',
    'export_file_format',
])
PaperDocDownloadDetails._all_fields_ = [
    ('event_uuid', PaperDocDownloadDetails._event_uuid_validator),
    ('export_file_format', PaperDocDownloadDetails._export_file_format_validator),
]

PaperDocDownloadType._description_validator = bv.String()
PaperDocDownloadType._all_field_names_ = set(['description'])
PaperDocDownloadType._all_fields_ = [('description', PaperDocDownloadType._description_validator)]

PaperDocEditCommentDetails._event_uuid_validator = bv.String()
PaperDocEditCommentDetails._comment_text_validator = bv.Nullable(bv.String())
PaperDocEditCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
PaperDocEditCommentDetails._all_fields_ = [
    ('event_uuid', PaperDocEditCommentDetails._event_uuid_validator),
    ('comment_text', PaperDocEditCommentDetails._comment_text_validator),
]

PaperDocEditCommentType._description_validator = bv.String()
PaperDocEditCommentType._all_field_names_ = set(['description'])
PaperDocEditCommentType._all_fields_ = [('description', PaperDocEditCommentType._description_validator)]

PaperDocEditDetails._event_uuid_validator = bv.String()
PaperDocEditDetails._all_field_names_ = set(['event_uuid'])
PaperDocEditDetails._all_fields_ = [('event_uuid', PaperDocEditDetails._event_uuid_validator)]

PaperDocEditType._description_validator = bv.String()
PaperDocEditType._all_field_names_ = set(['description'])
PaperDocEditType._all_fields_ = [('description', PaperDocEditType._description_validator)]

PaperDocFollowedDetails._event_uuid_validator = bv.String()
PaperDocFollowedDetails._all_field_names_ = set(['event_uuid'])
PaperDocFollowedDetails._all_fields_ = [('event_uuid', PaperDocFollowedDetails._event_uuid_validator)]

PaperDocFollowedType._description_validator = bv.String()
PaperDocFollowedType._all_field_names_ = set(['description'])
PaperDocFollowedType._all_fields_ = [('description', PaperDocFollowedType._description_validator)]

PaperDocMentionDetails._event_uuid_validator = bv.String()
PaperDocMentionDetails._all_field_names_ = set(['event_uuid'])
PaperDocMentionDetails._all_fields_ = [('event_uuid', PaperDocMentionDetails._event_uuid_validator)]

PaperDocMentionType._description_validator = bv.String()
PaperDocMentionType._all_field_names_ = set(['description'])
PaperDocMentionType._all_fields_ = [('description', PaperDocMentionType._description_validator)]

PaperDocOwnershipChangedDetails._event_uuid_validator = bv.String()
PaperDocOwnershipChangedDetails._old_owner_user_id_validator = bv.Nullable(users_common.AccountId_validator)
PaperDocOwnershipChangedDetails._new_owner_user_id_validator = users_common.AccountId_validator
PaperDocOwnershipChangedDetails._all_field_names_ = set([
    'event_uuid',
    'old_owner_user_id',
    'new_owner_user_id',
])
PaperDocOwnershipChangedDetails._all_fields_ = [
    ('event_uuid', PaperDocOwnershipChangedDetails._event_uuid_validator),
    ('old_owner_user_id', PaperDocOwnershipChangedDetails._old_owner_user_id_validator),
    ('new_owner_user_id', PaperDocOwnershipChangedDetails._new_owner_user_id_validator),
]

PaperDocOwnershipChangedType._description_validator = bv.String()
PaperDocOwnershipChangedType._all_field_names_ = set(['description'])
PaperDocOwnershipChangedType._all_fields_ = [('description', PaperDocOwnershipChangedType._description_validator)]

PaperDocRequestAccessDetails._event_uuid_validator = bv.String()
PaperDocRequestAccessDetails._all_field_names_ = set(['event_uuid'])
PaperDocRequestAccessDetails._all_fields_ = [('event_uuid', PaperDocRequestAccessDetails._event_uuid_validator)]

PaperDocRequestAccessType._description_validator = bv.String()
PaperDocRequestAccessType._all_field_names_ = set(['description'])
PaperDocRequestAccessType._all_fields_ = [('description', PaperDocRequestAccessType._description_validator)]

PaperDocResolveCommentDetails._event_uuid_validator = bv.String()
PaperDocResolveCommentDetails._comment_text_validator = bv.Nullable(bv.String())
PaperDocResolveCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
PaperDocResolveCommentDetails._all_fields_ = [
    ('event_uuid', PaperDocResolveCommentDetails._event_uuid_validator),
    ('comment_text', PaperDocResolveCommentDetails._comment_text_validator),
]

PaperDocResolveCommentType._description_validator = bv.String()
PaperDocResolveCommentType._all_field_names_ = set(['description'])
PaperDocResolveCommentType._all_fields_ = [('description', PaperDocResolveCommentType._description_validator)]

PaperDocRevertDetails._event_uuid_validator = bv.String()
PaperDocRevertDetails._all_field_names_ = set(['event_uuid'])
PaperDocRevertDetails._all_fields_ = [('event_uuid', PaperDocRevertDetails._event_uuid_validator)]

PaperDocRevertType._description_validator = bv.String()
PaperDocRevertType._all_field_names_ = set(['description'])
PaperDocRevertType._all_fields_ = [('description', PaperDocRevertType._description_validator)]

PaperDocSlackShareDetails._event_uuid_validator = bv.String()
PaperDocSlackShareDetails._all_field_names_ = set(['event_uuid'])
PaperDocSlackShareDetails._all_fields_ = [('event_uuid', PaperDocSlackShareDetails._event_uuid_validator)]

PaperDocSlackShareType._description_validator = bv.String()
PaperDocSlackShareType._all_field_names_ = set(['description'])
PaperDocSlackShareType._all_fields_ = [('description', PaperDocSlackShareType._description_validator)]

PaperDocTeamInviteDetails._event_uuid_validator = bv.String()
PaperDocTeamInviteDetails._all_field_names_ = set(['event_uuid'])
PaperDocTeamInviteDetails._all_fields_ = [('event_uuid', PaperDocTeamInviteDetails._event_uuid_validator)]

PaperDocTeamInviteType._description_validator = bv.String()
PaperDocTeamInviteType._all_field_names_ = set(['description'])
PaperDocTeamInviteType._all_fields_ = [('description', PaperDocTeamInviteType._description_validator)]

PaperDocTrashedDetails._event_uuid_validator = bv.String()
PaperDocTrashedDetails._all_field_names_ = set(['event_uuid'])
PaperDocTrashedDetails._all_fields_ = [('event_uuid', PaperDocTrashedDetails._event_uuid_validator)]

PaperDocTrashedType._description_validator = bv.String()
PaperDocTrashedType._all_field_names_ = set(['description'])
PaperDocTrashedType._all_fields_ = [('description', PaperDocTrashedType._description_validator)]

PaperDocUnresolveCommentDetails._event_uuid_validator = bv.String()
PaperDocUnresolveCommentDetails._comment_text_validator = bv.Nullable(bv.String())
PaperDocUnresolveCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
PaperDocUnresolveCommentDetails._all_fields_ = [
    ('event_uuid', PaperDocUnresolveCommentDetails._event_uuid_validator),
    ('comment_text', PaperDocUnresolveCommentDetails._comment_text_validator),
]

PaperDocUnresolveCommentType._description_validator = bv.String()
PaperDocUnresolveCommentType._all_field_names_ = set(['description'])
PaperDocUnresolveCommentType._all_fields_ = [('description', PaperDocUnresolveCommentType._description_validator)]

PaperDocUntrashedDetails._event_uuid_validator = bv.String()
PaperDocUntrashedDetails._all_field_names_ = set(['event_uuid'])
PaperDocUntrashedDetails._all_fields_ = [('event_uuid', PaperDocUntrashedDetails._event_uuid_validator)]

PaperDocUntrashedType._description_validator = bv.String()
PaperDocUntrashedType._all_field_names_ = set(['description'])
PaperDocUntrashedType._all_fields_ = [('description', PaperDocUntrashedType._description_validator)]

PaperDocViewDetails._event_uuid_validator = bv.String()
PaperDocViewDetails._all_field_names_ = set(['event_uuid'])
PaperDocViewDetails._all_fields_ = [('event_uuid', PaperDocViewDetails._event_uuid_validator)]

PaperDocViewType._description_validator = bv.String()
PaperDocViewType._all_field_names_ = set(['description'])
PaperDocViewType._all_fields_ = [('description', PaperDocViewType._description_validator)]

PaperDocumentLogInfo._doc_id_validator = bv.String()
PaperDocumentLogInfo._doc_title_validator = bv.String()
PaperDocumentLogInfo._all_field_names_ = set([
    'doc_id',
    'doc_title',
])
PaperDocumentLogInfo._all_fields_ = [
    ('doc_id', PaperDocumentLogInfo._doc_id_validator),
    ('doc_title', PaperDocumentLogInfo._doc_title_validator),
]

PaperDownloadFormat._docx_validator = bv.Void()
PaperDownloadFormat._html_validator = bv.Void()
PaperDownloadFormat._markdown_validator = bv.Void()
PaperDownloadFormat._pdf_validator = bv.Void()
PaperDownloadFormat._other_validator = bv.Void()
PaperDownloadFormat._tagmap = {
    'docx': PaperDownloadFormat._docx_validator,
    'html': PaperDownloadFormat._html_validator,
    'markdown': PaperDownloadFormat._markdown_validator,
    'pdf': PaperDownloadFormat._pdf_validator,
    'other': PaperDownloadFormat._other_validator,
}

PaperDownloadFormat.docx = PaperDownloadFormat('docx')
PaperDownloadFormat.html = PaperDownloadFormat('html')
PaperDownloadFormat.markdown = PaperDownloadFormat('markdown')
PaperDownloadFormat.pdf = PaperDownloadFormat('pdf')
PaperDownloadFormat.other = PaperDownloadFormat('other')

PaperEnabledUsersGroupAdditionDetails._all_field_names_ = set([])
PaperEnabledUsersGroupAdditionDetails._all_fields_ = []

PaperEnabledUsersGroupAdditionType._description_validator = bv.String()
PaperEnabledUsersGroupAdditionType._all_field_names_ = set(['description'])
PaperEnabledUsersGroupAdditionType._all_fields_ = [('description', PaperEnabledUsersGroupAdditionType._description_validator)]

PaperEnabledUsersGroupRemovalDetails._all_field_names_ = set([])
PaperEnabledUsersGroupRemovalDetails._all_fields_ = []

PaperEnabledUsersGroupRemovalType._description_validator = bv.String()
PaperEnabledUsersGroupRemovalType._all_field_names_ = set(['description'])
PaperEnabledUsersGroupRemovalType._all_fields_ = [('description', PaperEnabledUsersGroupRemovalType._description_validator)]

PaperExternalViewAllowDetails._event_uuid_validator = bv.String()
PaperExternalViewAllowDetails._all_field_names_ = set(['event_uuid'])
PaperExternalViewAllowDetails._all_fields_ = [('event_uuid', PaperExternalViewAllowDetails._event_uuid_validator)]

PaperExternalViewAllowType._description_validator = bv.String()
PaperExternalViewAllowType._all_field_names_ = set(['description'])
PaperExternalViewAllowType._all_fields_ = [('description', PaperExternalViewAllowType._description_validator)]

PaperExternalViewDefaultTeamDetails._event_uuid_validator = bv.String()
PaperExternalViewDefaultTeamDetails._all_field_names_ = set(['event_uuid'])
PaperExternalViewDefaultTeamDetails._all_fields_ = [('event_uuid', PaperExternalViewDefaultTeamDetails._event_uuid_validator)]

PaperExternalViewDefaultTeamType._description_validator = bv.String()
PaperExternalViewDefaultTeamType._all_field_names_ = set(['description'])
PaperExternalViewDefaultTeamType._all_fields_ = [('description', PaperExternalViewDefaultTeamType._description_validator)]

PaperExternalViewForbidDetails._event_uuid_validator = bv.String()
PaperExternalViewForbidDetails._all_field_names_ = set(['event_uuid'])
PaperExternalViewForbidDetails._all_fields_ = [('event_uuid', PaperExternalViewForbidDetails._event_uuid_validator)]

PaperExternalViewForbidType._description_validator = bv.String()
PaperExternalViewForbidType._all_field_names_ = set(['description'])
PaperExternalViewForbidType._all_fields_ = [('description', PaperExternalViewForbidType._description_validator)]

PaperFolderChangeSubscriptionDetails._event_uuid_validator = bv.String()
PaperFolderChangeSubscriptionDetails._new_subscription_level_validator = bv.String()
PaperFolderChangeSubscriptionDetails._previous_subscription_level_validator = bv.Nullable(bv.String())
PaperFolderChangeSubscriptionDetails._all_field_names_ = set([
    'event_uuid',
    'new_subscription_level',
    'previous_subscription_level',
])
PaperFolderChangeSubscriptionDetails._all_fields_ = [
    ('event_uuid', PaperFolderChangeSubscriptionDetails._event_uuid_validator),
    ('new_subscription_level', PaperFolderChangeSubscriptionDetails._new_subscription_level_validator),
    ('previous_subscription_level', PaperFolderChangeSubscriptionDetails._previous_subscription_level_validator),
]

PaperFolderChangeSubscriptionType._description_validator = bv.String()
PaperFolderChangeSubscriptionType._all_field_names_ = set(['description'])
PaperFolderChangeSubscriptionType._all_fields_ = [('description', PaperFolderChangeSubscriptionType._description_validator)]

PaperFolderDeletedDetails._event_uuid_validator = bv.String()
PaperFolderDeletedDetails._all_field_names_ = set(['event_uuid'])
PaperFolderDeletedDetails._all_fields_ = [('event_uuid', PaperFolderDeletedDetails._event_uuid_validator)]

PaperFolderDeletedType._description_validator = bv.String()
PaperFolderDeletedType._all_field_names_ = set(['description'])
PaperFolderDeletedType._all_fields_ = [('description', PaperFolderDeletedType._description_validator)]

PaperFolderFollowedDetails._event_uuid_validator = bv.String()
PaperFolderFollowedDetails._all_field_names_ = set(['event_uuid'])
PaperFolderFollowedDetails._all_fields_ = [('event_uuid', PaperFolderFollowedDetails._event_uuid_validator)]

PaperFolderFollowedType._description_validator = bv.String()
PaperFolderFollowedType._all_field_names_ = set(['description'])
PaperFolderFollowedType._all_fields_ = [('description', PaperFolderFollowedType._description_validator)]

PaperFolderLogInfo._folder_id_validator = bv.String()
PaperFolderLogInfo._folder_name_validator = bv.String()
PaperFolderLogInfo._all_field_names_ = set([
    'folder_id',
    'folder_name',
])
PaperFolderLogInfo._all_fields_ = [
    ('folder_id', PaperFolderLogInfo._folder_id_validator),
    ('folder_name', PaperFolderLogInfo._folder_name_validator),
]

PaperFolderTeamInviteDetails._event_uuid_validator = bv.String()
PaperFolderTeamInviteDetails._all_field_names_ = set(['event_uuid'])
PaperFolderTeamInviteDetails._all_fields_ = [('event_uuid', PaperFolderTeamInviteDetails._event_uuid_validator)]

PaperFolderTeamInviteType._description_validator = bv.String()
PaperFolderTeamInviteType._all_field_names_ = set(['description'])
PaperFolderTeamInviteType._all_fields_ = [('description', PaperFolderTeamInviteType._description_validator)]

PaperMemberPolicy._anyone_with_link_validator = bv.Void()
PaperMemberPolicy._only_team_validator = bv.Void()
PaperMemberPolicy._team_and_explicitly_shared_validator = bv.Void()
PaperMemberPolicy._other_validator = bv.Void()
PaperMemberPolicy._tagmap = {
    'anyone_with_link': PaperMemberPolicy._anyone_with_link_validator,
    'only_team': PaperMemberPolicy._only_team_validator,
    'team_and_explicitly_shared': PaperMemberPolicy._team_and_explicitly_shared_validator,
    'other': PaperMemberPolicy._other_validator,
}

PaperMemberPolicy.anyone_with_link = PaperMemberPolicy('anyone_with_link')
PaperMemberPolicy.only_team = PaperMemberPolicy('only_team')
PaperMemberPolicy.team_and_explicitly_shared = PaperMemberPolicy('team_and_explicitly_shared')
PaperMemberPolicy.other = PaperMemberPolicy('other')

ParticipantLogInfo._user_validator = UserLogInfo_validator
ParticipantLogInfo._group_validator = GroupLogInfo_validator
ParticipantLogInfo._other_validator = bv.Void()
ParticipantLogInfo._tagmap = {
    'user': ParticipantLogInfo._user_validator,
    'group': ParticipantLogInfo._group_validator,
    'other': ParticipantLogInfo._other_validator,
}

ParticipantLogInfo.other = ParticipantLogInfo('other')

PassPolicy._enabled_validator = bv.Void()
PassPolicy._allow_validator = bv.Void()
PassPolicy._disabled_validator = bv.Void()
PassPolicy._other_validator = bv.Void()
PassPolicy._tagmap = {
    'enabled': PassPolicy._enabled_validator,
    'allow': PassPolicy._allow_validator,
    'disabled': PassPolicy._disabled_validator,
    'other': PassPolicy._other_validator,
}

PassPolicy.enabled = PassPolicy('enabled')
PassPolicy.allow = PassPolicy('allow')
PassPolicy.disabled = PassPolicy('disabled')
PassPolicy.other = PassPolicy('other')

PasswordChangeDetails._all_field_names_ = set([])
PasswordChangeDetails._all_fields_ = []

PasswordChangeType._description_validator = bv.String()
PasswordChangeType._all_field_names_ = set(['description'])
PasswordChangeType._all_fields_ = [('description', PasswordChangeType._description_validator)]

PasswordResetAllDetails._all_field_names_ = set([])
PasswordResetAllDetails._all_fields_ = []

PasswordResetAllType._description_validator = bv.String()
PasswordResetAllType._all_field_names_ = set(['description'])
PasswordResetAllType._all_fields_ = [('description', PasswordResetAllType._description_validator)]

PasswordResetDetails._all_field_names_ = set([])
PasswordResetDetails._all_fields_ = []

PasswordResetType._description_validator = bv.String()
PasswordResetType._all_field_names_ = set(['description'])
PasswordResetType._all_fields_ = [('description', PasswordResetType._description_validator)]

PathLogInfo._contextual_validator = bv.Nullable(FilePath_validator)
PathLogInfo._namespace_relative_validator = NamespaceRelativePathLogInfo_validator
PathLogInfo._all_field_names_ = set([
    'contextual',
    'namespace_relative',
])
PathLogInfo._all_fields_ = [
    ('contextual', PathLogInfo._contextual_validator),
    ('namespace_relative', PathLogInfo._namespace_relative_validator),
]

PermanentDeleteChangePolicyDetails._new_value_validator = ContentPermanentDeletePolicy_validator
PermanentDeleteChangePolicyDetails._previous_value_validator = bv.Nullable(ContentPermanentDeletePolicy_validator)
PermanentDeleteChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
PermanentDeleteChangePolicyDetails._all_fields_ = [
    ('new_value', PermanentDeleteChangePolicyDetails._new_value_validator),
    ('previous_value', PermanentDeleteChangePolicyDetails._previous_value_validator),
]

PermanentDeleteChangePolicyType._description_validator = bv.String()
PermanentDeleteChangePolicyType._all_field_names_ = set(['description'])
PermanentDeleteChangePolicyType._all_fields_ = [('description', PermanentDeleteChangePolicyType._description_validator)]

PlacementRestriction._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')

QuickActionType._delete_shared_link_validator = bv.Void()
QuickActionType._other_validator = bv.Void()
QuickActionType._tagmap = {
    'delete_shared_link': QuickActionType._delete_shared_link_validator,
    'other': QuickActionType._other_validator,
}

QuickActionType.delete_shared_link = QuickActionType('delete_shared_link')
QuickActionType.other = QuickActionType('other')

RelocateAssetReferencesLogInfo._src_asset_index_validator = bv.UInt64()
RelocateAssetReferencesLogInfo._dest_asset_index_validator = bv.UInt64()
RelocateAssetReferencesLogInfo._all_field_names_ = set([
    'src_asset_index',
    'dest_asset_index',
])
RelocateAssetReferencesLogInfo._all_fields_ = [
    ('src_asset_index', RelocateAssetReferencesLogInfo._src_asset_index_validator),
    ('dest_asset_index', RelocateAssetReferencesLogInfo._dest_asset_index_validator),
]

ResellerLogInfo._reseller_name_validator = bv.String()
ResellerLogInfo._reseller_email_validator = EmailAddress_validator
ResellerLogInfo._all_field_names_ = set([
    'reseller_name',
    'reseller_email',
])
ResellerLogInfo._all_fields_ = [
    ('reseller_name', ResellerLogInfo._reseller_name_validator),
    ('reseller_email', ResellerLogInfo._reseller_email_validator),
]

ResellerSupportSessionEndDetails._all_field_names_ = set([])
ResellerSupportSessionEndDetails._all_fields_ = []

ResellerSupportSessionEndType._description_validator = bv.String()
ResellerSupportSessionEndType._all_field_names_ = set(['description'])
ResellerSupportSessionEndType._all_fields_ = [('description', ResellerSupportSessionEndType._description_validator)]

ResellerSupportSessionStartDetails._all_field_names_ = set([])
ResellerSupportSessionStartDetails._all_fields_ = []

ResellerSupportSessionStartType._description_validator = bv.String()
ResellerSupportSessionStartType._all_field_names_ = set(['description'])
ResellerSupportSessionStartType._all_fields_ = [('description', ResellerSupportSessionStartType._description_validator)]

SecondaryMailsPolicy._disabled_validator = bv.Void()
SecondaryMailsPolicy._enabled_validator = bv.Void()
SecondaryMailsPolicy._other_validator = bv.Void()
SecondaryMailsPolicy._tagmap = {
    'disabled': SecondaryMailsPolicy._disabled_validator,
    'enabled': SecondaryMailsPolicy._enabled_validator,
    'other': SecondaryMailsPolicy._other_validator,
}

SecondaryMailsPolicy.disabled = SecondaryMailsPolicy('disabled')
SecondaryMailsPolicy.enabled = SecondaryMailsPolicy('enabled')
SecondaryMailsPolicy.other = SecondaryMailsPolicy('other')

SecondaryMailsPolicyChangedDetails._previous_value_validator = SecondaryMailsPolicy_validator
SecondaryMailsPolicyChangedDetails._new_value_validator = SecondaryMailsPolicy_validator
SecondaryMailsPolicyChangedDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
SecondaryMailsPolicyChangedDetails._all_fields_ = [
    ('previous_value', SecondaryMailsPolicyChangedDetails._previous_value_validator),
    ('new_value', SecondaryMailsPolicyChangedDetails._new_value_validator),
]

SecondaryMailsPolicyChangedType._description_validator = bv.String()
SecondaryMailsPolicyChangedType._all_field_names_ = set(['description'])
SecondaryMailsPolicyChangedType._all_fields_ = [('description', SecondaryMailsPolicyChangedType._description_validator)]

SfAddGroupDetails._target_asset_index_validator = bv.UInt64()
SfAddGroupDetails._original_folder_name_validator = bv.String()
SfAddGroupDetails._sharing_permission_validator = bv.Nullable(bv.String())
SfAddGroupDetails._team_name_validator = bv.String()
SfAddGroupDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'sharing_permission',
    'team_name',
])
SfAddGroupDetails._all_fields_ = [
    ('target_asset_index', SfAddGroupDetails._target_asset_index_validator),
    ('original_folder_name', SfAddGroupDetails._original_folder_name_validator),
    ('sharing_permission', SfAddGroupDetails._sharing_permission_validator),
    ('team_name', SfAddGroupDetails._team_name_validator),
]

SfAddGroupType._description_validator = bv.String()
SfAddGroupType._all_field_names_ = set(['description'])
SfAddGroupType._all_fields_ = [('description', SfAddGroupType._description_validator)]

SfAllowNonMembersToViewSharedLinksDetails._target_asset_index_validator = bv.UInt64()
SfAllowNonMembersToViewSharedLinksDetails._original_folder_name_validator = bv.String()
SfAllowNonMembersToViewSharedLinksDetails._shared_folder_type_validator = bv.Nullable(bv.String())
SfAllowNonMembersToViewSharedLinksDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'shared_folder_type',
])
SfAllowNonMembersToViewSharedLinksDetails._all_fields_ = [
    ('target_asset_index', SfAllowNonMembersToViewSharedLinksDetails._target_asset_index_validator),
    ('original_folder_name', SfAllowNonMembersToViewSharedLinksDetails._original_folder_name_validator),
    ('shared_folder_type', SfAllowNonMembersToViewSharedLinksDetails._shared_folder_type_validator),
]

SfAllowNonMembersToViewSharedLinksType._description_validator = bv.String()
SfAllowNonMembersToViewSharedLinksType._all_field_names_ = set(['description'])
SfAllowNonMembersToViewSharedLinksType._all_fields_ = [('description', SfAllowNonMembersToViewSharedLinksType._description_validator)]

SfExternalInviteWarnDetails._target_asset_index_validator = bv.UInt64()
SfExternalInviteWarnDetails._original_folder_name_validator = bv.String()
SfExternalInviteWarnDetails._new_sharing_permission_validator = bv.Nullable(bv.String())
SfExternalInviteWarnDetails._previous_sharing_permission_validator = bv.Nullable(bv.String())
SfExternalInviteWarnDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'new_sharing_permission',
    'previous_sharing_permission',
])
SfExternalInviteWarnDetails._all_fields_ = [
    ('target_asset_index', SfExternalInviteWarnDetails._target_asset_index_validator),
    ('original_folder_name', SfExternalInviteWarnDetails._original_folder_name_validator),
    ('new_sharing_permission', SfExternalInviteWarnDetails._new_sharing_permission_validator),
    ('previous_sharing_permission', SfExternalInviteWarnDetails._previous_sharing_permission_validator),
]

SfExternalInviteWarnType._description_validator = bv.String()
SfExternalInviteWarnType._all_field_names_ = set(['description'])
SfExternalInviteWarnType._all_fields_ = [('description', SfExternalInviteWarnType._description_validator)]

SfFbInviteChangeRoleDetails._target_asset_index_validator = bv.UInt64()
SfFbInviteChangeRoleDetails._original_folder_name_validator = bv.String()
SfFbInviteChangeRoleDetails._previous_sharing_permission_validator = bv.Nullable(bv.String())
SfFbInviteChangeRoleDetails._new_sharing_permission_validator = bv.Nullable(bv.String())
SfFbInviteChangeRoleDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'previous_sharing_permission',
    'new_sharing_permission',
])
SfFbInviteChangeRoleDetails._all_fields_ = [
    ('target_asset_index', SfFbInviteChangeRoleDetails._target_asset_index_validator),
    ('original_folder_name', SfFbInviteChangeRoleDetails._original_folder_name_validator),
    ('previous_sharing_permission', SfFbInviteChangeRoleDetails._previous_sharing_permission_validator),
    ('new_sharing_permission', SfFbInviteChangeRoleDetails._new_sharing_permission_validator),
]

SfFbInviteChangeRoleType._description_validator = bv.String()
SfFbInviteChangeRoleType._all_field_names_ = set(['description'])
SfFbInviteChangeRoleType._all_fields_ = [('description', SfFbInviteChangeRoleType._description_validator)]

SfFbInviteDetails._target_asset_index_validator = bv.UInt64()
SfFbInviteDetails._original_folder_name_validator = bv.String()
SfFbInviteDetails._sharing_permission_validator = bv.Nullable(bv.String())
SfFbInviteDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'sharing_permission',
])
SfFbInviteDetails._all_fields_ = [
    ('target_asset_index', SfFbInviteDetails._target_asset_index_validator),
    ('original_folder_name', SfFbInviteDetails._original_folder_name_validator),
    ('sharing_permission', SfFbInviteDetails._sharing_permission_validator),
]

SfFbInviteType._description_validator = bv.String()
SfFbInviteType._all_field_names_ = set(['description'])
SfFbInviteType._all_fields_ = [('description', SfFbInviteType._description_validator)]

SfFbUninviteDetails._target_asset_index_validator = bv.UInt64()
SfFbUninviteDetails._original_folder_name_validator = bv.String()
SfFbUninviteDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SfFbUninviteDetails._all_fields_ = [
    ('target_asset_index', SfFbUninviteDetails._target_asset_index_validator),
    ('original_folder_name', SfFbUninviteDetails._original_folder_name_validator),
]

SfFbUninviteType._description_validator = bv.String()
SfFbUninviteType._all_field_names_ = set(['description'])
SfFbUninviteType._all_fields_ = [('description', SfFbUninviteType._description_validator)]

SfInviteGroupDetails._target_asset_index_validator = bv.UInt64()
SfInviteGroupDetails._all_field_names_ = set(['target_asset_index'])
SfInviteGroupDetails._all_fields_ = [('target_asset_index', SfInviteGroupDetails._target_asset_index_validator)]

SfInviteGroupType._description_validator = bv.String()
SfInviteGroupType._all_field_names_ = set(['description'])
SfInviteGroupType._all_fields_ = [('description', SfInviteGroupType._description_validator)]

SfTeamGrantAccessDetails._target_asset_index_validator = bv.UInt64()
SfTeamGrantAccessDetails._original_folder_name_validator = bv.String()
SfTeamGrantAccessDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SfTeamGrantAccessDetails._all_fields_ = [
    ('target_asset_index', SfTeamGrantAccessDetails._target_asset_index_validator),
    ('original_folder_name', SfTeamGrantAccessDetails._original_folder_name_validator),
]

SfTeamGrantAccessType._description_validator = bv.String()
SfTeamGrantAccessType._all_field_names_ = set(['description'])
SfTeamGrantAccessType._all_fields_ = [('description', SfTeamGrantAccessType._description_validator)]

SfTeamInviteChangeRoleDetails._target_asset_index_validator = bv.UInt64()
SfTeamInviteChangeRoleDetails._original_folder_name_validator = bv.String()
SfTeamInviteChangeRoleDetails._new_sharing_permission_validator = bv.Nullable(bv.String())
SfTeamInviteChangeRoleDetails._previous_sharing_permission_validator = bv.Nullable(bv.String())
SfTeamInviteChangeRoleDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'new_sharing_permission',
    'previous_sharing_permission',
])
SfTeamInviteChangeRoleDetails._all_fields_ = [
    ('target_asset_index', SfTeamInviteChangeRoleDetails._target_asset_index_validator),
    ('original_folder_name', SfTeamInviteChangeRoleDetails._original_folder_name_validator),
    ('new_sharing_permission', SfTeamInviteChangeRoleDetails._new_sharing_permission_validator),
    ('previous_sharing_permission', SfTeamInviteChangeRoleDetails._previous_sharing_permission_validator),
]

SfTeamInviteChangeRoleType._description_validator = bv.String()
SfTeamInviteChangeRoleType._all_field_names_ = set(['description'])
SfTeamInviteChangeRoleType._all_fields_ = [('description', SfTeamInviteChangeRoleType._description_validator)]

SfTeamInviteDetails._target_asset_index_validator = bv.UInt64()
SfTeamInviteDetails._original_folder_name_validator = bv.String()
SfTeamInviteDetails._sharing_permission_validator = bv.Nullable(bv.String())
SfTeamInviteDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'sharing_permission',
])
SfTeamInviteDetails._all_fields_ = [
    ('target_asset_index', SfTeamInviteDetails._target_asset_index_validator),
    ('original_folder_name', SfTeamInviteDetails._original_folder_name_validator),
    ('sharing_permission', SfTeamInviteDetails._sharing_permission_validator),
]

SfTeamInviteType._description_validator = bv.String()
SfTeamInviteType._all_field_names_ = set(['description'])
SfTeamInviteType._all_fields_ = [('description', SfTeamInviteType._description_validator)]

SfTeamJoinDetails._target_asset_index_validator = bv.UInt64()
SfTeamJoinDetails._original_folder_name_validator = bv.String()
SfTeamJoinDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SfTeamJoinDetails._all_fields_ = [
    ('target_asset_index', SfTeamJoinDetails._target_asset_index_validator),
    ('original_folder_name', SfTeamJoinDetails._original_folder_name_validator),
]

SfTeamJoinFromOobLinkDetails._target_asset_index_validator = bv.UInt64()
SfTeamJoinFromOobLinkDetails._original_folder_name_validator = bv.String()
SfTeamJoinFromOobLinkDetails._token_key_validator = bv.Nullable(bv.String())
SfTeamJoinFromOobLinkDetails._sharing_permission_validator = bv.Nullable(bv.String())
SfTeamJoinFromOobLinkDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
    'token_key',
    'sharing_permission',
])
SfTeamJoinFromOobLinkDetails._all_fields_ = [
    ('target_asset_index', SfTeamJoinFromOobLinkDetails._target_asset_index_validator),
    ('original_folder_name', SfTeamJoinFromOobLinkDetails._original_folder_name_validator),
    ('token_key', SfTeamJoinFromOobLinkDetails._token_key_validator),
    ('sharing_permission', SfTeamJoinFromOobLinkDetails._sharing_permission_validator),
]

SfTeamJoinFromOobLinkType._description_validator = bv.String()
SfTeamJoinFromOobLinkType._all_field_names_ = set(['description'])
SfTeamJoinFromOobLinkType._all_fields_ = [('description', SfTeamJoinFromOobLinkType._description_validator)]

SfTeamJoinType._description_validator = bv.String()
SfTeamJoinType._all_field_names_ = set(['description'])
SfTeamJoinType._all_fields_ = [('description', SfTeamJoinType._description_validator)]

SfTeamUninviteDetails._target_asset_index_validator = bv.UInt64()
SfTeamUninviteDetails._original_folder_name_validator = bv.String()
SfTeamUninviteDetails._all_field_names_ = set([
    'target_asset_index',
    'original_folder_name',
])
SfTeamUninviteDetails._all_fields_ = [
    ('target_asset_index', SfTeamUninviteDetails._target_asset_index_validator),
    ('original_folder_name', SfTeamUninviteDetails._original_folder_name_validator),
]

SfTeamUninviteType._description_validator = bv.String()
SfTeamUninviteType._all_field_names_ = set(['description'])
SfTeamUninviteType._all_fields_ = [('description', SfTeamUninviteType._description_validator)]

SharedContentAddInviteesDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedContentAddInviteesDetails._invitees_validator = bv.List(EmailAddress_validator)
SharedContentAddInviteesDetails._all_field_names_ = set([
    'shared_content_access_level',
    'invitees',
])
SharedContentAddInviteesDetails._all_fields_ = [
    ('shared_content_access_level', SharedContentAddInviteesDetails._shared_content_access_level_validator),
    ('invitees', SharedContentAddInviteesDetails._invitees_validator),
]

SharedContentAddInviteesType._description_validator = bv.String()
SharedContentAddInviteesType._all_field_names_ = set(['description'])
SharedContentAddInviteesType._all_fields_ = [('description', SharedContentAddInviteesType._description_validator)]

SharedContentAddLinkExpiryDetails._new_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedContentAddLinkExpiryDetails._all_field_names_ = set(['new_value'])
SharedContentAddLinkExpiryDetails._all_fields_ = [('new_value', SharedContentAddLinkExpiryDetails._new_value_validator)]

SharedContentAddLinkExpiryType._description_validator = bv.String()
SharedContentAddLinkExpiryType._all_field_names_ = set(['description'])
SharedContentAddLinkExpiryType._all_fields_ = [('description', SharedContentAddLinkExpiryType._description_validator)]

SharedContentAddLinkPasswordDetails._all_field_names_ = set([])
SharedContentAddLinkPasswordDetails._all_fields_ = []

SharedContentAddLinkPasswordType._description_validator = bv.String()
SharedContentAddLinkPasswordType._all_field_names_ = set(['description'])
SharedContentAddLinkPasswordType._all_fields_ = [('description', SharedContentAddLinkPasswordType._description_validator)]

SharedContentAddMemberDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedContentAddMemberDetails._all_field_names_ = set(['shared_content_access_level'])
SharedContentAddMemberDetails._all_fields_ = [('shared_content_access_level', SharedContentAddMemberDetails._shared_content_access_level_validator)]

SharedContentAddMemberType._description_validator = bv.String()
SharedContentAddMemberType._all_field_names_ = set(['description'])
SharedContentAddMemberType._all_fields_ = [('description', SharedContentAddMemberType._description_validator)]

SharedContentChangeDownloadsPolicyDetails._new_value_validator = DownloadPolicyType_validator
SharedContentChangeDownloadsPolicyDetails._previous_value_validator = bv.Nullable(DownloadPolicyType_validator)
SharedContentChangeDownloadsPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedContentChangeDownloadsPolicyDetails._all_fields_ = [
    ('new_value', SharedContentChangeDownloadsPolicyDetails._new_value_validator),
    ('previous_value', SharedContentChangeDownloadsPolicyDetails._previous_value_validator),
]

SharedContentChangeDownloadsPolicyType._description_validator = bv.String()
SharedContentChangeDownloadsPolicyType._all_field_names_ = set(['description'])
SharedContentChangeDownloadsPolicyType._all_fields_ = [('description', SharedContentChangeDownloadsPolicyType._description_validator)]

SharedContentChangeInviteeRoleDetails._previous_access_level_validator = bv.Nullable(sharing.AccessLevel_validator)
SharedContentChangeInviteeRoleDetails._new_access_level_validator = sharing.AccessLevel_validator
SharedContentChangeInviteeRoleDetails._invitee_validator = EmailAddress_validator
SharedContentChangeInviteeRoleDetails._all_field_names_ = set([
    'previous_access_level',
    'new_access_level',
    'invitee',
])
SharedContentChangeInviteeRoleDetails._all_fields_ = [
    ('previous_access_level', SharedContentChangeInviteeRoleDetails._previous_access_level_validator),
    ('new_access_level', SharedContentChangeInviteeRoleDetails._new_access_level_validator),
    ('invitee', SharedContentChangeInviteeRoleDetails._invitee_validator),
]

SharedContentChangeInviteeRoleType._description_validator = bv.String()
SharedContentChangeInviteeRoleType._all_field_names_ = set(['description'])
SharedContentChangeInviteeRoleType._all_fields_ = [('description', SharedContentChangeInviteeRoleType._description_validator)]

SharedContentChangeLinkAudienceDetails._new_value_validator = sharing.LinkAudience_validator
SharedContentChangeLinkAudienceDetails._previous_value_validator = bv.Nullable(sharing.LinkAudience_validator)
SharedContentChangeLinkAudienceDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedContentChangeLinkAudienceDetails._all_fields_ = [
    ('new_value', SharedContentChangeLinkAudienceDetails._new_value_validator),
    ('previous_value', SharedContentChangeLinkAudienceDetails._previous_value_validator),
]

SharedContentChangeLinkAudienceType._description_validator = bv.String()
SharedContentChangeLinkAudienceType._all_field_names_ = set(['description'])
SharedContentChangeLinkAudienceType._all_fields_ = [('description', SharedContentChangeLinkAudienceType._description_validator)]

SharedContentChangeLinkExpiryDetails._new_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedContentChangeLinkExpiryDetails._previous_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedContentChangeLinkExpiryDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedContentChangeLinkExpiryDetails._all_fields_ = [
    ('new_value', SharedContentChangeLinkExpiryDetails._new_value_validator),
    ('previous_value', SharedContentChangeLinkExpiryDetails._previous_value_validator),
]

SharedContentChangeLinkExpiryType._description_validator = bv.String()
SharedContentChangeLinkExpiryType._all_field_names_ = set(['description'])
SharedContentChangeLinkExpiryType._all_fields_ = [('description', SharedContentChangeLinkExpiryType._description_validator)]

SharedContentChangeLinkPasswordDetails._all_field_names_ = set([])
SharedContentChangeLinkPasswordDetails._all_fields_ = []

SharedContentChangeLinkPasswordType._description_validator = bv.String()
SharedContentChangeLinkPasswordType._all_field_names_ = set(['description'])
SharedContentChangeLinkPasswordType._all_fields_ = [('description', SharedContentChangeLinkPasswordType._description_validator)]

SharedContentChangeMemberRoleDetails._previous_access_level_validator = bv.Nullable(sharing.AccessLevel_validator)
SharedContentChangeMemberRoleDetails._new_access_level_validator = sharing.AccessLevel_validator
SharedContentChangeMemberRoleDetails._all_field_names_ = set([
    'previous_access_level',
    'new_access_level',
])
SharedContentChangeMemberRoleDetails._all_fields_ = [
    ('previous_access_level', SharedContentChangeMemberRoleDetails._previous_access_level_validator),
    ('new_access_level', SharedContentChangeMemberRoleDetails._new_access_level_validator),
]

SharedContentChangeMemberRoleType._description_validator = bv.String()
SharedContentChangeMemberRoleType._all_field_names_ = set(['description'])
SharedContentChangeMemberRoleType._all_fields_ = [('description', SharedContentChangeMemberRoleType._description_validator)]

SharedContentChangeViewerInfoPolicyDetails._new_value_validator = sharing.ViewerInfoPolicy_validator
SharedContentChangeViewerInfoPolicyDetails._previous_value_validator = bv.Nullable(sharing.ViewerInfoPolicy_validator)
SharedContentChangeViewerInfoPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedContentChangeViewerInfoPolicyDetails._all_fields_ = [
    ('new_value', SharedContentChangeViewerInfoPolicyDetails._new_value_validator),
    ('previous_value', SharedContentChangeViewerInfoPolicyDetails._previous_value_validator),
]

SharedContentChangeViewerInfoPolicyType._description_validator = bv.String()
SharedContentChangeViewerInfoPolicyType._all_field_names_ = set(['description'])
SharedContentChangeViewerInfoPolicyType._all_fields_ = [('description', SharedContentChangeViewerInfoPolicyType._description_validator)]

SharedContentClaimInvitationDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedContentClaimInvitationDetails._all_field_names_ = set(['shared_content_link'])
SharedContentClaimInvitationDetails._all_fields_ = [('shared_content_link', SharedContentClaimInvitationDetails._shared_content_link_validator)]

SharedContentClaimInvitationType._description_validator = bv.String()
SharedContentClaimInvitationType._all_field_names_ = set(['description'])
SharedContentClaimInvitationType._all_fields_ = [('description', SharedContentClaimInvitationType._description_validator)]

SharedContentCopyDetails._shared_content_link_validator = bv.String()
SharedContentCopyDetails._shared_content_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedContentCopyDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedContentCopyDetails._destination_path_validator = FilePath_validator
SharedContentCopyDetails._all_field_names_ = set([
    'shared_content_link',
    'shared_content_owner',
    'shared_content_access_level',
    'destination_path',
])
SharedContentCopyDetails._all_fields_ = [
    ('shared_content_link', SharedContentCopyDetails._shared_content_link_validator),
    ('shared_content_owner', SharedContentCopyDetails._shared_content_owner_validator),
    ('shared_content_access_level', SharedContentCopyDetails._shared_content_access_level_validator),
    ('destination_path', SharedContentCopyDetails._destination_path_validator),
]

SharedContentCopyType._description_validator = bv.String()
SharedContentCopyType._all_field_names_ = set(['description'])
SharedContentCopyType._all_fields_ = [('description', SharedContentCopyType._description_validator)]

SharedContentDownloadDetails._shared_content_link_validator = bv.String()
SharedContentDownloadDetails._shared_content_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedContentDownloadDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedContentDownloadDetails._all_field_names_ = set([
    'shared_content_link',
    'shared_content_owner',
    'shared_content_access_level',
])
SharedContentDownloadDetails._all_fields_ = [
    ('shared_content_link', SharedContentDownloadDetails._shared_content_link_validator),
    ('shared_content_owner', SharedContentDownloadDetails._shared_content_owner_validator),
    ('shared_content_access_level', SharedContentDownloadDetails._shared_content_access_level_validator),
]

SharedContentDownloadType._description_validator = bv.String()
SharedContentDownloadType._all_field_names_ = set(['description'])
SharedContentDownloadType._all_fields_ = [('description', SharedContentDownloadType._description_validator)]

SharedContentRelinquishMembershipDetails._all_field_names_ = set([])
SharedContentRelinquishMembershipDetails._all_fields_ = []

SharedContentRelinquishMembershipType._description_validator = bv.String()
SharedContentRelinquishMembershipType._all_field_names_ = set(['description'])
SharedContentRelinquishMembershipType._all_fields_ = [('description', SharedContentRelinquishMembershipType._description_validator)]

SharedContentRemoveInviteesDetails._invitees_validator = bv.List(EmailAddress_validator)
SharedContentRemoveInviteesDetails._all_field_names_ = set(['invitees'])
SharedContentRemoveInviteesDetails._all_fields_ = [('invitees', SharedContentRemoveInviteesDetails._invitees_validator)]

SharedContentRemoveInviteesType._description_validator = bv.String()
SharedContentRemoveInviteesType._all_field_names_ = set(['description'])
SharedContentRemoveInviteesType._all_fields_ = [('description', SharedContentRemoveInviteesType._description_validator)]

SharedContentRemoveLinkExpiryDetails._previous_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedContentRemoveLinkExpiryDetails._all_field_names_ = set(['previous_value'])
SharedContentRemoveLinkExpiryDetails._all_fields_ = [('previous_value', SharedContentRemoveLinkExpiryDetails._previous_value_validator)]

SharedContentRemoveLinkExpiryType._description_validator = bv.String()
SharedContentRemoveLinkExpiryType._all_field_names_ = set(['description'])
SharedContentRemoveLinkExpiryType._all_fields_ = [('description', SharedContentRemoveLinkExpiryType._description_validator)]

SharedContentRemoveLinkPasswordDetails._all_field_names_ = set([])
SharedContentRemoveLinkPasswordDetails._all_fields_ = []

SharedContentRemoveLinkPasswordType._description_validator = bv.String()
SharedContentRemoveLinkPasswordType._all_field_names_ = set(['description'])
SharedContentRemoveLinkPasswordType._all_fields_ = [('description', SharedContentRemoveLinkPasswordType._description_validator)]

SharedContentRemoveMemberDetails._shared_content_access_level_validator = bv.Nullable(sharing.AccessLevel_validator)
SharedContentRemoveMemberDetails._all_field_names_ = set(['shared_content_access_level'])
SharedContentRemoveMemberDetails._all_fields_ = [('shared_content_access_level', SharedContentRemoveMemberDetails._shared_content_access_level_validator)]

SharedContentRemoveMemberType._description_validator = bv.String()
SharedContentRemoveMemberType._all_field_names_ = set(['description'])
SharedContentRemoveMemberType._all_fields_ = [('description', SharedContentRemoveMemberType._description_validator)]

SharedContentRequestAccessDetails._shared_content_link_validator = bv.Nullable(bv.String())
SharedContentRequestAccessDetails._all_field_names_ = set(['shared_content_link'])
SharedContentRequestAccessDetails._all_fields_ = [('shared_content_link', SharedContentRequestAccessDetails._shared_content_link_validator)]

SharedContentRequestAccessType._description_validator = bv.String()
SharedContentRequestAccessType._all_field_names_ = set(['description'])
SharedContentRequestAccessType._all_fields_ = [('description', SharedContentRequestAccessType._description_validator)]

SharedContentUnshareDetails._all_field_names_ = set([])
SharedContentUnshareDetails._all_fields_ = []

SharedContentUnshareType._description_validator = bv.String()
SharedContentUnshareType._all_field_names_ = set(['description'])
SharedContentUnshareType._all_fields_ = [('description', SharedContentUnshareType._description_validator)]

SharedContentViewDetails._shared_content_link_validator = bv.String()
SharedContentViewDetails._shared_content_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedContentViewDetails._shared_content_access_level_validator = sharing.AccessLevel_validator
SharedContentViewDetails._all_field_names_ = set([
    'shared_content_link',
    'shared_content_owner',
    'shared_content_access_level',
])
SharedContentViewDetails._all_fields_ = [
    ('shared_content_link', SharedContentViewDetails._shared_content_link_validator),
    ('shared_content_owner', SharedContentViewDetails._shared_content_owner_validator),
    ('shared_content_access_level', SharedContentViewDetails._shared_content_access_level_validator),
]

SharedContentViewType._description_validator = bv.String()
SharedContentViewType._all_field_names_ = set(['description'])
SharedContentViewType._all_fields_ = [('description', SharedContentViewType._description_validator)]

SharedFolderChangeLinkPolicyDetails._new_value_validator = sharing.SharedLinkPolicy_validator
SharedFolderChangeLinkPolicyDetails._previous_value_validator = bv.Nullable(sharing.SharedLinkPolicy_validator)
SharedFolderChangeLinkPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedFolderChangeLinkPolicyDetails._all_fields_ = [
    ('new_value', SharedFolderChangeLinkPolicyDetails._new_value_validator),
    ('previous_value', SharedFolderChangeLinkPolicyDetails._previous_value_validator),
]

SharedFolderChangeLinkPolicyType._description_validator = bv.String()
SharedFolderChangeLinkPolicyType._all_field_names_ = set(['description'])
SharedFolderChangeLinkPolicyType._all_fields_ = [('description', SharedFolderChangeLinkPolicyType._description_validator)]

SharedFolderChangeMembersInheritancePolicyDetails._new_value_validator = SharedFolderMembersInheritancePolicy_validator
SharedFolderChangeMembersInheritancePolicyDetails._previous_value_validator = bv.Nullable(SharedFolderMembersInheritancePolicy_validator)
SharedFolderChangeMembersInheritancePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedFolderChangeMembersInheritancePolicyDetails._all_fields_ = [
    ('new_value', SharedFolderChangeMembersInheritancePolicyDetails._new_value_validator),
    ('previous_value', SharedFolderChangeMembersInheritancePolicyDetails._previous_value_validator),
]

SharedFolderChangeMembersInheritancePolicyType._description_validator = bv.String()
SharedFolderChangeMembersInheritancePolicyType._all_field_names_ = set(['description'])
SharedFolderChangeMembersInheritancePolicyType._all_fields_ = [('description', SharedFolderChangeMembersInheritancePolicyType._description_validator)]

SharedFolderChangeMembersManagementPolicyDetails._new_value_validator = sharing.AclUpdatePolicy_validator
SharedFolderChangeMembersManagementPolicyDetails._previous_value_validator = bv.Nullable(sharing.AclUpdatePolicy_validator)
SharedFolderChangeMembersManagementPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedFolderChangeMembersManagementPolicyDetails._all_fields_ = [
    ('new_value', SharedFolderChangeMembersManagementPolicyDetails._new_value_validator),
    ('previous_value', SharedFolderChangeMembersManagementPolicyDetails._previous_value_validator),
]

SharedFolderChangeMembersManagementPolicyType._description_validator = bv.String()
SharedFolderChangeMembersManagementPolicyType._all_field_names_ = set(['description'])
SharedFolderChangeMembersManagementPolicyType._all_fields_ = [('description', SharedFolderChangeMembersManagementPolicyType._description_validator)]

SharedFolderChangeMembersPolicyDetails._new_value_validator = sharing.MemberPolicy_validator
SharedFolderChangeMembersPolicyDetails._previous_value_validator = bv.Nullable(sharing.MemberPolicy_validator)
SharedFolderChangeMembersPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedFolderChangeMembersPolicyDetails._all_fields_ = [
    ('new_value', SharedFolderChangeMembersPolicyDetails._new_value_validator),
    ('previous_value', SharedFolderChangeMembersPolicyDetails._previous_value_validator),
]

SharedFolderChangeMembersPolicyType._description_validator = bv.String()
SharedFolderChangeMembersPolicyType._all_field_names_ = set(['description'])
SharedFolderChangeMembersPolicyType._all_fields_ = [('description', SharedFolderChangeMembersPolicyType._description_validator)]

SharedFolderCreateDetails._target_ns_id_validator = bv.Nullable(NamespaceId_validator)
SharedFolderCreateDetails._all_field_names_ = set(['target_ns_id'])
SharedFolderCreateDetails._all_fields_ = [('target_ns_id', SharedFolderCreateDetails._target_ns_id_validator)]

SharedFolderCreateType._description_validator = bv.String()
SharedFolderCreateType._all_field_names_ = set(['description'])
SharedFolderCreateType._all_fields_ = [('description', SharedFolderCreateType._description_validator)]

SharedFolderDeclineInvitationDetails._all_field_names_ = set([])
SharedFolderDeclineInvitationDetails._all_fields_ = []

SharedFolderDeclineInvitationType._description_validator = bv.String()
SharedFolderDeclineInvitationType._all_field_names_ = set(['description'])
SharedFolderDeclineInvitationType._all_fields_ = [('description', SharedFolderDeclineInvitationType._description_validator)]

SharedFolderMembersInheritancePolicy._inherit_members_validator = bv.Void()
SharedFolderMembersInheritancePolicy._dont_inherit_members_validator = bv.Void()
SharedFolderMembersInheritancePolicy._other_validator = bv.Void()
SharedFolderMembersInheritancePolicy._tagmap = {
    'inherit_members': SharedFolderMembersInheritancePolicy._inherit_members_validator,
    'dont_inherit_members': SharedFolderMembersInheritancePolicy._dont_inherit_members_validator,
    'other': SharedFolderMembersInheritancePolicy._other_validator,
}

SharedFolderMembersInheritancePolicy.inherit_members = SharedFolderMembersInheritancePolicy('inherit_members')
SharedFolderMembersInheritancePolicy.dont_inherit_members = SharedFolderMembersInheritancePolicy('dont_inherit_members')
SharedFolderMembersInheritancePolicy.other = SharedFolderMembersInheritancePolicy('other')

SharedFolderMountDetails._all_field_names_ = set([])
SharedFolderMountDetails._all_fields_ = []

SharedFolderMountType._description_validator = bv.String()
SharedFolderMountType._all_field_names_ = set(['description'])
SharedFolderMountType._all_fields_ = [('description', SharedFolderMountType._description_validator)]

SharedFolderNestDetails._previous_parent_ns_id_validator = bv.Nullable(NamespaceId_validator)
SharedFolderNestDetails._new_parent_ns_id_validator = bv.Nullable(NamespaceId_validator)
SharedFolderNestDetails._previous_ns_path_validator = bv.Nullable(FilePath_validator)
SharedFolderNestDetails._new_ns_path_validator = bv.Nullable(FilePath_validator)
SharedFolderNestDetails._all_field_names_ = set([
    'previous_parent_ns_id',
    'new_parent_ns_id',
    'previous_ns_path',
    'new_ns_path',
])
SharedFolderNestDetails._all_fields_ = [
    ('previous_parent_ns_id', SharedFolderNestDetails._previous_parent_ns_id_validator),
    ('new_parent_ns_id', SharedFolderNestDetails._new_parent_ns_id_validator),
    ('previous_ns_path', SharedFolderNestDetails._previous_ns_path_validator),
    ('new_ns_path', SharedFolderNestDetails._new_ns_path_validator),
]

SharedFolderNestType._description_validator = bv.String()
SharedFolderNestType._all_field_names_ = set(['description'])
SharedFolderNestType._all_fields_ = [('description', SharedFolderNestType._description_validator)]

SharedFolderTransferOwnershipDetails._previous_owner_email_validator = bv.Nullable(EmailAddress_validator)
SharedFolderTransferOwnershipDetails._new_owner_email_validator = EmailAddress_validator
SharedFolderTransferOwnershipDetails._all_field_names_ = set([
    'previous_owner_email',
    'new_owner_email',
])
SharedFolderTransferOwnershipDetails._all_fields_ = [
    ('previous_owner_email', SharedFolderTransferOwnershipDetails._previous_owner_email_validator),
    ('new_owner_email', SharedFolderTransferOwnershipDetails._new_owner_email_validator),
]

SharedFolderTransferOwnershipType._description_validator = bv.String()
SharedFolderTransferOwnershipType._all_field_names_ = set(['description'])
SharedFolderTransferOwnershipType._all_fields_ = [('description', SharedFolderTransferOwnershipType._description_validator)]

SharedFolderUnmountDetails._all_field_names_ = set([])
SharedFolderUnmountDetails._all_fields_ = []

SharedFolderUnmountType._description_validator = bv.String()
SharedFolderUnmountType._all_field_names_ = set(['description'])
SharedFolderUnmountType._all_fields_ = [('description', SharedFolderUnmountType._description_validator)]

SharedLinkAccessLevel._none_validator = bv.Void()
SharedLinkAccessLevel._reader_validator = bv.Void()
SharedLinkAccessLevel._writer_validator = bv.Void()
SharedLinkAccessLevel._other_validator = bv.Void()
SharedLinkAccessLevel._tagmap = {
    'none': SharedLinkAccessLevel._none_validator,
    'reader': SharedLinkAccessLevel._reader_validator,
    'writer': SharedLinkAccessLevel._writer_validator,
    'other': SharedLinkAccessLevel._other_validator,
}

SharedLinkAccessLevel.none = SharedLinkAccessLevel('none')
SharedLinkAccessLevel.reader = SharedLinkAccessLevel('reader')
SharedLinkAccessLevel.writer = SharedLinkAccessLevel('writer')
SharedLinkAccessLevel.other = SharedLinkAccessLevel('other')

SharedLinkAddExpiryDetails._new_value_validator = common.DropboxTimestamp_validator
SharedLinkAddExpiryDetails._all_field_names_ = set(['new_value'])
SharedLinkAddExpiryDetails._all_fields_ = [('new_value', SharedLinkAddExpiryDetails._new_value_validator)]

SharedLinkAddExpiryType._description_validator = bv.String()
SharedLinkAddExpiryType._all_field_names_ = set(['description'])
SharedLinkAddExpiryType._all_fields_ = [('description', SharedLinkAddExpiryType._description_validator)]

SharedLinkChangeExpiryDetails._new_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedLinkChangeExpiryDetails._previous_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedLinkChangeExpiryDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedLinkChangeExpiryDetails._all_fields_ = [
    ('new_value', SharedLinkChangeExpiryDetails._new_value_validator),
    ('previous_value', SharedLinkChangeExpiryDetails._previous_value_validator),
]

SharedLinkChangeExpiryType._description_validator = bv.String()
SharedLinkChangeExpiryType._all_field_names_ = set(['description'])
SharedLinkChangeExpiryType._all_fields_ = [('description', SharedLinkChangeExpiryType._description_validator)]

SharedLinkChangeVisibilityDetails._new_value_validator = SharedLinkVisibility_validator
SharedLinkChangeVisibilityDetails._previous_value_validator = bv.Nullable(SharedLinkVisibility_validator)
SharedLinkChangeVisibilityDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharedLinkChangeVisibilityDetails._all_fields_ = [
    ('new_value', SharedLinkChangeVisibilityDetails._new_value_validator),
    ('previous_value', SharedLinkChangeVisibilityDetails._previous_value_validator),
]

SharedLinkChangeVisibilityType._description_validator = bv.String()
SharedLinkChangeVisibilityType._all_field_names_ = set(['description'])
SharedLinkChangeVisibilityType._all_fields_ = [('description', SharedLinkChangeVisibilityType._description_validator)]

SharedLinkCopyDetails._shared_link_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedLinkCopyDetails._all_field_names_ = set(['shared_link_owner'])
SharedLinkCopyDetails._all_fields_ = [('shared_link_owner', SharedLinkCopyDetails._shared_link_owner_validator)]

SharedLinkCopyType._description_validator = bv.String()
SharedLinkCopyType._all_field_names_ = set(['description'])
SharedLinkCopyType._all_fields_ = [('description', SharedLinkCopyType._description_validator)]

SharedLinkCreateDetails._shared_link_access_level_validator = bv.Nullable(SharedLinkAccessLevel_validator)
SharedLinkCreateDetails._all_field_names_ = set(['shared_link_access_level'])
SharedLinkCreateDetails._all_fields_ = [('shared_link_access_level', SharedLinkCreateDetails._shared_link_access_level_validator)]

SharedLinkCreateType._description_validator = bv.String()
SharedLinkCreateType._all_field_names_ = set(['description'])
SharedLinkCreateType._all_fields_ = [('description', SharedLinkCreateType._description_validator)]

SharedLinkDisableDetails._shared_link_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedLinkDisableDetails._all_field_names_ = set(['shared_link_owner'])
SharedLinkDisableDetails._all_fields_ = [('shared_link_owner', SharedLinkDisableDetails._shared_link_owner_validator)]

SharedLinkDisableType._description_validator = bv.String()
SharedLinkDisableType._all_field_names_ = set(['description'])
SharedLinkDisableType._all_fields_ = [('description', SharedLinkDisableType._description_validator)]

SharedLinkDownloadDetails._shared_link_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedLinkDownloadDetails._all_field_names_ = set(['shared_link_owner'])
SharedLinkDownloadDetails._all_fields_ = [('shared_link_owner', SharedLinkDownloadDetails._shared_link_owner_validator)]

SharedLinkDownloadType._description_validator = bv.String()
SharedLinkDownloadType._all_field_names_ = set(['description'])
SharedLinkDownloadType._all_fields_ = [('description', SharedLinkDownloadType._description_validator)]

SharedLinkRemoveExpiryDetails._previous_value_validator = bv.Nullable(common.DropboxTimestamp_validator)
SharedLinkRemoveExpiryDetails._all_field_names_ = set(['previous_value'])
SharedLinkRemoveExpiryDetails._all_fields_ = [('previous_value', SharedLinkRemoveExpiryDetails._previous_value_validator)]

SharedLinkRemoveExpiryType._description_validator = bv.String()
SharedLinkRemoveExpiryType._all_field_names_ = set(['description'])
SharedLinkRemoveExpiryType._all_fields_ = [('description', SharedLinkRemoveExpiryType._description_validator)]

SharedLinkShareDetails._shared_link_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedLinkShareDetails._external_users_validator = bv.Nullable(bv.List(ExternalUserLogInfo_validator))
SharedLinkShareDetails._all_field_names_ = set([
    'shared_link_owner',
    'external_users',
])
SharedLinkShareDetails._all_fields_ = [
    ('shared_link_owner', SharedLinkShareDetails._shared_link_owner_validator),
    ('external_users', SharedLinkShareDetails._external_users_validator),
]

SharedLinkShareType._description_validator = bv.String()
SharedLinkShareType._all_field_names_ = set(['description'])
SharedLinkShareType._all_fields_ = [('description', SharedLinkShareType._description_validator)]

SharedLinkViewDetails._shared_link_owner_validator = bv.Nullable(UserLogInfo_validator)
SharedLinkViewDetails._all_field_names_ = set(['shared_link_owner'])
SharedLinkViewDetails._all_fields_ = [('shared_link_owner', SharedLinkViewDetails._shared_link_owner_validator)]

SharedLinkViewType._description_validator = bv.String()
SharedLinkViewType._all_field_names_ = set(['description'])
SharedLinkViewType._all_fields_ = [('description', SharedLinkViewType._description_validator)]

SharedLinkVisibility._password_validator = bv.Void()
SharedLinkVisibility._public_validator = bv.Void()
SharedLinkVisibility._team_only_validator = bv.Void()
SharedLinkVisibility._other_validator = bv.Void()
SharedLinkVisibility._tagmap = {
    'password': SharedLinkVisibility._password_validator,
    'public': SharedLinkVisibility._public_validator,
    'team_only': SharedLinkVisibility._team_only_validator,
    'other': SharedLinkVisibility._other_validator,
}

SharedLinkVisibility.password = SharedLinkVisibility('password')
SharedLinkVisibility.public = SharedLinkVisibility('public')
SharedLinkVisibility.team_only = SharedLinkVisibility('team_only')
SharedLinkVisibility.other = SharedLinkVisibility('other')

SharedNoteOpenedDetails._all_field_names_ = set([])
SharedNoteOpenedDetails._all_fields_ = []

SharedNoteOpenedType._description_validator = bv.String()
SharedNoteOpenedType._all_field_names_ = set(['description'])
SharedNoteOpenedType._all_fields_ = [('description', SharedNoteOpenedType._description_validator)]

SharingChangeFolderJoinPolicyDetails._new_value_validator = SharingFolderJoinPolicy_validator
SharingChangeFolderJoinPolicyDetails._previous_value_validator = bv.Nullable(SharingFolderJoinPolicy_validator)
SharingChangeFolderJoinPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharingChangeFolderJoinPolicyDetails._all_fields_ = [
    ('new_value', SharingChangeFolderJoinPolicyDetails._new_value_validator),
    ('previous_value', SharingChangeFolderJoinPolicyDetails._previous_value_validator),
]

SharingChangeFolderJoinPolicyType._description_validator = bv.String()
SharingChangeFolderJoinPolicyType._all_field_names_ = set(['description'])
SharingChangeFolderJoinPolicyType._all_fields_ = [('description', SharingChangeFolderJoinPolicyType._description_validator)]

SharingChangeLinkPolicyDetails._new_value_validator = SharingLinkPolicy_validator
SharingChangeLinkPolicyDetails._previous_value_validator = bv.Nullable(SharingLinkPolicy_validator)
SharingChangeLinkPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharingChangeLinkPolicyDetails._all_fields_ = [
    ('new_value', SharingChangeLinkPolicyDetails._new_value_validator),
    ('previous_value', SharingChangeLinkPolicyDetails._previous_value_validator),
]

SharingChangeLinkPolicyType._description_validator = bv.String()
SharingChangeLinkPolicyType._all_field_names_ = set(['description'])
SharingChangeLinkPolicyType._all_fields_ = [('description', SharingChangeLinkPolicyType._description_validator)]

SharingChangeMemberPolicyDetails._new_value_validator = SharingMemberPolicy_validator
SharingChangeMemberPolicyDetails._previous_value_validator = bv.Nullable(SharingMemberPolicy_validator)
SharingChangeMemberPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SharingChangeMemberPolicyDetails._all_fields_ = [
    ('new_value', SharingChangeMemberPolicyDetails._new_value_validator),
    ('previous_value', SharingChangeMemberPolicyDetails._previous_value_validator),
]

SharingChangeMemberPolicyType._description_validator = bv.String()
SharingChangeMemberPolicyType._all_field_names_ = set(['description'])
SharingChangeMemberPolicyType._all_fields_ = [('description', SharingChangeMemberPolicyType._description_validator)]

SharingFolderJoinPolicy._from_anyone_validator = bv.Void()
SharingFolderJoinPolicy._from_team_only_validator = bv.Void()
SharingFolderJoinPolicy._other_validator = bv.Void()
SharingFolderJoinPolicy._tagmap = {
    'from_anyone': SharingFolderJoinPolicy._from_anyone_validator,
    'from_team_only': SharingFolderJoinPolicy._from_team_only_validator,
    'other': SharingFolderJoinPolicy._other_validator,
}

SharingFolderJoinPolicy.from_anyone = SharingFolderJoinPolicy('from_anyone')
SharingFolderJoinPolicy.from_team_only = SharingFolderJoinPolicy('from_team_only')
SharingFolderJoinPolicy.other = SharingFolderJoinPolicy('other')

SharingLinkPolicy._default_private_validator = bv.Void()
SharingLinkPolicy._default_public_validator = bv.Void()
SharingLinkPolicy._only_private_validator = bv.Void()
SharingLinkPolicy._other_validator = bv.Void()
SharingLinkPolicy._tagmap = {
    'default_private': SharingLinkPolicy._default_private_validator,
    'default_public': SharingLinkPolicy._default_public_validator,
    'only_private': SharingLinkPolicy._only_private_validator,
    'other': SharingLinkPolicy._other_validator,
}

SharingLinkPolicy.default_private = SharingLinkPolicy('default_private')
SharingLinkPolicy.default_public = SharingLinkPolicy('default_public')
SharingLinkPolicy.only_private = SharingLinkPolicy('only_private')
SharingLinkPolicy.other = SharingLinkPolicy('other')

SharingMemberPolicy._allow_validator = bv.Void()
SharingMemberPolicy._forbid_validator = bv.Void()
SharingMemberPolicy._other_validator = bv.Void()
SharingMemberPolicy._tagmap = {
    'allow': SharingMemberPolicy._allow_validator,
    'forbid': SharingMemberPolicy._forbid_validator,
    'other': SharingMemberPolicy._other_validator,
}

SharingMemberPolicy.allow = SharingMemberPolicy('allow')
SharingMemberPolicy.forbid = SharingMemberPolicy('forbid')
SharingMemberPolicy.other = SharingMemberPolicy('other')

ShmodelGroupShareDetails._all_field_names_ = set([])
ShmodelGroupShareDetails._all_fields_ = []

ShmodelGroupShareType._description_validator = bv.String()
ShmodelGroupShareType._all_field_names_ = set(['description'])
ShmodelGroupShareType._all_fields_ = [('description', ShmodelGroupShareType._description_validator)]

ShowcaseAccessGrantedDetails._event_uuid_validator = bv.String()
ShowcaseAccessGrantedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseAccessGrantedDetails._all_fields_ = [('event_uuid', ShowcaseAccessGrantedDetails._event_uuid_validator)]

ShowcaseAccessGrantedType._description_validator = bv.String()
ShowcaseAccessGrantedType._all_field_names_ = set(['description'])
ShowcaseAccessGrantedType._all_fields_ = [('description', ShowcaseAccessGrantedType._description_validator)]

ShowcaseAddMemberDetails._event_uuid_validator = bv.String()
ShowcaseAddMemberDetails._all_field_names_ = set(['event_uuid'])
ShowcaseAddMemberDetails._all_fields_ = [('event_uuid', ShowcaseAddMemberDetails._event_uuid_validator)]

ShowcaseAddMemberType._description_validator = bv.String()
ShowcaseAddMemberType._all_field_names_ = set(['description'])
ShowcaseAddMemberType._all_fields_ = [('description', ShowcaseAddMemberType._description_validator)]

ShowcaseArchivedDetails._event_uuid_validator = bv.String()
ShowcaseArchivedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseArchivedDetails._all_fields_ = [('event_uuid', ShowcaseArchivedDetails._event_uuid_validator)]

ShowcaseArchivedType._description_validator = bv.String()
ShowcaseArchivedType._all_field_names_ = set(['description'])
ShowcaseArchivedType._all_fields_ = [('description', ShowcaseArchivedType._description_validator)]

ShowcaseChangeDownloadPolicyDetails._new_value_validator = ShowcaseDownloadPolicy_validator
ShowcaseChangeDownloadPolicyDetails._previous_value_validator = ShowcaseDownloadPolicy_validator
ShowcaseChangeDownloadPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
ShowcaseChangeDownloadPolicyDetails._all_fields_ = [
    ('new_value', ShowcaseChangeDownloadPolicyDetails._new_value_validator),
    ('previous_value', ShowcaseChangeDownloadPolicyDetails._previous_value_validator),
]

ShowcaseChangeDownloadPolicyType._description_validator = bv.String()
ShowcaseChangeDownloadPolicyType._all_field_names_ = set(['description'])
ShowcaseChangeDownloadPolicyType._all_fields_ = [('description', ShowcaseChangeDownloadPolicyType._description_validator)]

ShowcaseChangeEnabledPolicyDetails._new_value_validator = ShowcaseEnabledPolicy_validator
ShowcaseChangeEnabledPolicyDetails._previous_value_validator = ShowcaseEnabledPolicy_validator
ShowcaseChangeEnabledPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
ShowcaseChangeEnabledPolicyDetails._all_fields_ = [
    ('new_value', ShowcaseChangeEnabledPolicyDetails._new_value_validator),
    ('previous_value', ShowcaseChangeEnabledPolicyDetails._previous_value_validator),
]

ShowcaseChangeEnabledPolicyType._description_validator = bv.String()
ShowcaseChangeEnabledPolicyType._all_field_names_ = set(['description'])
ShowcaseChangeEnabledPolicyType._all_fields_ = [('description', ShowcaseChangeEnabledPolicyType._description_validator)]

ShowcaseChangeExternalSharingPolicyDetails._new_value_validator = ShowcaseExternalSharingPolicy_validator
ShowcaseChangeExternalSharingPolicyDetails._previous_value_validator = ShowcaseExternalSharingPolicy_validator
ShowcaseChangeExternalSharingPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
ShowcaseChangeExternalSharingPolicyDetails._all_fields_ = [
    ('new_value', ShowcaseChangeExternalSharingPolicyDetails._new_value_validator),
    ('previous_value', ShowcaseChangeExternalSharingPolicyDetails._previous_value_validator),
]

ShowcaseChangeExternalSharingPolicyType._description_validator = bv.String()
ShowcaseChangeExternalSharingPolicyType._all_field_names_ = set(['description'])
ShowcaseChangeExternalSharingPolicyType._all_fields_ = [('description', ShowcaseChangeExternalSharingPolicyType._description_validator)]

ShowcaseCreatedDetails._event_uuid_validator = bv.String()
ShowcaseCreatedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseCreatedDetails._all_fields_ = [('event_uuid', ShowcaseCreatedDetails._event_uuid_validator)]

ShowcaseCreatedType._description_validator = bv.String()
ShowcaseCreatedType._all_field_names_ = set(['description'])
ShowcaseCreatedType._all_fields_ = [('description', ShowcaseCreatedType._description_validator)]

ShowcaseDeleteCommentDetails._event_uuid_validator = bv.String()
ShowcaseDeleteCommentDetails._comment_text_validator = bv.Nullable(bv.String())
ShowcaseDeleteCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
ShowcaseDeleteCommentDetails._all_fields_ = [
    ('event_uuid', ShowcaseDeleteCommentDetails._event_uuid_validator),
    ('comment_text', ShowcaseDeleteCommentDetails._comment_text_validator),
]

ShowcaseDeleteCommentType._description_validator = bv.String()
ShowcaseDeleteCommentType._all_field_names_ = set(['description'])
ShowcaseDeleteCommentType._all_fields_ = [('description', ShowcaseDeleteCommentType._description_validator)]

ShowcaseDocumentLogInfo._showcase_id_validator = bv.String()
ShowcaseDocumentLogInfo._showcase_title_validator = bv.String()
ShowcaseDocumentLogInfo._all_field_names_ = set([
    'showcase_id',
    'showcase_title',
])
ShowcaseDocumentLogInfo._all_fields_ = [
    ('showcase_id', ShowcaseDocumentLogInfo._showcase_id_validator),
    ('showcase_title', ShowcaseDocumentLogInfo._showcase_title_validator),
]

ShowcaseDownloadPolicy._disabled_validator = bv.Void()
ShowcaseDownloadPolicy._enabled_validator = bv.Void()
ShowcaseDownloadPolicy._other_validator = bv.Void()
ShowcaseDownloadPolicy._tagmap = {
    'disabled': ShowcaseDownloadPolicy._disabled_validator,
    'enabled': ShowcaseDownloadPolicy._enabled_validator,
    'other': ShowcaseDownloadPolicy._other_validator,
}

ShowcaseDownloadPolicy.disabled = ShowcaseDownloadPolicy('disabled')
ShowcaseDownloadPolicy.enabled = ShowcaseDownloadPolicy('enabled')
ShowcaseDownloadPolicy.other = ShowcaseDownloadPolicy('other')

ShowcaseEditCommentDetails._event_uuid_validator = bv.String()
ShowcaseEditCommentDetails._comment_text_validator = bv.Nullable(bv.String())
ShowcaseEditCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
ShowcaseEditCommentDetails._all_fields_ = [
    ('event_uuid', ShowcaseEditCommentDetails._event_uuid_validator),
    ('comment_text', ShowcaseEditCommentDetails._comment_text_validator),
]

ShowcaseEditCommentType._description_validator = bv.String()
ShowcaseEditCommentType._all_field_names_ = set(['description'])
ShowcaseEditCommentType._all_fields_ = [('description', ShowcaseEditCommentType._description_validator)]

ShowcaseEditedDetails._event_uuid_validator = bv.String()
ShowcaseEditedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseEditedDetails._all_fields_ = [('event_uuid', ShowcaseEditedDetails._event_uuid_validator)]

ShowcaseEditedType._description_validator = bv.String()
ShowcaseEditedType._all_field_names_ = set(['description'])
ShowcaseEditedType._all_fields_ = [('description', ShowcaseEditedType._description_validator)]

ShowcaseEnabledPolicy._disabled_validator = bv.Void()
ShowcaseEnabledPolicy._enabled_validator = bv.Void()
ShowcaseEnabledPolicy._other_validator = bv.Void()
ShowcaseEnabledPolicy._tagmap = {
    'disabled': ShowcaseEnabledPolicy._disabled_validator,
    'enabled': ShowcaseEnabledPolicy._enabled_validator,
    'other': ShowcaseEnabledPolicy._other_validator,
}

ShowcaseEnabledPolicy.disabled = ShowcaseEnabledPolicy('disabled')
ShowcaseEnabledPolicy.enabled = ShowcaseEnabledPolicy('enabled')
ShowcaseEnabledPolicy.other = ShowcaseEnabledPolicy('other')

ShowcaseExternalSharingPolicy._disabled_validator = bv.Void()
ShowcaseExternalSharingPolicy._enabled_validator = bv.Void()
ShowcaseExternalSharingPolicy._other_validator = bv.Void()
ShowcaseExternalSharingPolicy._tagmap = {
    'disabled': ShowcaseExternalSharingPolicy._disabled_validator,
    'enabled': ShowcaseExternalSharingPolicy._enabled_validator,
    'other': ShowcaseExternalSharingPolicy._other_validator,
}

ShowcaseExternalSharingPolicy.disabled = ShowcaseExternalSharingPolicy('disabled')
ShowcaseExternalSharingPolicy.enabled = ShowcaseExternalSharingPolicy('enabled')
ShowcaseExternalSharingPolicy.other = ShowcaseExternalSharingPolicy('other')

ShowcaseFileAddedDetails._event_uuid_validator = bv.String()
ShowcaseFileAddedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseFileAddedDetails._all_fields_ = [('event_uuid', ShowcaseFileAddedDetails._event_uuid_validator)]

ShowcaseFileAddedType._description_validator = bv.String()
ShowcaseFileAddedType._all_field_names_ = set(['description'])
ShowcaseFileAddedType._all_fields_ = [('description', ShowcaseFileAddedType._description_validator)]

ShowcaseFileDownloadDetails._event_uuid_validator = bv.String()
ShowcaseFileDownloadDetails._download_type_validator = bv.String()
ShowcaseFileDownloadDetails._all_field_names_ = set([
    'event_uuid',
    'download_type',
])
ShowcaseFileDownloadDetails._all_fields_ = [
    ('event_uuid', ShowcaseFileDownloadDetails._event_uuid_validator),
    ('download_type', ShowcaseFileDownloadDetails._download_type_validator),
]

ShowcaseFileDownloadType._description_validator = bv.String()
ShowcaseFileDownloadType._all_field_names_ = set(['description'])
ShowcaseFileDownloadType._all_fields_ = [('description', ShowcaseFileDownloadType._description_validator)]

ShowcaseFileRemovedDetails._event_uuid_validator = bv.String()
ShowcaseFileRemovedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseFileRemovedDetails._all_fields_ = [('event_uuid', ShowcaseFileRemovedDetails._event_uuid_validator)]

ShowcaseFileRemovedType._description_validator = bv.String()
ShowcaseFileRemovedType._all_field_names_ = set(['description'])
ShowcaseFileRemovedType._all_fields_ = [('description', ShowcaseFileRemovedType._description_validator)]

ShowcaseFileViewDetails._event_uuid_validator = bv.String()
ShowcaseFileViewDetails._all_field_names_ = set(['event_uuid'])
ShowcaseFileViewDetails._all_fields_ = [('event_uuid', ShowcaseFileViewDetails._event_uuid_validator)]

ShowcaseFileViewType._description_validator = bv.String()
ShowcaseFileViewType._all_field_names_ = set(['description'])
ShowcaseFileViewType._all_fields_ = [('description', ShowcaseFileViewType._description_validator)]

ShowcasePermanentlyDeletedDetails._event_uuid_validator = bv.String()
ShowcasePermanentlyDeletedDetails._all_field_names_ = set(['event_uuid'])
ShowcasePermanentlyDeletedDetails._all_fields_ = [('event_uuid', ShowcasePermanentlyDeletedDetails._event_uuid_validator)]

ShowcasePermanentlyDeletedType._description_validator = bv.String()
ShowcasePermanentlyDeletedType._all_field_names_ = set(['description'])
ShowcasePermanentlyDeletedType._all_fields_ = [('description', ShowcasePermanentlyDeletedType._description_validator)]

ShowcasePostCommentDetails._event_uuid_validator = bv.String()
ShowcasePostCommentDetails._comment_text_validator = bv.Nullable(bv.String())
ShowcasePostCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
ShowcasePostCommentDetails._all_fields_ = [
    ('event_uuid', ShowcasePostCommentDetails._event_uuid_validator),
    ('comment_text', ShowcasePostCommentDetails._comment_text_validator),
]

ShowcasePostCommentType._description_validator = bv.String()
ShowcasePostCommentType._all_field_names_ = set(['description'])
ShowcasePostCommentType._all_fields_ = [('description', ShowcasePostCommentType._description_validator)]

ShowcaseRemoveMemberDetails._event_uuid_validator = bv.String()
ShowcaseRemoveMemberDetails._all_field_names_ = set(['event_uuid'])
ShowcaseRemoveMemberDetails._all_fields_ = [('event_uuid', ShowcaseRemoveMemberDetails._event_uuid_validator)]

ShowcaseRemoveMemberType._description_validator = bv.String()
ShowcaseRemoveMemberType._all_field_names_ = set(['description'])
ShowcaseRemoveMemberType._all_fields_ = [('description', ShowcaseRemoveMemberType._description_validator)]

ShowcaseRenamedDetails._event_uuid_validator = bv.String()
ShowcaseRenamedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseRenamedDetails._all_fields_ = [('event_uuid', ShowcaseRenamedDetails._event_uuid_validator)]

ShowcaseRenamedType._description_validator = bv.String()
ShowcaseRenamedType._all_field_names_ = set(['description'])
ShowcaseRenamedType._all_fields_ = [('description', ShowcaseRenamedType._description_validator)]

ShowcaseRequestAccessDetails._event_uuid_validator = bv.String()
ShowcaseRequestAccessDetails._all_field_names_ = set(['event_uuid'])
ShowcaseRequestAccessDetails._all_fields_ = [('event_uuid', ShowcaseRequestAccessDetails._event_uuid_validator)]

ShowcaseRequestAccessType._description_validator = bv.String()
ShowcaseRequestAccessType._all_field_names_ = set(['description'])
ShowcaseRequestAccessType._all_fields_ = [('description', ShowcaseRequestAccessType._description_validator)]

ShowcaseResolveCommentDetails._event_uuid_validator = bv.String()
ShowcaseResolveCommentDetails._comment_text_validator = bv.Nullable(bv.String())
ShowcaseResolveCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
ShowcaseResolveCommentDetails._all_fields_ = [
    ('event_uuid', ShowcaseResolveCommentDetails._event_uuid_validator),
    ('comment_text', ShowcaseResolveCommentDetails._comment_text_validator),
]

ShowcaseResolveCommentType._description_validator = bv.String()
ShowcaseResolveCommentType._all_field_names_ = set(['description'])
ShowcaseResolveCommentType._all_fields_ = [('description', ShowcaseResolveCommentType._description_validator)]

ShowcaseRestoredDetails._event_uuid_validator = bv.String()
ShowcaseRestoredDetails._all_field_names_ = set(['event_uuid'])
ShowcaseRestoredDetails._all_fields_ = [('event_uuid', ShowcaseRestoredDetails._event_uuid_validator)]

ShowcaseRestoredType._description_validator = bv.String()
ShowcaseRestoredType._all_field_names_ = set(['description'])
ShowcaseRestoredType._all_fields_ = [('description', ShowcaseRestoredType._description_validator)]

ShowcaseTrashedDeprecatedDetails._event_uuid_validator = bv.String()
ShowcaseTrashedDeprecatedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseTrashedDeprecatedDetails._all_fields_ = [('event_uuid', ShowcaseTrashedDeprecatedDetails._event_uuid_validator)]

ShowcaseTrashedDeprecatedType._description_validator = bv.String()
ShowcaseTrashedDeprecatedType._all_field_names_ = set(['description'])
ShowcaseTrashedDeprecatedType._all_fields_ = [('description', ShowcaseTrashedDeprecatedType._description_validator)]

ShowcaseTrashedDetails._event_uuid_validator = bv.String()
ShowcaseTrashedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseTrashedDetails._all_fields_ = [('event_uuid', ShowcaseTrashedDetails._event_uuid_validator)]

ShowcaseTrashedType._description_validator = bv.String()
ShowcaseTrashedType._all_field_names_ = set(['description'])
ShowcaseTrashedType._all_fields_ = [('description', ShowcaseTrashedType._description_validator)]

ShowcaseUnresolveCommentDetails._event_uuid_validator = bv.String()
ShowcaseUnresolveCommentDetails._comment_text_validator = bv.Nullable(bv.String())
ShowcaseUnresolveCommentDetails._all_field_names_ = set([
    'event_uuid',
    'comment_text',
])
ShowcaseUnresolveCommentDetails._all_fields_ = [
    ('event_uuid', ShowcaseUnresolveCommentDetails._event_uuid_validator),
    ('comment_text', ShowcaseUnresolveCommentDetails._comment_text_validator),
]

ShowcaseUnresolveCommentType._description_validator = bv.String()
ShowcaseUnresolveCommentType._all_field_names_ = set(['description'])
ShowcaseUnresolveCommentType._all_fields_ = [('description', ShowcaseUnresolveCommentType._description_validator)]

ShowcaseUntrashedDeprecatedDetails._event_uuid_validator = bv.String()
ShowcaseUntrashedDeprecatedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseUntrashedDeprecatedDetails._all_fields_ = [('event_uuid', ShowcaseUntrashedDeprecatedDetails._event_uuid_validator)]

ShowcaseUntrashedDeprecatedType._description_validator = bv.String()
ShowcaseUntrashedDeprecatedType._all_field_names_ = set(['description'])
ShowcaseUntrashedDeprecatedType._all_fields_ = [('description', ShowcaseUntrashedDeprecatedType._description_validator)]

ShowcaseUntrashedDetails._event_uuid_validator = bv.String()
ShowcaseUntrashedDetails._all_field_names_ = set(['event_uuid'])
ShowcaseUntrashedDetails._all_fields_ = [('event_uuid', ShowcaseUntrashedDetails._event_uuid_validator)]

ShowcaseUntrashedType._description_validator = bv.String()
ShowcaseUntrashedType._all_field_names_ = set(['description'])
ShowcaseUntrashedType._all_fields_ = [('description', ShowcaseUntrashedType._description_validator)]

ShowcaseViewDetails._event_uuid_validator = bv.String()
ShowcaseViewDetails._all_field_names_ = set(['event_uuid'])
ShowcaseViewDetails._all_fields_ = [('event_uuid', ShowcaseViewDetails._event_uuid_validator)]

ShowcaseViewType._description_validator = bv.String()
ShowcaseViewType._all_field_names_ = set(['description'])
ShowcaseViewType._all_fields_ = [('description', ShowcaseViewType._description_validator)]

SignInAsSessionEndDetails._all_field_names_ = set([])
SignInAsSessionEndDetails._all_fields_ = []

SignInAsSessionEndType._description_validator = bv.String()
SignInAsSessionEndType._all_field_names_ = set(['description'])
SignInAsSessionEndType._all_fields_ = [('description', SignInAsSessionEndType._description_validator)]

SignInAsSessionStartDetails._all_field_names_ = set([])
SignInAsSessionStartDetails._all_fields_ = []

SignInAsSessionStartType._description_validator = bv.String()
SignInAsSessionStartType._all_field_names_ = set(['description'])
SignInAsSessionStartType._all_fields_ = [('description', SignInAsSessionStartType._description_validator)]

SmartSyncChangePolicyDetails._new_value_validator = bv.Nullable(team_policies.SmartSyncPolicy_validator)
SmartSyncChangePolicyDetails._previous_value_validator = bv.Nullable(team_policies.SmartSyncPolicy_validator)
SmartSyncChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SmartSyncChangePolicyDetails._all_fields_ = [
    ('new_value', SmartSyncChangePolicyDetails._new_value_validator),
    ('previous_value', SmartSyncChangePolicyDetails._previous_value_validator),
]

SmartSyncChangePolicyType._description_validator = bv.String()
SmartSyncChangePolicyType._all_field_names_ = set(['description'])
SmartSyncChangePolicyType._all_fields_ = [('description', SmartSyncChangePolicyType._description_validator)]

SmartSyncCreateAdminPrivilegeReportDetails._all_field_names_ = set([])
SmartSyncCreateAdminPrivilegeReportDetails._all_fields_ = []

SmartSyncCreateAdminPrivilegeReportType._description_validator = bv.String()
SmartSyncCreateAdminPrivilegeReportType._all_field_names_ = set(['description'])
SmartSyncCreateAdminPrivilegeReportType._all_fields_ = [('description', SmartSyncCreateAdminPrivilegeReportType._description_validator)]

SmartSyncNotOptOutDetails._previous_value_validator = SmartSyncOptOutPolicy_validator
SmartSyncNotOptOutDetails._new_value_validator = SmartSyncOptOutPolicy_validator
SmartSyncNotOptOutDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
SmartSyncNotOptOutDetails._all_fields_ = [
    ('previous_value', SmartSyncNotOptOutDetails._previous_value_validator),
    ('new_value', SmartSyncNotOptOutDetails._new_value_validator),
]

SmartSyncNotOptOutType._description_validator = bv.String()
SmartSyncNotOptOutType._all_field_names_ = set(['description'])
SmartSyncNotOptOutType._all_fields_ = [('description', SmartSyncNotOptOutType._description_validator)]

SmartSyncOptOutDetails._previous_value_validator = SmartSyncOptOutPolicy_validator
SmartSyncOptOutDetails._new_value_validator = SmartSyncOptOutPolicy_validator
SmartSyncOptOutDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
SmartSyncOptOutDetails._all_fields_ = [
    ('previous_value', SmartSyncOptOutDetails._previous_value_validator),
    ('new_value', SmartSyncOptOutDetails._new_value_validator),
]

SmartSyncOptOutPolicy._default_validator = bv.Void()
SmartSyncOptOutPolicy._opted_out_validator = bv.Void()
SmartSyncOptOutPolicy._other_validator = bv.Void()
SmartSyncOptOutPolicy._tagmap = {
    'default': SmartSyncOptOutPolicy._default_validator,
    'opted_out': SmartSyncOptOutPolicy._opted_out_validator,
    'other': SmartSyncOptOutPolicy._other_validator,
}

SmartSyncOptOutPolicy.default = SmartSyncOptOutPolicy('default')
SmartSyncOptOutPolicy.opted_out = SmartSyncOptOutPolicy('opted_out')
SmartSyncOptOutPolicy.other = SmartSyncOptOutPolicy('other')

SmartSyncOptOutType._description_validator = bv.String()
SmartSyncOptOutType._all_field_names_ = set(['description'])
SmartSyncOptOutType._all_fields_ = [('description', SmartSyncOptOutType._description_validator)]

SpaceCapsType._hard_validator = bv.Void()
SpaceCapsType._off_validator = bv.Void()
SpaceCapsType._soft_validator = bv.Void()
SpaceCapsType._other_validator = bv.Void()
SpaceCapsType._tagmap = {
    'hard': SpaceCapsType._hard_validator,
    'off': SpaceCapsType._off_validator,
    'soft': SpaceCapsType._soft_validator,
    'other': SpaceCapsType._other_validator,
}

SpaceCapsType.hard = SpaceCapsType('hard')
SpaceCapsType.off = SpaceCapsType('off')
SpaceCapsType.soft = SpaceCapsType('soft')
SpaceCapsType.other = SpaceCapsType('other')

SpaceLimitsStatus._within_quota_validator = bv.Void()
SpaceLimitsStatus._near_quota_validator = bv.Void()
SpaceLimitsStatus._over_quota_validator = bv.Void()
SpaceLimitsStatus._other_validator = bv.Void()
SpaceLimitsStatus._tagmap = {
    'within_quota': SpaceLimitsStatus._within_quota_validator,
    'near_quota': SpaceLimitsStatus._near_quota_validator,
    'over_quota': SpaceLimitsStatus._over_quota_validator,
    'other': SpaceLimitsStatus._other_validator,
}

SpaceLimitsStatus.within_quota = SpaceLimitsStatus('within_quota')
SpaceLimitsStatus.near_quota = SpaceLimitsStatus('near_quota')
SpaceLimitsStatus.over_quota = SpaceLimitsStatus('over_quota')
SpaceLimitsStatus.other = SpaceLimitsStatus('other')

SsoAddCertDetails._certificate_details_validator = Certificate_validator
SsoAddCertDetails._all_field_names_ = set(['certificate_details'])
SsoAddCertDetails._all_fields_ = [('certificate_details', SsoAddCertDetails._certificate_details_validator)]

SsoAddCertType._description_validator = bv.String()
SsoAddCertType._all_field_names_ = set(['description'])
SsoAddCertType._all_fields_ = [('description', SsoAddCertType._description_validator)]

SsoAddLoginUrlDetails._new_value_validator = bv.String()
SsoAddLoginUrlDetails._all_field_names_ = set(['new_value'])
SsoAddLoginUrlDetails._all_fields_ = [('new_value', SsoAddLoginUrlDetails._new_value_validator)]

SsoAddLoginUrlType._description_validator = bv.String()
SsoAddLoginUrlType._all_field_names_ = set(['description'])
SsoAddLoginUrlType._all_fields_ = [('description', SsoAddLoginUrlType._description_validator)]

SsoAddLogoutUrlDetails._new_value_validator = bv.Nullable(bv.String())
SsoAddLogoutUrlDetails._all_field_names_ = set(['new_value'])
SsoAddLogoutUrlDetails._all_fields_ = [('new_value', SsoAddLogoutUrlDetails._new_value_validator)]

SsoAddLogoutUrlType._description_validator = bv.String()
SsoAddLogoutUrlType._all_field_names_ = set(['description'])
SsoAddLogoutUrlType._all_fields_ = [('description', SsoAddLogoutUrlType._description_validator)]

SsoChangeCertDetails._previous_certificate_details_validator = bv.Nullable(Certificate_validator)
SsoChangeCertDetails._new_certificate_details_validator = Certificate_validator
SsoChangeCertDetails._all_field_names_ = set([
    'previous_certificate_details',
    'new_certificate_details',
])
SsoChangeCertDetails._all_fields_ = [
    ('previous_certificate_details', SsoChangeCertDetails._previous_certificate_details_validator),
    ('new_certificate_details', SsoChangeCertDetails._new_certificate_details_validator),
]

SsoChangeCertType._description_validator = bv.String()
SsoChangeCertType._all_field_names_ = set(['description'])
SsoChangeCertType._all_fields_ = [('description', SsoChangeCertType._description_validator)]

SsoChangeLoginUrlDetails._previous_value_validator = bv.String()
SsoChangeLoginUrlDetails._new_value_validator = bv.String()
SsoChangeLoginUrlDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
SsoChangeLoginUrlDetails._all_fields_ = [
    ('previous_value', SsoChangeLoginUrlDetails._previous_value_validator),
    ('new_value', SsoChangeLoginUrlDetails._new_value_validator),
]

SsoChangeLoginUrlType._description_validator = bv.String()
SsoChangeLoginUrlType._all_field_names_ = set(['description'])
SsoChangeLoginUrlType._all_fields_ = [('description', SsoChangeLoginUrlType._description_validator)]

SsoChangeLogoutUrlDetails._previous_value_validator = bv.Nullable(bv.String())
SsoChangeLogoutUrlDetails._new_value_validator = bv.Nullable(bv.String())
SsoChangeLogoutUrlDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
SsoChangeLogoutUrlDetails._all_fields_ = [
    ('previous_value', SsoChangeLogoutUrlDetails._previous_value_validator),
    ('new_value', SsoChangeLogoutUrlDetails._new_value_validator),
]

SsoChangeLogoutUrlType._description_validator = bv.String()
SsoChangeLogoutUrlType._all_field_names_ = set(['description'])
SsoChangeLogoutUrlType._all_fields_ = [('description', SsoChangeLogoutUrlType._description_validator)]

SsoChangePolicyDetails._new_value_validator = team_policies.SsoPolicy_validator
SsoChangePolicyDetails._previous_value_validator = bv.Nullable(team_policies.SsoPolicy_validator)
SsoChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
SsoChangePolicyDetails._all_fields_ = [
    ('new_value', SsoChangePolicyDetails._new_value_validator),
    ('previous_value', SsoChangePolicyDetails._previous_value_validator),
]

SsoChangePolicyType._description_validator = bv.String()
SsoChangePolicyType._all_field_names_ = set(['description'])
SsoChangePolicyType._all_fields_ = [('description', SsoChangePolicyType._description_validator)]

SsoChangeSamlIdentityModeDetails._previous_value_validator = bv.Int64()
SsoChangeSamlIdentityModeDetails._new_value_validator = bv.Int64()
SsoChangeSamlIdentityModeDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
SsoChangeSamlIdentityModeDetails._all_fields_ = [
    ('previous_value', SsoChangeSamlIdentityModeDetails._previous_value_validator),
    ('new_value', SsoChangeSamlIdentityModeDetails._new_value_validator),
]

SsoChangeSamlIdentityModeType._description_validator = bv.String()
SsoChangeSamlIdentityModeType._all_field_names_ = set(['description'])
SsoChangeSamlIdentityModeType._all_fields_ = [('description', SsoChangeSamlIdentityModeType._description_validator)]

SsoErrorDetails._error_details_validator = FailureDetailsLogInfo_validator
SsoErrorDetails._all_field_names_ = set(['error_details'])
SsoErrorDetails._all_fields_ = [('error_details', SsoErrorDetails._error_details_validator)]

SsoErrorType._description_validator = bv.String()
SsoErrorType._all_field_names_ = set(['description'])
SsoErrorType._all_fields_ = [('description', SsoErrorType._description_validator)]

SsoRemoveCertDetails._all_field_names_ = set([])
SsoRemoveCertDetails._all_fields_ = []

SsoRemoveCertType._description_validator = bv.String()
SsoRemoveCertType._all_field_names_ = set(['description'])
SsoRemoveCertType._all_fields_ = [('description', SsoRemoveCertType._description_validator)]

SsoRemoveLoginUrlDetails._previous_value_validator = bv.String()
SsoRemoveLoginUrlDetails._all_field_names_ = set(['previous_value'])
SsoRemoveLoginUrlDetails._all_fields_ = [('previous_value', SsoRemoveLoginUrlDetails._previous_value_validator)]

SsoRemoveLoginUrlType._description_validator = bv.String()
SsoRemoveLoginUrlType._all_field_names_ = set(['description'])
SsoRemoveLoginUrlType._all_fields_ = [('description', SsoRemoveLoginUrlType._description_validator)]

SsoRemoveLogoutUrlDetails._previous_value_validator = bv.String()
SsoRemoveLogoutUrlDetails._all_field_names_ = set(['previous_value'])
SsoRemoveLogoutUrlDetails._all_fields_ = [('previous_value', SsoRemoveLogoutUrlDetails._previous_value_validator)]

SsoRemoveLogoutUrlType._description_validator = bv.String()
SsoRemoveLogoutUrlType._all_field_names_ = set(['description'])
SsoRemoveLogoutUrlType._all_fields_ = [('description', SsoRemoveLogoutUrlType._description_validator)]

TeamActivityCreateReportDetails._start_date_validator = common.DropboxTimestamp_validator
TeamActivityCreateReportDetails._end_date_validator = common.DropboxTimestamp_validator
TeamActivityCreateReportDetails._all_field_names_ = set([
    'start_date',
    'end_date',
])
TeamActivityCreateReportDetails._all_fields_ = [
    ('start_date', TeamActivityCreateReportDetails._start_date_validator),
    ('end_date', TeamActivityCreateReportDetails._end_date_validator),
]

TeamActivityCreateReportType._description_validator = bv.String()
TeamActivityCreateReportType._all_field_names_ = set(['description'])
TeamActivityCreateReportType._all_fields_ = [('description', TeamActivityCreateReportType._description_validator)]

TeamEvent._timestamp_validator = common.DropboxTimestamp_validator
TeamEvent._event_category_validator = EventCategory_validator
TeamEvent._actor_validator = bv.Nullable(ActorLogInfo_validator)
TeamEvent._origin_validator = bv.Nullable(OriginLogInfo_validator)
TeamEvent._involve_non_team_member_validator = bv.Nullable(bv.Boolean())
TeamEvent._context_validator = bv.Nullable(ContextLogInfo_validator)
TeamEvent._participants_validator = bv.Nullable(bv.List(ParticipantLogInfo_validator))
TeamEvent._assets_validator = bv.Nullable(bv.List(AssetLogInfo_validator))
TeamEvent._event_type_validator = EventType_validator
TeamEvent._details_validator = EventDetails_validator
TeamEvent._all_field_names_ = set([
    'timestamp',
    'event_category',
    'actor',
    'origin',
    'involve_non_team_member',
    'context',
    'participants',
    'assets',
    'event_type',
    'details',
])
TeamEvent._all_fields_ = [
    ('timestamp', TeamEvent._timestamp_validator),
    ('event_category', TeamEvent._event_category_validator),
    ('actor', TeamEvent._actor_validator),
    ('origin', TeamEvent._origin_validator),
    ('involve_non_team_member', TeamEvent._involve_non_team_member_validator),
    ('context', TeamEvent._context_validator),
    ('participants', TeamEvent._participants_validator),
    ('assets', TeamEvent._assets_validator),
    ('event_type', TeamEvent._event_type_validator),
    ('details', TeamEvent._details_validator),
]

TeamFolderChangeStatusDetails._new_value_validator = team.TeamFolderStatus_validator
TeamFolderChangeStatusDetails._previous_value_validator = bv.Nullable(team.TeamFolderStatus_validator)
TeamFolderChangeStatusDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
TeamFolderChangeStatusDetails._all_fields_ = [
    ('new_value', TeamFolderChangeStatusDetails._new_value_validator),
    ('previous_value', TeamFolderChangeStatusDetails._previous_value_validator),
]

TeamFolderChangeStatusType._description_validator = bv.String()
TeamFolderChangeStatusType._all_field_names_ = set(['description'])
TeamFolderChangeStatusType._all_fields_ = [('description', TeamFolderChangeStatusType._description_validator)]

TeamFolderCreateDetails._all_field_names_ = set([])
TeamFolderCreateDetails._all_fields_ = []

TeamFolderCreateType._description_validator = bv.String()
TeamFolderCreateType._all_field_names_ = set(['description'])
TeamFolderCreateType._all_fields_ = [('description', TeamFolderCreateType._description_validator)]

TeamFolderDowngradeDetails._target_asset_index_validator = bv.UInt64()
TeamFolderDowngradeDetails._all_field_names_ = set(['target_asset_index'])
TeamFolderDowngradeDetails._all_fields_ = [('target_asset_index', TeamFolderDowngradeDetails._target_asset_index_validator)]

TeamFolderDowngradeType._description_validator = bv.String()
TeamFolderDowngradeType._all_field_names_ = set(['description'])
TeamFolderDowngradeType._all_fields_ = [('description', TeamFolderDowngradeType._description_validator)]

TeamFolderPermanentlyDeleteDetails._all_field_names_ = set([])
TeamFolderPermanentlyDeleteDetails._all_fields_ = []

TeamFolderPermanentlyDeleteType._description_validator = bv.String()
TeamFolderPermanentlyDeleteType._all_field_names_ = set(['description'])
TeamFolderPermanentlyDeleteType._all_fields_ = [('description', TeamFolderPermanentlyDeleteType._description_validator)]

TeamFolderRenameDetails._previous_folder_name_validator = bv.String()
TeamFolderRenameDetails._new_folder_name_validator = bv.String()
TeamFolderRenameDetails._all_field_names_ = set([
    'previous_folder_name',
    'new_folder_name',
])
TeamFolderRenameDetails._all_fields_ = [
    ('previous_folder_name', TeamFolderRenameDetails._previous_folder_name_validator),
    ('new_folder_name', TeamFolderRenameDetails._new_folder_name_validator),
]

TeamFolderRenameType._description_validator = bv.String()
TeamFolderRenameType._all_field_names_ = set(['description'])
TeamFolderRenameType._all_fields_ = [('description', TeamFolderRenameType._description_validator)]

TeamLinkedAppLogInfo._field_names_ = set([])
TeamLinkedAppLogInfo._all_field_names_ = AppLogInfo._all_field_names_.union(TeamLinkedAppLogInfo._field_names_)
TeamLinkedAppLogInfo._fields_ = []
TeamLinkedAppLogInfo._all_fields_ = AppLogInfo._all_fields_ + TeamLinkedAppLogInfo._fields_

TeamMemberLogInfo._team_member_id_validator = bv.Nullable(team_common.TeamMemberId_validator)
TeamMemberLogInfo._member_external_id_validator = bv.Nullable(team_common.MemberExternalId_validator)
TeamMemberLogInfo._field_names_ = set([
    'team_member_id',
    'member_external_id',
])
TeamMemberLogInfo._all_field_names_ = UserLogInfo._all_field_names_.union(TeamMemberLogInfo._field_names_)
TeamMemberLogInfo._fields_ = [
    ('team_member_id', TeamMemberLogInfo._team_member_id_validator),
    ('member_external_id', TeamMemberLogInfo._member_external_id_validator),
]
TeamMemberLogInfo._all_fields_ = UserLogInfo._all_fields_ + TeamMemberLogInfo._fields_

TeamMembershipType._free_validator = bv.Void()
TeamMembershipType._full_validator = bv.Void()
TeamMembershipType._other_validator = bv.Void()
TeamMembershipType._tagmap = {
    'free': TeamMembershipType._free_validator,
    'full': TeamMembershipType._full_validator,
    'other': TeamMembershipType._other_validator,
}

TeamMembershipType.free = TeamMembershipType('free')
TeamMembershipType.full = TeamMembershipType('full')
TeamMembershipType.other = TeamMembershipType('other')

TeamMergeFromDetails._team_name_validator = bv.String()
TeamMergeFromDetails._all_field_names_ = set(['team_name'])
TeamMergeFromDetails._all_fields_ = [('team_name', TeamMergeFromDetails._team_name_validator)]

TeamMergeFromType._description_validator = bv.String()
TeamMergeFromType._all_field_names_ = set(['description'])
TeamMergeFromType._all_fields_ = [('description', TeamMergeFromType._description_validator)]

TeamMergeToDetails._team_name_validator = bv.String()
TeamMergeToDetails._all_field_names_ = set(['team_name'])
TeamMergeToDetails._all_fields_ = [('team_name', TeamMergeToDetails._team_name_validator)]

TeamMergeToType._description_validator = bv.String()
TeamMergeToType._all_field_names_ = set(['description'])
TeamMergeToType._all_fields_ = [('description', TeamMergeToType._description_validator)]

TeamName._team_display_name_validator = bv.String()
TeamName._team_legal_name_validator = bv.String()
TeamName._all_field_names_ = set([
    'team_display_name',
    'team_legal_name',
])
TeamName._all_fields_ = [
    ('team_display_name', TeamName._team_display_name_validator),
    ('team_legal_name', TeamName._team_legal_name_validator),
]

TeamProfileAddLogoDetails._all_field_names_ = set([])
TeamProfileAddLogoDetails._all_fields_ = []

TeamProfileAddLogoType._description_validator = bv.String()
TeamProfileAddLogoType._all_field_names_ = set(['description'])
TeamProfileAddLogoType._all_fields_ = [('description', TeamProfileAddLogoType._description_validator)]

TeamProfileChangeDefaultLanguageDetails._new_value_validator = common.LanguageCode_validator
TeamProfileChangeDefaultLanguageDetails._previous_value_validator = common.LanguageCode_validator
TeamProfileChangeDefaultLanguageDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
TeamProfileChangeDefaultLanguageDetails._all_fields_ = [
    ('new_value', TeamProfileChangeDefaultLanguageDetails._new_value_validator),
    ('previous_value', TeamProfileChangeDefaultLanguageDetails._previous_value_validator),
]

TeamProfileChangeDefaultLanguageType._description_validator = bv.String()
TeamProfileChangeDefaultLanguageType._all_field_names_ = set(['description'])
TeamProfileChangeDefaultLanguageType._all_fields_ = [('description', TeamProfileChangeDefaultLanguageType._description_validator)]

TeamProfileChangeLogoDetails._all_field_names_ = set([])
TeamProfileChangeLogoDetails._all_fields_ = []

TeamProfileChangeLogoType._description_validator = bv.String()
TeamProfileChangeLogoType._all_field_names_ = set(['description'])
TeamProfileChangeLogoType._all_fields_ = [('description', TeamProfileChangeLogoType._description_validator)]

TeamProfileChangeNameDetails._previous_value_validator = bv.Nullable(TeamName_validator)
TeamProfileChangeNameDetails._new_value_validator = TeamName_validator
TeamProfileChangeNameDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
TeamProfileChangeNameDetails._all_fields_ = [
    ('previous_value', TeamProfileChangeNameDetails._previous_value_validator),
    ('new_value', TeamProfileChangeNameDetails._new_value_validator),
]

TeamProfileChangeNameType._description_validator = bv.String()
TeamProfileChangeNameType._all_field_names_ = set(['description'])
TeamProfileChangeNameType._all_fields_ = [('description', TeamProfileChangeNameType._description_validator)]

TeamProfileRemoveLogoDetails._all_field_names_ = set([])
TeamProfileRemoveLogoDetails._all_fields_ = []

TeamProfileRemoveLogoType._description_validator = bv.String()
TeamProfileRemoveLogoType._all_field_names_ = set(['description'])
TeamProfileRemoveLogoType._all_fields_ = [('description', TeamProfileRemoveLogoType._description_validator)]

TeamSelectiveSyncPolicy._disabled_validator = bv.Void()
TeamSelectiveSyncPolicy._enabled_validator = bv.Void()
TeamSelectiveSyncPolicy._other_validator = bv.Void()
TeamSelectiveSyncPolicy._tagmap = {
    'disabled': TeamSelectiveSyncPolicy._disabled_validator,
    'enabled': TeamSelectiveSyncPolicy._enabled_validator,
    'other': TeamSelectiveSyncPolicy._other_validator,
}

TeamSelectiveSyncPolicy.disabled = TeamSelectiveSyncPolicy('disabled')
TeamSelectiveSyncPolicy.enabled = TeamSelectiveSyncPolicy('enabled')
TeamSelectiveSyncPolicy.other = TeamSelectiveSyncPolicy('other')

TeamSelectiveSyncPolicyChangedDetails._new_value_validator = TeamSelectiveSyncPolicy_validator
TeamSelectiveSyncPolicyChangedDetails._previous_value_validator = TeamSelectiveSyncPolicy_validator
TeamSelectiveSyncPolicyChangedDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
TeamSelectiveSyncPolicyChangedDetails._all_fields_ = [
    ('new_value', TeamSelectiveSyncPolicyChangedDetails._new_value_validator),
    ('previous_value', TeamSelectiveSyncPolicyChangedDetails._previous_value_validator),
]

TeamSelectiveSyncPolicyChangedType._description_validator = bv.String()
TeamSelectiveSyncPolicyChangedType._all_field_names_ = set(['description'])
TeamSelectiveSyncPolicyChangedType._all_fields_ = [('description', TeamSelectiveSyncPolicyChangedType._description_validator)]

TeamSelectiveSyncSettingsChangedDetails._previous_value_validator = files.SyncSetting_validator
TeamSelectiveSyncSettingsChangedDetails._new_value_validator = files.SyncSetting_validator
TeamSelectiveSyncSettingsChangedDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
TeamSelectiveSyncSettingsChangedDetails._all_fields_ = [
    ('previous_value', TeamSelectiveSyncSettingsChangedDetails._previous_value_validator),
    ('new_value', TeamSelectiveSyncSettingsChangedDetails._new_value_validator),
]

TeamSelectiveSyncSettingsChangedType._description_validator = bv.String()
TeamSelectiveSyncSettingsChangedType._all_field_names_ = set(['description'])
TeamSelectiveSyncSettingsChangedType._all_fields_ = [('description', TeamSelectiveSyncSettingsChangedType._description_validator)]

TfaAddBackupPhoneDetails._all_field_names_ = set([])
TfaAddBackupPhoneDetails._all_fields_ = []

TfaAddBackupPhoneType._description_validator = bv.String()
TfaAddBackupPhoneType._all_field_names_ = set(['description'])
TfaAddBackupPhoneType._all_fields_ = [('description', TfaAddBackupPhoneType._description_validator)]

TfaAddSecurityKeyDetails._all_field_names_ = set([])
TfaAddSecurityKeyDetails._all_fields_ = []

TfaAddSecurityKeyType._description_validator = bv.String()
TfaAddSecurityKeyType._all_field_names_ = set(['description'])
TfaAddSecurityKeyType._all_fields_ = [('description', TfaAddSecurityKeyType._description_validator)]

TfaChangeBackupPhoneDetails._all_field_names_ = set([])
TfaChangeBackupPhoneDetails._all_fields_ = []

TfaChangeBackupPhoneType._description_validator = bv.String()
TfaChangeBackupPhoneType._all_field_names_ = set(['description'])
TfaChangeBackupPhoneType._all_fields_ = [('description', TfaChangeBackupPhoneType._description_validator)]

TfaChangePolicyDetails._new_value_validator = team_policies.TwoStepVerificationPolicy_validator
TfaChangePolicyDetails._previous_value_validator = bv.Nullable(team_policies.TwoStepVerificationPolicy_validator)
TfaChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
TfaChangePolicyDetails._all_fields_ = [
    ('new_value', TfaChangePolicyDetails._new_value_validator),
    ('previous_value', TfaChangePolicyDetails._previous_value_validator),
]

TfaChangePolicyType._description_validator = bv.String()
TfaChangePolicyType._all_field_names_ = set(['description'])
TfaChangePolicyType._all_fields_ = [('description', TfaChangePolicyType._description_validator)]

TfaChangeStatusDetails._new_value_validator = TfaConfiguration_validator
TfaChangeStatusDetails._previous_value_validator = bv.Nullable(TfaConfiguration_validator)
TfaChangeStatusDetails._used_rescue_code_validator = bv.Nullable(bv.Boolean())
TfaChangeStatusDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
    'used_rescue_code',
])
TfaChangeStatusDetails._all_fields_ = [
    ('new_value', TfaChangeStatusDetails._new_value_validator),
    ('previous_value', TfaChangeStatusDetails._previous_value_validator),
    ('used_rescue_code', TfaChangeStatusDetails._used_rescue_code_validator),
]

TfaChangeStatusType._description_validator = bv.String()
TfaChangeStatusType._all_field_names_ = set(['description'])
TfaChangeStatusType._all_fields_ = [('description', TfaChangeStatusType._description_validator)]

TfaConfiguration._disabled_validator = bv.Void()
TfaConfiguration._enabled_validator = bv.Void()
TfaConfiguration._sms_validator = bv.Void()
TfaConfiguration._authenticator_validator = bv.Void()
TfaConfiguration._other_validator = bv.Void()
TfaConfiguration._tagmap = {
    'disabled': TfaConfiguration._disabled_validator,
    'enabled': TfaConfiguration._enabled_validator,
    'sms': TfaConfiguration._sms_validator,
    'authenticator': TfaConfiguration._authenticator_validator,
    'other': TfaConfiguration._other_validator,
}

TfaConfiguration.disabled = TfaConfiguration('disabled')
TfaConfiguration.enabled = TfaConfiguration('enabled')
TfaConfiguration.sms = TfaConfiguration('sms')
TfaConfiguration.authenticator = TfaConfiguration('authenticator')
TfaConfiguration.other = TfaConfiguration('other')

TfaRemoveBackupPhoneDetails._all_field_names_ = set([])
TfaRemoveBackupPhoneDetails._all_fields_ = []

TfaRemoveBackupPhoneType._description_validator = bv.String()
TfaRemoveBackupPhoneType._all_field_names_ = set(['description'])
TfaRemoveBackupPhoneType._all_fields_ = [('description', TfaRemoveBackupPhoneType._description_validator)]

TfaRemoveSecurityKeyDetails._all_field_names_ = set([])
TfaRemoveSecurityKeyDetails._all_fields_ = []

TfaRemoveSecurityKeyType._description_validator = bv.String()
TfaRemoveSecurityKeyType._all_field_names_ = set(['description'])
TfaRemoveSecurityKeyType._all_fields_ = [('description', TfaRemoveSecurityKeyType._description_validator)]

TfaResetDetails._all_field_names_ = set([])
TfaResetDetails._all_fields_ = []

TfaResetType._description_validator = bv.String()
TfaResetType._all_field_names_ = set(['description'])
TfaResetType._all_fields_ = [('description', TfaResetType._description_validator)]

TimeUnit._milliseconds_validator = bv.Void()
TimeUnit._seconds_validator = bv.Void()
TimeUnit._minutes_validator = bv.Void()
TimeUnit._hours_validator = bv.Void()
TimeUnit._days_validator = bv.Void()
TimeUnit._weeks_validator = bv.Void()
TimeUnit._months_validator = bv.Void()
TimeUnit._years_validator = bv.Void()
TimeUnit._other_validator = bv.Void()
TimeUnit._tagmap = {
    'milliseconds': TimeUnit._milliseconds_validator,
    'seconds': TimeUnit._seconds_validator,
    'minutes': TimeUnit._minutes_validator,
    'hours': TimeUnit._hours_validator,
    'days': TimeUnit._days_validator,
    'weeks': TimeUnit._weeks_validator,
    'months': TimeUnit._months_validator,
    'years': TimeUnit._years_validator,
    'other': TimeUnit._other_validator,
}

TimeUnit.milliseconds = TimeUnit('milliseconds')
TimeUnit.seconds = TimeUnit('seconds')
TimeUnit.minutes = TimeUnit('minutes')
TimeUnit.hours = TimeUnit('hours')
TimeUnit.days = TimeUnit('days')
TimeUnit.weeks = TimeUnit('weeks')
TimeUnit.months = TimeUnit('months')
TimeUnit.years = TimeUnit('years')
TimeUnit.other = TimeUnit('other')

TrustedNonTeamMemberLogInfo._trusted_non_team_member_type_validator = TrustedNonTeamMemberType_validator
TrustedNonTeamMemberLogInfo._field_names_ = set(['trusted_non_team_member_type'])
TrustedNonTeamMemberLogInfo._all_field_names_ = UserLogInfo._all_field_names_.union(TrustedNonTeamMemberLogInfo._field_names_)
TrustedNonTeamMemberLogInfo._fields_ = [('trusted_non_team_member_type', TrustedNonTeamMemberLogInfo._trusted_non_team_member_type_validator)]
TrustedNonTeamMemberLogInfo._all_fields_ = UserLogInfo._all_fields_ + TrustedNonTeamMemberLogInfo._fields_

TrustedNonTeamMemberType._multi_instance_admin_validator = bv.Void()
TrustedNonTeamMemberType._other_validator = bv.Void()
TrustedNonTeamMemberType._tagmap = {
    'multi_instance_admin': TrustedNonTeamMemberType._multi_instance_admin_validator,
    'other': TrustedNonTeamMemberType._other_validator,
}

TrustedNonTeamMemberType.multi_instance_admin = TrustedNonTeamMemberType('multi_instance_admin')
TrustedNonTeamMemberType.other = TrustedNonTeamMemberType('other')

TwoAccountChangePolicyDetails._new_value_validator = TwoAccountPolicy_validator
TwoAccountChangePolicyDetails._previous_value_validator = bv.Nullable(TwoAccountPolicy_validator)
TwoAccountChangePolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
TwoAccountChangePolicyDetails._all_fields_ = [
    ('new_value', TwoAccountChangePolicyDetails._new_value_validator),
    ('previous_value', TwoAccountChangePolicyDetails._previous_value_validator),
]

TwoAccountChangePolicyType._description_validator = bv.String()
TwoAccountChangePolicyType._all_field_names_ = set(['description'])
TwoAccountChangePolicyType._all_fields_ = [('description', TwoAccountChangePolicyType._description_validator)]

TwoAccountPolicy._disabled_validator = bv.Void()
TwoAccountPolicy._enabled_validator = bv.Void()
TwoAccountPolicy._other_validator = bv.Void()
TwoAccountPolicy._tagmap = {
    'disabled': TwoAccountPolicy._disabled_validator,
    'enabled': TwoAccountPolicy._enabled_validator,
    'other': TwoAccountPolicy._other_validator,
}

TwoAccountPolicy.disabled = TwoAccountPolicy('disabled')
TwoAccountPolicy.enabled = TwoAccountPolicy('enabled')
TwoAccountPolicy.other = TwoAccountPolicy('other')

UserLinkedAppLogInfo._field_names_ = set([])
UserLinkedAppLogInfo._all_field_names_ = AppLogInfo._all_field_names_.union(UserLinkedAppLogInfo._field_names_)
UserLinkedAppLogInfo._fields_ = []
UserLinkedAppLogInfo._all_fields_ = AppLogInfo._all_fields_ + UserLinkedAppLogInfo._fields_

UserNameLogInfo._given_name_validator = bv.String()
UserNameLogInfo._surname_validator = bv.String()
UserNameLogInfo._locale_validator = bv.Nullable(bv.String())
UserNameLogInfo._all_field_names_ = set([
    'given_name',
    'surname',
    'locale',
])
UserNameLogInfo._all_fields_ = [
    ('given_name', UserNameLogInfo._given_name_validator),
    ('surname', UserNameLogInfo._surname_validator),
    ('locale', UserNameLogInfo._locale_validator),
]

UserOrTeamLinkedAppLogInfo._field_names_ = set([])
UserOrTeamLinkedAppLogInfo._all_field_names_ = AppLogInfo._all_field_names_.union(UserOrTeamLinkedAppLogInfo._field_names_)
UserOrTeamLinkedAppLogInfo._fields_ = []
UserOrTeamLinkedAppLogInfo._all_fields_ = AppLogInfo._all_fields_ + UserOrTeamLinkedAppLogInfo._fields_

ViewerInfoPolicyChangedDetails._previous_value_validator = PassPolicy_validator
ViewerInfoPolicyChangedDetails._new_value_validator = PassPolicy_validator
ViewerInfoPolicyChangedDetails._all_field_names_ = set([
    'previous_value',
    'new_value',
])
ViewerInfoPolicyChangedDetails._all_fields_ = [
    ('previous_value', ViewerInfoPolicyChangedDetails._previous_value_validator),
    ('new_value', ViewerInfoPolicyChangedDetails._new_value_validator),
]

ViewerInfoPolicyChangedType._description_validator = bv.String()
ViewerInfoPolicyChangedType._all_field_names_ = set(['description'])
ViewerInfoPolicyChangedType._all_fields_ = [('description', ViewerInfoPolicyChangedType._description_validator)]

WebDeviceSessionLogInfo._session_info_validator = bv.Nullable(WebSessionLogInfo_validator)
WebDeviceSessionLogInfo._user_agent_validator = bv.String()
WebDeviceSessionLogInfo._os_validator = bv.String()
WebDeviceSessionLogInfo._browser_validator = bv.String()
WebDeviceSessionLogInfo._field_names_ = set([
    'session_info',
    'user_agent',
    'os',
    'browser',
])
WebDeviceSessionLogInfo._all_field_names_ = DeviceSessionLogInfo._all_field_names_.union(WebDeviceSessionLogInfo._field_names_)
WebDeviceSessionLogInfo._fields_ = [
    ('session_info', WebDeviceSessionLogInfo._session_info_validator),
    ('user_agent', WebDeviceSessionLogInfo._user_agent_validator),
    ('os', WebDeviceSessionLogInfo._os_validator),
    ('browser', WebDeviceSessionLogInfo._browser_validator),
]
WebDeviceSessionLogInfo._all_fields_ = DeviceSessionLogInfo._all_fields_ + WebDeviceSessionLogInfo._fields_

WebSessionLogInfo._field_names_ = set([])
WebSessionLogInfo._all_field_names_ = SessionLogInfo._all_field_names_.union(WebSessionLogInfo._field_names_)
WebSessionLogInfo._fields_ = []
WebSessionLogInfo._all_fields_ = SessionLogInfo._all_fields_ + WebSessionLogInfo._fields_

WebSessionsChangeFixedLengthPolicyDetails._new_value_validator = bv.Nullable(WebSessionsFixedLengthPolicy_validator)
WebSessionsChangeFixedLengthPolicyDetails._previous_value_validator = bv.Nullable(WebSessionsFixedLengthPolicy_validator)
WebSessionsChangeFixedLengthPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
WebSessionsChangeFixedLengthPolicyDetails._all_fields_ = [
    ('new_value', WebSessionsChangeFixedLengthPolicyDetails._new_value_validator),
    ('previous_value', WebSessionsChangeFixedLengthPolicyDetails._previous_value_validator),
]

WebSessionsChangeFixedLengthPolicyType._description_validator = bv.String()
WebSessionsChangeFixedLengthPolicyType._all_field_names_ = set(['description'])
WebSessionsChangeFixedLengthPolicyType._all_fields_ = [('description', WebSessionsChangeFixedLengthPolicyType._description_validator)]

WebSessionsChangeIdleLengthPolicyDetails._new_value_validator = bv.Nullable(WebSessionsIdleLengthPolicy_validator)
WebSessionsChangeIdleLengthPolicyDetails._previous_value_validator = bv.Nullable(WebSessionsIdleLengthPolicy_validator)
WebSessionsChangeIdleLengthPolicyDetails._all_field_names_ = set([
    'new_value',
    'previous_value',
])
WebSessionsChangeIdleLengthPolicyDetails._all_fields_ = [
    ('new_value', WebSessionsChangeIdleLengthPolicyDetails._new_value_validator),
    ('previous_value', WebSessionsChangeIdleLengthPolicyDetails._previous_value_validator),
]

WebSessionsChangeIdleLengthPolicyType._description_validator = bv.String()
WebSessionsChangeIdleLengthPolicyType._all_field_names_ = set(['description'])
WebSessionsChangeIdleLengthPolicyType._all_fields_ = [('description', WebSessionsChangeIdleLengthPolicyType._description_validator)]

WebSessionsFixedLengthPolicy._defined_validator = DurationLogInfo_validator
WebSessionsFixedLengthPolicy._undefined_validator = bv.Void()
WebSessionsFixedLengthPolicy._other_validator = bv.Void()
WebSessionsFixedLengthPolicy._tagmap = {
    'defined': WebSessionsFixedLengthPolicy._defined_validator,
    'undefined': WebSessionsFixedLengthPolicy._undefined_validator,
    'other': WebSessionsFixedLengthPolicy._other_validator,
}

WebSessionsFixedLengthPolicy.undefined = WebSessionsFixedLengthPolicy('undefined')
WebSessionsFixedLengthPolicy.other = WebSessionsFixedLengthPolicy('other')

WebSessionsIdleLengthPolicy._defined_validator = DurationLogInfo_validator
WebSessionsIdleLengthPolicy._undefined_validator = bv.Void()
WebSessionsIdleLengthPolicy._other_validator = bv.Void()
WebSessionsIdleLengthPolicy._tagmap = {
    'defined': WebSessionsIdleLengthPolicy._defined_validator,
    'undefined': WebSessionsIdleLengthPolicy._undefined_validator,
    'other': WebSessionsIdleLengthPolicy._other_validator,
}

WebSessionsIdleLengthPolicy.undefined = WebSessionsIdleLengthPolicy('undefined')
WebSessionsIdleLengthPolicy.other = WebSessionsIdleLengthPolicy('other')

get_events = bb.Route(
    'get_events',
    1,
    False,
    GetTeamEventsArg_validator,
    GetTeamEventsResult_validator,
    GetTeamEventsError_validator,
    {'host': u'api',
     'style': u'rpc'},
)
get_events_continue = bb.Route(
    'get_events/continue',
    1,
    False,
    GetTeamEventsContinueArg_validator,
    GetTeamEventsResult_validator,
    GetTeamEventsContinueError_validator,
    {'host': u'api',
     'style': u'rpc'},
)

ROUTES = {
    'get_events': get_events,
    'get_events/continue': get_events_continue,
}

