module Wire.API.Routes.Public.Galley.TeamConversation where
import Data.Id
import Servant
import Servant.OpenApi.Internal.Orphans ()
import Wire.API.Conversation.Role
import Wire.API.Error
import Wire.API.Error.Galley
import Wire.API.Routes.MultiVerb
import Wire.API.Routes.Named
import Wire.API.Routes.Public
import Wire.API.Team.Conversation
type TeamConversationAPI =
Named
"get-team-conversation-roles"
( Summary "Get existing roles available for the given team"
:> CanThrow 'NotATeamMember
:> ZUser
:> "teams"
:> Capture "tid" TeamId
:> "conversations"
:> "roles"
:> Get '[Servant.JSON] ConversationRolesList
)
:<|> Named
"get-team-conversations"
( Summary "Get team conversations"
:> CanThrow OperationDenied
:> CanThrow 'NotATeamMember
:> ZUser
:> "teams"
:> Capture "tid" TeamId
:> "conversations"
:> Get '[Servant.JSON] TeamConversationList
)
:<|> Named
"get-team-conversation"
( Summary "Get one team conversation"
:> CanThrow 'ConvNotFound
:> CanThrow OperationDenied
:> CanThrow 'NotATeamMember
:> ZUser
:> "teams"
:> Capture "tid" TeamId
:> "conversations"
:> Capture "cid" ConvId
:> Get '[Servant.JSON] TeamConversation
)
:<|> Named
"delete-team-conversation"
( Summary "Remove a team conversation"
:> CanThrow ('ActionDenied 'DeleteConversation)
:> CanThrow 'ConvNotFound
:> CanThrow 'InvalidOperation
:> CanThrow 'NotATeamMember
:> ZLocalUser
:> ZConn
:> "teams"
:> Capture "tid" TeamId
:> "conversations"
:> Capture "cid" ConvId
:> MultiVerb 'DELETE '[JSON] '[RespondEmpty 200 "Conversation deleted"] ()
)