module Galley.API.Public.TeamMember where
import Galley.API.Teams
import Galley.API.Teams.Export qualified as Export
import Galley.App
import Wire.API.Routes.API
import Wire.API.Routes.Public.Galley.TeamMember
teamMemberAPI :: API TeamMemberAPI GalleyEffects
teamMemberAPI :: API TeamMemberAPI GalleyEffects
teamMemberAPI =
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-team-members" ServerT
(Summary "Get team members"
:> (CanThrow 'NotATeamMember
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (QueryParam'
'[Optional, Strict, Description "Maximum results to be returned"]
"maxResults"
(Range 1 HardTruncationLimit Int32)
:> (QueryParam'
'[Optional, Strict,
Description
"Optional, when not specified, the first page will be returned.Every returned page contains a `pagingState`, this should be supplied to retrieve the next page."]
"pagingState"
TeamMembersPagingState
:> Get '[JSON] TeamMembersPage))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Get team members"
:> (CanThrow 'NotATeamMember
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (QueryParam'
'[Optional, Strict,
Description "Maximum results to be returned"]
"maxResults"
(Range 1 HardTruncationLimit Int32)
:> (QueryParam'
'[Optional, Strict,
Description
"Optional, when not specified, the first page will be returned.Every returned page contains a `pagingState`, this should be supplied to retrieve the next page."]
"pagingState"
TeamMembersPagingState
:> Get '[JSON] TeamMembersPage)))))))))
'[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
-> Maybe (Range 1 HardTruncationLimit Int32)
-> Maybe TeamMembersPagingState
-> Sem
'[ErrorS 'NotATeamMember, 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]
TeamMembersPage
forall (r :: EffectRow).
(Member (ErrorS 'NotATeamMember) r, Member TeamStore r,
Member (TeamMemberStore CassandraPaging) r) =>
Local UserId
-> TeamId
-> Maybe (Range 1 HardTruncationLimit Int32)
-> Maybe TeamMembersPagingState
-> Sem r TeamMembersPage
getTeamMembers
API
(Named
"get-team-members"
(Summary "Get team members"
:> (CanThrow 'NotATeamMember
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (QueryParam'
'[Optional, Strict, Description "Maximum results to be returned"]
"maxResults"
(Range 1 HardTruncationLimit Int32)
:> (QueryParam'
'[Optional, Strict,
Description
"Optional, when not specified, the first page will be returned.Every returned page contains a `pagingState`, this should be supplied to retrieve the next page."]
"pagingState"
TeamMembersPagingState
:> Get '[JSON] TeamMembersPage)))))))))
'[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-team-member"
(Summary "Get single team member"
:> (CanThrow 'NotATeamMember
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId :> Get '[JSON] TeamMemberOptPerms))))))))
:<|> (Named
"get-team-members-by-ids"
(Summary "Get team members by user id list"
:> (Description
"The `has_more` field in the response body is always `false`."
:> (CanThrow 'NotATeamMember
:> (CanThrow 'BulkGetMemberLimitExceeded
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("get-members-by-ids-using-post"
:> (QueryParam'
'[Optional, Strict,
Description "Maximum results to be returned"]
"maxResults"
(Range 1 HardTruncationLimit Int32)
:> (ReqBody '[JSON] UserIdList
:> Post '[JSON] TeamMemberListOptPerms))))))))))
:<|> (Named
"add-team-member"
(Summary "Add a new team member"
:> (Until 'V4
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'NoAddToBinding
:> (CanThrow 'NotATeamMember
:> (CanThrow 'NotConnected
:> (CanThrow OperationDenied
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TooManyTeamMembers
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'UserBindingExists
:> (CanThrow
'TooManyTeamMembersOnTeamWithLegalhold
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid" TeamId
:> ("members"
:> (ReqBody
'[JSON]
NewTeamMember
:> MultiVerb
'POST
'[JSON]
'[RespondEmpty
200
""]
()))))))))))))))))))
:<|> (Named
"delete-team-member"
(Summary "Remove an existing team member"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON]
TeamMemberDeleteData
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"delete-non-binding-team-member"
(Summary "Remove an existing team member"
:> (Until 'V4
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture
"uid" UserId
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"update-team-member"
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid" TeamId
:> ("members"
:> (ReqBody
'[JSON]
NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
""]
()))))))))))))))
:<|> Named
"get-team-members-csv"
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV))))))))))))))
'[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-team-members"
(Summary "Get team members"
:> (CanThrow 'NotATeamMember
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (QueryParam'
'[Optional, Strict, Description "Maximum results to be returned"]
"maxResults"
(Range 1 HardTruncationLimit Int32)
:> (QueryParam'
'[Optional, Strict,
Description
"Optional, when not specified, the first page will be returned.Every returned page contains a `pagingState`, this should be supplied to retrieve the next page."]
"pagingState"
TeamMembersPagingState
:> Get '[JSON] TeamMembersPage))))))))
:<|> (Named
"get-team-member"
(Summary "Get single team member"
:> (CanThrow 'NotATeamMember
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> Get '[JSON] TeamMemberOptPerms))))))))
:<|> (Named
"get-team-members-by-ids"
(Summary "Get team members by user id list"
:> (Description
"The `has_more` field in the response body is always `false`."
:> (CanThrow 'NotATeamMember
:> (CanThrow 'BulkGetMemberLimitExceeded
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("get-members-by-ids-using-post"
:> (QueryParam'
'[Optional, Strict,
Description
"Maximum results to be returned"]
"maxResults"
(Range 1 HardTruncationLimit Int32)
:> (ReqBody '[JSON] UserIdList
:> Post
'[JSON]
TeamMemberListOptPerms))))))))))
:<|> (Named
"add-team-member"
(Summary "Add a new team member"
:> (Until 'V4
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'NoAddToBinding
:> (CanThrow 'NotATeamMember
:> (CanThrow 'NotConnected
:> (CanThrow OperationDenied
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TooManyTeamMembers
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'UserBindingExists
:> (CanThrow
'TooManyTeamMembersOnTeamWithLegalhold
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("members"
:> (ReqBody
'[JSON]
NewTeamMember
:> MultiVerb
'POST
'[JSON]
'[RespondEmpty
200
""]
()))))))))))))))))))
:<|> (Named
"delete-team-member"
(Summary "Remove an existing team member"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture
"uid" UserId
:> (ReqBody
'[JSON]
TeamMemberDeleteData
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"delete-non-binding-team-member"
(Summary "Remove an existing team member"
:> (Until 'V4
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid" TeamId
:> ("members"
:> (Capture
"uid"
UserId
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"update-team-member"
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid"
TeamId
:> ("members"
:> (ReqBody
'[JSON]
NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
""]
()))))))))))))))
:<|> Named
"get-team-members-csv"
(Summary
"Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV)))))))))))))))
'[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-team-member" ServerT
(Summary "Get single team member"
:> (CanThrow 'NotATeamMember
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId :> Get '[JSON] TeamMemberOptPerms))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Get single team member"
:> (CanThrow 'NotATeamMember
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> Get '[JSON] TeamMemberOptPerms)))))))))
'[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
'[ErrorS 'NotATeamMember, ErrorS '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]
TeamMemberOptPerms
forall (r :: EffectRow).
(Member (ErrorS 'TeamMemberNotFound) r,
Member (ErrorS 'NotATeamMember) r, Member TeamStore r) =>
Local UserId -> TeamId -> UserId -> Sem r TeamMemberOptPerms
getTeamMember
API
(Named
"get-team-member"
(Summary "Get single team member"
:> (CanThrow 'NotATeamMember
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId :> Get '[JSON] TeamMemberOptPerms)))))))))
'[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-team-members-by-ids"
(Summary "Get team members by user id list"
:> (Description
"The `has_more` field in the response body is always `false`."
:> (CanThrow 'NotATeamMember
:> (CanThrow 'BulkGetMemberLimitExceeded
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("get-members-by-ids-using-post"
:> (QueryParam'
'[Optional, Strict,
Description "Maximum results to be returned"]
"maxResults"
(Range 1 HardTruncationLimit Int32)
:> (ReqBody '[JSON] UserIdList
:> Post '[JSON] TeamMemberListOptPerms))))))))))
:<|> (Named
"add-team-member"
(Summary "Add a new team member"
:> (Until 'V4
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'NoAddToBinding
:> (CanThrow 'NotATeamMember
:> (CanThrow 'NotConnected
:> (CanThrow OperationDenied
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TooManyTeamMembers
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'UserBindingExists
:> (CanThrow
'TooManyTeamMembersOnTeamWithLegalhold
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody
'[JSON]
NewTeamMember
:> MultiVerb
'POST
'[JSON]
'[RespondEmpty
200 ""]
()))))))))))))))))))
:<|> (Named
"delete-team-member"
(Summary "Remove an existing team member"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON]
TeamMemberDeleteData
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"delete-non-binding-team-member"
(Summary "Remove an existing team member"
:> (Until 'V4
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"update-team-member"
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody
'[JSON]
NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
""]
()))))))))))))))
:<|> Named
"get-team-members-csv"
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV)))))))))))))
'[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-team-member"
(Summary "Get single team member"
:> (CanThrow 'NotATeamMember
:> (CanThrow 'TeamMemberNotFound
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId :> Get '[JSON] TeamMemberOptPerms))))))))
:<|> (Named
"get-team-members-by-ids"
(Summary "Get team members by user id list"
:> (Description
"The `has_more` field in the response body is always `false`."
:> (CanThrow 'NotATeamMember
:> (CanThrow 'BulkGetMemberLimitExceeded
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("get-members-by-ids-using-post"
:> (QueryParam'
'[Optional, Strict,
Description "Maximum results to be returned"]
"maxResults"
(Range 1 HardTruncationLimit Int32)
:> (ReqBody '[JSON] UserIdList
:> Post '[JSON] TeamMemberListOptPerms))))))))))
:<|> (Named
"add-team-member"
(Summary "Add a new team member"
:> (Until 'V4
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'NoAddToBinding
:> (CanThrow 'NotATeamMember
:> (CanThrow 'NotConnected
:> (CanThrow OperationDenied
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TooManyTeamMembers
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'UserBindingExists
:> (CanThrow
'TooManyTeamMembersOnTeamWithLegalhold
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid" TeamId
:> ("members"
:> (ReqBody
'[JSON]
NewTeamMember
:> MultiVerb
'POST
'[JSON]
'[RespondEmpty
200
""]
()))))))))))))))))))
:<|> (Named
"delete-team-member"
(Summary "Remove an existing team member"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON]
TeamMemberDeleteData
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"delete-non-binding-team-member"
(Summary "Remove an existing team member"
:> (Until 'V4
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture
"uid" UserId
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"update-team-member"
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture
"tid" TeamId
:> ("members"
:> (ReqBody
'[JSON]
NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
""]
()))))))))))))))
:<|> Named
"get-team-members-csv"
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV))))))))))))))
'[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-team-members-by-ids" ServerT
(Summary "Get team members by user id list"
:> (Description
"The `has_more` field in the response body is always `false`."
:> (CanThrow 'NotATeamMember
:> (CanThrow 'BulkGetMemberLimitExceeded
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("get-members-by-ids-using-post"
:> (QueryParam'
'[Optional, Strict,
Description "Maximum results to be returned"]
"maxResults"
(Range 1 HardTruncationLimit Int32)
:> (ReqBody '[JSON] UserIdList
:> Post '[JSON] TeamMemberListOptPerms))))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Get team members by user id list"
:> (Description
"The `has_more` field in the response body is always `false`."
:> (CanThrow 'NotATeamMember
:> (CanThrow 'BulkGetMemberLimitExceeded
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("get-members-by-ids-using-post"
:> (QueryParam'
'[Optional, Strict,
Description "Maximum results to be returned"]
"maxResults"
(Range 1 HardTruncationLimit Int32)
:> (ReqBody '[JSON] UserIdList
:> Post '[JSON] TeamMemberListOptPerms)))))))))))
'[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
-> Maybe (Range 1 HardTruncationLimit Int32)
-> UserIdList
-> Sem
'[ErrorS 'NotATeamMember, ErrorS 'BulkGetMemberLimitExceeded,
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]
TeamMemberListOptPerms
forall (r :: EffectRow).
(Member (ErrorS 'BulkGetMemberLimitExceeded) r,
Member (ErrorS 'NotATeamMember) r, Member TeamStore r) =>
Local UserId
-> TeamId
-> Maybe (Range 1 HardTruncationLimit Int32)
-> UserIdList
-> Sem r TeamMemberListOptPerms
bulkGetTeamMembers
API
(Named
"get-team-members-by-ids"
(Summary "Get team members by user id list"
:> (Description
"The `has_more` field in the response body is always `false`."
:> (CanThrow 'NotATeamMember
:> (CanThrow 'BulkGetMemberLimitExceeded
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("get-members-by-ids-using-post"
:> (QueryParam'
'[Optional, Strict,
Description "Maximum results to be returned"]
"maxResults"
(Range 1 HardTruncationLimit Int32)
:> (ReqBody '[JSON] UserIdList
:> Post '[JSON] TeamMemberListOptPerms)))))))))))
'[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
"add-team-member"
(Summary "Add a new team member"
:> (Until 'V4
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'NoAddToBinding
:> (CanThrow 'NotATeamMember
:> (CanThrow 'NotConnected
:> (CanThrow OperationDenied
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TooManyTeamMembers
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'UserBindingExists
:> (CanThrow 'TooManyTeamMembersOnTeamWithLegalhold
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody
'[JSON] NewTeamMember
:> MultiVerb
'POST
'[JSON]
'[RespondEmpty
200 ""]
()))))))))))))))))))
:<|> (Named
"delete-team-member"
(Summary "Remove an existing team member"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON] TeamMemberDeleteData
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"delete-non-binding-team-member"
(Summary "Remove an existing team member"
:> (Until 'V4
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"update-team-member"
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody
'[JSON]
NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200 ""]
()))))))))))))))
:<|> Named
"get-team-members-csv"
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV))))))))))))
'[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-team-members-by-ids"
(Summary "Get team members by user id list"
:> (Description
"The `has_more` field in the response body is always `false`."
:> (CanThrow 'NotATeamMember
:> (CanThrow 'BulkGetMemberLimitExceeded
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("get-members-by-ids-using-post"
:> (QueryParam'
'[Optional, Strict,
Description "Maximum results to be returned"]
"maxResults"
(Range 1 HardTruncationLimit Int32)
:> (ReqBody '[JSON] UserIdList
:> Post '[JSON] TeamMemberListOptPerms))))))))))
:<|> (Named
"add-team-member"
(Summary "Add a new team member"
:> (Until 'V4
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'NoAddToBinding
:> (CanThrow 'NotATeamMember
:> (CanThrow 'NotConnected
:> (CanThrow OperationDenied
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TooManyTeamMembers
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'UserBindingExists
:> (CanThrow
'TooManyTeamMembersOnTeamWithLegalhold
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody
'[JSON]
NewTeamMember
:> MultiVerb
'POST
'[JSON]
'[RespondEmpty
200 ""]
()))))))))))))))))))
:<|> (Named
"delete-team-member"
(Summary "Remove an existing team member"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON]
TeamMemberDeleteData
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"delete-non-binding-team-member"
(Summary "Remove an existing team member"
:> (Until 'V4
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"update-team-member"
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody
'[JSON]
NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200
""]
()))))))))))))))
:<|> Named
"get-team-members-csv"
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV)))))))))))))
'[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 @"add-team-member" ServerT
(Summary "Add a new team member"
:> (Until 'V4
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'NoAddToBinding
:> (CanThrow 'NotATeamMember
:> (CanThrow 'NotConnected
:> (CanThrow OperationDenied
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TooManyTeamMembers
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'UserBindingExists
:> (CanThrow 'TooManyTeamMembersOnTeamWithLegalhold
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody '[JSON] NewTeamMember
:> MultiVerb
'POST
'[JSON]
'[RespondEmpty 200 ""]
()))))))))))))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Add a new team member"
:> (Until 'V4
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'NoAddToBinding
:> (CanThrow 'NotATeamMember
:> (CanThrow 'NotConnected
:> (CanThrow OperationDenied
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TooManyTeamMembers
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'UserBindingExists
:> (CanThrow
'TooManyTeamMembersOnTeamWithLegalhold
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody
'[JSON]
NewTeamMember
:> MultiVerb
'POST
'[JSON]
'[RespondEmpty
200 ""]
())))))))))))))))))))
'[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
-> NewTeamMember
-> Sem
'[Error (Tagged 'InvalidPermissions ()),
Error (Tagged 'NoAddToBinding ()), ErrorS 'NotATeamMember,
Error (Tagged 'NotConnected ()), Error (Tagged OperationDenied ()),
Error (Tagged 'TeamNotFound ()),
Error (Tagged 'TooManyTeamMembers ()),
Error (Tagged 'TooManyTeamAdmins ()),
Error (Tagged 'UserBindingExists ()),
Error (Tagged 'TooManyTeamMembersOnTeamWithLegalhold ()),
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 BrigAccess r, Member NotificationSubsystem r,
Member (Error (Tagged 'InvalidPermissions ())) r,
Member (Error (Tagged 'NoAddToBinding ())) r,
Member (ErrorS 'NotATeamMember) r,
Member (Error (Tagged 'NotConnected ())) r,
Member (Error (Tagged OperationDenied ())) r,
Member (Error (Tagged 'TeamNotFound ())) r,
Member (Error (Tagged 'TooManyTeamMembers ())) r,
Member (Error (Tagged 'TooManyTeamAdmins ())) r,
Member (Error (Tagged 'UserBindingExists ())) r,
Member
(Error (Tagged 'TooManyTeamMembersOnTeamWithLegalhold ())) r,
Member (Input Opts) r, Member (Input UTCTime) r,
Member LegalHoldStore r, Member TeamFeatureStore r,
Member TeamNotificationStore r, Member TeamStore r,
Member (Logger (Msg -> Msg)) r) =>
Local UserId -> ConnId -> TeamId -> NewTeamMember -> Sem r ()
addTeamMember
API
(Named
"add-team-member"
(Summary "Add a new team member"
:> (Until 'V4
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'NoAddToBinding
:> (CanThrow 'NotATeamMember
:> (CanThrow 'NotConnected
:> (CanThrow OperationDenied
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TooManyTeamMembers
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'UserBindingExists
:> (CanThrow 'TooManyTeamMembersOnTeamWithLegalhold
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody
'[JSON] NewTeamMember
:> MultiVerb
'POST
'[JSON]
'[RespondEmpty
200 ""]
())))))))))))))))))))
'[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-team-member"
(Summary "Remove an existing team member"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> (ReqBody '[JSON] TeamMemberDeleteData
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"delete-non-binding-team-member"
(Summary "Remove an existing team member"
:> (Until 'V4
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"update-team-member"
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody
'[JSON] NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty 200 ""]
()))))))))))))))
:<|> Named
"get-team-members-csv"
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV)))))))))))
'[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
"add-team-member"
(Summary "Add a new team member"
:> (Until 'V4
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'NoAddToBinding
:> (CanThrow 'NotATeamMember
:> (CanThrow 'NotConnected
:> (CanThrow OperationDenied
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TooManyTeamMembers
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'UserBindingExists
:> (CanThrow 'TooManyTeamMembersOnTeamWithLegalhold
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody
'[JSON] NewTeamMember
:> MultiVerb
'POST
'[JSON]
'[RespondEmpty
200 ""]
()))))))))))))))))))
:<|> (Named
"delete-team-member"
(Summary "Remove an existing team member"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> (ReqBody
'[JSON] TeamMemberDeleteData
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"delete-non-binding-team-member"
(Summary "Remove an existing team member"
:> (Until 'V4
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"update-team-member"
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody
'[JSON]
NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty
200 ""]
()))))))))))))))
:<|> Named
"get-team-members-csv"
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV))))))))))))
'[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-team-member" ServerT
(Summary "Remove an existing team member"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> (ReqBody '[JSON] TeamMemberDeleteData
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Remove an existing team member"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> (ReqBody '[JSON] TeamMemberDeleteData
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult)))))))))))))))
'[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
-> TeamMemberDeleteData
-> Sem
'[Error AuthenticationError, Error (Tagged 'AccessDenied ()),
ErrorS 'TeamMemberNotFound, Error (Tagged 'TeamNotFound ()),
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]
TeamMemberDeleteResult
forall (r :: EffectRow).
(Member BackendNotificationQueueAccess r, Member BrigAccess r,
Member ConversationStore r, Member (Error AuthenticationError) r,
Member (Error FederationError) r, Member (Error InvalidInput) r,
Member (Error (Tagged 'AccessDenied ())) r,
Member (ErrorS 'TeamMemberNotFound) r,
Member (Error (Tagged 'TeamNotFound ())) r,
Member (ErrorS 'NotATeamMember) r,
Member (Error (Tagged OperationDenied ())) r,
Member ExternalAccess r, Member (Input Opts) r,
Member (Input UTCTime) r, Member NotificationSubsystem r,
Member MemberStore r, Member TeamFeatureStore r,
Member TeamStore r, Member (Logger (Msg -> Msg)) r) =>
Local UserId
-> ConnId
-> TeamId
-> UserId
-> TeamMemberDeleteData
-> Sem r TeamMemberDeleteResult
deleteTeamMember
API
(Named
"delete-team-member"
(Summary "Remove an existing team member"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> (ReqBody '[JSON] TeamMemberDeleteData
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult)))))))))))))))
'[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-non-binding-team-member"
(Summary "Remove an existing team member"
:> (Until 'V4
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"update-team-member"
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody '[JSON] NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty 200 ""]
()))))))))))))))
:<|> Named
"get-team-members-csv"
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV))))))))))
'[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-team-member"
(Summary "Remove an existing team member"
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> (ReqBody '[JSON] TeamMemberDeleteData
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"delete-non-binding-team-member"
(Summary "Remove an existing team member"
:> (Until 'V4
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"update-team-member"
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody
'[JSON] NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty 200 ""]
()))))))))))))))
:<|> Named
"get-team-members-csv"
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV)))))))))))
'[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-non-binding-team-member" ServerT
(Summary "Remove an existing team member"
:> (Until 'V4
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Remove an existing team member"
:> (Until 'V4
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult)))))))))))))))
'[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
-> Sem
'[Error AuthenticationError, Error (Tagged 'AccessDenied ()),
ErrorS 'TeamMemberNotFound, Error (Tagged 'TeamNotFound ()),
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]
TeamMemberDeleteResult
forall (r :: EffectRow).
(Member BackendNotificationQueueAccess r, Member BrigAccess r,
Member ConversationStore r, Member (Error AuthenticationError) r,
Member (Error FederationError) r, Member (Error InvalidInput) r,
Member (Error (Tagged 'AccessDenied ())) r,
Member (ErrorS 'TeamMemberNotFound) r,
Member (Error (Tagged 'TeamNotFound ())) r,
Member (ErrorS 'NotATeamMember) r,
Member (Error (Tagged OperationDenied ())) r,
Member ExternalAccess r, Member (Input Opts) r,
Member (Input UTCTime) r, Member NotificationSubsystem r,
Member MemberStore r, Member TeamFeatureStore r,
Member TeamStore r, Member (Logger (Msg -> Msg)) r) =>
Local UserId
-> ConnId -> TeamId -> UserId -> Sem r TeamMemberDeleteResult
deleteNonBindingTeamMember
API
(Named
"delete-non-binding-team-member"
(Summary "Remove an existing team member"
:> (Until 'V4
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult)))))))))))))))
'[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
"update-team-member"
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody '[JSON] NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty 200 ""]
()))))))))))))))
:<|> Named
"get-team-members-csv"
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV)))))))))
'[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-non-binding-team-member"
(Summary "Remove an existing team member"
:> (Until 'V4
:> (CanThrow AuthenticationError
:> (CanThrow 'AccessDenied
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TeamNotFound
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (Capture "uid" UserId
:> MultiVerb
'DELETE
'[JSON]
TeamMemberDeleteResultResponseType
TeamMemberDeleteResult))))))))))))))
:<|> (Named
"update-team-member"
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody '[JSON] NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty 200 ""]
()))))))))))))))
:<|> Named
"get-team-members-csv"
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV))))))))))
'[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 @"update-team-member" ServerT
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody '[JSON] NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty 200 ""]
()))))))))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody '[JSON] NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty 200 ""]
())))))))))))))))
'[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
-> NewTeamMember
-> Sem
'[Error (Tagged 'AccessDenied ()),
Error (Tagged 'InvalidPermissions ()),
Error (Tagged 'TeamNotFound ()), ErrorS 'TeamMemberNotFound,
Error (Tagged 'TooManyTeamAdmins ()), 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]
()
forall (r :: EffectRow).
(Member BrigAccess r, Member (Error (Tagged 'AccessDenied ())) r,
Member (Error (Tagged 'InvalidPermissions ())) r,
Member (Error (Tagged 'TeamNotFound ())) r,
Member (ErrorS 'TeamMemberNotFound) r,
Member (Error (Tagged 'TooManyTeamAdmins ())) r,
Member (ErrorS 'NotATeamMember) r,
Member (Error (Tagged OperationDenied ())) r,
Member NotificationSubsystem r, Member (Input UTCTime) r,
Member (Logger (Msg -> Msg)) r, Member TeamStore r) =>
Local UserId -> ConnId -> TeamId -> NewTeamMember -> Sem r ()
updateTeamMember
API
(Named
"update-team-member"
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody '[JSON] NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty 200 ""]
())))))))))))))))
'[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-team-members-csv"
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV)))))))))
'[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
"update-team-member"
(Summary "Update an existing team member"
:> (CanThrow 'AccessDenied
:> (CanThrow 'InvalidPermissions
:> (CanThrow 'TeamNotFound
:> (CanThrow 'TeamMemberNotFound
:> (CanThrow 'TooManyTeamAdmins
:> (CanThrow 'NotATeamMember
:> (CanThrow OperationDenied
:> (ZLocalUser
:> (ZConn
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> (ReqBody '[JSON] NewTeamMember
:> MultiVerb
'PUT
'[JSON]
'[RespondEmpty 200 ""]
()))))))))))))))
:<|> Named
"get-team-members-csv"
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV)))))))))
'[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-team-members-csv" ServerT
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV))))))))
(Sem
(Append
(DeclaredErrorEffects
(Summary "Get all members of the team as a CSV file"
:> (CanThrow 'AccessDenied
:> (Description
"The endpoint returns data in chunked transfer encoding. Internal server errors might result in a failed transfer instead of a 500 response."
:> (ZLocalUser
:> ("teams"
:> (Capture "tid" TeamId
:> ("members"
:> ("csv"
:> LowLevelStream
'GET
200
'[ '("Content-Disposition",
"attachment; filename=\"wire_team_members.csv\"")]
"CSV of team members"
CSV)))))))))
'[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 'AccessDenied ()), 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]
LowLevelStreamingBody
forall (r :: EffectRow).
(Member BrigAccess r, Member (Error (Tagged 'AccessDenied ())) r,
Member (TeamMemberStore InternalPaging) r, Member TeamStore r,
Member (Final IO) r, Member SparAccess r) =>
Local UserId -> TeamId -> Sem r LowLevelStreamingBody
Export.getTeamMembersCSV