module Galley.API.Public.LegalHold where
import Galley.API.LegalHold
import Galley.App
import Wire.API.Routes.API
import Wire.API.Routes.Public.Galley.LegalHold
legalHoldAPI :: API LegalHoldAPI GalleyEffects
legalHoldAPI :: API LegalHoldAPI GalleyEffects
legalHoldAPI =
forall {k} (name :: k) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
forall (name :: Symbol) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
mkNamedAPI @"create-legal-hold-settings" ServerT
(Summary "Create legal hold service settings"
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'LegalHoldServiceInvalidKey
:> (CanThrow 'LegalHoldServiceBadResponse
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings"
:> (ReqBody '[JSON] NewLegalHoldService
:> MultiVerb
'POST
'[JSON]
'[Respond
201
"Legal hold service settings created"
ViewLegalHoldService]
ViewLegalHoldService))))))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Create legal hold service settings"
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'LegalHoldServiceInvalidKey
:> (CanThrow 'LegalHoldServiceBadResponse
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings"
:> (ReqBody '[JSON] NewLegalHoldService
:> MultiVerb
'POST
'[JSON]
'[Respond
201
"Legal hold service settings created"
ViewLegalHoldService]
ViewLegalHoldService)))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]))
Local UserId
-> TeamId
-> NewLegalHoldService
-> Sem
'[ErrorS 'NotATeamMember, Error (Tagged OperationDenied ()),
Error (Tagged 'LegalHoldNotEnabled ()),
Error (Tagged 'LegalHoldServiceInvalidKey ()),
Error (Tagged 'LegalHoldServiceBadResponse ()), BrigAccess,
SparAccess, NotificationSubsystem, GundeckAPIAccess, Rpc,
ExternalAccess, FederatorAccess, BackendNotificationQueueAccess,
BotAccess, FireAndForget, ClientStore, CodeStore, ProposalStore,
ConversationStore, SubConversationStore, Random,
CustomBackendStore, TeamFeatureStore, LegalHoldStore, MemberStore,
SearchVisibilityStore, ServiceStore, TeamNotificationStore,
TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
ViewLegalHoldService
forall (r :: EffectRow).
(Member (ErrorS 'NotATeamMember) r,
Member (Error (Tagged OperationDenied ())) r,
Member (Error (Tagged 'LegalHoldNotEnabled ())) r,
Member (Error (Tagged 'LegalHoldServiceInvalidKey ())) r,
Member (Error (Tagged 'LegalHoldServiceBadResponse ())) r,
Member LegalHoldStore r, Member TeamFeatureStore r,
Member TeamStore r, Member (Logger (Msg -> Msg)) r) =>
Local UserId
-> TeamId -> NewLegalHoldService -> Sem r ViewLegalHoldService
createSettings
API
(Named
"create-legal-hold-settings"
(Summary "Create legal hold service settings"
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'LegalHoldServiceInvalidKey
:> (CanThrow 'LegalHoldServiceBadResponse
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings"
:> (ReqBody '[JSON] NewLegalHoldService
:> MultiVerb
'POST
'[JSON]
'[Respond
201
"Legal hold service settings created"
ViewLegalHoldService]
ViewLegalHoldService)))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
-> API
(Named
"get-legal-hold-settings"
(Summary "Get legal hold service settings"
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings" :> Get '[JSON] ViewLegalHoldService))))))))
:<|> (Named
"delete-legal-hold-settings"
(Summary "Delete legal hold service settings"
:> (CanThrow AuthenticationError
:> (CanThrow OperationDenied
:> (CanThrow 'NotATeamMember
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'LegalHoldDisableUnimplemented
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to members with a legalhold client (via brig)\n- UserLegalHoldDisabled event to contacts of members with a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings"
:> (ReqBody
'[JSON]
RemoveLegalHoldSettingsRequest
:> MultiVerb
'DELETE
'[JSON]
'[RespondEmpty
204
"Legal hold service settings deleted"]
()))))))))))))))))))
:<|> (Named
"get-legal-hold"
(Summary "Get legal hold status"
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> Get '[JSON] UserLegalHoldStatusResponse)))))))
:<|> (Named
"consent-to-legal-hold"
(Summary "Consent to legal hold"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("consent"
:> MultiVerb
'POST
'[JSON]
GrantConsentResultResponseTypes
GrantConsentResult)))))))))))
:<|> (Named
"request-legal-hold-device"
(Summary "Request legal hold device"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'NoUserLegalHoldConsent
:> (CanThrow
'LegalHoldServiceBadResponse
:> (CanThrow
'LegalHoldServiceNotRegistered
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (CanThrow
'MLSLegalholdIncompatible
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (Description
"This endpoint can lead to the following events being sent:\n- LegalHoldClientRequested event to contacts of the user the device is requested for, if they didn't already have a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> MultiVerb
'POST
'[JSON]
RequestDeviceResultResponseType
RequestDeviceResult)))))))))))))))))))
:<|> (Named
"disable-legal-hold-for-user"
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture
"tid" TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse)))))))))))))))
:<|> Named
"approve-legal-hold-device"
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow
('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow
'UserLegalHoldNotPending
:> (CanThrow
'NoLegalHoldDeviceAllocated
:> (CanThrow
'LegalHoldServiceNotRegistered
:> (CanThrow
'UserLegalHoldAlreadyEnabled
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
())))))))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
-> API
(Named
"create-legal-hold-settings"
(Summary "Create legal hold service settings"
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'LegalHoldServiceInvalidKey
:> (CanThrow 'LegalHoldServiceBadResponse
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings"
:> (ReqBody '[JSON] NewLegalHoldService
:> MultiVerb
'POST
'[JSON]
'[Respond
201
"Legal hold service settings created"
ViewLegalHoldService]
ViewLegalHoldService))))))))))))
:<|> (Named
"get-legal-hold-settings"
(Summary "Get legal hold service settings"
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings" :> Get '[JSON] ViewLegalHoldService))))))))
:<|> (Named
"delete-legal-hold-settings"
(Summary "Delete legal hold service settings"
:> (CanThrow AuthenticationError
:> (CanThrow OperationDenied
:> (CanThrow 'NotATeamMember
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'LegalHoldDisableUnimplemented
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to members with a legalhold client (via brig)\n- UserLegalHoldDisabled event to contacts of members with a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings"
:> (ReqBody
'[JSON]
RemoveLegalHoldSettingsRequest
:> MultiVerb
'DELETE
'[JSON]
'[RespondEmpty
204
"Legal hold service settings deleted"]
()))))))))))))))))))
:<|> (Named
"get-legal-hold"
(Summary "Get legal hold status"
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> Get '[JSON] UserLegalHoldStatusResponse)))))))
:<|> (Named
"consent-to-legal-hold"
(Summary "Consent to legal hold"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("consent"
:> MultiVerb
'POST
'[JSON]
GrantConsentResultResponseTypes
GrantConsentResult)))))))))))
:<|> (Named
"request-legal-hold-device"
(Summary "Request legal hold device"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'NoUserLegalHoldConsent
:> (CanThrow
'LegalHoldServiceBadResponse
:> (CanThrow
'LegalHoldServiceNotRegistered
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (CanThrow
'MLSLegalholdIncompatible
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (Description
"This endpoint can lead to the following events being sent:\n- LegalHoldClientRequested event to contacts of the user the device is requested for, if they didn't already have a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> MultiVerb
'POST
'[JSON]
RequestDeviceResultResponseType
RequestDeviceResult)))))))))))))))))))
:<|> (Named
"disable-legal-hold-for-user"
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow
('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow
'LegalHoldServiceNotRegistered
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse)))))))))))))))
:<|> Named
"approve-legal-hold-device"
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow
('ActionDenied
'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow
'UserLegalHoldNotPending
:> (CanThrow
'NoLegalHoldDeviceAllocated
:> (CanThrow
'LegalHoldServiceNotRegistered
:> (CanThrow
'UserLegalHoldAlreadyEnabled
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
()))))))))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
forall api1 (r :: EffectRow) api2.
API api1 r -> API api2 r -> API (api1 :<|> api2) r
<@> forall {k} (name :: k) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
forall (name :: Symbol) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
mkNamedAPI @"get-legal-hold-settings" ServerT
(Summary "Get legal hold service settings"
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings" :> Get '[JSON] ViewLegalHoldService))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Get legal hold service settings"
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings" :> Get '[JSON] ViewLegalHoldService)))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]))
Local UserId
-> TeamId
-> Sem
'[ErrorS 'NotATeamMember, Error (Tagged OperationDenied ()),
BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
ViewLegalHoldService
forall (r :: EffectRow).
(Member (ErrorS 'NotATeamMember) r, Member LegalHoldStore r,
Member TeamFeatureStore r, Member TeamStore r) =>
Local UserId -> TeamId -> Sem r ViewLegalHoldService
getSettings
API
(Named
"get-legal-hold-settings"
(Summary "Get legal hold service settings"
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings" :> Get '[JSON] ViewLegalHoldService)))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
-> API
(Named
"delete-legal-hold-settings"
(Summary "Delete legal hold service settings"
:> (CanThrow AuthenticationError
:> (CanThrow OperationDenied
:> (CanThrow 'NotATeamMember
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'LegalHoldDisableUnimplemented
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to members with a legalhold client (via brig)\n- UserLegalHoldDisabled event to contacts of members with a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings"
:> (ReqBody
'[JSON]
RemoveLegalHoldSettingsRequest
:> MultiVerb
'DELETE
'[JSON]
'[RespondEmpty
204
"Legal hold service settings deleted"]
()))))))))))))))))))
:<|> (Named
"get-legal-hold"
(Summary "Get legal hold status"
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> Get '[JSON] UserLegalHoldStatusResponse)))))))
:<|> (Named
"consent-to-legal-hold"
(Summary "Consent to legal hold"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("consent"
:> MultiVerb
'POST
'[JSON]
GrantConsentResultResponseTypes
GrantConsentResult)))))))))))
:<|> (Named
"request-legal-hold-device"
(Summary "Request legal hold device"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'NoUserLegalHoldConsent
:> (CanThrow 'LegalHoldServiceBadResponse
:> (CanThrow
'LegalHoldServiceNotRegistered
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (CanThrow
'MLSLegalholdIncompatible
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (Description
"This endpoint can lead to the following events being sent:\n- LegalHoldClientRequested event to contacts of the user the device is requested for, if they didn't already have a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> MultiVerb
'POST
'[JSON]
RequestDeviceResultResponseType
RequestDeviceResult)))))))))))))))))))
:<|> (Named
"disable-legal-hold-for-user"
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture
"uid" UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse)))))))))))))))
:<|> Named
"approve-legal-hold-device"
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldNotPending
:> (CanThrow
'NoLegalHoldDeviceAllocated
:> (CanThrow
'LegalHoldServiceNotRegistered
:> (CanThrow
'UserLegalHoldAlreadyEnabled
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
()))))))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
-> API
(Named
"get-legal-hold-settings"
(Summary "Get legal hold service settings"
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings" :> Get '[JSON] ViewLegalHoldService))))))))
:<|> (Named
"delete-legal-hold-settings"
(Summary "Delete legal hold service settings"
:> (CanThrow AuthenticationError
:> (CanThrow OperationDenied
:> (CanThrow 'NotATeamMember
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'LegalHoldDisableUnimplemented
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to members with a legalhold client (via brig)\n- UserLegalHoldDisabled event to contacts of members with a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings"
:> (ReqBody
'[JSON]
RemoveLegalHoldSettingsRequest
:> MultiVerb
'DELETE
'[JSON]
'[RespondEmpty
204
"Legal hold service settings deleted"]
()))))))))))))))))))
:<|> (Named
"get-legal-hold"
(Summary "Get legal hold status"
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> Get '[JSON] UserLegalHoldStatusResponse)))))))
:<|> (Named
"consent-to-legal-hold"
(Summary "Consent to legal hold"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("consent"
:> MultiVerb
'POST
'[JSON]
GrantConsentResultResponseTypes
GrantConsentResult)))))))))))
:<|> (Named
"request-legal-hold-device"
(Summary "Request legal hold device"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'NoUserLegalHoldConsent
:> (CanThrow
'LegalHoldServiceBadResponse
:> (CanThrow
'LegalHoldServiceNotRegistered
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (CanThrow
'MLSLegalholdIncompatible
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (Description
"This endpoint can lead to the following events being sent:\n- LegalHoldClientRequested event to contacts of the user the device is requested for, if they didn't already have a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> MultiVerb
'POST
'[JSON]
RequestDeviceResultResponseType
RequestDeviceResult)))))))))))))))))))
:<|> (Named
"disable-legal-hold-for-user"
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture
"tid" TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse)))))))))))))))
:<|> Named
"approve-legal-hold-device"
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow
('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow
'UserLegalHoldNotPending
:> (CanThrow
'NoLegalHoldDeviceAllocated
:> (CanThrow
'LegalHoldServiceNotRegistered
:> (CanThrow
'UserLegalHoldAlreadyEnabled
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
())))))))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
forall api1 (r :: EffectRow) api2.
API api1 r -> API api2 r -> API (api1 :<|> api2) r
<@> forall {k} (name :: k) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
forall (name :: Symbol) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
mkNamedAPI @"delete-legal-hold-settings" ServerT
(Summary "Delete legal hold service settings"
:> (CanThrow AuthenticationError
:> (CanThrow OperationDenied
:> (CanThrow 'NotATeamMember
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'LegalHoldDisableUnimplemented
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to members with a legalhold client (via brig)\n- UserLegalHoldDisabled event to contacts of members with a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings"
:> (ReqBody
'[JSON]
RemoveLegalHoldSettingsRequest
:> MultiVerb
'DELETE
'[JSON]
'[RespondEmpty
204
"Legal hold service settings deleted"]
()))))))))))))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Delete legal hold service settings"
:> (CanThrow AuthenticationError
:> (CanThrow OperationDenied
:> (CanThrow 'NotATeamMember
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'LegalHoldDisableUnimplemented
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to members with a legalhold client (via brig)\n- UserLegalHoldDisabled event to contacts of members with a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings"
:> (ReqBody
'[JSON]
RemoveLegalHoldSettingsRequest
:> MultiVerb
'DELETE
'[JSON]
'[RespondEmpty
204
"Legal hold service settings deleted"]
())))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]))
Local UserId
-> TeamId
-> RemoveLegalHoldSettingsRequest
-> Sem
'[Error AuthenticationError, Error (Tagged OperationDenied ()),
ErrorS 'NotATeamMember,
Error (Tagged ('ActionDenied 'RemoveConversationMember) ()),
Error (Tagged 'InvalidOperation ()),
Error (Tagged 'LegalHoldNotEnabled ()),
Error (Tagged 'LegalHoldDisableUnimplemented ()),
Error (Tagged 'LegalHoldServiceNotRegistered ()),
Error (Tagged 'UserLegalHoldIllegalOperation ()),
Error (Tagged 'LegalHoldCouldNotBlockConnections ()), BrigAccess,
SparAccess, NotificationSubsystem, GundeckAPIAccess, Rpc,
ExternalAccess, FederatorAccess, BackendNotificationQueueAccess,
BotAccess, FireAndForget, ClientStore, CodeStore, ProposalStore,
ConversationStore, SubConversationStore, Random,
CustomBackendStore, TeamFeatureStore, LegalHoldStore, MemberStore,
SearchVisibilityStore, ServiceStore, TeamNotificationStore,
TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
()
forall (r :: EffectRow).
(Member BackendNotificationQueueAccess r, Member BrigAccess r,
Member ConversationStore r, Member (Error AuthenticationError) r,
Member (Error FederationError) r, Member (Error InternalError) r,
Member
(Error (Tagged ('ActionDenied 'RemoveConversationMember) ())) r,
Member (Error (Tagged 'LegalHoldCouldNotBlockConnections ())) r,
Member (Error (Tagged 'LegalHoldDisableUnimplemented ())) r,
Member (Error (Tagged 'LegalHoldNotEnabled ())) r,
Member (Error (Tagged 'LegalHoldServiceNotRegistered ())) r,
Member (ErrorS 'NotATeamMember) r,
Member (Error (Tagged OperationDenied ())) r,
Member (Error (Tagged 'UserLegalHoldIllegalOperation ())) r,
Member ExternalAccess r, Member FederatorAccess r,
Member FireAndForget r, Member NotificationSubsystem r,
Member (Input Env) r, Member (Input (Local ())) r,
Member (Input UTCTime) r, Member LegalHoldStore r,
Member (ListItems LegacyPaging ConvId) r, Member MemberStore r,
Member ProposalStore r, Member (Logger (Msg -> Msg)) r,
Member Random r, Member SubConversationStore r,
Member TeamFeatureStore r,
Member (TeamMemberStore InternalPaging) r, Member TeamStore r,
Member (Embed IO) r) =>
Local UserId
-> TeamId -> RemoveLegalHoldSettingsRequest -> Sem r ()
removeSettingsInternalPaging
API
(Named
"delete-legal-hold-settings"
(Summary "Delete legal hold service settings"
:> (CanThrow AuthenticationError
:> (CanThrow OperationDenied
:> (CanThrow 'NotATeamMember
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'LegalHoldDisableUnimplemented
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to members with a legalhold client (via brig)\n- UserLegalHoldDisabled event to contacts of members with a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings"
:> (ReqBody
'[JSON]
RemoveLegalHoldSettingsRequest
:> MultiVerb
'DELETE
'[JSON]
'[RespondEmpty
204
"Legal hold service settings deleted"]
())))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
-> API
(Named
"get-legal-hold"
(Summary "Get legal hold status"
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> Get '[JSON] UserLegalHoldStatusResponse)))))))
:<|> (Named
"consent-to-legal-hold"
(Summary "Consent to legal hold"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("consent"
:> MultiVerb
'POST
'[JSON]
GrantConsentResultResponseTypes
GrantConsentResult)))))))))))
:<|> (Named
"request-legal-hold-device"
(Summary "Request legal hold device"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'NoUserLegalHoldConsent
:> (CanThrow 'LegalHoldServiceBadResponse
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (CanThrow 'MLSLegalholdIncompatible
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (Description
"This endpoint can lead to the following events being sent:\n- LegalHoldClientRequested event to contacts of the user the device is requested for, if they didn't already have a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture
"tid" TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> MultiVerb
'POST
'[JSON]
RequestDeviceResultResponseType
RequestDeviceResult)))))))))))))))))))
:<|> (Named
"disable-legal-hold-for-user"
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse)))))))))))))))
:<|> Named
"approve-legal-hold-device"
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldNotPending
:> (CanThrow 'NoLegalHoldDeviceAllocated
:> (CanThrow
'LegalHoldServiceNotRegistered
:> (CanThrow
'UserLegalHoldAlreadyEnabled
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
())))))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
-> API
(Named
"delete-legal-hold-settings"
(Summary "Delete legal hold service settings"
:> (CanThrow AuthenticationError
:> (CanThrow OperationDenied
:> (CanThrow 'NotATeamMember
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'LegalHoldDisableUnimplemented
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to members with a legalhold client (via brig)\n- UserLegalHoldDisabled event to contacts of members with a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("settings"
:> (ReqBody
'[JSON]
RemoveLegalHoldSettingsRequest
:> MultiVerb
'DELETE
'[JSON]
'[RespondEmpty
204
"Legal hold service settings deleted"]
()))))))))))))))))))
:<|> (Named
"get-legal-hold"
(Summary "Get legal hold status"
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> Get '[JSON] UserLegalHoldStatusResponse)))))))
:<|> (Named
"consent-to-legal-hold"
(Summary "Consent to legal hold"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("consent"
:> MultiVerb
'POST
'[JSON]
GrantConsentResultResponseTypes
GrantConsentResult)))))))))))
:<|> (Named
"request-legal-hold-device"
(Summary "Request legal hold device"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'NoUserLegalHoldConsent
:> (CanThrow 'LegalHoldServiceBadResponse
:> (CanThrow
'LegalHoldServiceNotRegistered
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (CanThrow
'MLSLegalholdIncompatible
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (Description
"This endpoint can lead to the following events being sent:\n- LegalHoldClientRequested event to contacts of the user the device is requested for, if they didn't already have a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> MultiVerb
'POST
'[JSON]
RequestDeviceResultResponseType
RequestDeviceResult)))))))))))))))))))
:<|> (Named
"disable-legal-hold-for-user"
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture
"uid" UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse)))))))))))))))
:<|> Named
"approve-legal-hold-device"
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldNotPending
:> (CanThrow
'NoLegalHoldDeviceAllocated
:> (CanThrow
'LegalHoldServiceNotRegistered
:> (CanThrow
'UserLegalHoldAlreadyEnabled
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
()))))))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
forall api1 (r :: EffectRow) api2.
API api1 r -> API api2 r -> API (api1 :<|> api2) r
<@> forall {k} (name :: k) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
forall (name :: Symbol) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
mkNamedAPI @"get-legal-hold" ServerT
(Summary "Get legal hold status"
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> Get '[JSON] UserLegalHoldStatusResponse)))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Get legal hold status"
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> Get '[JSON] UserLegalHoldStatusResponse))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]))
Local UserId
-> TeamId
-> UserId
-> Sem
'[Error (Tagged 'TeamMemberNotFound ()), BrigAccess, SparAccess,
NotificationSubsystem, GundeckAPIAccess, Rpc, ExternalAccess,
FederatorAccess, BackendNotificationQueueAccess, BotAccess,
FireAndForget, ClientStore, CodeStore, ProposalStore,
ConversationStore, SubConversationStore, Random,
CustomBackendStore, TeamFeatureStore, LegalHoldStore, MemberStore,
SearchVisibilityStore, ServiceStore, TeamNotificationStore,
TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
UserLegalHoldStatusResponse
forall (r :: EffectRow).
(Member (Error InternalError) r,
Member (Error (Tagged 'TeamMemberNotFound ())) r,
Member LegalHoldStore r, Member TeamStore r,
Member (Logger (Msg -> Msg)) r) =>
Local UserId
-> TeamId -> UserId -> Sem r UserLegalHoldStatusResponse
getUserStatus
API
(Named
"get-legal-hold"
(Summary "Get legal hold status"
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> Get '[JSON] UserLegalHoldStatusResponse))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
-> API
(Named
"consent-to-legal-hold"
(Summary "Consent to legal hold"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("consent"
:> MultiVerb
'POST
'[JSON]
GrantConsentResultResponseTypes
GrantConsentResult)))))))))))
:<|> (Named
"request-legal-hold-device"
(Summary "Request legal hold device"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'NoUserLegalHoldConsent
:> (CanThrow 'LegalHoldServiceBadResponse
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (CanThrow 'MLSLegalholdIncompatible
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (Description
"This endpoint can lead to the following events being sent:\n- LegalHoldClientRequested event to contacts of the user the device is requested for, if they didn't already have a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> MultiVerb
'POST
'[JSON]
RequestDeviceResultResponseType
RequestDeviceResult)))))))))))))))))))
:<|> (Named
"disable-legal-hold-for-user"
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse)))))))))))))))
:<|> Named
"approve-legal-hold-device"
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldNotPending
:> (CanThrow 'NoLegalHoldDeviceAllocated
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
()))))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
-> API
(Named
"get-legal-hold"
(Summary "Get legal hold status"
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> Get '[JSON] UserLegalHoldStatusResponse)))))))
:<|> (Named
"consent-to-legal-hold"
(Summary "Consent to legal hold"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("consent"
:> MultiVerb
'POST
'[JSON]
GrantConsentResultResponseTypes
GrantConsentResult)))))))))))
:<|> (Named
"request-legal-hold-device"
(Summary "Request legal hold device"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'NoUserLegalHoldConsent
:> (CanThrow 'LegalHoldServiceBadResponse
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (CanThrow 'MLSLegalholdIncompatible
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (Description
"This endpoint can lead to the following events being sent:\n- LegalHoldClientRequested event to contacts of the user the device is requested for, if they didn't already have a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture
"tid" TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> MultiVerb
'POST
'[JSON]
RequestDeviceResultResponseType
RequestDeviceResult)))))))))))))))))))
:<|> (Named
"disable-legal-hold-for-user"
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse)))))))))))))))
:<|> Named
"approve-legal-hold-device"
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldNotPending
:> (CanThrow 'NoLegalHoldDeviceAllocated
:> (CanThrow
'LegalHoldServiceNotRegistered
:> (CanThrow
'UserLegalHoldAlreadyEnabled
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
())))))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
forall api1 (r :: EffectRow) api2.
API api1 r -> API api2 r -> API (api1 :<|> api2) r
<@> forall {k} (name :: k) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
forall (name :: Symbol) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
mkNamedAPI @"consent-to-legal-hold" ServerT
(Summary "Consent to legal hold"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("consent"
:> MultiVerb
'POST
'[JSON]
GrantConsentResultResponseTypes
GrantConsentResult)))))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Consent to legal hold"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("consent"
:> MultiVerb
'POST
'[JSON]
GrantConsentResultResponseTypes
GrantConsentResult))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]))
Local UserId
-> TeamId
-> Sem
'[Error (Tagged ('ActionDenied 'RemoveConversationMember) ()),
Error (Tagged 'InvalidOperation ()),
Error (Tagged 'TeamMemberNotFound ()),
Error (Tagged 'UserLegalHoldIllegalOperation ()),
Error (Tagged 'LegalHoldCouldNotBlockConnections ()), BrigAccess,
SparAccess, NotificationSubsystem, GundeckAPIAccess, Rpc,
ExternalAccess, FederatorAccess, BackendNotificationQueueAccess,
BotAccess, FireAndForget, ClientStore, CodeStore, ProposalStore,
ConversationStore, SubConversationStore, Random,
CustomBackendStore, TeamFeatureStore, LegalHoldStore, MemberStore,
SearchVisibilityStore, ServiceStore, TeamNotificationStore,
TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
GrantConsentResult
forall (r :: EffectRow).
(Member BackendNotificationQueueAccess r, Member BrigAccess r,
Member ConversationStore r, Member (Error FederationError) r,
Member (Error InternalError) r,
Member
(Error (Tagged ('ActionDenied 'RemoveConversationMember) ())) r,
Member (Error (Tagged 'LegalHoldCouldNotBlockConnections ())) r,
Member (Error (Tagged 'TeamMemberNotFound ())) r,
Member (Error (Tagged 'UserLegalHoldIllegalOperation ())) r,
Member ExternalAccess r, Member FederatorAccess r,
Member NotificationSubsystem r, Member (Input Env) r,
Member (Input UTCTime) r, Member LegalHoldStore r,
Member (ListItems LegacyPaging ConvId) r, Member MemberStore r,
Member ProposalStore r, Member (Logger (Msg -> Msg)) r,
Member Random r, Member SubConversationStore r,
Member TeamStore r) =>
Local UserId -> TeamId -> Sem r GrantConsentResult
grantConsent
API
(Named
"consent-to-legal-hold"
(Summary "Consent to legal hold"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("consent"
:> MultiVerb
'POST
'[JSON]
GrantConsentResultResponseTypes
GrantConsentResult))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
-> API
(Named
"request-legal-hold-device"
(Summary "Request legal hold device"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'NoUserLegalHoldConsent
:> (CanThrow 'LegalHoldServiceBadResponse
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (CanThrow 'MLSLegalholdIncompatible
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (Description
"This endpoint can lead to the following events being sent:\n- LegalHoldClientRequested event to contacts of the user the device is requested for, if they didn't already have a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture
"uid" UserId
:> MultiVerb
'POST
'[JSON]
RequestDeviceResultResponseType
RequestDeviceResult)))))))))))))))))))
:<|> (Named
"disable-legal-hold-for-user"
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse)))))))))))))))
:<|> Named
"approve-legal-hold-device"
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldNotPending
:> (CanThrow 'NoLegalHoldDeviceAllocated
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid" TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
())))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
-> API
(Named
"consent-to-legal-hold"
(Summary "Consent to legal hold"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'InvalidOperation
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> ("consent"
:> MultiVerb
'POST
'[JSON]
GrantConsentResultResponseTypes
GrantConsentResult)))))))))))
:<|> (Named
"request-legal-hold-device"
(Summary "Request legal hold device"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'NoUserLegalHoldConsent
:> (CanThrow 'LegalHoldServiceBadResponse
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (CanThrow 'MLSLegalholdIncompatible
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (Description
"This endpoint can lead to the following events being sent:\n- LegalHoldClientRequested event to contacts of the user the device is requested for, if they didn't already have a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> MultiVerb
'POST
'[JSON]
RequestDeviceResultResponseType
RequestDeviceResult)))))))))))))))))))
:<|> (Named
"disable-legal-hold-for-user"
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse)))))))))))))))
:<|> Named
"approve-legal-hold-device"
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldNotPending
:> (CanThrow 'NoLegalHoldDeviceAllocated
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow
'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
()))))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
forall api1 (r :: EffectRow) api2.
API api1 r -> API api2 r -> API (api1 :<|> api2) r
<@> forall {k} (name :: k) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
forall (name :: Symbol) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
mkNamedAPI @"request-legal-hold-device" ServerT
(Summary "Request legal hold device"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'NoUserLegalHoldConsent
:> (CanThrow 'LegalHoldServiceBadResponse
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (CanThrow 'MLSLegalholdIncompatible
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (Description
"This endpoint can lead to the following events being sent:\n- LegalHoldClientRequested event to contacts of the user the device is requested for, if they didn't already have a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> MultiVerb
'POST
'[JSON]
RequestDeviceResultResponseType
RequestDeviceResult)))))))))))))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Request legal hold device"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'NoUserLegalHoldConsent
:> (CanThrow 'LegalHoldServiceBadResponse
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (CanThrow 'MLSLegalholdIncompatible
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (Description
"This endpoint can lead to the following events being sent:\n- LegalHoldClientRequested event to contacts of the user the device is requested for, if they didn't already have a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture
"uid" UserId
:> MultiVerb
'POST
'[JSON]
RequestDeviceResultResponseType
RequestDeviceResult))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]))
Local UserId
-> TeamId
-> UserId
-> Sem
'[Error (Tagged ('ActionDenied 'RemoveConversationMember) ()),
ErrorS 'NotATeamMember, Error (Tagged OperationDenied ()),
Error (Tagged 'TeamMemberNotFound ()),
Error (Tagged 'LegalHoldNotEnabled ()),
Error (Tagged 'UserLegalHoldAlreadyEnabled ()),
Error (Tagged 'NoUserLegalHoldConsent ()),
Error (Tagged 'LegalHoldServiceBadResponse ()),
Error (Tagged 'LegalHoldServiceNotRegistered ()),
Error (Tagged 'LegalHoldCouldNotBlockConnections ()),
Error (Tagged 'MLSLegalholdIncompatible ()),
Error (Tagged 'UserLegalHoldIllegalOperation ()), BrigAccess,
SparAccess, NotificationSubsystem, GundeckAPIAccess, Rpc,
ExternalAccess, FederatorAccess, BackendNotificationQueueAccess,
BotAccess, FireAndForget, ClientStore, CodeStore, ProposalStore,
ConversationStore, SubConversationStore, Random,
CustomBackendStore, TeamFeatureStore, LegalHoldStore, MemberStore,
SearchVisibilityStore, ServiceStore, TeamNotificationStore,
TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
RequestDeviceResult
forall (r :: EffectRow).
(Member BackendNotificationQueueAccess r, Member BrigAccess r,
Member ConversationStore r, Member (Error FederationError) r,
Member (Error InternalError) r,
Member
(Error (Tagged ('ActionDenied 'RemoveConversationMember) ())) r,
Member (Error (Tagged 'LegalHoldCouldNotBlockConnections ())) r,
Member (Error (Tagged 'LegalHoldNotEnabled ())) r,
Member (Error (Tagged 'LegalHoldServiceBadResponse ())) r,
Member (Error (Tagged 'LegalHoldServiceNotRegistered ())) r,
Member (Error (Tagged 'MLSLegalholdIncompatible ())) r,
Member (ErrorS 'NotATeamMember) r,
Member (Error (Tagged 'NoUserLegalHoldConsent ())) r,
Member (Error (Tagged OperationDenied ())) r,
Member (Error (Tagged 'TeamMemberNotFound ())) r,
Member (Error (Tagged 'UserLegalHoldAlreadyEnabled ())) r,
Member (Error (Tagged 'UserLegalHoldIllegalOperation ())) r,
Member ExternalAccess r, Member FederatorAccess r,
Member NotificationSubsystem r, Member (Input (Local ())) r,
Member (Input Env) r, Member (Input UTCTime) r,
Member LegalHoldStore r, Member (ListItems LegacyPaging ConvId) r,
Member MemberStore r, Member ProposalStore r,
Member (Logger (Msg -> Msg)) r, Member Random r,
Member SubConversationStore r, Member TeamFeatureStore r,
Member TeamStore r, Member (Embed IO) r) =>
Local UserId -> TeamId -> UserId -> Sem r RequestDeviceResult
requestDevice
API
(Named
"request-legal-hold-device"
(Summary "Request legal hold device"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'NoUserLegalHoldConsent
:> (CanThrow 'LegalHoldServiceBadResponse
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (CanThrow 'MLSLegalholdIncompatible
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (Description
"This endpoint can lead to the following events being sent:\n- LegalHoldClientRequested event to contacts of the user the device is requested for, if they didn't already have a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> MultiVerb
'POST
'[JSON]
RequestDeviceResultResponseType
RequestDeviceResult))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
-> API
(Named
"disable-legal-hold-for-user"
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse)))))))))))))))
:<|> Named
"approve-legal-hold-device"
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldNotPending
:> (CanThrow 'NoLegalHoldDeviceAllocated
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture
"uid" UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
()))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
-> API
(Named
"request-legal-hold-device"
(Summary "Request legal hold device"
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'NoUserLegalHoldConsent
:> (CanThrow 'LegalHoldServiceBadResponse
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (CanThrow 'MLSLegalholdIncompatible
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (Description
"This endpoint can lead to the following events being sent:\n- LegalHoldClientRequested event to contacts of the user the device is requested for, if they didn't already have a legalhold client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture
"uid" UserId
:> MultiVerb
'POST
'[JSON]
RequestDeviceResultResponseType
RequestDeviceResult)))))))))))))))))))
:<|> (Named
"disable-legal-hold-for-user"
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse)))))))))))))))
:<|> Named
"approve-legal-hold-device"
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldNotPending
:> (CanThrow 'NoLegalHoldDeviceAllocated
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid" TeamId
:> ("legalhold"
:> (Capture
"uid"
UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
())))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
forall api1 (r :: EffectRow) api2.
API api1 r -> API api2 r -> API (api1 :<|> api2) r
<@> forall {k} (name :: k) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
forall (name :: Symbol) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
mkNamedAPI @"disable-legal-hold-for-user" ServerT
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON] DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse)))))))))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]))
Local UserId
-> TeamId
-> UserId
-> DisableLegalHoldForUserRequest
-> Sem
'[Error AuthenticationError,
Error (Tagged ('ActionDenied 'RemoveConversationMember) ()),
ErrorS 'NotATeamMember, Error (Tagged OperationDenied ()),
Error (Tagged 'LegalHoldServiceNotRegistered ()),
Error (Tagged 'UserLegalHoldIllegalOperation ()),
Error (Tagged 'LegalHoldCouldNotBlockConnections ()), BrigAccess,
SparAccess, NotificationSubsystem, GundeckAPIAccess, Rpc,
ExternalAccess, FederatorAccess, BackendNotificationQueueAccess,
BotAccess, FireAndForget, ClientStore, CodeStore, ProposalStore,
ConversationStore, SubConversationStore, Random,
CustomBackendStore, TeamFeatureStore, LegalHoldStore, MemberStore,
SearchVisibilityStore, ServiceStore, TeamNotificationStore,
TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
DisableLegalHoldForUserResponse
forall (r :: EffectRow).
(Member BackendNotificationQueueAccess r, Member BrigAccess r,
Member ConversationStore r, Member (Error AuthenticationError) r,
Member (Error FederationError) r, Member (Error InternalError) r,
Member
(Error (Tagged ('ActionDenied 'RemoveConversationMember) ())) r,
Member (Error (Tagged 'LegalHoldCouldNotBlockConnections ())) r,
Member (Error (Tagged 'LegalHoldServiceNotRegistered ())) r,
Member (ErrorS 'NotATeamMember) r,
Member (Error (Tagged OperationDenied ())) r,
Member (Error (Tagged 'UserLegalHoldIllegalOperation ())) r,
Member ExternalAccess r, Member FederatorAccess r,
Member NotificationSubsystem r, Member (Input Env) r,
Member (Input (Local ())) r, Member (Input UTCTime) r,
Member LegalHoldStore r, Member (ListItems LegacyPaging ConvId) r,
Member MemberStore r, Member ProposalStore r,
Member (Logger (Msg -> Msg)) r, Member Random r,
Member SubConversationStore r, Member TeamStore r,
Member (Embed IO) r) =>
Local UserId
-> TeamId
-> UserId
-> DisableLegalHoldForUserRequest
-> Sem r DisableLegalHoldForUserResponse
disableForUser
API
(Named
"disable-legal-hold-for-user"
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
-> API
(Named
"approve-legal-hold-device"
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldNotPending
:> (CanThrow 'NoLegalHoldDeviceAllocated
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture
"uid" UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
()))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
-> API
(Named
"disable-legal-hold-for-user"
(Summary "Disable legal hold for user"
:> (CanThrow AuthenticationError
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientRemoved event to the user owning the client (via brig)\n- UserLegalHoldDisabled event to contacts of the user owning the client (via brig)"
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON]
DisableLegalHoldForUserRequest
:> MultiVerb
'DELETE
'[JSON]
DisableLegalHoldForUserResponseType
DisableLegalHoldForUserResponse)))))))))))))))
:<|> Named
"approve-legal-hold-device"
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldNotPending
:> (CanThrow 'NoLegalHoldDeviceAllocated
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow
'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture
"uid" UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
()))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
forall api1 (r :: EffectRow) api2.
API api1 r -> API api2 r -> API (api1 :<|> api2) r
<@> forall {k} (name :: k) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
forall (name :: Symbol) (r0 :: EffectRow) api.
(HasServer api '[Domain],
ServerEffects (DeclaredErrorEffects api) r0) =>
ServerT api (Sem (Append (DeclaredErrorEffects api) r0))
-> API (Named name api) r0
mkNamedAPI @"approve-legal-hold-device" ServerT
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldNotPending
:> (CanThrow 'NoLegalHoldDeviceAllocated
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture "uid" UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
())))))))))))))))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Approve legal hold device"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow ('ActionDenied 'RemoveConversationMember)
:> (CanThrow 'NotATeamMember
:> (CanThrow 'LegalHoldNotEnabled
:> (CanThrow 'UserLegalHoldNotPending
:> (CanThrow 'NoLegalHoldDeviceAllocated
:> (CanThrow 'LegalHoldServiceNotRegistered
:> (CanThrow 'UserLegalHoldAlreadyEnabled
:> (CanThrow 'UserLegalHoldIllegalOperation
:> (CanThrow 'LegalHoldCouldNotBlockConnections
:> (Description
"This endpoint can lead to the following events being sent:\n- ClientAdded event to the user owning the client (via brig)\n- UserLegalHoldEnabled event to contacts of the user owning the client (via brig)\n- ClientRemoved event to the user, if removing old client due to max number (via brig)"
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("legalhold"
:> (Capture
"uid" UserId
:> ("approve"
:> (ReqBody
'[JSON]
ApproveLegalHoldForUserRequest
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
"Legal hold approved"]
()))))))))))))))))))))))
'[BrigAccess, SparAccess, NotificationSubsystem, GundeckAPIAccess,
Rpc, ExternalAccess, FederatorAccess,
BackendNotificationQueueAccess, BotAccess, FireAndForget,
ClientStore, CodeStore, ProposalStore, ConversationStore,
SubConversationStore, Random, CustomBackendStore, TeamFeatureStore,
LegalHoldStore, MemberStore, SearchVisibilityStore, ServiceStore,
TeamNotificationStore, TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]))
Local UserId
-> ConnId
-> TeamId
-> UserId
-> ApproveLegalHoldForUserRequest
-> Sem
'[Error AuthenticationError, Error (Tagged 'AccessDenied ()),
Error (Tagged ('ActionDenied 'RemoveConversationMember) ()),
ErrorS 'NotATeamMember, Error (Tagged 'LegalHoldNotEnabled ()),
Error (Tagged 'UserLegalHoldNotPending ()),
Error (Tagged 'NoLegalHoldDeviceAllocated ()),
Error (Tagged 'LegalHoldServiceNotRegistered ()),
Error (Tagged 'UserLegalHoldAlreadyEnabled ()),
Error (Tagged 'UserLegalHoldIllegalOperation ()),
Error (Tagged 'LegalHoldCouldNotBlockConnections ()), BrigAccess,
SparAccess, NotificationSubsystem, GundeckAPIAccess, Rpc,
ExternalAccess, FederatorAccess, BackendNotificationQueueAccess,
BotAccess, FireAndForget, ClientStore, CodeStore, ProposalStore,
ConversationStore, SubConversationStore, Random,
CustomBackendStore, TeamFeatureStore, LegalHoldStore, MemberStore,
SearchVisibilityStore, ServiceStore, TeamNotificationStore,
TeamStore, TeamMemberStore InternalPaging,
TeamMemberStore CassandraPaging, ListItems CassandraPaging ConvId,
ListItems CassandraPaging (Remote ConvId),
ListItems LegacyPaging ConvId, ListItems LegacyPaging TeamId,
ListItems InternalPaging TeamId, Input AllTeamFeatures,
Input (Maybe [TeamId], FeatureDefaults LegalholdConfig),
Input (Local ()), Input Opts, Input UTCTime, Queue DeleteItem,
Logger (Msg -> Msg), Error DynError, Input ClientState, Input Env,
HashPassword, Error InvalidInput, Error InternalError,
Error FederationError, Async, Delay, Fail, Embed IO,
Error JSONResponse, Resource, Final IO]
()
forall (r :: EffectRow).
(Member BackendNotificationQueueAccess r, Member BrigAccess r,
Member ConversationStore r, Member (Error AuthenticationError) r,
Member (Error FederationError) r, Member (Error InternalError) r,
Member (Error (Tagged 'AccessDenied ())) r,
Member
(Error (Tagged ('ActionDenied 'RemoveConversationMember) ())) r,
Member (Error (Tagged 'LegalHoldCouldNotBlockConnections ())) r,
Member (Error (Tagged 'LegalHoldNotEnabled ())) r,
Member (Error (Tagged 'LegalHoldServiceNotRegistered ())) r,
Member (Error (Tagged 'NoLegalHoldDeviceAllocated ())) r,
Member (ErrorS 'NotATeamMember) r,
Member (Error (Tagged 'UserLegalHoldAlreadyEnabled ())) r,
Member (Error (Tagged 'UserLegalHoldIllegalOperation ())) r,
Member (Error (Tagged 'UserLegalHoldNotPending ())) r,
Member ExternalAccess r, Member FederatorAccess r,
Member NotificationSubsystem r, Member (Input (Local ())) r,
Member (Input Env) r, Member (Input UTCTime) r,
Member LegalHoldStore r, Member (ListItems LegacyPaging ConvId) r,
Member MemberStore r, Member ProposalStore r,
Member (Logger (Msg -> Msg)) r, Member Random r,
Member SubConversationStore r, Member TeamFeatureStore r,
Member TeamStore r, Member (Embed IO) r) =>
Local UserId
-> ConnId
-> TeamId
-> UserId
-> ApproveLegalHoldForUserRequest
-> Sem r ()
approveDevice