the-algorithm/visibilitylib/src/main/scala/com/twitter/visibility/models/SafetyLevelGroup.scala

555 lines
21 KiB
Scala

package com.twitter.visibility.models
import com.twitter.visibility.models.SafetyLevel.AccessInternalPromotedContent
import com.twitter.visibility.models.SafetyLevel.AdsBusinessSettings
import com.twitter.visibility.models.SafetyLevel.AdsCampaign
import com.twitter.visibility.models.SafetyLevel.AdsManager
import com.twitter.visibility.models.SafetyLevel.AdsReportingDashboard
import com.twitter.visibility.models.SafetyLevel.AllSubscribedLists
import com.twitter.visibility.models.SafetyLevel.Appeals
import com.twitter.visibility.models.SafetyLevel.ArticleTweetTimeline
import com.twitter.visibility.models.SafetyLevel.BaseQig
import com.twitter.visibility.models.SafetyLevel.BirdwatchNeedsYourHelpNotifications
import com.twitter.visibility.models.SafetyLevel.BirdwatchNoteAuthor
import com.twitter.visibility.models.SafetyLevel.BirdwatchNoteTweetsTimeline
import com.twitter.visibility.models.SafetyLevel.BlockMuteUsersTimeline
import com.twitter.visibility.models.SafetyLevel.BrandSafety
import com.twitter.visibility.models.SafetyLevel.CardPollVoting
import com.twitter.visibility.models.SafetyLevel.CardsService
import com.twitter.visibility.models.SafetyLevel.ContentControlToolInstall
import com.twitter.visibility.models.SafetyLevel.ConversationFocalPrehydration
import com.twitter.visibility.models.SafetyLevel.ConversationFocalTweet
import com.twitter.visibility.models.SafetyLevel.ConversationInjectedTweet
import com.twitter.visibility.models.SafetyLevel.ConversationReply
import com.twitter.visibility.models.SafetyLevel.CuratedTrendsRepresentativeTweet
import com.twitter.visibility.models.SafetyLevel.CurationPolicyViolations
import com.twitter.visibility.models.SafetyLevel.DesFollowingAndFollowersUserList
import com.twitter.visibility.models.SafetyLevel.DesHomeTimeline
import com.twitter.visibility.models.SafetyLevel.DesQuoteTweetTimeline
import com.twitter.visibility.models.SafetyLevel.DesRealtime
import com.twitter.visibility.models.SafetyLevel.DesRealtimeSpamEnrichment
import com.twitter.visibility.models.SafetyLevel.DesRealtimeTweetFilter
import com.twitter.visibility.models.SafetyLevel.DesRetweetingUsers
import com.twitter.visibility.models.SafetyLevel.DesTweetDetail
import com.twitter.visibility.models.SafetyLevel.DesTweetLikingUsers
import com.twitter.visibility.models.SafetyLevel.DesUserBookmarks
import com.twitter.visibility.models.SafetyLevel.DesUserLikedTweets
import com.twitter.visibility.models.SafetyLevel.DesUserMentions
import com.twitter.visibility.models.SafetyLevel.DesUserTweets
import com.twitter.visibility.models.SafetyLevel.DevPlatformComplianceStream
import com.twitter.visibility.models.SafetyLevel.DevPlatformGetListTweets
import com.twitter.visibility.models.SafetyLevel.DirectMessages
import com.twitter.visibility.models.SafetyLevel.DirectMessagesConversationList
import com.twitter.visibility.models.SafetyLevel.DirectMessagesConversationTimeline
import com.twitter.visibility.models.SafetyLevel.DirectMessagesInbox
import com.twitter.visibility.models.SafetyLevel.DirectMessagesMutedUsers
import com.twitter.visibility.models.SafetyLevel.DirectMessagesPinned
import com.twitter.visibility.models.SafetyLevel.DirectMessagesSearch
import com.twitter.visibility.models.SafetyLevel.EditHistoryTimeline
import com.twitter.visibility.models.SafetyLevel.ElevatedQuoteTweetTimeline
import com.twitter.visibility.models.SafetyLevel.EmbedTweetMarkup
import com.twitter.visibility.models.SafetyLevel.EmbeddedTweet
import com.twitter.visibility.models.SafetyLevel.EmbedsPublicInterestNotice
import com.twitter.visibility.models.SafetyLevel.ExploreRecommendations
import com.twitter.visibility.models.SafetyLevel.FilterAll
import com.twitter.visibility.models.SafetyLevel.FilterAllPlaceholder
import com.twitter.visibility.models.SafetyLevel.FilterDefault
import com.twitter.visibility.models.SafetyLevel.FilterNone
import com.twitter.visibility.models.SafetyLevel.FollowedTopicsTimeline
import com.twitter.visibility.models.SafetyLevel.FollowerConnections
import com.twitter.visibility.models.SafetyLevel.FollowingAndFollowersUserList
import com.twitter.visibility.models.SafetyLevel.ForDevelopmentOnly
import com.twitter.visibility.models.SafetyLevel.FriendsFollowingList
import com.twitter.visibility.models.SafetyLevel.GraphqlDefault
import com.twitter.visibility.models.SafetyLevel.GryphonDecksAndColumns
import com.twitter.visibility.models.SafetyLevel.HumanizationNudge
import com.twitter.visibility.models.SafetyLevel.KitchenSinkDevelopment
import com.twitter.visibility.models.SafetyLevel.ListHeader
import com.twitter.visibility.models.SafetyLevel.ListMemberships
import com.twitter.visibility.models.SafetyLevel.ListOwnerships
import com.twitter.visibility.models.SafetyLevel.ListRecommendations
import com.twitter.visibility.models.SafetyLevel.ListSearch
import com.twitter.visibility.models.SafetyLevel.ListSubscriptions
import com.twitter.visibility.models.SafetyLevel.LivePipelineEngagementCounts
import com.twitter.visibility.models.SafetyLevel.LiveVideoTimeline
import com.twitter.visibility.models.SafetyLevel.MagicRecs
import com.twitter.visibility.models.SafetyLevel.MagicRecsAggressive
import com.twitter.visibility.models.SafetyLevel.MagicRecsAggressiveV2
import com.twitter.visibility.models.SafetyLevel.MagicRecsV2
import com.twitter.visibility.models.SafetyLevel.Minimal
import com.twitter.visibility.models.SafetyLevel.ModeratedTweetsTimeline
import com.twitter.visibility.models.SafetyLevel.Moments
import com.twitter.visibility.models.SafetyLevel.NearbyTimeline
import com.twitter.visibility.models.SafetyLevel.NewUserExperience
import com.twitter.visibility.models.SafetyLevel.NotificationsIbis
import com.twitter.visibility.models.SafetyLevel.NotificationsPlatform
import com.twitter.visibility.models.SafetyLevel.NotificationsPlatformPush
import com.twitter.visibility.models.SafetyLevel.NotificationsQig
import com.twitter.visibility.models.SafetyLevel.NotificationsRead
import com.twitter.visibility.models.SafetyLevel.NotificationsTimelineDeviceFollow
import com.twitter.visibility.models.SafetyLevel.NotificationsWrite
import com.twitter.visibility.models.SafetyLevel.NotificationsWriterTweetHydrator
import com.twitter.visibility.models.SafetyLevel.NotificationsWriterV2
import com.twitter.visibility.models.SafetyLevel.ProfileMixerFavorites
import com.twitter.visibility.models.SafetyLevel.ProfileMixerMedia
import com.twitter.visibility.models.SafetyLevel.QuickPromoteTweetEligibility
import com.twitter.visibility.models.SafetyLevel.QuoteTweetTimeline
import com.twitter.visibility.models.SafetyLevel.QuotedTweetRules
import com.twitter.visibility.models.SafetyLevel.RecosVideo
import com.twitter.visibility.models.SafetyLevel.RecosWritePath
import com.twitter.visibility.models.SafetyLevel.RepliesGrouping
import com.twitter.visibility.models.SafetyLevel.ReportCenter
import com.twitter.visibility.models.SafetyLevel.ReturningUserExperienceFocalTweet
import com.twitter.visibility.models.SafetyLevel.Revenue
import com.twitter.visibility.models.SafetyLevel.SafeSearchMinimal
import com.twitter.visibility.models.SafetyLevel.SafeSearchStrict
import com.twitter.visibility.models.SafetyLevel.SearchBlenderUserRules
import com.twitter.visibility.models.SafetyLevel.SearchHydration
import com.twitter.visibility.models.SafetyLevel.SearchLatest
import com.twitter.visibility.models.SafetyLevel.SearchLatestUserRules
import com.twitter.visibility.models.SafetyLevel.SearchMixerSrpMinimal
import com.twitter.visibility.models.SafetyLevel.SearchMixerSrpStrict
import com.twitter.visibility.models.SafetyLevel.SearchPeopleSrp
import com.twitter.visibility.models.SafetyLevel.SearchPeopleTypeahead
import com.twitter.visibility.models.SafetyLevel.SearchPhoto
import com.twitter.visibility.models.SafetyLevel.SearchTop
import com.twitter.visibility.models.SafetyLevel.SearchTopQig
import com.twitter.visibility.models.SafetyLevel.SearchTrendTakeoverPromotedTweet
import com.twitter.visibility.models.SafetyLevel.SearchVideo
import com.twitter.visibility.models.SafetyLevel.ShoppingManagerSpyMode
import com.twitter.visibility.models.SafetyLevel.SignalsReactions
import com.twitter.visibility.models.SafetyLevel.SignalsTweetReactingUsers
import com.twitter.visibility.models.SafetyLevel.SoftInterventionPivot
import com.twitter.visibility.models.SafetyLevel.SpaceFleetline
import com.twitter.visibility.models.SafetyLevel.SpaceHomeTimelineUpranking
import com.twitter.visibility.models.SafetyLevel.SpaceJoinScreen
import com.twitter.visibility.models.SafetyLevel.SpaceNotifications
import com.twitter.visibility.models.SafetyLevel.SpaceTweetAvatarHomeTimeline
import com.twitter.visibility.models.SafetyLevel.SpacesParticipants
import com.twitter.visibility.models.SafetyLevel.SpacesSellerApplicationStatus
import com.twitter.visibility.models.SafetyLevel.SpacesSharing
import com.twitter.visibility.models.SafetyLevel.StickersTimeline
import com.twitter.visibility.models.SafetyLevel.StratoExtLimitedEngagements
import com.twitter.visibility.models.SafetyLevel.StreamServices
import com.twitter.visibility.models.SafetyLevel.SuperFollowerConnections
import com.twitter.visibility.models.SafetyLevel.SuperLike
import com.twitter.visibility.models.SafetyLevel.Test
import com.twitter.visibility.models.SafetyLevel.TimelineBookmark
import com.twitter.visibility.models.SafetyLevel.TimelineContentControls
import com.twitter.visibility.models.SafetyLevel.TimelineConversations
import com.twitter.visibility.models.SafetyLevel.TimelineConversationsDownranking
import com.twitter.visibility.models.SafetyLevel.TimelineConversationsDownrankingMinimal
import com.twitter.visibility.models.SafetyLevel.TimelineFavorites
import com.twitter.visibility.models.SafetyLevel.TimelineFavoritesSelfView
import com.twitter.visibility.models.SafetyLevel.TimelineFocalTweet
import com.twitter.visibility.models.SafetyLevel.TimelineFollowingActivity
import com.twitter.visibility.models.SafetyLevel.TimelineHomeCommunities
import com.twitter.visibility.models.SafetyLevel.TimelineHomeHydration
import com.twitter.visibility.models.SafetyLevel.TimelineHomeLatest
import com.twitter.visibility.models.SafetyLevel.TimelineHomePromotedHydration
import com.twitter.visibility.models.SafetyLevel.TimelineHomeRecommendations
import com.twitter.visibility.models.SafetyLevel.TimelineHomeTopicFollowRecommendations
import com.twitter.visibility.models.SafetyLevel.TimelineInjection
import com.twitter.visibility.models.SafetyLevel.TimelineLikedBy
import com.twitter.visibility.models.SafetyLevel.TimelineLists
import com.twitter.visibility.models.SafetyLevel.TimelineMedia
import com.twitter.visibility.models.SafetyLevel.TimelineMentions
import com.twitter.visibility.models.SafetyLevel.TimelineModeratedTweetsHydration
import com.twitter.visibility.models.SafetyLevel.TimelineProfileAll
import com.twitter.visibility.models.SafetyLevel.TimelineProfileSpaces
import com.twitter.visibility.models.SafetyLevel.TimelineProfileSuperFollows
import com.twitter.visibility.models.SafetyLevel.TimelineScorer
import com.twitter.visibility.models.SafetyLevel.Tombstoning
import com.twitter.visibility.models.SafetyLevel.TopicsLandingPageTopicRecommendations
import com.twitter.visibility.models.SafetyLevel.TrendsRepresentativeTweet
import com.twitter.visibility.models.SafetyLevel.TrustedFriendsUserList
import com.twitter.visibility.models.SafetyLevel.TweetDetail
import com.twitter.visibility.models.SafetyLevel.TweetDetailNonToo
import com.twitter.visibility.models.SafetyLevel.TweetDetailWithInjectionsHydration
import com.twitter.visibility.models.SafetyLevel.TweetEngagers
import com.twitter.visibility.models.SafetyLevel.TweetReplyNudge
import com.twitter.visibility.models.SafetyLevel.TweetWritesApi
import com.twitter.visibility.models.SafetyLevel.TwitterArticleCompose
import com.twitter.visibility.models.SafetyLevel.TwitterArticleProfileTab
import com.twitter.visibility.models.SafetyLevel.TwitterArticleRead
import com.twitter.visibility.models.SafetyLevel.UserMilestoneRecommendation
import com.twitter.visibility.models.SafetyLevel.UserProfileHeader
import com.twitter.visibility.models.SafetyLevel.UserSelfViewOnly
import com.twitter.visibility.models.SafetyLevel.UserSettings
import com.twitter.visibility.models.SafetyLevel.VideoAds
import com.twitter.visibility.models.SafetyLevel.WritePathLimitedActionsEnforcement
import com.twitter.visibility.models.SafetyLevel.ZipbirdConsumerArchives
sealed trait SafetyLevelGroup { val levels: Set[SafetyLevel] }
object SafetyLevelGroup {
case object Ads extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
AdsBusinessSettings,
AdsCampaign,
AdsManager,
AdsReportingDashboard,
BrandSafety,
VideoAds,
QuickPromoteTweetEligibility
)
}
case object ArticleTimeline extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
ArticleTweetTimeline,
)
}
case object ArticleTweets extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
TwitterArticleCompose,
TwitterArticleProfileTab,
TwitterArticleRead,
)
}
case object Birdwatch extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
BirdwatchNoteAuthor,
BirdwatchNoteTweetsTimeline,
BirdwatchNeedsYourHelpNotifications,
)
}
case object Cards extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
CardPollVoting,
CardsService,
)
}
case object Communities extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
SafetyLevel.Communities
)
}
case object Conversation extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
ConversationFocalPrehydration,
ConversationFocalTweet,
ConversationInjectedTweet,
ConversationReply,
Tombstoning,
)
}
case object CreativeContainerService extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
AccessInternalPromotedContent
)
}
case object Des extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
DevPlatformGetListTweets,
DesFollowingAndFollowersUserList,
DesHomeTimeline,
DesQuoteTweetTimeline,
DesRetweetingUsers,
DesTweetDetail,
DesTweetLikingUsers,
DesUserBookmarks,
DesUserLikedTweets,
DesUserMentions,
DesUserTweets,
DevPlatformComplianceStream,
)
}
case object DesStream extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
DesRealtime,
DesRealtimeSpamEnrichment,
DesRealtimeTweetFilter,
)
}
case object Dm extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
DirectMessages,
DirectMessagesConversationList,
DirectMessagesConversationTimeline,
DirectMessagesInbox,
DirectMessagesMutedUsers,
DirectMessagesPinned,
DirectMessagesSearch,
)
}
case object Followers extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
FollowedTopicsTimeline,
FollowerConnections,
FollowingAndFollowersUserList,
FriendsFollowingList,
)
}
case object Graphql extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
FilterDefault,
GraphqlDefault,
SoftInterventionPivot,
)
}
case object Jiminy extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
HumanizationNudge,
TweetReplyNudge,
)
}
case object Lists extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
AllSubscribedLists,
ListHeader,
ListMemberships,
ListOwnerships,
ListRecommendations,
ListSearch,
ListSubscriptions,
)
}
case object Notifications extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
NotificationsIbis,
NotificationsPlatform,
NotificationsPlatformPush,
NotificationsQig,
NotificationsRead,
NotificationsTimelineDeviceFollow,
NotificationsWrite,
NotificationsWriterTweetHydrator,
NotificationsWriterV2,
)
}
case object Other extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
CuratedTrendsRepresentativeTweet,
CurationPolicyViolations,
BaseQig,
Appeals,
ContentControlToolInstall,
EditHistoryTimeline,
ElevatedQuoteTweetTimeline,
EmbeddedTweet,
EmbedsPublicInterestNotice,
EmbedTweetMarkup,
ExploreRecommendations,
WritePathLimitedActionsEnforcement,
LiveVideoTimeline,
LivePipelineEngagementCounts,
Minimal,
Moments,
NearbyTimeline,
NewUserExperience,
QuoteTweetTimeline,
QuotedTweetRules,
ReportCenter,
Revenue,
ShoppingManagerSpyMode,
StickersTimeline,
SuperLike,
TrendsRepresentativeTweet,
TrustedFriendsUserList,
GryphonDecksAndColumns,
TweetEngagers,
TweetWritesApi,
UserMilestoneRecommendation,
StreamServices,
ZipbirdConsumerArchives
)
}
case object Profile extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
UserProfileHeader,
UserSelfViewOnly,
UserSettings,
)
}
case object Reactions extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
SignalsReactions,
SignalsTweetReactingUsers,
)
}
case object Recommendations extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
MagicRecs,
MagicRecsV2,
MagicRecsAggressive,
MagicRecsAggressiveV2,
SafetyLevel.Recommendations,
RecosVideo,
RecosWritePath,
)
}
case object ReturningUserExperience extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
SafetyLevel.ReturningUserExperience,
ReturningUserExperienceFocalTweet,
)
}
case object SafeSearch extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
SafeSearchMinimal,
SafeSearchStrict,
)
}
case object Search extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
SearchHydration,
SearchLatest,
SearchTop,
SearchTopQig,
SearchPeopleSrp,
SearchPeopleTypeahead,
SearchPhoto,
SearchTrendTakeoverPromotedTweet,
SearchVideo,
SearchBlenderUserRules,
SearchLatestUserRules,
)
}
case object SearchMixer extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
SearchMixerSrpMinimal,
SearchMixerSrpStrict,
)
}
case object Socialproof extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
SafetyLevel.SocialProof
)
}
case object Spaces extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
SpaceFleetline,
SpaceHomeTimelineUpranking,
SpaceJoinScreen,
SpaceNotifications,
SafetyLevel.Spaces,
SpacesParticipants,
SpacesSellerApplicationStatus,
SpacesSharing,
SpaceTweetAvatarHomeTimeline,
)
}
case object Strato extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
StratoExtLimitedEngagements
)
}
case object Superfollows extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
SuperFollowerConnections,
TimelineProfileSuperFollows,
)
}
case object Testing extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
ForDevelopmentOnly,
KitchenSinkDevelopment,
Test,
)
}
case object Timeline extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
BlockMuteUsersTimeline,
TimelineBookmark,
TimelineContentControls,
TimelineConversationsDownranking,
TimelineConversationsDownrankingMinimal,
TimelineFavorites,
TimelineFavoritesSelfView,
TimelineFollowingActivity,
TimelineScorer,
TimelineInjection,
TimelineLikedBy,
TimelineLists,
TimelineMedia,
TimelineMentions,
ModeratedTweetsTimeline,
TimelineModeratedTweetsHydration,
)
}
case object TopicRecommendations extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
SafetyLevel.TopicRecommendations,
TopicsLandingPageTopicRecommendations,
)
}
case object TimelineProfile extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
SafetyLevel.TimelineProfile,
TimelineProfileAll,
TimelineProfileSpaces,
TimelineMedia,
ProfileMixerMedia,
TimelineFavorites,
ProfileMixerFavorites
)
}
case object TimelineHome extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
SafetyLevel.TimelineHome,
TimelineHomeCommunities,
TimelineHomeHydration,
TimelineHomeLatest,
TimelineHomePromotedHydration,
TimelineHomeRecommendations,
TimelineHomeTopicFollowRecommendations,
)
}
case object TlsApi extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
TimelineConversations,
TimelineFocalTweet,
)
}
case object TweetDetails extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
TweetDetail,
TweetDetailNonToo,
TweetDetailWithInjectionsHydration,
RepliesGrouping,
)
}
case object Special extends SafetyLevelGroup {
override val levels: Set[SafetyLevel] = Set(
FilterAll,
FilterAllPlaceholder,
FilterNone,
)
}
}